Repository navigation
v0.9.1
Pre-release
Pre-release
Added
- 👁️ Read-only login (F9): Setup → Protect the page → read-only account. A viewer sees the whole page without buttons, and the server answers 403 to any change from that session; the role travels in the signed session cookie.
- 🎬 Content check for movies (S1): the dialogue is compared with the movie's synopsis against two dozen decoy synopses from the same Radarr library (matches / mislabeled / inconclusive). Nightly auto-verify and Tonight's plan include movies.
- 📲 Pushes open the page (S3): every ntfy notification carries a link to the Findings tab (Trash when files were moved); the page reads
#findings,#trashand the other tab names from the address.PUBLIC_URLsets the address used in links. - 🧩 Auditarr is in Unraid Community Applications (auto-approved 2026-11-11): Apps tab → search Auditarr → Install.
- 🧘 The page no longer pulls the list out from under you: background refreshes update the header chips only; the lists re-render when something changed and you have been idle for a few seconds, otherwise a small ↻ refresh button appears. Focus, scroll position and open groups survive a refresh. (Owner: "it keeps refreshing and I lose my place.")
- ℹ️ About tab: version, build, newest release, runtime, tools, database size, uptime; Check for updates, an "update available" chip in the header, and Update now through an optional host hook (
UPDATE_HOOK_URL). The image now carries its version (APP_VERSION) and build (APP_REVISION). - 🔄 The instant check after an import now also clears that file's earlier findings that are gone (a replaced or re-tagged file no longer waits for the night to drop off the list).
- 🧯 Two host drills in
docs/auditarr-deploy.sh:restoreboots last night's backup in a throwaway container and checks it,drill 4puts Sonarr behind a 200-second latency proxy to prove the audit gives up on a slow service in time. - 🧪 The fake Sonarr/Radarr/Bazarr used by the tests is published as its own small project, arr-mock, chaos mode included.
- 🧑💻 Persona tasks in the live browser test: a pretend first-time user searches for a missing episode, makes AI subtitles for a whole show and ignores a finding, using only the page.
- 🔁 Flaky connections are forgiven once and remembered: a read that fails and works on retry no longer fails the run, and the History tab lists which service wobbles and how often (30 days).
- ⏱️ Performance budget in CI: a 10,000-file / 5,000-finding library must build its report and page state within fixed time and size limits.
- 🌪️ Chaos test in CI: the fake stack throws 500s, slow answers and a vanishing Radarr at the audit; it must finish degraded, keep that app's findings, write nothing, and recover on the next run.
- 📲 The morning push lists problems by their plain names ("Won't play · No audio: Beta Movie") instead of codes, and is now pinned by a golden test.
- ⏳ Rows with a running job (AI subtitles) show working, leave Needs you immediately and resolve by themselves when the subtitles land; if the job gives up the row returns. (Owner: "if I trigger Make AI subtitles it should leave the row and Needs you.")
- ⚡ Same-day AI subtitles (F14): with the import hook connected, a new download that has no subtitles gets Whisper subtitles
AUTO_WHISPER_IMPORT_MINUTESafter it lands if Bazarr has not found any by then (default 0 = off; the nightlyAUTO_WHISPER_DAYSrule stays). - Tests: viewer role in
authz.pyand the end-to-end stack (53 checks), regression cases for the movie check and the cookie-before-localhost order.