TUI Epic 1: merge Inbox/Threads/Workflow into a Coordination screen - #157
Conversation
The TUI notification screen + panel read exchange.inbox via loadNotificationEntries (hardcoding unread/cleared), diverging from the app/CLI which use listNotifications over notification-tagged threads. Source both TUI surfaces from listNotifications and mutate via markNotificationsRead/clearNotifications so read/clear state is real and consistent everywhere. Delete the legacy loader and its now-dead helpers. Epic 1 (Coordination) phase 1 of 3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The TUI carried three separate subscreens for an occasionally-used coordination layer. Merge them into a single notifications-led "coordination" screen with two sections: Inbox (the real listNotifications feed) and Threads (task-aware, all thread kinds via buildWorkflowEntries allKinds), with Tab to switch sections. Task and handoff lifecycle actions live in the threads section; accept moves to 'A' so it no longer collides with the 'a' activity nav key (the old lowercase accept was dead, shadowed by nav). Direct cutover: remove the workflow/threads/notifications screens from the DashboardScreen union and rewire all routing (nav cycle, key dispatch, render switch, hotkey action, footer + help, statusline tabs). Net -600 lines. Epic 1 (Coordination) phase 2 of 2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@coderabbitai review |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThree separate dashboard subscreens — workflow, threads, and notifications — are consolidated into a single ChangesCoordination Screen Consolidation
Sequence Diagram(s)sequenceDiagram
participant User
participant HotkeyHandler
participant handleAction
participant runDashboard
participant showCoordination
participant renderCoordinationScreen
rect rgba(70, 130, 180, 0.5)
Note over User,renderCoordinationScreen: Activating coordination screen
User->>HotkeyHandler: press "i"
HotkeyHandler->>handleAction: dispatch { type: "coordination" }
handleAction->>runDashboard: set dashboardScreen = "coordination"
runDashboard->>showCoordination: initialize UI state, refresh entries
showCoordination->>renderCoordinationScreen: render two-pane coordination layout
renderCoordinationScreen-->>User: Inbox / Threads split-screen shown
end
rect rgba(60, 179, 113, 0.5)
Note over User,renderCoordinationScreen: Key navigation within coordination
User->>runDashboard: keypress (e.g. Tab, Enter, "r", "d")
runDashboard->>handleCoordinationKey: route to coordination handler
handleCoordinationKey->>handleNotificationsSectionKey: (if coordinationSection="notifications")
handleNotificationsSectionKey->>openSelectedNotification: Enter/Return
openSelectedNotification->>markNotificationsRead: mark entry read
openSelectedNotification->>renderCoordinationScreen: re-render after open
handleCoordinationKey->>handleThreadsSectionKey: (if coordinationSection="threads")
handleThreadsSectionKey->>runTaskLifecycleAction: lifecycle key pressed
handleThreadsSectionKey->>refreshCoordinationThreads: rebuild + re-render
refreshCoordinationThreads->>renderCoordinationScreen: updated thread list
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
✅ Action performedReview finished.
|
- Map a dashboardScreen persisted before the merge (notifications/ threads/workflow) onto coordination, and fall back to dashboard for any unrecognized value, instead of restoring an invalid screen. - Guard refreshCoordinationThreads against a NaN threadIndex. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Sub-agent review pass (CodeRabbit returned an incremental no-op with no findings). Findings + resolutions: Fixed
Intentional / not regressions (no change)
|
First epic of the TUI information-architecture redesign (see north-star plan): the dashboard subscreens had drifted from how aimux is actually used. This collapses the three coordination-related tabs into one.
What changed
Phase 1 — Unify the notification data source. The TUI inbox read
exchange.inboxvia a bespokeloadNotificationEntries(hardcoding unread/cleared), diverging from the app/CLI which uselistNotificationsover notification-tagged threads. Both TUI surfaces (full screen + panel overlay) now source fromlistNotificationsand mutate viamarkNotificationsRead/clearNotifications, so read/clear state is real and consistent everywhere.Phase 2 — Merge Inbox + Threads + Workflow → one Coordination screen. A single notifications-led screen with two sections:
buildWorkflowEntries({allKinds})), with task/handoff/review lifecycle actions.Tabswitches sections. Accept moved toAso it no longer collides with theaactivity-nav key (the old lowercase accept was dead, shadowed by nav). Direct cutover: removedworkflow/threads/notificationsfrom theDashboardScreenunion and rewired all routing (nav cycle, key dispatch, render switch, hotkey action, footer + help, statusline tabs). Net ~-600 lines.Verification
yarn typecheck,yarn lint,yarn buildcleanyarn vitest run— 1376 tests passDashboard layout and Graveyard are untouched, as scoped.
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Bug Fixes & Improvements
Refactor
Tests