feat(tui): stumble mode — resurface stale entries card by card

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
This commit is contained in:
2026-05-20 16:40:40 -04:00
parent 388ae88d4a
commit a567b2ce73
8 changed files with 311 additions and 3 deletions
+9
View File
@@ -41,6 +41,7 @@ func renderHelp(width, height int) string {
{"#", "filter by tag"},
{"m", "absorb (merge into target)"},
{"p", "promote to card"},
{"S", "stumble (resurface stale entries)"},
}},
{"Detail View", [][2]string{
{"p", "promote to card"},
@@ -51,6 +52,14 @@ func renderHelp(width, height int) string {
{"r", "run checklist"},
{"f", "fill template"},
}},
{"Stumble", [][2]string{
{"n / →", "skip to next"},
{"d", "dismiss (soft delete)"},
{"!", "pin"},
{"p", "promote to card"},
{"m", "absorb"},
{"esc", "exit"},
}},
{"Run Mode", [][2]string{
{"j/k", "move between steps"},
{"space", "toggle step"},