a567b2ce73
Card-by-card walkthrough of entries untouched for 30+ days. Prevents write-mostly decay by bringing old entries back to attention. - S from list triggers stumble, loads entries where modified_at < 30d - Single-card view with markdown body, glyph, tags, age indicator - Actions: n skip, d dismiss, ! pin, p promote, m absorb, esc exit - Progress indicator: stumble [3/12] - After promote/absorb from stumble, returns to deck (not list) - "All caught up" screen when deck exhausted - DB: add ModifiedBefore to ListParams, modified_at sort column
72 lines
3.3 KiB
Go
72 lines
3.3 KiB
Go
package tui
|
|
|
|
import "github.com/charmbracelet/bubbles/key"
|
|
|
|
type keyMap struct {
|
|
Up key.Binding
|
|
Down key.Binding
|
|
Enter key.Binding
|
|
Back key.Binding
|
|
Capture key.Binding
|
|
Delete key.Binding
|
|
Quit key.Binding
|
|
Help key.Binding
|
|
PageUp key.Binding
|
|
PageDn key.Binding
|
|
Top key.Binding
|
|
Bottom key.Binding
|
|
Todo key.Binding
|
|
Pin key.Binding
|
|
Filter key.Binding
|
|
Promote key.Binding
|
|
Demote key.Binding
|
|
Copy key.Binding
|
|
Edit key.Binding
|
|
Stream key.Binding
|
|
Cards key.Binding
|
|
Sort key.Binding
|
|
Intent key.Binding
|
|
Absorb key.Binding
|
|
Run key.Binding
|
|
Fill key.Binding
|
|
FocusLeft key.Binding
|
|
FocusRight key.Binding
|
|
Tab key.Binding
|
|
ToggleRail key.Binding
|
|
Stumble key.Binding
|
|
}
|
|
|
|
var keys = keyMap{
|
|
Up: key.NewBinding(key.WithKeys("up", "k"), key.WithHelp("↑/k", "up")),
|
|
Down: key.NewBinding(key.WithKeys("down", "j"), key.WithHelp("↓/j", "down")),
|
|
Enter: key.NewBinding(key.WithKeys("enter"), key.WithHelp("enter", "view")),
|
|
Back: key.NewBinding(key.WithKeys("esc"), key.WithHelp("esc", "back")),
|
|
Capture: key.NewBinding(key.WithKeys("a"), key.WithHelp("a", "capture")),
|
|
Delete: key.NewBinding(key.WithKeys("d"), key.WithHelp("d", "delete")),
|
|
Quit: key.NewBinding(key.WithKeys("q", "ctrl+c"), key.WithHelp("q", "quit")),
|
|
Help: key.NewBinding(key.WithKeys("?"), key.WithHelp("?", "help")),
|
|
PageUp: key.NewBinding(key.WithKeys("pgup", "ctrl+u"), key.WithHelp("pgup", "page up")),
|
|
PageDn: key.NewBinding(key.WithKeys("pgdown", "ctrl+d"), key.WithHelp("pgdn", "page down")),
|
|
Top: key.NewBinding(key.WithKeys("home", "g"), key.WithHelp("home", "top")),
|
|
Bottom: key.NewBinding(key.WithKeys("end", "G"), key.WithHelp("end", "bottom")),
|
|
Todo: key.NewBinding(key.WithKeys("x"), key.WithHelp("x", "toggle todo")),
|
|
Pin: key.NewBinding(key.WithKeys("!"), key.WithHelp("!", "toggle pin")),
|
|
Filter: key.NewBinding(key.WithKeys("#"), key.WithHelp("#", "filter tag")),
|
|
Promote: key.NewBinding(key.WithKeys("p"), key.WithHelp("p", "promote")),
|
|
Demote: key.NewBinding(key.WithKeys("D"), key.WithHelp("D", "demote")),
|
|
Copy: key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "copy")),
|
|
Edit: key.NewBinding(key.WithKeys("e"), key.WithHelp("e", "edit")),
|
|
Stream: key.NewBinding(key.WithKeys("1"), key.WithHelp("1", "stream")),
|
|
Cards: key.NewBinding(key.WithKeys("2"), key.WithHelp("2", "cards")),
|
|
Sort: key.NewBinding(key.WithKeys("s"), key.WithHelp("s", "sort")),
|
|
Intent: key.NewBinding(key.WithKeys("i"), key.WithHelp("i", "intent")),
|
|
Absorb: key.NewBinding(key.WithKeys("m"), key.WithHelp("m", "absorb")),
|
|
Run: key.NewBinding(key.WithKeys("r"), key.WithHelp("r", "run checklist")),
|
|
Fill: key.NewBinding(key.WithKeys("f"), key.WithHelp("f", "fill template")),
|
|
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")),
|
|
Stumble: key.NewBinding(key.WithKeys("S"), key.WithHelp("S", "stumble")),
|
|
}
|