hephaestus/docs/changelog.d/v1-quickadd.feature.md
Erich Blume 0c45bbb5f9 feat: heph-quickadd — global ⌘' quick-capture popover (§8)
A macOS global quick-capture popover to retire Todoist. New `heph-quickadd`
crate: an always-warm eframe/egui agent that registers ⌘' (global-hotkey,
Carbon — no Accessibility permission) and toggles a hidden, pre-created
window visible + focused on press — never spawning on the keypress, so it's
a muscle reflex. A single field live-parses Todoist-style inline syntax via
the shared parser; chips show ⚑ attention · 📁 project ·  do-date · ↻
recurrence as you type. Enter saves optimistically (hide now, task.create
on a bg thread; a failed RPC re-shows with the text restored). #project
autocomplete (Tab/↑↓/click; focus-locked so Tab completes instead of
traversing). Example hints rotate, fading in only after ~2s idle.

Parser lifted from heph-tui into hephd's lib (hephd::quickadd) so the TUI
and the popover share one parser. hephd supervises the helper as a child in
local mode on macOS (opt-in HEPH_QUICKADD=1, set by the installed launchd
plist) — one service to manage, no second launch agent; the helper
self-exits when orphaned so killing hephd leaves nothing behind.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 18:12:24 -07:00

1.8 KiB
Raw Blame History

  • heph-quickadd (§8) — a global quick-capture popover, the last piece needed to retire Todoist. A tiny always-warm eframe/egui agent registers ⌘' system-wide (global-hotkey, via Carbon — no Accessibility permission) and, on press, toggles an already-created hidden window visible and focuses a single capture field — never spawning on the keypress, so it's a muscle-reflex (design §6.2.1). The field reuses the shared quickadd::parse (lifted from heph-tui into hephd's lib so both surfaces share one parser): one line like Call dentist fri p1 #Health parses live into title + attention (p1p4) + do-date + recurrence + project, shown as a chip row (⚑ attention · 📁 project · do-date · ↻ recurrence) as you type. Enter saves optimistically — the window hides instantly and task.create runs on a background thread, so perceived latency is just the keystroke; a failed RPC re-shows the window with the text restored, so a capture is never lost. Esc dismisses.
  • Supervision (no second launch agent): hephd supervises heph-quickadd as a child in local mode on macOS (opt-in via HEPH_QUICKADD=1, which the installed launchd plist now sets — dev/test runs that spawn a local daemon never pop a window). hephd already runs as a gui/$uid LaunchAgent, so the child inherits the Aqua session the hotkey/GUI need, and the user still installs/manages exactly one service (heph daemon). The helper self-exits when orphaned (its parent daemon gone) and exits if ⌘' is already held, so killing hephd — even kill -9 — leaves nothing behind and duplicates never stack. Runs as a macOS accessory app (no Dock icon). macOS-only for v1; global-hotkey + egui also run on Linux/X11, so the Linux port is mostly window-behavior polish.