Release notes
Stop a background job from pinning the status line, and keep the queue when you switch chats
A yielded npm run stays on its own card instead of pinning "Running…" for the rest of the session. The recap no longer repeats the live status row, and both lines name a file the same way. Switching chats keeps queued messages. Folded tool rows stay in the same column as their labels.
Fixed
- A yielded background job (
npm run, a long-running server) headlined the status row for the rest of the session, with the job's age as the elapsed clock. Its own card still shows stdout and Cancel. - The recap echoed the live status row — two stacked lines saying they were editing the same file.
- The recap labelled a file by basename while the tool card beside it used a path suffix.
- Recap said Done · 10 files while skipped or failed tools were only visible by scrolling to their rows.
- Switching away from a chat blanked the queued-message ledger. Pending intents are now parked and persisted; settled or rejected ones are not resurrected.
- Nested fold bodies used five different insets, so expanding a row shifted its content out of the label column.
- A collapsed long diff still mounted a virtualizer. Only an expanded diff over the line threshold does.
- The transcript virtualizer rebuilt its measurement cache on every stream flush, and a ResizeObserver on the viewport forced layout mid-callback.
New
- Expanding a command card shows an Output summary and cwd.
- Read and search previews have a sticky header with the line range or match count.