github bowenliang123/dsh-context v0.37.0

latest releases: v0.72.0, v0.71.0, v0.70.0...
one month ago

Install / Update

Install the dsh-context plugin on DeepSeek Harness with released NPM package:

dsh plugin --profile web add dsh-context@latest

Update the dsh-context plugin:

dsh plugin --profile web update dsh-context@latest

What's New

Engineering note: this compatibility rework landed as a single long-horizon agent task — ~110 minutes, ~710M tokens end to end — from reverse-engineering every 0.1.2-alpha.1 breaking change in the harness source to a shipped release, verified entirely through browser automation + visual QA against a live DeepSeek Harness booted from both 0.1.1-rc.2 and 0.1.2-alpha.1 (zero console errors, zero page errors across every surface).

  • Full 0.1.2-alpha.1 compatibility — with 0.1.1-rc.2 retained — 0.1.2 rewrote the client composition (the dsh-client-runtime monolith is gone) and the entire history transport, and every plugin faced a rewrite. This release stops assuming and starts probing: each seam resolves by feature detection at runtime, older faces first, and every miss degrades one feature instead of ever erroring a page.
    • History reads: remote.session.page (the 0.1.2 gateway transport, the inclusive cut throughSeq pinned to the target seq) over the 0.1.1 sessions.history verb. Both served envelopes unwrap ({ok, value} and {result: {ok, value}}), packed chunk-row records skip (final events always ride verbatim), and a malformed payload rejects into the retryable "load failed · retry" state — never a silent "not in the log" claim.
    • Conversation-window join: prefers 0.1.2's useChat (ChatSnapshot.legacy.nodes) and falls back to the 0.1.1 session snapshot, both seats invoked in a stable hook order — this fixes the empty File Activity card on 0.1.2 (#26).
    • Image cards: accept uiConversation.imageUrl (0.1.2) or conversation.resolveImage (0.1.1); absent faces degrade to metadata-only cards.
    • /context command: waits for the inputTriggers service (ctx.inject) instead of racing module arrival order, which 0.1.2's finer module graph broke; the modal resolves sessions at close time for the same reason. Open → Escape → token consumption verified end to end on both versions.
  • No more undefined on the wire (#29, #30) — the served contextTimeline view now joins model/provider/contextWindow by conditional spread, so a fresh blank session can no longer emit a non-lossless-JSON projection value that fails every push frame for the session. This is the exact root cause reported in #29/#30 (an undefined-valued view field), now fixed in the shipped package and guarded by plain-JSON view assertions on both the unknown and known model shapes.
  • One definition object, every registry generation — the projection units are typed against the full dual contract: pre-0.1.1 schema/view, 0.1.1+ stateSchema/wire, and 0.1.2's widened init(header). The same unit installs unchanged from 0.1.0-rc.7 through 0.1.2-alpha.1, dsh.client declarations and the client bundle's module-purity table track the 0.1.2 module graph, and the dsh peer ranges widen to >=0.1.0-rc.7.

Commits

  • fix(host): keep undefined-valued scalars off the wire view (#29, #30) (d25d44a)
  • refactor(host): mirror both projection unit contracts across registry generations (6e46d65)
  • feat(browser): dual-face compatibility across the dsh 0.1.1/0.1.2 seams (#26) (7b61d5d)
  • build: track the 0.1.2 client module graph (1dab8dc)
  • release: v0.37.0 (6d17588)

v0.36.0...v0.37.0 · 5 commits

Contributors

Don't miss a new dsh-context release

NewReleases is sending notifications on new releases.