Repository navigation
Releases
Releases · nguyenduclong-ict/dsh-session-progress
v0.11.4 - document the prose sections as Markdown
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
Fixed
- No more progress ring on the new-conversation screen. The shell paints its hero composer whenever
sessionId === undefined || shellPhase === "blank", whileuiSession.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
\+ninstead 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_statusoutput schema acceptscurrent: nullfor 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
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
uiSessionin the inject list and resolve the current session fromuiSession.adapter.current; keep the 0.1.6 shapes as fallbacks, plus aretainedBy.mainViewrule over the newbyIdsnapshot 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
defaultpoll 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.mjs26/26 andverify-step-tools.mjs23/23 stay green.
Upgrade
Update the plugin and restart DSH Desktop so the client plugin re-applies its inject list.