github bowenliang123/dsh-context v0.67.0

4 hours 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

image

Features

  • Agent Network is now a card wall — one card per agent, carrying its billing and its work state

    • Every agent gets its own card: its title, live context size and window occupancy, a composition bar, how long it has been running, how many steps it has taken, and its request count. The card's cost estimate and billed-token total come from the same price book the stats board uses, so the two never disagree.
    • Hovering a card lights its whole chain in the lineage's color and reads the full breakdown — occupancy, activity, composition — in the detail strip below. Clicking jumps into that session's own Context tab.
    • Work state now reads in the harness's own glyphs: a running agent breathes with a green pulse on its incoming edge and turns over the same rolling spinner the header's subagent list uses, settling into the same green dot once the work is done.
    • Sibling order follows the parent row's own subagentCatalog projection — the same sequence the harness header's subagent popup lists — instead of the running-first heuristic.
    • Narrow panes fold the family into tidy rows, never a horizontal scrollbar.

    This direction came from #130 — @AquaVictor read the agent network with several subagents, proposed the card layout and the fold-by-lineage behaviour, and offered to contribute it rather than wait on a PR. Thanks for the idea and for pushing on the direction.

  • The Context page stops reflowing as data lands

    • Opening the tab used to grow the page by 343px on a cold read, and each arriving step nudged the cards below down by a few pixels. Seven independent lanes had a height that came from their content instead of from their role: the brief lane under the chart, the detail header's metric pills, the file card's empty state, its filter band, the browser's category rows, text-only titles, and the trend card's pending body. Each now holds its own height, and the trend chart rises only its newest columns on mount.

Fixes

  • Tool timing no longer stalls a session that used a tool named __proto__. The name passed the own-property guard but assigned the tally's prototype instead of booking a row, so the count was lost and the wire schema rejected the inherited keys — a throw inside the registry that left the session's push feed loading forever. The client boundary has skipped this name since issue #44; the host fold, where the untrusted name first lands, now does too.
  • The activity view now copies a day's nested records before serving them. Each day entry held aliased references to the persisted cost ledger and skills table, so a later fold could mutate what had already been served. The ledger walk now sits beside addBilledUsage as its mirror, so both halves price through one implementation.
  • The page-lifetime detail payload cache is bounded, and the detail store parks when its last viewer leaves.
  • The price book's retry cycle ends when its last subscriber leaves, instead of polling a session nobody is watching.
  • The heatmap legend uses half as many swatches.
  • The decode-text bucket in the timing strip is labelled 模型回复 / Answers.

Changes

  • Code slimming, in the open. src/ is 4,945 lines lighter than the last release (3,976 added, 8,921 removed) with no feature lost:
    • The fold module split into state, metering, and wire siblings; the fold bounds and the duplicated decode-tally aliases are derived once instead of copied.
    • The context browser split into schema, tool-card, and node siblings, and the oversized specs split into siblings over shared harnesses.
    • Route registration and the record re-proof are shared; the per-baseline registry run that CI repeated collapsed into one.
    • Comments were swept against the repo's guideline across the build configs, client, host, shared, and test suites — keeping only what the code cannot say for itself. A source-file size limit was added to the contributing guide.
  • The tools row on the stats card no longer caps the tally at an arbitrary top three and quietly drops the rest. It keeps one line like the Input/Output row above it, and folds whatever does not fit into a trailing "其他 +N" — the fit is measured against the real chip widths, so nothing is clipped or overlapped.
  • The English dictionary is now checked against Chinese at compile time. Both were annotated Record<string, string> — an index signature and a promise of nothing — so a key added to one side alone typechecked and shipped; a key reaching only one side is now a compile error.
  • The compatibility seam matrix now actually runs on pull requests. The PR workflow never fetched the baseline tags or set DSH_REPO, so skipReasons() always reported a missing checkout and skipped every per-baseline probe — the proof docs/compatibility.md claims for "every pnpm test" was a no-op until a tag was cut. Both workflows now fetch the tags, and a skip under CI fails the run instead of hiding behind green.
  • The client bundle's declared externals dropped the four @deepseek-ai/ entries that never appear in the built output. The emitted require list is unchanged, and the purity gate still fails the build on any genuinely new external.
  • docs/compatibility.md's verification stamp is refreshed to this source tree.

Commits

  • docs(agents): add guidance for reviewing recent issues and PRs in release notes (70d2889)
  • i18n(timing): label the decode-text bucket 模型回复 / Answers (5856324)
  • fix(overview): halve the heatmap legend swatches (e1a6655)
  • fix(client): park the detail store when its last viewer leaves (45e1697)
  • fix(client): bound the page-lifetime detail payload cache (115e926)
  • fix(client): end the price-book retry cycle when its last subscriber leaves (6475afc)
  • docs(agents): add guidance for reviewing recent issues and PRs in release notes (0a57e33)
  • perf(timing): sweep the strip's bands on one wrapper, not one animation each (20826dc)
  • perf(trend): rise only the newest columns on mount (def268b)
  • docs(agents): update comments guideline for clarity and conciseness (79fe95e)
  • docs(agents): refine comments guideline for clarity and conciseness (f90bd98)
  • refactor(comments): trim host/shared comments to the value the code cannot carry (3fe1b7c)
  • refactor(comments): trim client comments to the value the code cannot carry (7cb0a9f)
  • refactor(comments): trim comments in the build configs (537e53a)
  • refactor(comments): rewrap test comments onto fuller lines (7c87ce2)
  • refactor(comments): drop two stale test comments (eb8368f)
  • refactor(comments): clean up the test-suite comments to the guideline (87a2893)
  • refactor(comments): add guideline for source code file size limit (ec203da)
  • refactor(host): split the fold module into state, metering, and wire siblings (c4f5500)
  • refactor(host): derive the fold bounds and drop the duplicated decode-tally aliases (d746d57)
  • refactor(client): split the context browser into schema, tool-card, and node siblings (52a5843)
  • test(client): split the oversized specs into siblings with shared harnesses (9aaa115)
  • fix(ci): run the compat seam matrix on pull requests (f50f33d)
  • fix(host): skip the reserved prototype key in the tool-timing tally (3611d50)
  • fix(host): copy a day's nested activity records before serving them (483e76b)
  • refactor(host): share the route registration and the record re-proof (73f279e)
  • refactor(client): unwrap the zero-argument component factories (ba8d7c7)
  • test(host): collapse the duplicated per-baseline registry run (9ccf236)
  • chore(docs): move the social-preview generator out of docs (0164778)
  • build: drop the client externals the bundle never requires (9b31d40)
  • docs(compat): refresh the verification stamp (5541de3)
  • feat(client): rework the agent network as live cards (32cb738)
  • docs: refresh the agent network portrait and notes (c8f2320)
  • feat(client): give every agent card a duration and a step count (38fe279)
  • style(client): widen the agent card grid (cd26173)
  • feat(client): show the agent cards' work state in the harness's own glyphs (8876154)
  • refactor(i18n): check the en dictionary against zh at compile time (209169d)
  • refactor(client): spell out the tools that fit, fold the rest into one chip (861ee77)
  • fix(client): hold every data-dependent lane so the page stops reflowing (667e1a9)
  • chore: release v0.67.0 (df136da)

v0.66.1...v0.67.0 · 40 commits

Contributors

Don't miss a new dsh-context release

NewReleases is sending notifications on new releases.