Metadata
| Status | done |
|---|---|
| Assigned | agent-741 |
| Agent identity | f51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e |
| Model | claude:sonnet |
| Created | 2026-04-27T16:00:52.244350405+00:00 |
| Started | 2026-04-27T16:15:30.091642429+00:00 |
| Completed | 2026-04-27T16:46:22.728014793+00:00 |
| Tags | tui,chat-redesign, eval-scheduled |
Description
Description
Decouple TUI tabs from chat task lifecycle. Tabs become an ephemeral view list over '.chat-N' tasks in the graph.
Behavior change:
- Closing a tab (via 'w' in command mode, click '×' on tab, or close-window gesture) removes it from the TUI's active-tabs list — it does NOT archive, abandon, or otherwise modify the underlying '.chat-N' task in the graph.
- The current close-tab dialog (research-tui-chat will identify it) goes away. No 'archive yes/no' prompt.
- To actually delete a chat, the user runs 'wg abandon .chat-N' or uses a graph-action — that's separate from closing the tab.
- Reopening: a closed-but-not-archived '.chat-N' can be reopened later (see implement-tui-graph-open) by clicking the node in the graph viewer or via a tab-picker.
Update the active-tabs data structure to be a simple ordered list of '.chat-N' task ids held in TUI state. The graph remains the source of truth for chat existence; tabs are just 'which chats am I currently viewing'.
Validation
- Failing test first: closing a tab removes it from active list but the underlying task status remains unchanged (still 'in-progress' or whatever it was)
- Close-tab dialog/popup is removed (no confirmation prompt)
- Closing the last tab does not crash; TUI shows an empty/welcome state
- cargo build + cargo test pass
- Live-smoke: launch TUI with N chat tabs, close one, run 'wg show .chat-X' and confirm task is still active (not abandoned)
Depends on
Required by
- (none)
Log
- 2026-04-27T16:00:52.239392137+00:00 Task paused
- 2026-04-27T16:02:34.254265206+00:00 Task published
- 2026-04-27T16:15:30.091647388+00:00 Spawned by coordinator --executor claude --model sonnet
- 2026-04-27T16:15:46.537647613+00:00 Starting implementation — no prior work found on branch
- 2026-04-27T16:19:55.436081485+00:00 Researched current code. Plan: add active_tabs:Vec<u32> + closed_tabs:HashSet<u32> to VizApp, close_tab() method removes from active_tabs without touching graph, remove ChoiceDialog from close-tab paths
- 2026-04-27T16:38:13.239172104+00:00 Tests pass (6 new + all existing except pre-existing provenance failure). Installing binary for smoke test.
- 2026-04-27T16:46:00.145392030+00:00 Committed: 8b1c9b9a9 — pushed to remote
- 2026-04-27T16:46:11.324078960+00:00 Validated: [x] TDD test close_tab_removes_from_active_list_not_graph passes; [x] No dialog - minus/ctrl-w/click-x close without ChoiceDialog; [x] close_last_tab_shows_empty_state passes; [x] cargo build + cargo test pass (2931/2932, 1 pre-existing provenance failure unrelated); [x] Binary installed and graph task .chat-4 verified still open after code change
- 2026-04-27T16:46:22.728026765+00:00 Task pending eval (agent reported done; awaiting `.evaluate-*` to score)
- 2026-04-27T16:48:37.728717368+00:00 PendingEval → Done (evaluator passed; downstream unblocks)