Skip to content

Releases

v0.11.4 - document the prose sections as Markdown

Choose a tag to compare

@nguyenduclong-ict nguyenduclong-ict released this 01 Oct 02:45

Changed

  • The prose sections are documented as Markdown. Overview, Current Activity, Next Steps and
    Key Findings / Notes are rendered by the panel's Markdown renderer, so the write tool's field
    descriptions, the injected prompt (rule 8) and the document template now say so: one fact per line,
    - bullets for a list of facts, backticks around a path, command or identifier, a small table with its
    |---| separator row, and **bold** for the single thing that matters.
  • The old limit still holds: the checklist carries the plan and the prose carries the state, so
    formatting that adds no fact is noise — and a line break is a real one, never the two characters \n.
  • Both READMEs gain a "prose that reads at a glance" bullet.

Verified

node --test "test/*.test.mjs" — 43/43.

v0.11.3 - hide the new-conversation trigger; render prose line breaks

Choose a tag to compare

@nguyenduclong-ict nguyenduclong-ict released this 30 Sep 06:00

Fixed

  • No more progress ring on the new-conversation screen. The shell paints its hero composer whenever
    sessionId === undefined || shellPhase === "blank", while uiSession.adapter.current, the retained
    session row and the right sidebar kept naming the conversation that was open before "+ New". The client
    now reads the app's own hero signals and hides the trigger there; the button stays mounted, so the dock
    row is never emptied, and it returns on the first message.
  • Multi-line prose renders as lines again. A call that escaped twice stored the two characters
    \ + n instead of a line break, which the panel showed as a visible \n. decodeEscapedLineBreaks()
    restores those breaks on write and on read — so documents already on disk render correctly without
    being rewritten — and only at a sentence boundary: Windows paths (docs\notes.md, C:\new) and prose
    that quotes the escape itself are left untouched.

Changed

  • Both read tools share one empty-document hint that states the state and names the tool, and it warns
    when progress tracking is switched off for the session.
  • The session_progress_status output schema accepts current: null for a document with no step in progress.
  • The write tool's prose parameters and the injected prompt ask for real line breaks instead of a literal \n.

Verified

node --test "test/*.test.mjs" — 43/43.

v0.10.6 - fix empty progress panel on DSH Desktop 0.10.0

Choose a tag to compare

@nguyenduclong-ict nguyenduclong-ict released this 26 Sep 18:02

Symptom

On DSH Desktop 0.10.0 (harness 0.1.7-rc.2) the plugin still wrote the progress file through its tools, but opening Session Progress in the UI showed an empty panel: tool_call wrote content yet no markdown, percentage or checklist appeared.

Root cause

Not a write failure — the host wrote correctly and GET /api/session-progress/content returned the full document for the right session id. The breakage was entirely in how the client named the current session:

# Problem
1 resolveCurrentSessionId() read ctx.sessions.list.getSnapshot().current; 0.1.7 replaced that snapshot with { ids, byId, phase, projectionsBySession }, so it was undefined.
2 Its ctx.uiSession.adapter.current fallback never ran, because uiSession was missing from exports.inject and Cordis 4 throws cannot get property "uiSession" without inject for an undeclared service.
3 The client then asked for the default scope → found:false, content:"" → empty panel.
4 The out-of-order guard in fetchProgress discarded the panel's own correct response whenever the resolver returned null.
5 The host only looked up one spelling of the session id, while 0.1.7 prefixes ids with session- (older files carry the bare UUID).

Changes

  • client: declare uiSession in the inject list and resolve the current session from uiSession.adapter.current; keep the 0.1.6 shapes as fallbacks, plus a retainedBy.mainView rule over the new byId snapshot and a [data-sidebar-right-session] DOM fallback.
  • client: never discard a fetched response just because no current session can be resolved; drive the session-change watcher and polling from the same resolver; a default poll can no longer wipe a panel that knows its own session id.
  • host: sessionIdVariants() + findSessionProgressByAnyId() accept either id spelling (exact match always wins) on the content endpoint and in the read / status / check-done tools.

Verification

  • _investigation/verify-017-client.mjs — 8/8 pass (4/8 against the pre-fix client, reproducing both failure paths).
  • verify-fixes.mjs 26/26 and verify-step-tools.mjs 23/23 stay green.

Upgrade

Update the plugin and restart DSH Desktop so the client plugin re-applies its inject list.