Skip to content

v0.9.1

Pre-release
Pre-release

Choose a tag to compare

@chrizantoz chrizantoz released this 11 Nov 10:17
· 89 commits to main since this 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, #trash and the other tab names from the address. PUBLIC_URL sets 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: restore boots last night's backup in a throwaway container and checks it, drill 4 puts 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_MINUTES after it lands if Bazarr has not found any by then (default 0 = off; the nightly AUTO_WHISPER_DAYS rule stays).
  • Tests: viewer role in authz.py and the end-to-end stack (53 checks), regression cases for the movie check and the cookie-before-localhost order.