name: formax-expanded-transcript-workflow description: Use when implementing/debugging Ctrl+O Expanded Transcript (second view) and thinking persistence in the REPL.
formax-expanded-transcript-workflow
Goal
Use this skill when changing Ctrl+O expanded transcript behavior, thinking persistence, or compact / expanded projection boundaries in the REPL.
Read First
docs/contracts/transcript-surface-contract.mddocs/contracts/semantics-contract.mddocs/runbooks/repl-surface-debugging.mdwhen the change can affect clear / remount behavior
These docs are canonical. If stable expanded-transcript behavior changes, update them before or with code.
If the change touches clear / remount ownership directly, also use formax-surface-reset-workflow.
Code Map
- Key handling:
packages/core/src/screens/repl/hotkeys.ts - View wiring + footer:
packages/core/src/screens/REPL.tsx - Compact projection:
packages/core/src/screens/repl/compactProjection.ts - Transcript rendering:
packages/core/src/screens/repl/transcript.tsx - Thinking persistence:
packages/core/src/features/repl/controller/streaming/streaming.ts - Expanded Transcript panels:
packages/core/src/screens/repl/panels.tsx - Compact command lifecycle:
packages/core/src/features/repl/controller/send/send.ts - Surface reset owner:
packages/core/src/screens/repl/useSurfaceTransitionManager.ts
High-Signal Patterns
- No fake thinking:
thinking_deltais the only source of truth- never synthesize thinking rows from timers or summaries
- Avoid
Statichacks for toggles:Staticis append-only; if content must disappear, use reset / remount ownership instead of trying to "unrender" it
- One footer:
- prefer a single global footer; avoid per-panel footer duplication
- Compact ordering contract:
- keep
banner -> summary (expanded only) -> > /compact ... -> compact subline
- keep
- UI vs LLM orthogonality:
- transcript slicing and
ui.kindremain independent from prompt-history packing and reminder injection
- transcript slicing and
Minimal Workflow
- Lock the semantic source first:
thinking_deltapersistence and transcript projection rules before renderer polish. - Keep default transcript low-noise and Expanded Transcript read-only.
- Preserve compact / expanded ordering before adjusting footer or panel layout.
- If clear / remount logic changes, route through the shared surface reset path instead of local
Staticworkarounds. - Run the regression set below before review.
Minimum Regression
bun run test -- packages/core/src/screens/repl/compactProjection.test.ts packages/core/src/screens/repl/expandedTranscript.test.tsx packages/core/src/screens/repl/hotkeys.test.tsxbun run test -- packages/core/src/screens/repl/surfaceSmoke.test.tsxbun run test:surface-screen-modelbun run type-check
Guardrails
- Do not introduce synthetic thinking or show thinking when the model did not emit
thinking_delta. - Do not let
Ctrl+Osteal input while prompt mode or overlays are active. - Do not move header / messages outside
Staticto “fix” duplication; solve ownership and remount boundaries instead. - Expanded Transcript stays read-only; do not quietly turn it into an interactive input surface.