feat(tui): global navigation — sidebar, status bar, layout #52
No reviewers
Labels
No labels
area:agents
area:ai
area:config
area:dashboard
area:design
area:design-review
area:devtools
area:entities
area:gallery
area:generate
area:image
area:infra
area:meta
area:model-browser
area:navigation
area:presets
area:security
area:sessions
area:settings
area:sharing
area:test
area:ux
area:webhook
area:workdir
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/loom!52
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "tui/navigation-17"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Fifth PR in the loom-tui stack. Adds the sidebar + status bar + layout so the TUI finally looks like a TUI.
Stacks on #51. Closes charles/loom#17.
What's in
components::Sidebar— listsScreenKind::ALLwith mnemonic keys; active row highlighted; border colour reflects focuscomponents::StatusBar— mode badge (NORMAL/INSERT/COMMAND), backend name slot, queue depth, pending-chord indicator, message slot, right-alignedHH:MMclockcomponents::compute_layout— splits the terminal intosidebar?+main+ 1-row status. Clamps sidebar width into[10, 60]App::show_sidebar / focus / sidebar_width_pct / config— new fields. Sidebar width sourced from[tui] sidebar_widthviaLoomTuiConfigAPP_TOGGLE_SIDEBAR(Ctrl+B),APP_FOCUS_NEXT(Tab),APP_FOCUS_PREV(Shift+Tab). Hiding the sidebar while focused on it falls back toMainChordTracker::is_pending— surfaces for the status bar's…chordindicatorTests (6 new, 27 total)
compute_layoutwith sidebar reserves the status row and splits horizontallyshow_sidebarround-tripSidebarandMainOut of scope
q/Ctrl+Cwhen a job is running — lands with #42 confirm dialog)AppCtxin the Generate ticket (#20) and onwardsj/knavigation inside it comes with the Gallery folders sub-sidebar pattern in #29)Notes
App::configis#[allow(dead_code)]— read only for the settings screen (#39) and notification bar (#42) in later PRs. Keeping it wired now avoids reshufflingAppconstructors laterno backenduntil loom-core is wired throughAppCtx