5.8.4 (2026-10-17)
Bug Fixes
- i18n: complete Arabic translation and plural "days before" label (#1266) (ff78a22)
- notifications: a custom webhook/ntfy header value can no longer end the notification run (#1228, #1212)
- webhook: keep newline-separated headers working and strip CR/LF from header values
- webhook: send JSON payloads with a JSON Content-Type (#990)
- push: do not let a second first-use replace the VAPID keypair (#1229)
- api: answer for the settings writes that were made, not the ones attempted (#1236)
- backup: remove the archive even when the download is abandoned (#1237)
- oidc: consume the state on disk before the token exchange, not after it (#1240, #1239)
- oidc: send id_token_hint and client_id on RP-initiated logout (#891)
- export: prefix CSV with UTF-8 BOM so currency symbols open correctly (#863)
- export: tolerate subscriptions with no payer, payment method or category
- subscriptions: sort by price using the converted main-currency value (#861)
- i18n: fill in missing Japanese translations (#1252)
- guard dashboard stats against unresolved payment method (#1180)
- tolerate missing subscription relations in list views (#1260)
- preserve layout classes when changing the theme (#1263)
Continuous Integration
- stop building an image ref from an empty variable on fork pull requests (#1230)
All bugfix-session changes landed in #1267.