feat(tui): add search via capture bar and absorb flow
Search uses existing parse grammar ?prefix — type `?query #tag` in capture bar to filter entities client-side. Substring match on body+title+description with AND tag filtering. Esc clears search. Absorb via m key on fluid entities — opens source picker showing all other entities, enter merges source into target. Uses existing store.Absorb() backend.
This commit is contained in:
@@ -27,7 +27,7 @@ func countText(m model) string {
|
||||
if m.mode == modeCards {
|
||||
total = len(m.cards.filtered)
|
||||
} else {
|
||||
total = len(m.list.entities)
|
||||
total = len(m.list.displayEntities())
|
||||
}
|
||||
if m.filterTag != "" {
|
||||
return fmt.Sprintf("%d entities #%s", total, m.filterTag)
|
||||
@@ -47,10 +47,12 @@ func contextHints(m model) string {
|
||||
return "y:confirm n:cancel"
|
||||
case statePromote:
|
||||
return "j/k:nav enter:select esc:cancel"
|
||||
case stateAbsorb:
|
||||
return "j/k:nav enter:absorb esc:cancel"
|
||||
default:
|
||||
if m.mode == modeCards {
|
||||
return "1:stream 2:cards s:sort tab:intent a:add ?:help q:quit"
|
||||
}
|
||||
return "1:stream 2:cards a:add d:del x:todo #:filter ?:help q:quit"
|
||||
return "1:stream 2:cards a:add/?search m:absorb d:del #:filter ?:help q:quit"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user