Install / Update
Install the dsh-context plugin on DeepSeek Harness with released NPM package:
dsh plugin --profile web add dsh-context@latestUpdate the dsh-context plugin:
dsh plugin --profile web update dsh-context@latestWhat's New
The headline is the DNA context feed — in DNA mode the category accordion yields to one flat list of every assembled prompt item, presented in the model's own reading order with the newest message on top. It grew from @gekailin's proposal and drafts (#153, #158), with many thanks for the inspiration on both.
Features
- The DNA context feed: the prompt as one flat, prompt-ordered list (#153, #158)
- The model reads the prompt oldest-first, so the list presents that order bottom-up: the newest message is row one, and the tool schemas (one group row opening into the category body) plus the system prompt close the list. Each row carries its #prompt position, a category chip tinted with the category's own palette color, its introducing-step stamp and token price, and expands into the same full content.
- A text lens pinned in the card head filters the feed's rows and the open tools group's schemas alike — the served system prompt text included.
- Row and band hover link both ways: hovering a row lights its exact band on the DNA bar; hovering a band echoes onto the row it names — a message band its feed row, a tool-schema band the tools group, the system band the system row — and scrolls it into view, confined to the browser's own scrollport. Clicking a band still lands on the row and expands it.
- The feed column caps at three times the composition and trend cards' height and scrolls taller content inside; the card head (title, composition bar, notices, lens) stays pinned above the list. The /context modal keeps its own single-card scroll and stays uncapped.
- Every list in the browser — the flat feed, category bodies, tool schemas — is striped with a faint even-row wash; an open row keeps its active highlight alone.
- Session coverage on Context Insights (#151)
- Archived sessions no longer drop out of the figures: they fold back into everything the page derives off the session list — the KPI band, charts, heatmap, skills, and the session grid.
- A "Filter sessions" select next to the list's search box offers dsh's own archived-filter set — All (show archived, default), Hide archived, Archived only. The Active Sessions card follows the picked coverage, and archived cards wear an Archived tag and refuse to open, like dsh itself.
- JSON payloads open on the harness's JsonTree
- A section body that reads as whole-text JSON (a leading
{or[that parses) now opens on the shell's JsonTree inspector instead of markdown, with a Raw|JSON switch. The tree opens two levels deep via the expanders' own click path, and an expanded row drops its inline preview Chrome-DevTools style.
- A section body that reads as whole-text JSON (a leading
Fixes
- No more reconnect loops behind prefix-stripping reverse proxies (#159): the client POSTed every plugin route as a root-absolute
/api/dsh-context/*path, which a gateway's/app/dshprefix stripped — every poll 404ed and the panel retried on an aggressive backoff. The six route constants now ride browser-relative spellings resolved against the page's document base, the same idiom dsh's own stream/socket clients use: a prefixed proxy keeps its prefix, and a direct deployment resolves to the exact same URLs as before. - The DNA trend bars are painted on the shared per-token pixel scale: gradient stops were percentages of each bar's own total, so common strands rasterized differently per bar — sub-pixel bands flipping visible/merged and inherited bands reading thicker and thinner across the chart. Stops are now byte-identical in every bar (live-measured on a 99-bar session: adjacent-bar common-row pixel diffs 589 → 11).
- The DNA faces no longer inherit the browser's category focus: opening a row/category persisted a focus with no visible UI, scaling the trend bars to the focused category's share while the band data stayed in full-context offsets — dark slices floating above half-height bars.
- The /context modal shrinks its side margins to two thirds of the old layout (
min(calc(33.333% + 480px), calc(100% - 32px))), instead of pinning on a fixed 720px cap that left large blank margins on wide panes. - The native selects — the overview coverage picker, the fleet sort/filter, the context browser step picker — wear dsh's own form-field border recipe (0.5px solid border-l4) instead of the 1px hairline that read as borderless on the white layer-2 background.
Changes
- package.json declares the supported DSH Harness engine range via
engines.dsh(#155). - The README gains a Chinese translation (#154).
- Dev: the client suite runs in the vitest vmThreads pool (~30% faster on the coverage gate) and vitest is updated to 5.0.5.
Commits
- fix(client): paint the DNA trend bars on the shared token scale (a03e606)
- refactor(client): split the browser card into a fixed head and a scrolling rows region (a4bec7d)
- feat(client): stripe the context browser's rows with a faint even-row wash (feacf5d)
- fix(client): exempt the DNA faces from the browser's category focus (9c55959)
- fix(client): ride the fetch routes as browser-relative spellings (f4db117)
- docs(vitest): state the pool rationale as measured runtime (8331602)
- perf(client): run the client suite in the vmThreads pool (2ce42f6)
- chore(deps): update vitest to 5.0.5 (e620e4f)
- feat(client): echo a DNA band hover onto its feed row (9217fca)
- feat(client): cap the context browser at 3x the composition + trend cards' height (ef478de)
- feat(client): lay the DNA context feed out flat in reading order, newest on top (26cfc80)
- fix(client): shrink the /context modal's side margins to two thirds (781c81e)
- feat(client): render JSON-detected section bodies as the harness JsonTree (aca1574)
- fix(client): give the native selects dsh's form-field border (dd690e0)
- feat(client): add a session coverage picker to Context Insights, defaulting to all (7ae8de8)
- chore: declare supported DSH engine range via engines.dsh in package.json (#155) (ca5a3e8)
- doc(readme): Add Chinese README translation (#154) (ba65d6e)
v0.72.0...v0.73.0 · 17 commits