In Transparent Stream mode a live multi-round turn (narrate -> tools -> narrate -> tools) rendered all assistant prose bunched at the top with every tool/thinking row clustered below; it self-healed only once the turn settled. _syncLiveWorklogReasonsForAnchor() runs on every live segment render (_flushPendingSegmentRender + the RAF _doRender in messages.js) and unconditionally built the top-anchored live-worklog rail, mirrored each round's prose into a wl-reason row there, and hid the real inline assistant-segment via assistant-segment-worklog-source (display:none). That prose-folding is the Compact Worklog presentation (#3401) and must not run in Transparent Stream mode. Gate the helper on isCompactWorklogMode() so transparent mode keeps prose as visible, chronologically-placed inline segments interleaved with tool rows (matching the already-correct settled render). Compact Worklog folding is unchanged. Verified in an isolated mock-LLM env via an on-screen visual-position probe (before: textAfterFirstTool=0, allTextAboveAllTools=true; after: textAfterFirstTool=3, allTextAboveAllTools=false) and confirmed compact_worklog still folds. Adds a behavioral regression test asserting the gate is the first statement in the helper (precedes the rail build), red/green validated. |
||
|---|---|---|
| .. | ||
| vendor | ||
| apple-touch-icon.png | ||
| assistant_turn_anchors.js | ||
| boot.js | ||
| commands.js | ||
| favicon-32.png | ||
| favicon-192.png | ||
| favicon-512.png | ||
| favicon-512.svg | ||
| favicon.ico | ||
| favicon.svg | ||
| i18n.js | ||
| icons.js | ||
| index.html | ||
| login.js | ||
| manifest.json | ||
| messages.js | ||
| onboarding.js | ||
| outline.js | ||
| panels.js | ||
| pwa-startup.js | ||
| sessions.js | ||
| style.css | ||
| sw.js | ||
| terminal.js | ||
| ui.js | ||
| workspace.js | ||