New
- Newznab - New release source: Configure a newznab indexer directly (#867 by @blades)
- PrimaryTitle field + path template improvements — new field for renaming templates, plus live preview and custom field picker in the template editor (#908)
- Non-root support - Installs with
user: "1000:1000”will now run as non-root. Note: This does not impact those with just PUID/PGID as 1000:1000, the docker user must be explicitly set too. (#871) - Kubernetes users can use
runAsNonRootandrunAsUser/Groupat 1000:1000 to run as non-root. (#871) - User folder permission checks / corrections removed and replaced by “test destination” button in settings. Users are responsible for ensuring output folders have correct permissions. (#871)
- Combined search improvements - Now continue a combined search when one option is unfulfilled, and deselect previously chosen releases.
- Direct source refactoring - Decoupled the direct source from the core of the app. It can now be disabled, and users must supply working mirror URLs to use going forward. Existing users updating will keep their existing mirror configs.
Fixes
- Moved Shelfmark runtime from
/appto/home. Fixes internal bypasser issues with newer Chromium release. (#919) - Temp filename length capped to avoid OS limits (#912)
- OIDC discovery URL no longer has trailing slash stripped (#887)
- Fixed JSON script blocking behavior (#862)
- Fixed orchestrator timeout and exception handling (#832)
- Fixed env variable config lookup in various places (#817)
- Retry states now persist across restarts (#817)
- Prowlarr downloads now offer retries (#817)
- Fixed seedtime parsing for prowlarr release source (#805)
Misc / Tooling
- Large tooling update
- Backend: Added
uv,ruff,basedpyright,vulture,pytest-xdist,prek,pytest-cov. - Frontend: Added
oxlint,oxfmt,vitest,knip
- Backend: Added
- Major lint / typecheck / formatting rewrites to improve code quality