# Task: Show assistant progress messages ## Identity - Task ID: 20260831-show-progress-messages-a14f9c2d - Mode: Feature - Branch: codex/20260831-show-progress-messages-a14f9c2d-show-progress-messages-a14f9c2d - Worktree: /Users/inmanx/Documents/makelore-show-progress-messages-a14f9c2d - Base commit: 38f85f6b5e4dc4e2c5e5b9f8f4506554cfd578f5 - Owner: codex - Status: Ready for Integration ## Scope - Identify the protocol and UI classification of assistant text emitted before or between tool calls, using the supplied screenshot only as a visual example. - Verify that this stage/progress narration is projected and rendered in the current Makelore Code timeline without exposing Pi-private wire types. - Preserve per-item expand/collapse after a stage explanation has completed, including after the enclosing turn has settled. - Make every collapsed thinking, stage-explanation, and tool-output preview start from its first visible block and line, including horizontally overflowing text. ## Intent And Constraints - Preserve the product-neutral `ConversationMessageNode` / Snapshot / Patch contract and the Main-owned Pi boundary. - Keep private reasoning distinct from user-visible assistant narration and tool execution output. - Do not modify the occupied primary worktree or the separate running development worktree. ## Outcome - Confirmed the raw message is an ordinary Pi assistant message whose turn ends with `stopReason: toolUse`; Main normalizes it to an assistant `ConversationMessageNode` with `stopReason: tool-use`. - Confirmed the Renderer semantically projects non-final assistant text as `assistant-commentary` / “过程说明”, rather than treating it as hidden thinking or as a tool node. - Confirmed active process groups open automatically and show a compact one-line stage explanation with an expand control; settled process groups retain the explanation behind their collapsed process summary while the final assistant answer remains visible. - Added explicit regression coverage proving a completed stage explanation remains collapsed to its first line by default, retains its own expand control, reveals the complete Markdown body, and can be collapsed again. - Changed collapsed process preview selection to use the first displayable block and first non-empty line for thinking, assistant commentary, and tool output. Long lines retain their beginning and use a trailing ellipsis. - Kept every collapsed preview viewport at horizontal offset zero on content and size changes. Tail-only streaming updates no longer replace or replay an unchanged head preview, while expanded content remains complete. ## Verification - Installed the existing lockfile with pinned pnpm `10.33.4`; 1,015 packages were reused from the local store and no manifest or lockfile changed. - Focused Vitest passed: 3 files / 28 tests covering live Pi event projection, durable session hydration, and Coding timeline process/commentary rendering. - Follow-up focused Vitest passed: 1 file / 9 tests, including completed commentary expand/collapse and stable head-preview assertions across streaming updates. - `pnpm run typecheck`: passed. - Scoped ESLint for the changed Renderer, unit, and Electron E2E files: passed. - `pnpm run build:vite`: passed; only the repository's existing dynamic-import and bundle-size warnings were emitted. - Focused Electron Playwright E2E passed: 1 file / 2 tests, including first-line thinking display, head truncation, and a measured tool-preview `scrollLeft` of zero. - Inspected `electron/coding-runtime/pi/event-projector.ts`, `electron/coding-runtime/pi/session-projector.ts`, `shared/coding-conversation-contracts.ts`, and `src/pages/Chat/CodingConversationTimeline.tsx` across the complete classification path. ## Follow-ups - None. ## Promotion Candidates - None recorded.