Commit Graph

26 Commits

Author SHA1 Message Date
c6d80a9650 log: Add tracing events through core for future debugability. 2026-03-14 12:31:20 -04:00
bb3f200141 refactor(core): Split up the large menu trait. 2026-03-14 11:48:27 -04:00
a27d529fa7 feat(frontend): Add generations counter to inform frontends when a list should be re-rendered. 2026-03-14 11:47:27 -04:00
e5c875389c feat: Add graceful shutdown of active hooks. 2026-03-14 11:46:04 -04:00
e89c6cb16f refactor: Eliminate unnecessary empty Vec constructions. 2026-03-14 11:46:04 -04:00
0ebb5e79dd feat(action): Add gitea action for continuous integration.
Some checks failed
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
2026-03-14 01:55:32 -04:00
2729e7e1d2 feat(core): Add Quicklist function to return all visible via ctrl+Q.
Some checks failed
CI / Check (macos-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Clippy (strict) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
2026-03-14 01:49:24 -04:00
a39e511cc4 doc: Add lesson learned about dyn async traits. 2026-03-14 01:42:50 -04:00
8bf3366740 feat: Expand hook system to handle simple exec and plugin extensibility.
Item Model Expansion - Item now caches sublabel, icon, group with accessors. Added resolve_field_path() for dotted path traversal and field_value() on Item.
Output Struct - New OutputItem with OutputAction (select/cancel) and index. Object values flatten, strings get a value field. MenuResult::Selected now carries { value, index }.
Hook Types - Replaced the old Hook trait with HookEvent (serializable, 6 variants), HookResponse (deserializable, 5 commands), HookHandler trait (sync for dyn-compatibility), and parse_hook_response() with tracing warnings.
New Actions & Menu Methods - Added ReplaceItems, RemoveItems, ProcessHookResponse, CloseMenu actions. Menu trait gained original_index(), replace_all(), remove_by_indices(), formatted_label(). Pipeline got rebuild() and rebuild_with_values(). Smart cursor preservation on replace.
Lifecycle Events - MenuRunner emits Open, Close, Hover, Select, Cancel, Filter events through the dispatcher. Cursor tracking for Hover detection.
Debounce - DebouncedDispatcher with 4 modes: None, Debounce, CancelStale, DebounceAndCancelStale. Defaults: hover=DebounceAndCancelStale(200ms), filter=Debounce(200ms).
Exec Hooks - ShellExecHandler maps --on-{open,close,hover,select,cancel,filter}-exec flags to fire-and-forget subprocesses. Event JSON piped to stdin.
Handler Hooks - ShellHandlerHook launches persistent processes per --on-{event} flag. Bidirectional JSON lines: events on stdin, responses on stdout flowing back through Action::ProcessHookResponse. CompositeHookHandler dispatches to both.
--filter-fields - --filter-fields label,sublabel,meta.tags searches multiple fields. Combined text for fuzzy, individual for exact/regex.
--format - FormatTemplate parses {field.path} placeholders. --format '{label} - {sublabel}' controls display. TUI renders formatted_text when available.
Field Filters - meta.res:3840 in query syntax matches specific fields. !meta.res:3840 for inverse. Pipeline stores item Values for field resolution. Requires dotted path (single word colons stay fuzzy).
2026-03-14 01:42:11 -04:00
7082ceada0 doc: Update plans around hover actions and bidirectional hook communication.
Some checks failed
CI / Check (macos-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Clippy (strict) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
2026-03-14 00:42:06 -04:00
d9ed49e7d9 feat(core): Add input modes and half-page cursor movement.
Some checks failed
CI / Check (macos-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Clippy (strict) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
2026-03-13 22:56:30 -04:00
6a4cc85285 feat(core): Expand filtering into pipeline supporting multiple text search modes.
Modes include: exact match, smart-case, and regular expressions.
2026-03-13 22:55:47 -04:00
6187b83f26 doc: Lesson about fd handling to avoid buffered pipes. 2026-03-13 22:00:00 -04:00
fdfb4eaab5 test: Add integration tests and demo script. 2026-03-13 21:59:33 -04:00
73de161a09 feat(bin): Add CLI binary, clap args, shell hook execution. 2026-03-13 21:59:10 -04:00
3f2e5c779b feat(tui): Add ratatui frontend rendering layer. 2026-03-13 21:58:38 -04:00
522b9f2894 test: Add proc macro DSL for declarative tests. 2026-03-13 21:58:17 -04:00
cb7911e5c9 feat(core): Add action-fd headless scripting protocol. 2026-03-13 21:57:30 -04:00
c74e4ea9fb feat(core): Add runtime engine, input parsing, and hook trait. 2026-03-13 21:56:42 -04:00
d62b136a64 feat(core): Add initial fuzzy filtering and viewport navigation. 2026-03-13 21:56:06 -04:00
9ed8e898a5 feat(core): Add error types, config, and data model for items and events. 2026-03-13 21:55:11 -04:00
de0431778f init: Scaffold expected crates with initial dependencies. 2026-03-13 21:53:26 -04:00
165d8ff804 init: Add rust workspace with toolchain version fixed on current latest stable.
script: Add github action for linting and compile checking.
2026-03-13 21:49:21 -04:00
b4129eaeaf doc: Add project design, dev plan, coding standards, and use cases. 2026-03-13 21:47:37 -04:00
24f6635927 doc: Add introductory readme of project, and also license. 2026-03-13 21:46:28 -04:00
c1530ec759 init 2026-03-12 22:35:22 -04:00