v1.3.0
What's Changed
- Fix missing chat_id in _resolve_local_repo workspace history lookup by @dcellison in #114
- Harden triage prompt against injection via randomized boundaries by @dcellison in #115
- Split long cron job responses to respect Telegram message limit by @dcellison in #116
- Fix test history contamination: patch log_message in handler tests by @dcellison in #117
- Deactivate one-shot Claude jobs after firing by @dcellison in #119
- Add consistent multi-user authorization to jobs API endpoints by @dcellison in #120
- Kill subprocess before mutating state in change_workspace() by @dcellison in #125
- Filter non-code messages in TOTP gate by @dcellison in #126
- Move TOTP subprocess calls off the event loop by @dcellison in #127
- Cancel stderr task before clearing proc reference in _kill() and shutdown() by @dcellison in #128
- Validate schedule_data before persisting to database by @dcellison in #136
- Validate CLAUDE_MODEL env var against VALID_MODELS at startup by @dcellison in #137
- Fix env file quote stripping for mixed-quote values by @dcellison in #138
- Kill sudo child tree on review/triage timeout by @dcellison in #139
- Await cleanup after pool force_kill by @dcellison in #140
- Escape glob metacharacters in branch name spec lookup by @dcellison in #141
- Cap response body size in services proxy by @dcellison in #142
- Move runtime data (history, memory) out of install tree by @dcellison in #144
- Inject memory file path into inner Claude context by @dcellison in #149
- Rename workspace/ directory to home/ by @dcellison in #150
- Move uploaded files from workspace to DATA_DIR by @dcellison in #152
- Fix pool eviction TOCTOU race condition by @dcellison in #158
- Fix eviction silent failure and orphaned subprocesses by @dcellison in #159
- Wrap init_db DDL in a single atomic transaction by @dcellison in #167
- Prune expired entries from cooldown dicts on write by @dcellison in #168
- Separate history files per user with per-user subdirectories by @dcellison in #169
- Add top-level exception handler to _handle_github by @dcellison in #172
- Add per-service allow_path_suffix flag to prevent SSRF by @dcellison in #173
- Add consecutive failure tracking and notification to health monitor by @dcellison in #174
- Add internal exception handling to _send_error_notification by @dcellison in #175
- Validate brace-extracted JSON in triage parser by @dcellison in #176
- Exclude current issue from triage related-issue search by @dcellison in #177
- Add post-apply reminder about install.conf secrets by @dcellison in #178
- Ensure _cmd_apply restarts service on failure by @dcellison in #179
- Cancel stderr drain task in force_kill by @dcellison in #180
- Route GitHub notifications to a separate Telegram group by @dcellison in #182
- Add GITHUB_NOTIFY_CHAT_ID to make config prompts by @dcellison in #184
- Send save prompt to inner Claude before session shutdown by @dcellison in #185
- Avoid leaking exception details to Telegram in triage error notifications by @dcellison in #187
- Add age-based cleanup for uploaded files by @dcellison in #188
- Update README for file exchange path and new env vars by @dcellison in #189
- Bump version to 1.3.0 by @dcellison in #190
Full Changelog: v1.2.0...v1.3.0