dsh-code 1.2.0
dsh-code Release Notes - 1.2.0
Overview
1.2.0 makes npm the primary install and update channel again. It adds queued and steered messages for a running turn, a /usage panel, and Chinese status-bar labels; token accounting now uses the four disjoint buckets the host reports, so the status bar and exports show more accurate figures. The host line is still @deepseek-ai/dsh@0.1.5-rc.2.
New features
Queued and steered messages
- A message submitted while a turn is running no longer interrupts it: it queues for the next turn by default.
- Press
Tabon an empty composer to switch between queueing and steering. A steered message reaches the model at the running turn's next step boundary, as part of that same request. - The prompt glyph (
❯/↳), the composer placeholder, the toggle notice, and/helpall state which one is selected; with text in the box,Tabstill completes commands. /queuemanages the queue: enter sends a message as steering instead,eedits its text (attachments are kept as they are),dremoves it, and↑↓/PageUp/PageDown/g/Gmove.- Press
Deleteon an empty composer to cancel the newest queued message. - Pressing
Escto cancel the turn keeps queued messages and sends them next, while steered messages are dropped with the turn. - Every prompt in the transcript is a full-width coloured row whose colour and label say how it was sent (ordinary, queued, or steered). The colour is computed from the theme, so switching themes or rerolling rainbow changes it; a pasted
```diffkeeps its own red and green.
Usage panel
/usagereports the current session's usage: the four disjoint buckets (uncached input, cache write, cache read, output), the cache-hit share, and the same totals merged by model.- The per-turn table lists every completed turn's total, uncached input, cache read, hit share, cache write, output, thinking tokens, and the models that billed it.
- A turn that switched models is listed once under both names and never counted twice; a turn that billed nothing is left out.
- When some turns of a group never reported a bucket, the group sums what was reported and marks it
+, with a line below the table explaining that the figure is a floor. - Everything comes from the host's existing token accounting. A deployment without it says so explicitly instead of showing zeros.
Improvements
- The status bar's second row (turns, steps, model time, latency, tokens/s, tool, cache, in, out, context,
/mode) follows the interface language and repaints immediately after/language, with no restart. - The status bar's
incounts only uncached input, andcacheshows both the cache-read volume and the hit share instead of folding every cached token into one input figure. /exportnow includes cache-write tokens in its statistics line.
Bug fixes
- An ordinarily submitted message is no longer labelled "queued": only a submission made while a turn was already running counts as queued or steered.
Development and quality
- The spec suite is now type-checked (
pnpm typecheck:tests), so a test double that no longer matches the interface it imitates fails loudly. - ESLint 10 with type-aware rules covers
src,tests,scripts, and the root configs (pnpm lint), takingsrcfrom 365 findings to zero. - CI runs both checks plus a report-only coverage job (82.9% of statements, no threshold).
- One behavior change: a settings file whose JSON is not an object now warns and falls back to the default instead of doing so silently.
Install and packaging
- npm is the primary channel again:
npm install -g dsh-code@1.2.0./updateanddeepseek update --applywork afterwards. - The GitHub Release tarball stays as the fallback for restricted networks; CI builds and attaches it on every tag.
- Two host-provided peers are new:
@deepseek-ai/dsh-token-meterand@deepseek-ai/dsh-session-projection. dsh already ships them, so nothing extra to install. - A tag push only builds the tarball and creates the GitHub Release; it never runs
npm publish.
Upgrade notes
Upgrading from 1.1.0:
npm install -g dsh-code@1.2.0
dsh plugin --profile cli add dsh-code@1.2.0Then /quit and start again. An install that came from the GitHub tarball can simply be overwritten with the npm command above; until npm carries this version, the updater reports that the install is newer and refuses to downgrade. The interface is English by default — run /language zh for Chinese.
Verification
pnpm verify: lint clean (21 pre-existingexhaustive-depswarnings), both typechecks pass, 65 files / 1012 tests pass.pnpm buildandpnpm packpass.