tui: configurable navigation presets — arrow+Enter vs vim-style #111
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#111
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
User story
As a user who is not familiar with vim keybindings, I want to navigate loom-tui entirely with arrow keys and Enter, so that the TUI is accessible without memorizing
hjklmnemonics and single-letter shortcuts.Problem
Arrow keys work inconsistently:
j/kand arrows both work for list navigationg=Gallery,s=Settings,e=Entities,p=Presets) consume single-letter keys that screens also use, causing unpredictable behavior depending on focus stateCtrl+P)Acceptance criteria
Navigation presets
tui.tomlsupports anavigation_presetfield:"vim"(default, current behavior) or"standard""standard"preset:g/s/e/phijacking)"vim"preset: current behavior preserved exactlykeybinds::defaults()vskeybinds::standard())Sidebar navigation (both presets)
Key conflict resolution
"standard"mode, no single-letter key is bound globally — all single letters go to the active screen"vim"mode, global mnemonics only fire when the active screen doesn't consume the key (screen gets priority)docs/keybindings.mdOut of scope
tui.toml[keybinds]section)References
crates/loom-tui/src/keybinds.rs— keybind system,defaults()functioncrates/loom-tui/src/config.rs—tui.tomlparsingcrates/loom-tui/src/app.rs—process_event()dispatch chain,handle_global_key()crates/loom-tui/src/components/mod.rs—Sidebarwidget