Skip to content

Releases

v0.11.0

Choose a tag to compare

@JNNarrator JNNarrator released this 25 Sep 02:48

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 Config was 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 with volatileForm(schema), which keeps only fields marked .volatile(). With none marked, the whole dsh-deckseek namespace was dropped before it ever reached the browser — every settings tile rendered disabled behind a read-only notice, and a write that did arrive threw Plugin entry "dsh-deckseek" has no volatile fields. The old settings.register() path never asked for the marker, so this was a migration regression, and tsc cannot see it, because volatility is runtime metadata rather than a type. Fixed the way the host's own ui-theme does 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, where volatileForm goes from undefined to ["skin", "workDetail"].
  • Icons follow the new weight system: names encode stroke weight (*Regular draws the 1px artwork, *Medium the same paths at 1.3px) and the rendered edge moved onto a size prop; the old *Outline16 / *Outline14 / *Close16 names are gone. src/client/icons.ts is 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, default standard, with the old normal and expanded values still accepted.
  • turn-trigger and model-retry no longer print raw JSON. The trigger row names the source family that woke the turn (10 of them, unknown sources falling to a neutral request rather than dropping the row); the retry row states "waiting to retry: attempt 2/5, ~4s" over waiting / failure / provider detail, and turns AUTH into "credentials invalid or expired, retrying will not help" instead of leaving a status code to guess at. Both had been written onto a render path Reader never takes — 202 tests and tsc were green without any of them ever mounting a real Reader, which is what tests/reader-seats.client.test.tsx now does.
  • Turn usage stopped silently dropping text. TurnTailData read two fields 0.1.7 had deleted, which throws nothing and degrades nothing — it just loses two sentences. It now reads the real tokenUsage buckets, 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

Choose a tag to compare

@JNNarrator JNNarrator released this 14 Sep 06:07

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 steps readout, marked N+ 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

Choose a tag to compare

@JNNarrator JNNarrator released this 06 Sep 17:40

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

Choose a tag to compare

@JNNarrator JNNarrator released this 06 Sep 15:30

Fix: new sessions default to the DeckSeek reading view — the entry dock now registers reactively after the host session body materializes.

v0.4.3

Choose a tag to compare

@JNNarrator JNNarrator released this 06 Sep 13:43

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.

deckseek

deckseek Pre-release
Pre-release

Choose a tag to compare

@JNNarrator JNNarrator released this 06 Sep 10:30

见changelog