3 Commits

Author SHA1 Message Date
Claude
de0de68ba5 Fix same quality field crash in radarr and lidarr formatters
Apply the same isinstance guard from the sonarr fix to radarr
(movieFile.quality) and lidarr (trackFiles[].quality) so a plain
string value no longer triggers an AttributeError.

https://claude.ai/code/session_0188gygwJLdYhxbKvEz2jFjr
2026-02-28 10:10:53 +00:00
Claude
693ab9f217 Fix sonarr formatter crash when episodeFile.quality is a string
Sonarr can send quality as a plain string instead of the nested
{"quality": {"name": ...}} object. Guard with an isinstance check
and fall back to using the string value directly.

https://claude.ai/code/session_0188gygwJLdYhxbKvEz2jFjr
2026-02-28 09:54:09 +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