Commit Graph

8 Commits

Author SHA1 Message Date
Claude
7cc5fcb514 Revert to lifespan handler, use venv for correct FastAPI version
https://claude.ai/code/session_019ANRdyL2jfi7ysWhqN4PfD
2026-02-28 09:27:40 +00:00
Claude
dbaa7b0d8b Replace lifespan with on_event handlers for older FastAPI compat
The lifespan constructor parameter was added in FastAPI 0.93. When
running outside Docker with an older system-packaged FastAPI, the
parameter is silently ignored — the app starts and serves routes but
init_db() and start_presence() never run, so the bot never goes online
and webhooks crash with "Database not initialised".

on_event("startup")/on_event("shutdown") work across all FastAPI
versions.

https://claude.ai/code/session_019ANRdyL2jfi7ysWhqN4PfD
2026-02-28 09:24:02 +00:00
Claude
d22fb6ae10 Check set_presence return value for errors
matrix-nio's set_presence() doesn't raise on failure — it returns a
PresenceSetError object. The code was ignoring the return value, so the
bot would silently fail to go online even with valid credentials.

https://claude.ai/code/session_019ANRdyL2jfi7ysWhqN4PfD
2026-02-28 09:14:06 +00:00
Claude
8d7a66c431 Fix bot not going online: stop silently swallowing presence errors
_set_presence was catching all exceptions and logging them at DEBUG
level, which meant connection failures (bad token, unreachable
homeserver, etc.) were completely hidden at the default INFO log level.
The bot would appear to start normally but never actually go online.

Now the initial presence call in start_presence() propagates errors so
startup fails visibly if the Matrix connection doesn't work. The
background heartbeat loop still catches errors but logs them at WARNING.

https://claude.ai/code/session_019ANRdyL2jfi7ysWhqN4PfD
2026-02-28 09:04:28 +00:00
Claude
d636b9ed0e Add --check command for configuration and connectivity validation
Adds `python -m app --check` which verifies:
- All required environment variables are set
- Matrix homeserver is reachable
- Bot access token is valid
- Bot is a member of the announcements room
- Database path is writable

Uses color-coded pass/fail output with actionable hints on failure.
Configures nio with a 10-second timeout and no retries so checks
complete quickly even against unreachable servers.

https://claude.ai/code/session_01DuzWyMMXvLMB4VxEwJyV4X
2026-02-28 08:06:24 +00:00
Claude
e21f5dfd50 Add presence heartbeat to keep bot showing as online
matrix-nio's AsyncClient.set_presence() is called every 60s in a
background task so Matrix clients see the bot as online. On shutdown
the bot sets itself to offline.

https://claude.ai/code/session_01DuzWyMMXvLMB4VxEwJyV4X
2026-02-28 07:46:40 +00:00
Claude
aaacd0b9bf Implement Melora: *arr media arrival webhook announcer for Matrix
Replace Bellhop scaffolding with full Melora implementation:
- FastAPI webhook endpoints for Radarr, Sonarr, and Lidarr
- matrix-nio integration with threaded room posting
- SQLite for thread root persistence and event deduplication
- Message formatting with plain text and HTML for each media type
- Shared secret authentication via X-Arr-Webhook-Secret header
- Updated dependencies, configuration, and documentation

https://claude.ai/code/session_01DuzWyMMXvLMB4VxEwJyV4X
2026-02-28 07:38:07 +00:00
prosolis
e6e47fd470 Create deletethis 2026-02-27 23:06:10 -08:00