Commit Graph

6 Commits

Author SHA1 Message Date
bc2e086f2f feat(daemon): add daemon mode with C&C and display abstraction
- Add display abstraction with swappable backends (TerminalDisplay, NullDisplay)
- Separate C&C into RX/TX topics for serial-like communication
- Add StreamController with automatic ntfy topic warmup
- Add performance monitoring for render + display stages
- Update AGENTS.md and README.md with daemon/cmd operating procedures
- Add clean/clobber tasks to mise.toml
- Add tests for display, effects controller, and controller warmup
- Fix bug where /effects reorder command was unreachable
2026-03-15 18:37:36 -07:00
40ad935dda feat(cmdline): improve rich output and add mise tasks
- Add box-drawing characters for nicer header
- Add response formatting with success/error indicators
- Add mise tasks: cmd (interactive) and cmd-stats (monitoring)
2026-03-15 17:49:15 -07:00
648326cd37 feat(cmdline): use C&C topic with response polling
- Rewrite cmdline to send commands via ntfy and wait for response
- Add NtfyResponsePoller class for serial-port-like interface
- Add integration tests for ntfy topics (test read/write)
- Add NTFY_CC_TOPIC export to config
2026-03-15 17:46:40 -07:00
3324adb07a feat(ntfy): separate C&C topic from message ingestion
- Add ntfy_cc_topic config for command and control
- Add separate NtfyPoller for C&C in StreamController
- Implement serial-port-like interface: commands are executed and responses are sent back to the same topic
- Update cmdline.py to use C&C topic
2026-03-15 17:40:20 -07:00
2f1b2591c6 fix(cmdline): make cmdline work without PIL dependency
- Refactor controller to not require importing engine.layers (which imports PIL)
- Add set_effect_chain_ref for external chain registration
- Fix cmdline to use new ref mechanism
2026-03-15 17:35:00 -07:00
b86434ac03 feat(cmdline): add command-line interface for mainline control
Add cmdline.py utility for interacting with mainline:
- Interactive TUI mode (default when no args)
- Local command mode (--local) for testing without ntfy
- Send commands via ntfy (default)
- Watch mode (-w) for continuous stats polling

Usage:
  python cmdline.py                    # Interactive mode
  python cmdline.py --local /effects list
  python cmdline.py /effects stats     # Send via ntfy
  python cmdline.py -w /effects stats  # Watch mode
2026-03-15 17:31:13 -07:00