Skip to main content

v1.13.0

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​

  • feat(automations): add Move action to Automations (#1079) (@Barcode-eng)
  • feat(automations): add hasMissingfiles condition (#1081) (@jabloink)
  • feat(automations): add import button to empty state (#1111) (@jabloink)
  • feat(automations): add include-cross-seeds mode with hardlink support, fix free-space projection (#1116) (@Barcode-eng)
  • feat(automations): add tooltips to disabled conditions (#1286) (@jabloink)
  • feat(automations): add uncategorized category filter option (#1268) (@aulterego)
  • feat(automations): configurable FREE_SPACE source (qBit or path) (#1181) (@s0up4200)
  • feat(backups): add tooltips and restore from lastest button (#1258) (@jabloink)
  • feat(crossseed): add category affix with prefix/suffix modes (#1296) (@jabloink)
  • feat(crossseed): add directory scanner for data-based matching (#1203) (@s0up4200)
  • feat(dirscan): resumable scans with per-run limit (#1274) (@s0up4200)
  • feat(dockerfile): add bash to Dockerfile (#903) (@ryanwalder)
  • feat(docs): add browser extension links and URL shorteners (@s0up4200)
  • feat(linking): add option to fallback on linking failure (#1056) (@Audionut)
  • feat(orphanscan): protect shared save paths across instances (#1197) (@s0up4200)
  • feat(rss): add native rss support (#801) (@s0up4200)
  • feat(sort): add stable fallback sorting for timestamp fields (#1317) (@aulterego)
  • feat(torrents): use custom tracker names in table (#1120) (@s0up4200)
  • feat(ui): Use 4 column grid for dashboard instances on 2xl screens (#1195) (@ewenjo)
  • feat(ui): add inline pieces progress bar visualization (#1050) (@s0up4200)
  • feat(web): Improve performance for torrents with large file counts (#1252) (@0rkag)
  • feat(web): allow merging trackers into existing groups (#1175) (@jabloink)
  • feat(web): improve workflow modal mobile (#1302) (@jabloink)
  • feat(web): make dashboard error counts clickable (#937) (@Gykes)

Bug Fixes​

  • fix(auth): recover cleanly behind upstream SSO (#1142) (@s0up4200)
  • fix(automations): handle -1 value for incomplete torrent completion_on (#1186) (@s0up4200)
  • fix(automations): include Move action in rulesUseCondition (#1079) (#1287) (@Barcode-eng)
  • fix(automations): not being able to enter multiple tags in tag action (#1131) (@Winter)
  • fix(automations): restore preview API and add loading state (#1194) (@s0up4200)
  • fix(automations): speed up delete hardlink-copy expansion (#1187) (@s0up4200)
  • fix(automations): support qBittorrent global/unlimited limits (#1134) (@s0up4200)
  • fix(automations): validate local access for hasMissingFiles (#1281) (@jabloink)
  • fix(crossseed): allow extra files in size mismatch check (#1149) (@s0up4200)
  • fix(crossseed): correct match type for episode-from-pack cross-seeding (#1250) (@neelmehta247)
  • fix(crossseed): normalize ampersand to "and" for title matching (#1202) (@s0up4200)
  • fix(crossseed): prevent automation search stalls (#1272) (@s0up4200)
  • fix(crossseed): prevent false cross-seed delete warnings (#1148) (@s0up4200)
  • fix(crossseed): reduce false negatives for anime matching (#1243) (@s0up4200)
  • fix(crossseed): restore reuse matched category option (#1150) (@s0up4200)
  • fix(crossseed): support v2 hashes for recheck (#1237) (@s0up4200)
  • fix(database): remove noisy stmt cache promotion log (#1307) (@s0up4200)
  • fix(docs): correct autobrr integration documentation (@s0up4200)
  • fix(docs): use absolute URLs for extension links (@s0up4200)
  • fix(instances): auth bypass persistence in instance form (#1219) (@s0up4200)
  • fix(makefile): make fmt target only format changed files (#1200) (@s0up4200)
  • fix(orphanscan): avoid duplicate inode entries in scans (#1212) (@s0up4200)
  • fix(orphanscan): gate scans until qBittorrent settled (#1193) (@s0up4200)
  • fix(orphanscan): ignore .parts files from qBittorrent partial downloads (#1264) (@s0up4200)
  • fix(orphanscan): ignore OS/NAS/k8s artifacts (#1259) (@s0up4200)
  • fix(orphanscan): reduce MaxFilesPerRun and fix accordion chevrons (#1095) (@s0up4200)
  • fix(qbittorrent): force sync+retry in BulkAction (#1097) (@s0up4200)
  • fix(qbittorrent): strip URLs before tracker-down pattern matching (#1224) (@s0up4200)
  • fix(reflinktree): fall back to FICLONERANGE when FICLONE unsupported (#1221) (@s0up4200)
  • fix(search): handle magnet redirects from indexer downloads (#1211) (@s0up4200)
  • fix(sort): truncate last_activity to 60s for stability (#1318) (@aulterego)
  • fix(torznab): respect per-indexer caps limits (#1265) (@s0up4200)
  • fix(trackericons): apply failure cooldown on timeouts (#1322) (@s0up4200)
  • fix(web): add max-height to import workflow dialog (#1207) (@s0up4200)
  • fix(web): hide redundant actions dropdown (#1305) (@jabloink)
  • fix(web): improve Reannounce In column display (#1320) (@soggy-cr0uton)
  • fix(web): make Add Instance dialog scrollable on small viewports (#1232) (@s0up4200)
  • fix(web): make dialogs scrollable on small viewports (#1233) (@s0up4200)
  • fix(web): prevent nested scroll containers on iOS (#1229) (@s0up4200)
  • fix(web): redirect already authenticated users to dashboard (#1127) (@burritothief)
  • fix(web): toast message when searching then adding cross-seeds (#1290) (@rybertm)
  • fix(web): use fixed px for sidebar width instead of rem (#1313) (@soggy-cr0uton)

Other Changes​

  • chore(deps): bump the golang group across 1 directory with 16 updates (#1261) (@dependabot[bot])
  • chore(docs): clarify tracker pattern necessity in documentation (@s0up4200)
  • chore(lint): Add Linting workflow to CI (#1270) (@Barcode-eng)
  • chore(lint): update linting base branch from main to develop (@s0up4200)
  • chore: add Ko-fi funding and pre-commit config (#1315) (@s0up4200)
  • chore: update copyright headers to 2025-2026 (#1303) (@s0up4200)
  • docs(automations): clarify tag behavior (#1260) (@jabloink)
  • refactor(build): cross platform building (#1060) (@Audionut)
  • refactor(crosssed): require full recheck for disc based content (#1168) (@Audionut)
  • refactor(filesmanager): improve logging messages for orphan cleanup process (@s0up4200)
  • refactor(orphan): improve disc based content handling (#1167) (@Audionut)
  • 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