Highlights
- Native RSS support for feeds
- Cross-seed upgrades: directory scanning for data-based matching and category affix (prefix/suffix) modes
- Automations improvements: Move action support, uncategorized filter option, hasMissingFiles condition, include-cross-seeds mode, configurable FREE_SPACE source
- UI improvements: inline pieces progress bar, clickable dashboard error counts, better mobile workflow modal
- Orphan scan safeguards for shared save paths
- External programs: new {comment} placeholder
Notable bug fixes:
- More stable sorting for timestamp fields and last_activity
- Tracker icon fetching reliability and timeout cooldown handling
- Cross-seed matching fixes (anime/pack matching, size mismatch handling, V2 hash recheck)
- Orphan scan ignores .parts files and OS/NAS artifacts
- qBittorrent tracker-down matching improvements and magnet redirect handling
Changelog
New Features
- 9acd78916b48f53e4d29c9b04f5f52a8d3b405b2: feat(automations): add Move action to Automations (#1079) (@Barcode-eng)
- 80aaf22c7baaf3611f4058d40fbfad0ea3d78ab7: feat(automations): add hasMissingfiles condition (#1081) (@jabloink)
- f942a71635721481abe629f764ec18b5056c18cb: feat(automations): add import button to empty state (#1111) (@jabloink)
- 6b2831eb6b2966e5e8d5786170d696462ab77f7b: feat(automations): add include-cross-seeds mode with hardlink support, fix free-space projection (#1116) (@Barcode-eng)
- b152a6af36f98d83500cd4799eabaca71c1f948d: feat(automations): add tooltips to disabled conditions (#1286) (@jabloink)
- f36eb76e12c126d2aaa5e2bede78b0bb42a488ae: feat(automations): add uncategorized category filter option (#1268) (@aulterego)
- d7dcb589fd34372ef611aff9605802174406ab46: feat(automations): configurable FREE_SPACE source (qBit or path) (#1181) (@s0up4200)
- d685bee702aefcfccbef087408a828e0cbb6258c: feat(backups): add tooltips and restore from lastest button (#1258) (@jabloink)
- 4c5a975960cdaef799eab4197b9b0e7f8e3faf57: feat(crossseed): add category affix with prefix/suffix modes (#1296) (@jabloink)
- 28cd96da2e9d633059ac3e60f16cbc882a68cc9e: feat(crossseed): add directory scanner for data-based matching (#1203) (@s0up4200)
- fe84eb04ada4eaa83652fb683ddbd43b828e366e: feat(dirscan): resumable scans with per-run limit (#1274) (@s0up4200)
- 1af2a12658e1ca26925d1a5a836beed40f33cd12: feat(dockerfile): add bash to Dockerfile (#903) (@ryanwalder)
- 5c84c3f86c05395d3e10b7cdc6b4c8c74fce2619: feat(docs): add browser extension links and URL shorteners (@s0up4200)
- 13c5461f3fe6b54be9570519055c6855b1e496b8: feat(linking): add option to fallback on linking failure (#1056) (@Audionut)
- 5f7031fe13a32f29d5611768e30a9793e220a4f8: feat(orphanscan): protect shared save paths across instances (#1197) (@s0up4200)
- 341092d5c874c458658c8ba2473e6c8236f68b10: feat(rss): add native rss support (#801) (@s0up4200)
- 8d2a371edbd4fb6c4a8ae6e98e7238f68e4ffeed: feat(sort): add stable fallback sorting for timestamp fields (#1317) (@aulterego)
- 28cf4ad217d2b6c16d1d9a8a0f01e82016342136: feat(torrents): use custom tracker names in table (#1120) (@s0up4200)
- e0d2bb48024e9f10c0608bbb88d4594d52248c90: feat(ui): Use 4 column grid for dashboard instances on 2xl screens (#1195) (@ewenjo)
- 7bc98e145c728eb70fd43d005a69f32320d642ea: feat(ui): add inline pieces progress bar visualization (#1050) (@s0up4200)
- 01542261b51eae970182117123a465606f69306e: feat(web): Improve performance for torrents with large file counts (#1252) (@0rkag)
- a91df7021554fff7a02d03b7737a783efe4076f1: feat(web): allow merging trackers into existing groups (#1175) (@jabloink)
- 132c512042271e466e893ba243ab903d61a1a4b4: feat(web): improve workflow modal mobile (#1302) (@jabloink)
- a7f59abc89c3fac73a45b623d28d05c7de1043dc: feat(web): make dashboard error counts clickable (#937) (@Gykes)
Bug Fixes
- c6f86e2a2cc1a1ffd987fd61c2385800a8fef886: fix(auth): recover cleanly behind upstream SSO (#1142) (@s0up4200)
- 0c198990a0b89de71dbc814b1a7d73ce4548c574: fix(automations): handle -1 value for incomplete torrent completion_on (#1186) (@s0up4200)
- 59a9120d5aad708f11ae42b50d6ea2776edb8be4: fix(automations): include Move action in
rulesUseCondition(#1079) (#1287) (@Barcode-eng) - 618d94540dd1e04e48c94841ae11ffa3d678d185: fix(automations): not being able to enter multiple tags in tag action (#1131) (@Winter)
- bffecbd8b16c8a6f069304810ad501559905286f: fix(automations): restore preview API and add loading state (#1194) (@s0up4200)
- 9b3975bc3a07a280b2882470caee5f238c87493a: fix(automations): speed up delete hardlink-copy expansion (#1187) (@s0up4200)
- 1549bcf7622c13f3e8ef1187afa3432da89bfad5: fix(automations): support qBittorrent global/unlimited limits (#1134) (@s0up4200)
- e31d4aae2fb291033286bbd80be32883db25cf03: fix(automations): validate local access for hasMissingFiles (#1281) (@jabloink)
- dba3419f12209376903089e5edf4e04863ae32d8: fix(crossseed): allow extra files in size mismatch check (#1149) (@s0up4200)
- f7dced6076ebde0f799bb4dc6d966d78453a1fb2: fix(crossseed): correct match type for episode-from-pack cross-seeding (#1250) (@neelmehta247)
- 007d87ed3d6993cfdeeb7a197486c5544d06bd8f: fix(crossseed): normalize ampersand to "and" for title matching (#1202) (@s0up4200)
- 048c034ea14d47312c7d884a724e095503db1ac9: fix(crossseed): prevent automation search stalls (#1272) (@s0up4200)
- 5c48ccb38e732b69ba5e45d534139a91f87c6584: fix(crossseed): prevent false cross-seed delete warnings (#1148) (@s0up4200)
- eda0eeee738f671dc689063ad70ad2f79abaae91: fix(crossseed): reduce false negatives for anime matching (#1243) (@s0up4200)
- 8b08b87707623ca2b4f1c23efe01bef0dcdf20f6: fix(crossseed): restore reuse matched category option (#1150) (@s0up4200)
- b69682de3cde3e677335cfb992c20508e779f7b8: fix(crossseed): support v2 hashes for recheck (#1237) (@s0up4200)
- 8fb16c1c87a62e804c718032cc309831d57cfe03: fix(database): remove noisy stmt cache promotion log (#1307) (@s0up4200)
- c8d068b5a8d5738a8ba2f72dec905f1506a10f2f: fix(docs): correct autobrr integration documentation (@s0up4200)
- c6f4a4a3099628dafd856700aef0baa9aeaf8bb5: fix(docs): use absolute URLs for extension links (@s0up4200)
- 48510e93ba9305cfeca77811a38630d37efd4125: fix(instances): auth bypass persistence in instance form (#1219) (@s0up4200)
- 0b71b46fc04305e0ef67e907fc4db232c8c9908c: fix(makefile): make fmt target only format changed files (#1200) (@s0up4200)
- 1f13b0e23b0f7b8213143e1c184487db8decd659: fix(orphanscan): avoid duplicate inode entries in scans (#1212) (@s0up4200)
- fecfebdeb37e2964bf55bc50048b270996df65ce: fix(orphanscan): gate scans until qBittorrent settled (#1193) (@s0up4200)
- 77b2fd600df78b870ccad17c3016f68b321119ff: fix(orphanscan): ignore .parts files from qBittorrent partial downloads (#1264) (@s0up4200)
- 0f7e6465d0915406565bbeb49f0922f68c21beea: fix(orphanscan): ignore OS/NAS/k8s artifacts (#1259) (@s0up4200)
- b55881c2bc79a6be9c1bdd983802f9953fdf6374: fix(orphanscan): reduce MaxFilesPerRun and fix accordion chevrons (#1095) (@s0up4200)
- 0cb682c9f3d441f54ed56a83713aa3a146fb320f: fix(qbittorrent): force sync+retry in BulkAction (#1097) (@s0up4200)
- aba9b7e0154c5d6aad471e9ea66798f9a05a06f9: fix(qbittorrent): strip URLs before tracker-down pattern matching (#1224) (@s0up4200)
- a60076f1ad5bcffdb902a9ee45fba665fdd7edc6: fix(reflinktree): fall back to FICLONERANGE when FICLONE unsupported (#1221) (@s0up4200)
- d79a0dbb6a9ee4b27bfb3db58a9a50b8993da23e: fix(search): handle magnet redirects from indexer downloads (#1211) (@s0up4200)
- 1e920c464c3ccadd19ffb2ec3ee09cf6a1fa1487: fix(sort): truncate
last_activityto 60s for stability (#1318) (@aulterego) - 931d7203b8388f0f75c561693655519a2072e62c: fix(torznab): respect per-indexer caps limits (#1265) (@s0up4200)
- 6fe91e877cb31f9f4cf5f3ccfcb98e79c4c56d85: fix(trackericons): apply failure cooldown on timeouts (#1322) (@s0up4200)
- 35a50b52c12acfcc67d0c5e184eeffd2709df35f: fix(web): add max-height to import workflow dialog (#1207) (@s0up4200)
- 5bd2706f479e1f8c90780d579ad0288fc03fd7db: fix(web): hide redundant actions dropdown (#1305) (@jabloink)
- 307907f299f30b5a045abff19524b103b17355e8: fix(web): improve Reannounce In column display (#1320) (@soggy-cr0uton)
- 7881bdcd17da625d3d01cf04ef55318938b3a473: fix(web): make Add Instance dialog scrollable on small viewports (#1232) (@s0up4200)
- bec54335b7a63f755afa35cf6d3ea0d4da78110d: fix(web): make dialogs scrollable on small viewports (#1233) (@s0up4200)
- 0e47b9e9c35e0f9510fd4db8ff324b38a337090d: fix(web): prevent nested scroll containers on iOS (#1229) (@s0up4200)
- f2f061609641b3ad9d42ccce48aa6caf3019be69: fix(web): redirect already authenticated users to dashboard (#1127) (@burritothief)
- 7a633cf7210c5ceb29e4c4082b09625eb94bbdbe: fix(web): toast message when searching then adding cross-seeds (#1290) (@rybertm)
- da141006ef817b1a1056f3d0478b318b2b946615: fix(web): use fixed px for sidebar width instead of rem (#1313) (@soggy-cr0uton)
Other Changes
- c93a326df57cef8300b5c1ff05b55143ee58da35: chore(deps): bump the golang group across 1 directory with 16 updates (#1261) (@dependabot[bot])
- d3de07497fa3e2e29ccd79e2eec01517ee9f3708: chore(docs): clarify tracker pattern necessity in documentation (@s0up4200)
- 23510978ea9462a910621b9e827391fe4091abf2: chore(lint): Add Linting workflow to CI (#1270) (@Barcode-eng)
- e8436e39f9682bbab6fa406be20252ab92255cda: chore(lint): update linting base branch from main to develop (@s0up4200)
- e36afc8021b63b368f1a9e84c7524b4f8cfbec7c: chore: add Ko-fi funding and pre-commit config (#1315) (@s0up4200)
- df4375e7ce49b259856827dbc9022f1c63d0c4a6: chore: update copyright headers to 2025-2026 (#1303) (@s0up4200)
- 7a6f2d15a6b020f363f2bcb1793e9f131c12bcd3: docs(automations): clarify tag behavior (#1260) (@jabloink)
- 05e20287a8fab095670c4ce5aec3ea03c3b677a2: refactor(build): cross platform building (#1060) (@Audionut)
- 6355f4f12601dcdbaa44042002a916614e48da9c: refactor(crosssed): require full recheck for disc based content (#1168) (@Audionut)
- 7466a98023aa4ca1e531d47c661e2701fb8dc3cf: refactor(filesmanager): improve logging messages for orphan cleanup process (@s0up4200)
- ad902091ed7013fecdad108fbcaea1c45aee0d58: refactor(orphan): improve disc based content handling (#1167) (@Audionut)
- 3b85f8a17f1fe5bf904371f697c8c96ac8d6379e: refactor(web): use TanStack Query for path autocomplete (#1309) (@soggy-cr0uton)
Full Changelog: https://github.com/autobrr/qui/compare/v1.12.0...v1.13.0
Docker images
docker pull ghcr.io/autobrr/qui:v1.13.0docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!