Show unread sessions and acknowledge viewed transcripts in the picker (#58264)

## What changed

- Show a blue unread dot in both session picker layouts using backend read states.
- Acknowledge the transcript's observed revision after rendering it in a focused terminal, then update the unread indicator from the response.
- Key cached transcripts by backend and thread, reload them when unread revisions differ, and ignore canceled transcript results.
- Include turn errors in transcripts.

## Testing

Extend picker tests to cover unread indicators, selection colors, acknowledgments after rendering, and turn error display.

GitOrigin-RevId: edad152ed3f7086dfd3b2e8245d62febc5c9322b
This commit is contained in:
Eric Traut
2026-10-30 06:45:04 +00:00
committed by copyberry
parent 025f6d715d
commit d7b77a5e74
8 changed files with 300 additions and 108 deletions
+8 -2
View File
@@ -103,13 +103,19 @@ pub(crate) fn thread_to_transcript_cells(
.turns
.into_iter()
.flat_map(|turn| {
thread_items_to_transcript_cells(
let mut cells = thread_items_to_transcript_cells(
thread_id,
&cwd,
turn.items.into_iter().map(|entry| entry.payload),
raw_reasoning_visibility,
config,
)
);
if let Some(error) = turn.error {
cells.push(Arc::new(crate::history_cell::new_error_event(
error.message,
)));
}
cells
})
.collect::<TranscriptCells>();
if cells.is_empty() {