Skip to content

v2.1.6

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Sep 15:16
· 27 commits to main since this release
c017588

v2.1.6

DVR 2.1.6 is a compatibility and network-hardening patch for the 2.1.x train. It advances exact stable validation to DSH 0.1.5-rc.2, fixes the DSH 0.1.5 remote-settings startup error, and finishes the Host-first proxy convergence work without changing the public routing model, persisted settings schema, or minimum Host floor (0.1.0-rc.8).

DSH 0.1.5-rc.2 and remote Settings

  • Advances the fixed stable/exact Host evidence to DSH 0.1.5-rc.2; exact 0.1.5-alpha.2 coverage remains preview verification evidence only. 0.1.5-rc.1 remains explicitly peer-compatible and the public DVR 2.1.x floor stays at 0.1.0-rc.8.
  • Fixes #465 by declaring settings, connection, and webServer on the same Cordis caller fiber that invokes connection.rpc.handle(). This prevents cannot get property "webServer" without inject under DSH 0.1.5 strict service-access semantics.
  • Keeps the remote Settings security model unchanged: the RPC channel remains trusted-host, sensitive network/credential/local-device fields stay local-only, and the explicit remote field allow-list plus risk-confirmation flow remain authoritative.
  • Keeps the separate Web-bundle modules -> webServer compatibility overlay in place while current upstream DSH still lacks that Loader activation dependency; #448 continues to track its eventual retirement.

Host-first proxy convergence

  • Makes the DSH/Host network path authoritative whenever Vision Router's proxy is blank. Ordinary Host traffic no longer passes through a second DVR proxy-routing decision.
  • Keeps explicit proxy / proxyHosts as a supported, local-only Advanced override for visual traffic, including SOCKS5 and selective-host deployments that current DSH Host proxy policy cannot replace.
  • Scopes Host-owned visual adapter overrides with AsyncLocalStorage, so concurrent same-origin Host requests do not inherit DVR proxy state. Vision chain, vision_describe, Benchmark, and Exact Check share the same scoped authority.
  • Gives Router-owned and scoped Host-owned ProxyAgents one shared lease/retire lifecycle. Hot proxy replacement, clearing configuration, pending construction, synchronous failures, and plugin unload now retire Agents without leaking or closing in-flight work.
  • Enforces proxyHosts on every redirect hop after the initial request is admitted. Redirects that leave the allow-list return to the request-start Host/caller dispatcher while Fetch/Undici remains responsible for redirect semantics, body replay, header stripping, limits, and abort behavior.
  • Preserves historical socks5h:// settings without rewriting persisted configuration: the compatibility projection to Undici-native socks5:// happens only after a request is admitted by proxyHosts.
  • Removes the obsolete process-wide dispatcher tracker/global-fetch observer after lifecycle ownership moved to the shared dispatcher pool.

Protocol and regression coverage

  • Adds real loopback HTTP CONNECT and SOCKS5 protocol tests in addition to MockAgent/FakeProxyAgent coverage. The SOCKS case verifies proxy-side DNS by sending an unresolved domain name through the SOCKS5 tunnel.
  • Exact-source stable/preview contracts continue to run on Ubuntu, macOS, and Windows; Node 22/24 CI, routing parity, adversarial fuzzing, dependency review, CodeQL, native multimodal cold resume, Windows screenshot runtime, and host-sharp integration remain release gates.
  • Pre-release acceptance on macOS used the actual npm pack tarball installed through DSH 0.1.5-rc.2, then exercised the real Chromium Settings UI, a settings write/readback round trip, cold Web restart, and a real headless vision turn. vision_ocr, vision_describe, and vision_colors correctly read a generated image using the machine's normal DSH model credentials.

Upgrade

Upgrade to 2.1.6 and restart DSH Web/Desktop. Existing 2.1.x settings remain compatible; no migration is required.

Commits

  • Merge pull request #468 from ysr666/release/v2.1.6
  • chore(release): prepare v2.1.6
  • Merge pull request #467 from ysr666/fix/remote-settings-webserver-inject
  • fix(settings): inject webServer for remote RPC
  • Merge pull request #466 from ysr666/test/real-proxy-protocol-e2e
  • test: exercise real proxy protocols
  • Merge pull request #464 from ysr666/refactor/remove-dead-proxy-tracker
  • refactor(proxy): remove obsolete dispatcher tracker
  • Merge pull request #463 from ysr666/fix/proxy-redirect-hop-boundary
  • fix(proxy): enforce redirect host boundaries
  • Merge pull request #462 from ysr666/fix/provider-proxy-dispatcher-lifecycle
  • fix(proxy): retire Router-owned dispatchers
  • Merge pull request #461 from ysr666/docs/h3-proxy-product-contract
  • docs(proxy): finalize H3 product contract
  • Merge pull request #460 from ysr666/refactor/scoped-host-proxy-override
  • refactor(proxy): scope Host-owned proxy override
  • Merge pull request #459 from ysr666/refactor/host-proxy-egress-contract
  • refactor: lock Host proxy egress contract
  • Merge pull request #458 from ysr666/refactor/host-first-proxy-convergence
  • refactor: make Host proxy the default authority
  • Merge pull request #457 from ysr666/fix/proxy-ownership-host-normalization
  • fix: harden proxy ownership and host matching
  • Merge pull request #456 from ysr666/fix/455-socks5h-proxy-compat
  • fix: preserve legacy socks5h proxy settings

Supply-chain verification

  • Git commit: c01758825663a443be3a1183441eab4a6b3f3b56
  • npm tarball SHA-1: 4cc3bc44a569aa22064e6935727753a8af95b435
  • tarball SHA-256: 0304734df4747a254dc74c750c2323271d3e16137a762d9f9c0cedddb6398ff4
  • packed files: 203
  • npm provenance: enabled via trusted publishing (OIDC)