v1.12.0: History and notification fixes
This release fixes several History and notification problems found during a code audit. It also adds a Jellydash listing in Unraid Community Apps for new SQLite installations (thanks to @Nerazor for suggesting it).
History and Statistics
- History imports now roll back correctly on MariaDB if a write fails while settings are being initialized. Playback Reporting imports also stop when ignored users are configured but a user's name cannot be resolved, so that play cannot bypass the exclusion.
- History search treats
%and_as literal characters in results, counts, statistics and exports. Episode links from Statistics now open the exact episode in History when no series is available. - The one-time History library upgrade no longer opens for users who cannot run it. You can hide its progress and reopen it without starting duplicate polling.
- Statistics periods now say 7 days, 30 days and 12 months and show the dates being queried. The underlying ranges have not changed.
Notifications and account handling
- Old Jellyseerr requests are not sent as delayed alerts when notifications are turned back on. Freshness uses the request's original timestamp, including across daylight-saving changes and slower configured polling.
- Web Push subscriptions recover from VAPID signing-key changes, record per-device delivery results and can be removed even when an old device token is missing, subject to account ownership checks. Notification clicks focus an existing app page without replacing a different open tab or its unsaved edits.
- Failed Telegram, Pushover and Discord sends are logged without provider response bodies; message text is kept within each provider's limit. Invalid notification URLs are shown as configuration problems in System Status without exposing their values.
- Testing every notification channel from the web interface now requires an admin login, including when login is otherwise disabled. The current-device test still works; an open installation can test all channels from the server with
docker compose exec app php bin/console.php push:test. - New account usernames are normalized before saving. The supplied Compose setups now persist login sessions across container recreation, within the existing session time limits.
Setup and other fixes
- Jellydash is [listed in Unraid Community Apps](https://ca.unraid.net/apps/jellydash-1vybjoi0yy69ry). Its template creates a new single-container SQLite installation. It does not migrate an existing Compose installation; see the [Unraid setup notes](https://github.com/themartz90/jellydash/blob/main/unraid/README.md).
- Docker background workers now use the same enabled and interval settings reported by System Status. Invalid intervals fall back to their defaults.
- Library page failures settle the loading cards instead of leaving them spinning. Mixed-library totals distinguish playable items from series containers. Notification device-list failures show an error instead of an empty list.
- Browser push endpoints reject oversized or malformed JSON requests with consistent responses.
Update
docker compose pull && docker compose up -dIf you pin the image, change it to ghcr.io/themartz90/jellydash:1.12.0 first. No new required environment settings or manual database import are needed.
An existing Compose file will not gain the new sessions volume just by pulling the image. To keep login sessions across future container recreations, add the app_sessions mount and named volume from the current Compose example while preserving your own configuration. The first recreation with a new, empty sessions volume may ask you to sign in once.