Skip to content

Releases: ddtcorex/dsh-maestro-remote

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 28 Oct 08:58
c67c6c6

Fixed

  • The BlockAssembler restore patches the packaged dsh runtime. On a packaged install @deepseek-ai/dsh-llm lives in the runtime's own node_modules, outside a link: plugin's require graph, so the tool-call id/name restore fell through to a checkout source path and patched a module instance the agent loop never uses. It now resolves dsh-llm from the running dsh entry first and logs the path it used at boot ([maestro-patch] BlockAssembler restore installed via ...), or warns when no class resolves.

What's Changed

  • chore: follow the maestro-reviewer rename by @ddtcorex in #82
  • fix(remote): patch the BlockAssembler of the packaged dsh runtime by @ddtcorex in #83
  • chore(release): 0.6.1 by @ddtcorex in #84

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 17:13
ff24a1c

Removed

  • Stale quickTarget setting. Nothing in the tunnel or proxy read it. The 'webhook' value, the config field, the validator check and the Settings RPC allow-list entry are gone. The vendored key map still lists the key, so a stored value is simply ignored.
  • Dead assembler patch candidates. The patch no longer probes lib/assembler.js (the built harness bundles the class into lib/index.js) or a path relative to the plugin that never matched a real layout.
  • Legacy PIN fallback. The PIN store no longer reads or migrates the old token and token-lan files. A machine that has only those legacy files and no pin / pin-lan now gets a freshly generated PIN on first read. Existing pin and pin-lan files are unaffected, and legacy files are left on disk untouched.

Fixed

  • Connection row injects webStartup. DSH 0.2.1-alpha.x removed the webRuntime service; a connection entry still injecting it waits for a service that never mounts and dsh web never boots.

What's Changed

  • docs(remote): document requirements, pinning and the shipped connection patch by @ddtcorex in #77
  • chore(remote): remove legacy PIN fallback and dead code by @ddtcorex in #78
  • docs(remote): note the package-name assembler path is unproven by @ddtcorex in #79
  • DSH 0.2.1 compat: webStartup inject on the connection row by @ddtcorex in #80
  • chore(release): 0.6.0 by @ddtcorex in #81

Full Changelog: v0.5.3...v0.6.0

v0.5.3

Choose a tag to compare

@github-actions github-actions released this 07 Oct 09:58
56ff9e3

Fixed

  • RPC rows activate on DSH 0.2.x. The bundle patch declares webServer on the connection entry, so rows that call rpc.handle no longer fail with cannot get property "webServer" without inject and their channels no longer answer 405.
  • Settings RPC reachable. The remote-rpc row waits for maestroTunnel, fixing HTTP 405 on Settings > Maestro Remote.
  • PIN login works. The tunnel reads connection through a nested inject, so a correct PIN mints the dsh cookie instead of answering 401.

What's Changed

Full Changelog: v0.5.2...v0.5.3

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 06 Oct 08:46
483944c

Fixed

  • Phone layout. Every settings field fills the row width, with or without a Save button (the button stays on the same row), and a row whose control is a single checkbox keeps its label left and a 44px tap target right on one line instead of a lone box under the label.

What's Changed

  • fix(remote): fill the width on a phone and keep checkbox rows on one line by @ddtcorex in #73
  • chore(release): 0.5.2 by @ddtcorex in #74

Full Changelog: v0.5.1...v0.5.2

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 08:21
8b313b2

Fixed

  • Settings fields share one box. The host's own ConfigField declaration plus a 44px touch floor, replacing a 32px field that disagreed with the other Maestro sections.

What's Changed

Full Changelog: v0.5.0...v0.5.1

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 16:29
9b2d0d1

Security

  • The tunnel domain is validated on every write. The store accepts a write
    to an unregistered domain as-is, and this package registered no validator, so
    the only checks that ran were inside one RPC handler's saveTunnelConfig. The
    other writers reached the same domain unchecked — maestro.lanPin.setEnabled
    writes it directly (correctly, since lanPinEnabled is deliberately not in
    the Settings card's SAVABLE set, and therefore also unvalidated), and the
    tunnel-profile applier rewrites the whole domain after every harness sync.
    Both feed the proxy, the cloudflared controller and the PIN gate at boot.
    Registered from both rows that write it, so the first write from either is
    already checked.

Changed

  • dsh-maestro-patch is absorbed as this package's maestro-patch row.
    The zero-fork shim (viewport, apple-touch-icon, connection loopback,
    welcome) now lives at src/host/patch/ and src/client/patch/ and keeps its
    own row on purpose: the patches must work with the tunnel off, which a row
    folded into the tunnel provider could not guarantee. There is no
    docs/history/patch.md because that repository never carried a
    CHANGELOG.md — this entry is its whole history record.
  • The settings store is embedded, not depended on. src/host/vendor/store.ts
    is a committed, hash-sealed copy generated by dsh-maestro-core's
    scripts/vendor-store.mjs, and the @ddtcorex/dsh-maestro-config-lib
    dependency is gone. Core owns the store; this package owns the tunnel domain.
  • The tunnel and LAN PIN moved here from review. The nine
    maestro.tunnel* / maestro.lanPin* endpoints and the nine settings keys
    review gave up now live on /dsh-maestro-remote, which review's stub row had
    declared but never served.
  • New settings section maestro-remote (id maestro-remote, order 31).

Fixed

  • One row is addressed by the bare package name. All three rows were
    addressed by subpath, so the client module scan resolved no package root and
    classified this package as permanently not a client row: lib/client.js was
    never served and the settings section was absent with no boot error naming a
    cause.
  • The client bundle registers under this package's own name.
    scripts/build-client.mjs was copied from a sibling and kept that sibling's
    loader id, so the bundle carried remote's code under
    @ddtcorex/dsh-maestro-gateway's name. The id is now read from
    package.json.

What's Changed

  • chore: target DSH 0.1.7-alpha.2 (+ fail-loud guards) by @ddtcorex in #58
  • fix(remote): relax the dsh peer range to survive the 0.1.7 boot gate by @ddtcorex in #59
  • fix(remote): drop the ignored authority argument from rpc.handle by @ddtcorex in #60
  • fix(remote): re-anchor dsh peer ceiling to 0.3.0-0 by @ddtcorex in #61
  • docs: drop the retired dsh-maestro-meta install path by @ddtcorex in #62
  • refactor(remote): embed the settings store instead of depending on it by @ddtcorex in #63
  • fix(remote): address a row by the bare name and derive the loader id by @ddtcorex in #64
  • feat(remote): draw the tunnel section in the house pattern by @ddtcorex in #65
  • docs: record what the absorption actually preserved by @ddtcorex in #66
  • docs(remote): align README and AGENTS with the code by @ddtcorex in #67
  • fix(remote): validate the tunnel domain and re-vendor the store by @ddtcorex in #68
  • chore(release): 0.5.0 by @ddtcorex in #69
  • fix: keep the machine's tunnel names out of published source by @ddtcorex in #70

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 15:27
2d903fe

Fixed

  • Require the config-lib that owns the shared store — the declared range
    could not reach the release that moved the settings doc, so a registry
    install read the retired path (#54).

Changed

  • Follow @ddtcorex/dsh-maestro-config-lib to ^0.3.0 (#54) and the DSH
    0.1.7-alpha.1 peer pins (#56).
  • Declare package license, repository and Node engine range in the manifest
    (#53); correct the lib/ build-output claim in the docs (#52).

What's Changed

  • docs: correct the lib/ build-output claim by @ddtcorex in #52
  • docs: declare package license, repository and node engine by @ddtcorex in #53
  • fix(remote): require the config-lib that owns the shared store by @ddtcorex in #54
  • chore(deps): bump @deepseek-ai/* peers to 0.1.6-alpha.2 by @ddtcorex in #55
  • chore: bump @deepseek-ai/* pins to 0.1.7-alpha.1 by @ddtcorex in #56
  • chore: release v0.4.0 by @ddtcorex in #57

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 08:22
7940e9c

Added

  • Configurable PIN session TTL, default 1 day (#48).
  • Self-healing tunnel watchdog with backoff retry (#46).
  • Rotated, age-pruned proxy access log (#45).

Fixed

  • The LAN PIN gate is usable — login and the gate now choose the governing
    PIN with the same host-class predicate and mint class-specific cookies
    (maestro_pin / maestro_lan_pin), so the advertised LAN URL + LAN PIN
    pair can actually produce a cookie the gate accepts; the card also advertises
    the LAN listener URL instead of the public one (#49, #50).
  • Declare row inject for the rpc row on DSH 0.1.5 (#47).

What's Changed

  • feat(remote): add rotated, age-pruned proxy access log by @ddtcorex in #45
  • feat(remote): self-healing tunnel watchdog with backoff retry by @ddtcorex in #46
  • fix(remote): declare row inject for rpc row on DSH 0.1.5 by @ddtcorex in #47
  • feat(remote): configurable PIN session TTL (default 1 day) by @ddtcorex in #48
  • fix(remote): make the LAN PIN gate usable and harden the proxy by @ddtcorex in #49
  • test(remote): pin loopback trust to the LAN listener by @ddtcorex in #50
  • chore: release v0.3.0 by @ddtcorex in #51

Full Changelog: v0.2.2...v0.3.0

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 06 Sep 12:01
24d7023

Fixed

  • Stale dsh-auth cookie after a dsh web restart — when the signing secret rotates on restart, a returning browser's dsh-auth-* cookie becomes invalid, and the proxy previously skipped ?token= auto-mint whenever any dsh-auth-* cookie was present, causing a permanent 401 ("no session initialized") through the tunnel. The proxy now auto-recovers: on a 401 for a GET/HEAD index request it retries with ?token= (stripping only the stale dsh-auth-* cookie), and on any other 401 or a rejected WebSocket upgrade it clears the stale cookie via Set-Cookie (#43).

What's Changed

  • fix(remote): auto-recover from stale dsh-auth cookie on 401 after restart by @ddtcorex in #43
  • chore: release v0.2.2 by @ddtcorex in #44

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 02 Sep 16:53
a924867

Fixed

  • Deployment error for custom ports — suppress deploymentError for explicit custom ports (#41).
  • Maestro PWA & branding — favicon/manifest/title (#40).

What's Changed

  • fix(remote): Maestro PWA & branding (favicon/manifest/title) by @ddtcorex in #40
  • fix(remote): suppress deploymentError for explicit custom ports by @ddtcorex in #41
  • chore: release v0.2.1 by @ddtcorex in #42

Full Changelog: v0.2.0...v0.2.1