feat(tui): collapsible tag rail with ambient tag awareness

Persistent left panel showing tags with counts. Provides ambient
awareness of tag landscape without requiring a modal.

- New tagRailModel in tagrail.go: tag list with cursor, scroll, counts
- Rail visible at >=100 cols width, 18% width (min 16 chars)
- ctrl+b toggles rail visibility
- focusTagRail added to focus cycle: capture → tags → list → detail
- j/k navigates, enter filters/unfilters by tag
- Active filter tag highlighted bold in rail
- Tags refresh after entity create/delete/absorb
- Rail auto-hides on narrow terminals, # modal still works as fallback
- Width allocation accounts for rail in split and non-split layouts
This commit is contained in:
2026-05-20 14:32:32 -04:00
parent 3f57531995
commit b5b7f6b6ee
7 changed files with 305 additions and 31 deletions
+2
View File
@@ -32,6 +32,7 @@ type keyMap struct {
FocusLeft key.Binding
FocusRight key.Binding
Tab key.Binding
ToggleRail key.Binding
}
var keys = keyMap{
@@ -64,4 +65,5 @@ var keys = keyMap{
FocusLeft: key.NewBinding(key.WithKeys("h"), key.WithHelp("h", "focus list")),
FocusRight: key.NewBinding(key.WithKeys("l"), key.WithHelp("l", "focus detail")),
Tab: key.NewBinding(key.WithKeys("tab"), key.WithHelp("tab", "focus cycle")),
ToggleRail: key.NewBinding(key.WithKeys("ctrl+b"), key.WithHelp("ctrl+b", "toggle tag rail")),
}