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 -1
View File
@@ -8,9 +8,10 @@ func renderHelp(width, height int) string {
binds [][2]string
}{
{"Focus", [][2]string{
{"tab", "cycle focus: capture → list → detail"},
{"tab", "cycle focus: capture → tags → list → detail"},
{"esc", "back / clear filter / to capture"},
{"a", "focus capture bar"},
{"ctrl+b", "toggle tag rail"},
}},
{"Capture Bar", [][2]string{
{"enter", "submit (or browse if empty)"},