Repository navigation
Releases
v0.2 - complete long answers, non-modal card
v0.2 — complete long answers, non-modal card
Fixes the two ways a long /btw answer could fail: it was cut mid-sentence, or
nothing appeared at all.
Why it happened
- The routed Messages protocol counts thinking against
max_tokens. The old
1200-token cap could be consumed entirely by reasoning, leaving zero answer
text; otherwise the answer stopped mid-sentence onfinish: max-tokens. - A hard 120 s wall clock aborted healthy streams while tokens were still
arriving, and the client replaced the already-streamed text with the error.
What changed
- output budget default 8192, capped by the session's composed output cap
- automatic continuation on
max-tokens(up to 2 rounds) instead of showing
half a sentence; continuation rounds run without thinking - one thinking-off retry when the budget is spent before any visible text, so
a thinking-heavy call still produces an answer - stall watchdog (no chunk for 60 s) plus a 10 min ceiling, reported as
STALLED/DEADLINE; partial text is never dropped - non-modal floating card: no backdrop, no
data-shortcut-modal, Space/Enter
never captured, close button or Escape-while-focused; the composer and chat
stay usable while an answer streams - the stream always settles (
STREAM_ENDED) and a failure renders beside the
partial answer; thinking progress shows as "Thinking… 1.5k" - configurable:
maxTokens,continuations,stallTimeoutMs,deadlineMs
(aliastimeoutMs),thinking: inherit|off
Verification
- Unit suite: 89 tests, fully green in CI (ubuntu), including the client-bundle
currency andnode --checkgates; 88/89 locally because the confined Windows
sandbox blocks the E2E parser test's child process node tools/build-client.mjs --checkclean- browser E2E updated for the non-modal dismissal contract; re-run pending an
unconfined Chrome run
Upgrading
Restart dsh web to load the new host half; the client bundle hot-swaps.
plugin_manager install_bundle target: @andrewhmir/dsh-btw@0.2.0
Git tag v0.2.0. Not yet published to npm.
v0.1.2 - ephemeral /btw side questions
/btw <question> answers a side question from the full current conversation, with no tools, and the exchange is never written to session history — no transcript rows, no model-visible messages on the next turn. The answer streams into a dismissible overlay (Space / Enter / Escape) and works while the main turn is still running.
It is the inverse of a subagent: a subagent gets the full tool surface and an empty context; /btw gets the full conversation context and no tools.
Install
Requires DSH >= 0.2.0-rc.2 with the Web GUI (dsh web).
From a local checkout:
plugin_manager install_bundle target: /absolute/path/to/dsh-btw
Package: @andrewhmir/dsh-btw@0.1.2 — a DSH bundle; it declares dsh.bundle.patch and one client+host plugin row (id: btw). Restart dsh web after installing.
In this release
- package identity
@andrewhmir/dsh-btw, version0.1.2, MIT,engines.dshfloor set to the measured>=0.2.0-rc.2 - repository layout: the package sits at the repository root; CI checks the client bundle, syntax, the unit suite, and the packed file set
- README (install, semantics, privacy, limits, compatibility, independence),
MOUNT.mdmachine notes, anddocs/VERIFICATION.mdevidence - clean-room E2E tooling: first-run against a fresh DSH home, browser CDP E2E, mid-stream concurrency, and session-log ephemerality assertions
Verification
node --test "test/*.test.mjs"→ 67/67 passnode tools/build-client.mjs --check→ bundle current;node --check client.js→ clean- GitHub Actions CI green on this commit
- ephemerality checks: the question and answer are absent from the session log; the overlay refuses attachments and dismisses without leaving state
Privacy
No persistence, no tool calls, no extra provider: the request reuses the session's routed provider/model/reasoning effort and its prompt-cache prefix. Dismissing the overlay aborts the provider call.