Changelog
New Features
- 161a97f: feat(automations): season pack status condition fields (#2770) (@s0up4200)
- 8d30755: feat(docs): live demo on the getqui.com landing page (#2767) (@s0up4200)
- 882b9b3: feat(i18n): add Catalan (ca) translation (#2682) (@Kisnov)
- 7cf3cb1: feat(models): add SSH schema and HasFilesystemAccess helper (#1917) (@nitrobass24)
- 2a7d94b: feat(security): add optional allowed hosts restriction (#2642) (@s0up4200)
- e7a82d7: feat(sshpool): SSH connection layer, host-key pinning, and credential endpoints (#2728) (@nitrobass24)
Bug Fixes
- 097d078: fix(api): preserve content length for torrent file downloads (#2766) (@schwarz)
- 3df380b: fix(auth): harden the API and session boundary (#2548) (@s0up4200)
- 8fa3734: fix(automations): dry run reports the same torrents as the preview (#2775) (@s0up4200)
- 7f647a7: fix(backups): keep archive filenames stable across runs (#2689) (@ColinHebert)
- 42b0fe2: fix(config): write default config.toml when --config-dir has none (#2693) (@ColinHebert)
- 7dec097: fix(crossseed): keep a hardlink resume out of a linked file that failed its recheck (#2688) (@s0up4200)
- 9e1a7c0: fix(crossseed): stop rewriting unchanged feed items on every poll (#2692) (@ColinHebert)
- 63de2ed: fix(crossseed): try legacy source flags in Gazelle hash lookups and keep failed lookups eligible (#2765) (@s0up4200)
- c5e86f8: fix(docs): open the demo in a new tab on phones (#2776) (@s0up4200)
- 5e8045e: fix(filesmanager): upsert cache rows in a fixed order to avoid Postgres deadlocks (#2690) (@ColinHebert)
- 1a11923: fix(http): send the real qui version in the Sonarr, Radarr, and Gazelle User-Agent (#2706) (@s0up4200)
- 12f2516: fix(i18n): render Czech instead of English for counts 2-4 (#2681) (@ColinHebert)
- 88af31e: fix(i18n): render the plural form for the ignored-paths count (#2680) (@ColinHebert)
- e0bcf82: fix(i18n): restore meaning dropped by three abbreviated translations (#2701) (@ColinHebert)
- 5440b85: fix(orphanscan): say items, not files, where a count includes directories (#2675) (@ColinHebert)
- cdb7037: fix(torrents): list files in the Create Torrent source path picker (#2744) (@s0up4200)
- dfcf150: fix(web): serve a static favicon so Firefox background tabs are not blank (#2671) (@thejdubb02)
Other Changes
- 9a04818: chore(deps): bump anthropics/claude-code-action from 1.0.216 to 1.0.223 in the github group (#2758) (@dependabot[bot])
- 15f16d1: chore(deps): bump go-qbittorrent to v1.19.0 (#2764) (@s0up4200)
- f0fe5bc: chore(i18n): remove unreferenced locale blocks and check for new ones (#2684) (@ColinHebert)
- ff1cb9c: ci(triage): reduce backlog sweep to five discussions (#2737) (@s0up4200)
- c1d8fb3: docs(seo): descriptive titles on every page, sitemap lastmod, and cross-links (#2721) (@s0up4200)
- 0660e8c: docs(seo): match Netlify trailing slashes, add robots.txt, and give pages descriptive titles (#2708) (@s0up4200)
- ab78b76: docs(seo): match Netlify trailing slashes, add robots.txt, and give pages descriptive titles (#2715) (@s0up4200)
- a51c7f9: docs: add where to run qui, the cross-seed scope, filter exclusion, and the Windows task limit (#2697) (@s0up4200)
- 15cea7e: perf(filesmanager): skip unchanged rows before the files cache upsert (#2691) (@ColinHebert)
- 2dc53d3: refactor(crossseed): one gatherer for the Torznab search passes (#2755) (@s0up4200)
- e2a3e05: refactor(crossseed): one link-mode body behind hardlink and reflink (#2753) (@s0up4200)
- 07b62da: refactor(crossseed): the matching rules leave Service (#2756) (@s0up4200)
- 5acd463: refactor(license): remove the Polar license provider (#2707) (@s0up4200)
- 837ae89: refactor(torrents): one selection resolver for copy and bulk actions (#2777) (@s0up4200)
- b1f2ce4: refactor(web): one filter serializer and one select-all scope for the torrent table (#2779) (@s0up4200)
- 8779c20: refactor: consumer-side interfaces over SyncManager in orphanscan, automations, and the torrents handler (#2752) (@s0up4200)
- 20e1951: test(i18n): run every scripts/*.test.mjs in check:i18n (#2683) (@ColinHebert)
Full Changelog: v1.29.0...v1.30.0
Docker images
docker pull ghcr.io/autobrr/qui:v1.30.0docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!