Metadata
| Status | done |
|---|---|
| Assigned | agent-917 |
| Agent identity | f51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e |
| Created | 2026-04-28T20:16:18.339225070+00:00 |
| Started | 2026-04-28T20:17:59.772473296+00:00 |
| Completed | 2026-04-28T20:44:35.388011237+00:00 |
| Tags | eval-scheduled |
| Eval score | 0.78 |
| └ blocking impact | 0.85 |
| └ completeness | 0.82 |
| └ constraint fidelity | 0.70 |
| └ coordination overhead | 0.74 |
| └ correctness | 0.76 |
| └ downstream usability | 0.80 |
| └ efficiency | 0.77 |
| └ intent fidelity | 0.84 |
| └ style adherence | 0.85 |
Description
Description
When the chat-tab bar runs out of horizontal room, hidden tabs become unreachable. With cap moving to 16 (separate task), this gets worse fast. Need a way to navigate beyond the visible slots.
What to build
- Pagination or scrolling behavior on the chat bar when tab count > visible slots
- Keyboard navigation:
Ctrl+Tab/Ctrl+Shift+Tabto cycle, ORCtrl+tthen number, ORPgUp/PgDnon the bar — pick what fits ratatui idioms and what's already used elsewhere in the TUI - Visual indicator when there are off-screen tabs (e.g.
◀ chat-3 chat-4 chat-5 ▶arrows or a '+N more' badge) - Click-drag is a stretch goal — only if the existing TUI already handles mouse drag elsewhere; don't introduce a whole mouse-event subsystem just for this
Out of scope
- Reordering tabs (separate UX feature)
- Closing tabs (already shipped —
tui-cannot-retire/implement-tui-tabs) - Renaming tabs
Validation
- With cap=16 and 16 chats spawned at narrow terminal width, every tab is reachable via keyboard
- Visual indicator clearly shows when tabs are off-screen
- No regression at wide terminal widths (all-visible case looks identical to today)
- Manual smoke at terminal widths 80, 120, 200 — assert no clipping, no garbled output
- cargo build + cargo test pass
Depends on
Required by
- (none)
Log
- 2026-04-28T20:16:18.332800524+00:00 Task paused
- 2026-04-28T20:17:34.835023720+00:00 Task published
- 2026-04-28T20:17:58.671585832+00:00 Lightweight assignment: agent=Careful Programmer (f5143935), exec_mode=full, context_scope=task, reason=TUI feature implementation with keyboard navigation and multi-width regression testing matches the Programmer role; Careful tradeoff appropriate for correctness-sensitive UI work.
- 2026-04-28T20:17:59.772476552+00:00 Spawned by coordinator --executor claude --model opus
- 2026-04-28T20:18:30.776112178+00:00 Starting work — inspecting current TUI chat bar implementation
- 2026-04-28T20:42:07.183313630+00:00 Implementation complete: - Added chat_tab_scroll_offset to VizApp state with auto-scroll-to-active in renderer - Added compute_chat_bar_layout helper with 9 unit tests covering offset/arrow logic - Renderer draws ◀ (cyan) / ▶ (cyan) arrows when tabs are off-screen - Click handlers on arrows scroll bar by 1 (via VizApp::scroll_chat_tabs) - Existing Ctrl+Tab/Ctrl+Shift+Tab cycling + Alt+1..9 hotkeys now keep active tab visible (auto-scroll) - Added integration tests covering 16-chat narrow-width scenario and cycling - All 12 new tests pass; 3072/3079 binary tests pass (7 failing tests are pre-existing on main)
- 2026-04-28T20:44:18.389564159+00:00 Committed: 3cc7a1e13 — pushed to remote
- 2026-04-28T20:44:35.388024562+00:00 Task pending eval (agent reported done; awaiting `.evaluate-*` to score)
- 2026-04-28T20:46:58.301324828+00:00 PendingEval → Done (evaluator passed; downstream unblocks)