- Add curly braces to all if/else/for/while statements - Fix indentation and trailing spaces - Auto-fixed 372 linting errors using eslint --fix - Remaining issues are warnings only (non-null assertions, explicit any types)
- Dockerfile: multi-stage build (node:22-alpine), better-sqlite3 native deps handled - .dockerignore + docker-compose.yml for deployment - FLYNN_DATA_DIR env var support in daemon, CLI, and TUI - WebhookHandler: ChannelAdapter for HTTP POST /webhooks/:name - Per-webhook HMAC auth, template rendering ({{body}}, {{json.field}}) - Config schema: automation.webhooks array with name/secret/message/output - Gateway routes webhook requests before static files (bypasses gateway auth) - 23 new tests for webhook functionality, 874 total tests passing