Skip to content

dsh-code 1.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 09:01
· 79 commits to main since this release

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 Tab on 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 /help all state which one is selected; with text in the box, Tab still completes commands.
  • /queue manages the queue: enter sends a message as steering instead, e edits its text (attachments are kept as they are), d removes it, and ↑↓ / PageUp / PageDown / g / G move.
  • Press Delete on an empty composer to cancel the newest queued message.
  • Pressing Esc to 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 ```diff keeps its own red and green.

Usage panel

  • /usage reports 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 in counts only uncached input, and cache shows both the cache-read volume and the hit share instead of folding every cached token into one input figure.
  • /export now 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), taking src from 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. /update and deepseek update --apply work 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-meter and @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.0

Then /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-existing exhaustive-deps warnings), both typechecks pass, 65 files / 1012 tests pass.
  • pnpm build and pnpm pack pass.