Repository navigation
Releases
v0.11.0
The plugin is ported to DSH 0.1.7-rc.1, which moved enough of the surface that the port was mostly re-learning it: the icon set became a weight system, ctx.settingsScope gave way to ctx.configForms plus an exported Config, chat grew a 16th node kind (turn-trigger), and turn usage moved off the deleted tokensPerSecond / ttftMs. One of those changes broke the settings page, and that is the headline.
Breaking: the settings namespace is now the cordis entry id, so deckseek becomes dsh-deckseek, and an existing deckseek.skin silently falls back to the default soft card. The peer range narrows to >=0.1.7-rc.1 <0.2.0-0 — 0.1.3-alpha.2 is no longer supported.
Also in this release:
- The settings panel works again, reported as "the plugin crashed; the settings panel cannot be clicked". The exported
Configwas pointed at the durable envelope schema, but 0.1.7 no longer takes a registered schema at face value:describe()derives the served form itself withvolatileForm(schema), which keeps only fields marked.volatile(). With none marked, the wholedsh-deckseeknamespace was dropped before it ever reached the browser — every settings tile rendereddisabledbehind a read-only notice, and a write that did arrive threwPlugin entry "dsh-deckseek" has no volatile fields. The oldsettings.register()path never asked for the marker, so this was a migration regression, andtsccannot see it, because volatility is runtime metadata rather than a type. Fixed the way the host's ownui-themedoes it: the durable envelope stays plain (it is also the browser-side wire schema) and a volatile twin is what the entry exports. Verified against the built artifact, wherevolatileFormgoes fromundefinedto["skin", "workDetail"]. - Icons follow the new weight system: names encode stroke weight (
*Regulardraws the 1px artwork,*Mediumthe same paths at 1.3px) and the rendered edge moved onto asizeprop; the old*Outline16/*Outline14/*Close16names are gone.src/client/icons.tsis now the single place that names a host weight, so the next host rename is one edit instead of a sweep. - A "process detail" tier, same names and meanings as the host's:
compact/standard/detailed/verbose, defaultstandard, with the oldnormalandexpandedvalues still accepted. turn-triggerandmodel-retryno longer print raw JSON. The trigger row names the source family that woke the turn (10 of them, unknown sources falling to a neutralrequestrather than dropping the row); the retry row states "waiting to retry: attempt 2/5, ~4s" over waiting / failure / provider detail, and turnsAUTHinto "credentials invalid or expired, retrying will not help" instead of leaving a status code to guess at. Both had been written onto a render pathReadernever takes — 202 tests andtscwere green without any of them ever mounting a realReader, which is whattests/reader-seats.client.test.tsxnow does.- Turn usage stopped silently dropping text.
TurnTailDataread two fields 0.1.7 had deleted, which throws nothing and degrades nothing — it just loses two sentences. It now reads the realtokenUsagebuckets, with the cache-hit rate using the provider's own denominator. Per-turn TPS/TTFT is not restored: 0.1.7 moved those to session level. - turn-tail gains the turn's closing timestamp, the contract fields it had never been able to read, and a "branch into a new conversation" button. A previously recorded "platform hard limit" on forking was wrong — in the host it is two ordinary service calls, so the reading view can make them too.
- User messages keep the engine-parsed
@references, the fold header says what was folded as an action phrase instead of only counts, group bodies get overflow fade with independent scrolling, and a mid-turn interjection forces its turn open. - Audit rework: one of three recorded "gaps" did not exist — the session stats bar is the host's own, mounted on a sibling slot the plugin never replaced, so users had been seeing it all along. Four same-root misjudgements now, all from reading only the plugin and inferring host behaviour. The standing method is three steps: which host slot, is that slot replaced, which copy does the user actually see.
Tests 171 → 252 (npm test: 252 pass, 0 fail; tsc -p tsconfig.json --noEmit clean). Full audit in docs/design/compat-0.1.7.md.
Notes: npm still carries 0.6.0 — this tarball is the current release. Requires DSH ≥ 0.1.7-rc.1.
v0.10.0
Terminal skin gains a standing information layer, after comparing four independent TUIs (pi, Codewhale, grok-build, herdr): a window-bar readout (3 turns · last turn 3 steps), a braille dot-matrix mark on the idle screen, a count of what a folded turn hides (39 tool calls · 4 files · 2 failed), a hanging hairline on the closing readout line, and a full-width band for the user turn.
Mechanisms only — every colour still comes from a host theme token, and no new host projection is introduced (no token / cost / context-occupancy readout).
Also in this release:
- Window title bar → status bar: the terminal skin's frame carries a standing
N turns · last turn N stepsreadout, markedN+while older history is unloaded, and drops it first on narrow columns. - Idle screen identity: a three-slab record mark drawn in braille (one character = a 2×4 dot cell, 6 rows), with a
[hint]section label on the copy. - Folded turns state their cost: tool / file / failure counts inline in the header, gone once the turn opens.
- User turn as a full-width band rather than a right-aligned chip.
- Two engineering contracts as tests: every drawn glyph must be one narrow cell (the discipline behind the earlier half-disc and spinner bugs), and status must never be carried by colour alone (six tool phases each own a glyph, sharing a colour only where they read the same, red reserved for failure). Plus a dot-matrix contract: equal cells per row and braille code points only, so a font that renders braille double-width scales the mark instead of shearing it.
- 140 → 157 tests; README rewritten around the three reading skins.
Notes: npm still carries 0.6.0 — this tarball is the current release. Verified on a real host: the readout agrees with the rail and the host's own footer, the band spans the frame's inner width, and English counts read 1 file, not 1 files.
v0.4.5
Bottom-left delving status dock (深度求索中… {time} pinned above the composer with shimmer), pulsing in-progress tool state labels, and no reasoning scroll replay on page refresh.
v0.4.4
Fix: new sessions default to the DeckSeek reading view — the entry dock now registers reactively after the host session body materializes.
v0.4.3
Prebuilt plugin package (npm pack). Install with dsh plugin add — skips the source-build approval step.
Changes since v0.4.0: new-session default view, message navigation rail redesign, reliable jumps, in-view search precision, tool output dedupe, delving status label, diff stats on write/edit rows, tighter end-of-turn spacing.