Releases: autobrr/qui
Releases · autobrr/qui
v1.17.0
Changelog
Bug Fixes
- 52c5e73: fix(automations): clarify cross-seed condition labels (#1763) (@nitrobass24)
- 70e0032: fix(crossseed): skip link-mode category path warnings (#1753) (@s0up4200)
- 85df3e7: fix(orphanscan): align content path root detection (#1771) (@s0up4200)
- 117d617: fix(orphanscan): ignore qBittorrent incomplete files (#1761) (@nitrobass24)
- 388415e: fix(web): fix add torrent/magnet urls (#1762) (@nitrobass24)
Other Changes
- 845599a: chore(ci): speed up CI pipeline (9.3 min → 4.3 min for PRs) (#1750) (@nitrobass24)
- 2b09cf3: chore: trim embedded web assets and Docker build context (#1723) (@nitrobass24)
- 5262f7c: docs: add migration PR guidance (#1748) (@s0up4200)
- 65c7046: refactor(search): table & cards cleanup (#1768) (@nuxencs)
Full Changelog: v1.16.1...v1.17.0
Docker images
docker pull ghcr.io/autobrr/qui:v1.17.0docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!
v1.16.1
Changelog
Bug Fixes
- e177ad9: fix(auth): harden OIDC PKCE flow (#1746) (@s0up4200)
- 393e2b7: fix(dirscan): tighten flexible matching and improve diagnostics (#1742) (@s0up4200)
Full Changelog: v1.16.0...v1.16.1
Docker images
docker pull ghcr.io/autobrr/qui:v1.16.1docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!
v1.16.0
Changelog
Highlights
- Automations got a major upgrade: rules can now match across instances, use system time, control AutoTMM, and opt out of notifications per workflow.
- Cross-seed is more reliable during state changes. Completion searches now wait for torrents to finish checking or moving, disabled instances are skipped cleanly, and hardlink/reflink save-path handling is more accurate.
- Dir Scan works better with real media libraries, with improved partial season-pack handling in link-tree mode, support for downloading missing files when needed, and better progress retention across restarts.
- Managing torrents in the unified view is smoother, with more accurate tracker health, quicker instance-level actions, and more stable category and tag editing dialogs.
- OIDC and backups both got practical quality-of-life improvements: OIDC now supports PKCE, backup settings can be applied across instances, and backup export handling is safer for tricky torrent layouts.
New Features
- 2b92c7b: feat(auth): add PKCE support to OIDC implementation (#1737) (@oynqr)
- ba3d5d9: feat(automations): add AutoTMM condition and action (#1698) (@nitrobass24)
- 702e808: feat(automations): add system time to query builder (#1677) (@wastaken7)
- e6493b3: feat(automations): allow disable of notifications (#1652) (@heathlarsen)
- 565ac2d: feat(automations): cross instance condition (#1648) (@nitrobass24)
- 7e12a02: feat(update): verify self-updates with signed release checksums (#1665) (@s0up4200)
- 3778c7b: feat(web): Add action buttons to unified instance. (#1637) (@drtaru)
- bf9eaba: feat(web): Clarify dashboard quick links (#1636) (@drtaru)
- b930530: feat(web): add "Save changes to all instances" button to backup settings (#1651) (@drtaru)
- 5975c34: feat(web): add Discord perk section to license manager (#1656) (@s0up4200)
- d8ad0d6: feat(web): unify tab styling and animations (#1632) (@nuxencs)
Bug Fixes
- 44596b9: fix(automations): add AutoTMM to condition validation (#1726) (@s0up4200)
- 8f757b2: fix(automations): hardlink signature grouping (#1670) (@aulterego)
- d242f0c: fix(automations): include AutoManagement in delete standalone check (#1731) (@nitrobass24)
- 744bdb8: fix(backups): adaptive export throttle (#1630) (@s0up4200)
- d1dbb81: fix(backups): gate bulk save on resolved instance capabilities (#1682) (@s0up4200)
- 2eea961: fix(backups): skip live export for hybrid torrents (#1669) (@s0up4200)
- 2cac32d: fix(crossseed): skip disabled instances (#1635) (@s0up4200)
- ebbba8e: fix(crossseed): tone down async cache reuse log (#1686) (@s0up4200)
- fd382b7: fix(dirscan): link plan size tolerance + partial season pack injection in link tree mode (#1695) (@s0up4200)
- 5131092: fix(dirscan): retain recent runs and clarify restart behavior (#1564) (@s0up4200)
- 3fbcc7a: fix(openapi): document dirscan downloadMissingFiles (#1727) (@s0up4200)
- d16fee2: fix(orphanscan): use content_path to prevent false positives when Auto TMM changes save_path (#1712) (@nitrobass24)
- e74bf02: fix(qbittorrent): avoid tracker health URL false positives (#1738) (@s0up4200)
- 632fc54: fix(torrents): honor tracker health in unified view (#1668) (@s0up4200)
- 76fddc4: fix(torrents): stabilize tag and category dialogs (#1638) (@s0up4200)
- c758b6d: fix(torrents): validate creator output path (#1739) (@s0up4200)
- 6c23f0e: fix(web): cross-seed warning in unified view (#1692) (@s0up4200)
- 57822c0: fix(web): improve duplicate torrent state and check another field.state.value type in AddTorrentDialog (#1679) (@keatonhasse)
- 246c8f6: fix(web): migrate vite chunk splitting config (@s0up4200)
Other Changes
- 263b0bd: build(deps): add cooldown to dependabot config (#1691) (@s0up4200)
- a394157: chore(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 (#1713) (@dependabot[bot])
- 10612a7: chore(deps): bump golang.org/x/image from 0.36.0 to 0.38.0 (#1685) (@dependabot[bot])
- 16019dd: chore(deps): bump pnpm/action-setup from 4 to 5 in the github group (#1634) (@dependabot[bot])
- fbb25fc: chore(deps): bump the golang group with 11 updates (#1693) (@dependabot[bot])
- cbb9594: chore(deps): bump the golang group with 3 updates (#1701) (@dependabot[bot])
- 805ab74: chore(deps): bump the npm group in /web with 25 updates (#1694) (@dependabot[bot])
- e3f839c: chore(deps): bump the npm group in /web with 5 updates (#1702) (@dependabot[bot])
- b076ad4: docs(dirscan): clarify re-identification after torrent removal (#1720) (@s0up4200)
- 340f343: docs: add license management page with deactivation guide (#1706) (@s0up4200)
- 5d148be: docs: fix link in issue triage template (@s0up4200)
- 0b64237: docs: update release follow-up docs (#1741) (@s0up4200)
Full Changelog: v1.15.0...v1.16.0
Docker images
docker pull ghcr.io/autobrr/qui:v1.16.0docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!
v1.15.0
Changelog
Breaking change
CORS is disabled by default; enable by setting QUI__CORS_ALLOWED_ORIGINS with explicit origins (http(s)://host[:port]). See https://getqui.com/docs/advanced/sso-proxy-cors
New Features
- 93786a2: feat(automations): add configurable processing priority/sorting (#1235) (@Oscariremma)
- 45eaf1f: feat(database): add postgres and sqlite migration CLI (#1530) (@s0up4200)
- 430f5d1: feat(torrents): mediaInfo dialog (#1537) (@s0up4200)
- 8eb8903: feat(web): Add persistence to unified instance filter in sidebar (#1560) (@drtaru)
- 7aadde7: feat(web): add path autocomplete to set location dialog (#1432) (@nitrobass24)
- 077f32c: feat: add mediainfo api endpoint (#1545) (@Audionut)
- 99cf695: feat: endpoint to trigger directory scans from external tools (#1559) (@s0up4200)
- 8956f9b: feat: unify bulk tag editor (#1571) (@s0up4200)
Bug Fixes
- 552d617: fix(api): align add torrent OpenAPI field (#1617) (@s0up4200)
- 424f7a0: fix(api): restrict CORS to explicit allowlist (#1551) (@s0up4200)
- 38991d8: fix(auth): allow loopback health probes (#1621) (@s0up4200)
- 4ae88c9: fix(automations): align include-cross-seeds category apply (#1517) (@s0up4200)
- 6a127a8: fix(automations): scope skipWithin to only deleted action (#1538) (@jabloink)
- c776189: fix(crossseed): avoid completion timeout misses on non-Gazelle torrents (#1536) (@s0up4200)
- b1338a7: fix(crossseed): handle missing webhook collection tags (#1610) (@s0up4200)
- eacbb68: fix(crossseed): normalize hdr aliases (#1572) (@s0up4200)
- 537ad46: fix(crossseed): queue completion searches and retry rate-limit waits (#1523) (@s0up4200)
- 4fc550f: fix(crossseed): use autobrr indexer ids for webhooks (#1614) (@s0up4200)
- 08029ad: fix(crossseed): valid partial matches being rejected (#1291) (@rybertm)
- 77eedd9: fix(database): avoid postgres temp-table statement caching (#1581) (@s0up4200)
- 25daa17: fix(dirscan): honor canceled queued webhook runs (#1612) (@s0up4200)
- 56995f1: fix(dirscan): queue webhook scans and tighten age filtering (#1603) (@s0up4200)
- 444d07b: fix(dirscan): select concrete hardlink base dir (#1606) (@s0up4200)
- c35bea0: fix(instances): improve settings dialog scrolling (#1569) (@nuxencs)
- dc501a0: fix(proxy): reauth qbit passthrough requests (#1582) (@s0up4200)
- 7950d1d: fix(proxy): search endpoint handling (#1524) (@Audionut)
- 1076eea: fix(qbit): prune empty managed dirs after delete_with_files (#1604) (@s0up4200)
- 5a3114b: fix(qbittorrent): stop reboot torrent_completed spam (#1515) (@s0up4200)
- 1d02e6c: fix(settings): contain settings tab scrolling (#1567) (@nuxencs)
- f5d69f3: fix(settings): smoother gradient (#1570) (@nuxencs)
- 1c0c3bc: fix(torrents): copy MediaInfo summary without brackets (#1540) (@s0up4200)
- 3ec913a: fix(web): auto-append slash on path autocomplete selection (#1431) (@nitrobass24)
- aa2f3da: fix(web): check field.state.value type in AddTorrentDialog (#1613) (@s0up4200)
- 1abfc5e: fix(web): handle SSO proxy redirect to /index.html (#1600) (@s0up4200)
- 1991f90: fix(web): warn before enabling reannounce (#1583) (@s0up4200)
Other Changes
- 4069492: chore(deps): bump the github group with 3 updates (#1535) (@dependabot[bot])
- a02e9e8: chore(deps): bump the github group with 7 updates (#1558) (@dependabot[bot])
- 8713667: chore(deps): bump the golang group with 15 updates (#1543) (@dependabot[bot])
- 420607e: chore(go,ci): adopt go fix, bump to 1.26, and speed up PR checks (#1480) (@s0up4200)
- 0d0df45: docs: add password reset section to CLI commands (#1598) (@s0up4200)
- 9ef56a2: refactor(makefile): windows support (#1546) (@Audionut)
- 7899cc8: refactor(reflinking): add windows ReFS filesystem support (#1576) (@Audionut)
- 51d34ab: refactor(releases): share hdr normalization helpers (#1586) (@s0up4200)
- c7f4e3d: refactor(web): tighten unified scope navigation (#1618) (@s0up4200)
- 4b05177: test(handlers): cover tag baseline field requests (@s0up4200)
Full Changelog: v1.14.1...v1.15.0
Docker images
docker pull ghcr.io/autobrr/qui:v1.15.0docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!
v1.14.1
Changelog
Bug Fixes
- 6f3171c: fix(auth): avoid chromium basic auth resets on expired qui sessions (#1495) (@s0up4200)
- d5acab7: fix(automations): make managed full tag sync idempotent (#1494) (@s0up4200)
- 9fdc949: fix(crossseed): avoid webhook notification spam on pending matches (#1496) (@s0up4200)
- 350edb3: fix(notifications): improve torrent and automation event samples (#1501) (@s0up4200)
- e2c032c: fix(qbittorrent): ignore pseudo tracker labels in domain parsing (#1489) (@s0up4200)
- e00c70d: fix(qbittorrent): repair unified torrent sorting (#1490) (@s0up4200)
- 4d95325: fix(themes): clarify crypto donation discount flow (#1503) (@s0up4200)
- 579ea8d: fix(themes): clarify premium checkout and crypto flow (@s0up4200)
- ece956a: fix(torrents): scope instance column to unified cross-instance data (#1502) (@s0up4200)
- 27cf6d2: fix(ui): hide unified entry when one instance is active (#1493) (@s0up4200)
- 80d911f: fix(ui): remove single-instance indent in header menu (@s0up4200)
- 6ae7625: fix(ui): restore instances header in menu (@s0up4200)
Other Changes
Full Changelog: v1.14.0...v1.14.1
Docker images
docker pull ghcr.io/autobrr/qui:v1.14.1docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!
v1.14.0
Changelog
New Features
- 6f8e6ed: feat(api): add torrent field endpoint for select all copy (#1477) (@jabloink)
- 2d9b4c7: feat(automation): trigger external programs automatically via automation rules (#1284) (@0rkag)
- 32692a4: feat(automations): Add the ability to define the move automation with a templated path (#1376) (@ColinHebert)
- 61bbeb1: feat(automations): add Resume action to Automations (#1350) (@cy1der)
- 450b98f: feat(automations): grouping + release fields (#1467) (@s0up4200)
- 18d4a64: feat(automations): match tracker conditions by display name (#1420) (@s0up4200)
- 7c67b82: feat(automations): show activity run details (#1385) (@s0up4200)
- 177ef4d: feat(crossseed): Multiple hard/reflink dirs (#1289) (@rybertm)
- a72b673: feat(crossseed): gazelle-only OPS/RED (#1436) (@s0up4200)
- 6a29384: feat(crossseed): match bit depth (#1427) (@s0up4200)
- c7fd5aa: feat(dirscan): add max searchee age filter (#1486) (@s0up4200)
- d595a55: feat(documentation): add AI doc actions and llms discoverability (#1451) (@s0up4200)
- 562ab3f: feat(metrics): add tracker metrics (#1073) (@Winter)
- 1b9aa9d: feat(notifications): add shoutrrr and notifiarr (#1371) (@s0up4200)
- 6d1dac7: feat(pwa): add protocol and file handlers for magnet links and torrent files (#783) (@s0up4200)
- 42fa501: feat(torrents): add unified cross-instance torrent table (#1481) (@s0up4200)
- 498eaca: feat(ui): show speeds in page title (#1292) (@NoLife141)
- 94a506e: feat(unregistered): nem talalhato (#1483) (@KyleSanderson)
- 8bf366c: feat(web): add logs nav (#1458) (@s0up4200)
- babc88d: feat(web): add responsive popover with mobile drawer support (#1398) (@jabloink)
- 06d341b: feat(web): add torrent table selection quick wins (#1455) (@s0up4200)
- 56fbbec: feat(web): hide selection column (#1460) (@s0up4200)
- 46814aa: feat(web): qBittorrent autorun preferences (#1430) (@s0up4200)
- 342643e: feat(web): unify instance settings & qbit options dialog (#1257) (@0rkag)
- e634d01: feat: add cross-seed blocklist (#1391) (@s0up4200)
- 13aaac8: feat: add dry-run workflows (#1395) (@s0up4200)
- f01101d: feat: add option to disable built-in authentication (#1464) (@libussa)
- 6d1da50: feat: download individual content files from context menu (#1465) (@libussa)
- 77e9abf: feat: migrate to dodopayments (#1407) (@s0up4200)
- 9f6c856: feat: support basic auth for ARR and Torznab (#1442) (@s0up4200)
Bug Fixes
- 8a06d4b: fix(api): correct add-torrent OpenAPI param names and add missing fields (#1426) (@s0up4200)
- b9a687c: fix(api): honor explicit basic auth clear from URL userinfo (@s0up4200)
- 948ca67: fix(api): tighten CORS/auth routing and base URL joins (#1325) (@s0up4200)
- 12bea13: fix(automations): improve applied action summaries (#1478) (@s0up4200)
- 8fe658b: fix(automations): negate regex match for NotContains/NotEqual operators (#1441) (@andresatierf)
- 8a808eb: fix(automations): respect remove-only tag conditions (#1444) (@s0up4200)
- a72715e: fix(backups): add failure cooldown and export throttling (#1214) (@s0up4200)
- 2e75c14: fix(backups): skip exports missing metadata (#1362) (@s0up4200)
- 5658421: fix(config): update commented log settings in place (#1402) (@s0up4200)
- 62c50c0: fix(crossseed): tighten TV title matching (#1445) (@s0up4200)
- e7cc489: fix(dirscan): prevent immediate requeue after cancel (#1446) (@s0up4200)
- 36cbfcf: fix(docs): avoid mdx jsx parse error (@s0up4200)
- d8d6f62: fix(filters): stabilize dense sidebar layout (#1384) (@s0up4200)
- b959fc6: fix(orphanscan): NFC-normalize paths to avoid false orphans (#1422) (@s0up4200)
- 598e994: fix(reflink): retry EAGAIN clones (#1360) (@s0up4200)
- aaa5ee0: fix(reflinktree): retry transient FICLONE EINVAL and add diagnostics (#1487) (@s0up4200)
- 647af31: fix(rss): enable rules list scrolling (#1359) (@s0up4200)
- c356a6f: fix(sync): Optimize torrent sorting and reference management (#1474) (@KyleSanderson)
- cf4310e: fix(ui): update placeholder text in ArrInstanceForm based on instance type (#1375) (@pashioya)
- 92b6748: fix(web): format IPv6 peer addresses and copy IP without port (#1417) (@sleepm)
- 25039bc: fix(web): handle SSO session expiry behind Cloudflare Access and other proxies (#1438) (@nitrobass24)
- 77fe310: fix(web): prevent category submenu re-render (#1357) (@jabloink)
- a42ab1e: fix(web): raise instance preferences max value from 999 to 99999 (#1311) (@s0up4200)
- 540168c: fix(web): raise virtualization threshold (#1355) (@jabloink)
- 8547dc6: fix(web): remove column filters when column is hidden (#1418) (@jabloink)
- 6b09b8d: fix(web): remove panel size bounds (@s0up4200)
- db4cdc4: fix(web): show piece size in torrent details (#1365) (@s0up4200)
- 1f94a06: fix(web): use absolute for scroll-to-top on desktop (#1419) (@jabloink)
- e31fe3a: fix: detect tracker health support after qBit upgrade (#909) (@s0up4200)
- 52f01da: fix: disable update indicators when update checks are off (#1364) (@s0up4200)
- f7e3fed: fix: normalize DD+ and DDP file keys (#1456) (@s0up4200)
Other Changes
- d914301: chore(ci): fire Blacksmith (my wallet screamed) (#1408) (@s0up4200)
- b43327d: chore(deps): bump the golang group with 2 updates (#1378) (@dependabot[bot])
- 57747bd: chore(deps): bump the npm group across 1 directory with 27 updates (#1379) (@dependabot[bot])
- a43850d: chore(docs): add BIMI SVG logo (@s0up4200)
- 914bede: chore(funding): add Patreon to FUNDING.yml (@s0up4200)
- 8b76f1e: docs(automations): clarify tag matching examples (#1457) (@s0up4200)
- 2994054: docs(readme): restore concise README (#1452) (@s0up4200)
- 51237d4: docs: Add configuration reference (#1440) (@s0up4200)
- 741462c: docs: add Windows installation guide (#1463) (@soggy-cr0uton)
- 6a11430: docs: clarify autobrr filter + apply troubleshooting (#1459) (@s0up4200)
- 5a2edc2: docs: update 2 documentation files (#1454) (@s0up4200)
- 139ada9: docs: update contributing.md (#1470) (@s0up4200)
- 3909aa1: docs: update docs/features/automations.md (#1447) (@s0up4200)
- 5dc57ca: docs: update intro.md (#1453) (@s0up4200)
- 5d9e986: perf(web): memoize useDateTimeFormatters (#1403) (@jabloink)
Full Changelog: v1.13.1...v1.14.0
Docker images
docker pull ghcr.io/autobrr/qui:v1.14.0docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!
v1.13.1
Changelog
Bug Fixes
- 1def0c4: fix(crossseed): add partial-contains to match type priority (#1335) (@soggy-cr0uton)
- cbb0ed3: fix(crossseed): avoid pausing when alignment not needed (#1342) (@s0up4200)
- 7287444: fix(crossseed): handle V1/V2 hash visibility in alignment (#1336) (@soggy-cr0uton)
- 0d6ea7a: fix(crossseed): normalize parsed hashes (#1347) (@s0up4200)
- e19e244: fix(web): mobile card spacing (#1327) (@jabloink)
- add0805: fix(web): use fixed for scroll-to-top (#1340) (@jabloink)
Other Changes
Full Changelog: v1.13.0...v1.13.1
Docker images
docker pull ghcr.io/autobrr/qui:v1.13.1docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!
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
- 9acd789: feat(automations): add Move action to Automations (#1079) (@Barcode-eng)
- 80aaf22: feat(automations): add hasMissingfiles condition (#1081) (@jabloink)
- f942a71: feat(automations): add import button to empty state (#1111) (@jabloink)
- 6b2831e: feat(automations): add include-cross-seeds mode with hardlink support, fix free-space projection (#1116) (@Barcode-eng)
- b152a6a: feat(automations): add tooltips to disabled conditions (#1286) (@jabloink)
- f36eb76: feat(automations): add uncategorized category filter option (#1268) (@aulterego)
- d7dcb58: feat(automations): configurable FREE_SPACE source (qBit or path) (#1181) (@s0up4200)
- d685bee: feat(backups): add tooltips and restore from lastest button (#1258) (@jabloink)
- 4c5a975: feat(crossseed): add category affix with prefix/suffix modes (#1296) (@jabloink)
- 28cd96d: feat(crossseed): add directory scanner for data-based matching (#1203) (@s0up4200)
- fe84eb0: feat(dirscan): resumable scans with per-run limit (#1274) (@s0up4200)
- 1af2a12: feat(dockerfile): add bash to Dockerfile (#903) (@ryanwalder)
- 5c84c3f: feat(docs): add browser extension links and URL shorteners (@s0up4200)
- 13c5461: feat(linking): add option to fallback on linking failure (#1056) (@Audionut)
- 5f7031f: feat(orphanscan): protect shared save paths across instances (#1197) (@s0up4200)
- 341092d: feat(rss): add native rss support (#801) (@s0up4200)
- 8d2a371: feat(sort): add stable fallback sorting for timestamp fields (#1317) (@aulterego)
- 28cf4ad: feat(torrents): use custom tracker names in table (#1120) (@s0up4200)
- e0d2bb4: feat(ui): Use 4 column grid for dashboard instances on 2xl screens (#1195) (@ewenjo)
- 7bc98e1: feat(ui): add inline pieces progress bar visualization (#1050) (@s0up4200)
- 0154226: feat(web): Improve performance for torrents with large file counts (#1252) (@0rkag)
- a91df70: feat(web): allow merging trackers into existing groups (#1175) (@jabloink)
- 132c512: feat(web): improve workflow modal mobile (#1302) (@jabloink)
- a7f59ab: feat(web): make dashboard error counts clickable (#937) (@Gykes)
Bug Fixes
- c6f86e2: fix(auth): recover cleanly behind upstream SSO (#1142) (@s0up4200)
- 0c19899: fix(automations): handle -1 value for incomplete torrent completion_on (#1186) (@s0up4200)
- 59a9120: fix(automations): include Move action in
rulesUseCondition(#1079) (#1287) (@Barcode-eng) - 618d945: fix(automations): not being able to enter multiple tags in tag action (#1131) (@Winter)
- bffecbd: fix(automations): restore preview API and add loading state (#1194) (@s0up4200)
- 9b3975b: fix(automations): speed up delete hardlink-copy expansion (#1187) (@s0up4200)
- 1549bcf: fix(automations): support qBittorrent global/unlimited limits (#1134) (@s0up4200)
- e31d4aa: fix(automations): validate local access for hasMissingFiles (#1281) (@jabloink)
- dba3419: fix(crossseed): allow extra files in size mismatch check (#1149) (@s0up4200)
- f7dced6: fix(crossseed): correct match type for episode-from-pack cross-seeding (#1250) (@neelmehta247)
- 007d87e: fix(crossseed): normalize ampersand to "and" for title matching (#1202) (@s0up4200)
- 048c034: fix(crossseed): prevent automation search stalls (#1272) (@s0up4200)
- 5c48ccb: fix(crossseed): prevent false cross-seed delete warnings (#1148) (@s0up4200)
- eda0eee: fix(crossseed): reduce false negatives for anime matching (#1243) (@s0up4200)
- 8b08b87: fix(crossseed): restore reuse matched category option (#1150) (@s0up4200)
- b69682d: fix(crossseed): support v2 hashes for recheck (#1237) (@s0up4200)
- 8fb16c1: fix(database): remove noisy stmt cache promotion log (#1307) (@s0up4200)
- c8d068b: fix(docs): correct autobrr integration documentation (@s0up4200)
- c6f4a4a: fix(docs): use absolute URLs for extension links (@s0up4200)
- 48510e9: fix(instances): auth bypass persistence in instance form (#1219) (@s0up4200)
- 0b71b46: fix(makefile): make fmt target only format changed files (#1200) (@s0up4200)
- 1f13b0e: fix(orphanscan): avoid duplicate inode entries in scans (#1212) (@s0up4200)
- fecfebd: fix(orphanscan): gate scans until qBittorrent settled (#1193) (@s0up4200)
- 77b2fd6: fix(orphanscan): ignore .parts files from qBittorrent partial downloads (#1264) (@s0up4200)
- 0f7e646: fix(orphanscan): ignore OS/NAS/k8s artifacts (#1259) (@s0up4200)
- b55881c: fix(orphanscan): reduce MaxFilesPerRun and fix accordion chevrons (#1095) (@s0up4200)
- 0cb682c: fix(qbittorrent): force sync+retry in BulkAction (#1097) (@s0up4200)
- aba9b7e: fix(qbittorrent): strip URLs before tracker-down pattern matching (#1224) (@s0up4200)
- a60076f: fix(reflinktree): fall back to FICLONERANGE when FICLONE unsupported (#1221) (@s0up4200)
- d79a0db: fix(search): handle magnet redirects from indexer downloads (#1211) (@s0up4200)
- 1e920c4: fix(sort): truncate
last_activityto 60s for stability (#1318) (@aulterego) - 931d720: fix(torznab): respect per-indexer caps limits (#1265) (@s0up4200)
- 6fe91e8: fix(trackericons): apply failure cooldown on timeouts (#1322) (@s0up4200)
- 35a50b5: fix(web): add max-height to import workflow dialog (#1207) (@s0up4200)
- 5bd2706: fix(web): hide redundant actions dropdown (#1305) (@jabloink)
- 307907f: fix(web): improve Reannounce In column display (#1320) (@soggy-cr0uton)
- 7881bdc: fix(web): make Add Instance dialog scrollable on small viewports (#1232) (@s0up4200)
- bec5433: fix(web): make dialogs scrollable on small viewports (#1233) (@s0up4200)
- 0e47b9e: fix(web): prevent nested scroll containers on iOS (#1229) (@s0up4200)
- f2f0616: fix(web): redirect already authenticated users to dashboard (#1127) (@burritothief)
- 7a633cf: fix(web): toast message when searching then adding cross-seeds (#1290) (@rybertm)
- da14100: fix(web): use fixed px for sidebar width instead of rem (#1313) (@soggy-cr0uton)
Other Changes
- c93a326: chore(deps): bump the golang group across 1 directory with 16 updates (#1261) (@dependabot[bot])
- d3de074: chore(docs): clarify tracker pattern necessity in documentation (@s0up4200)
- 2351097: chore(lint): Add Linting workflow to CI (#1270) (@Barcode-eng)
- e8436e3: chore(lint): update linting base branch from main to develop (@s0up4200)
- e36afc8: chore: add Ko-fi funding and pre-commit config (#1315) (@s0up4200)
- df4375e: chore: update copyright headers to 2025-2026 (#1303) (@s0up4200)
- 7a6f2d1: docs(automations): clarify tag behavior (#1260) (@jabloink)
- 05e2028: refactor(build): cross platform building (#1060) (@Audionut)
- 6355f4f: refactor(...
v1.12.0
Changelog
New Features
- 202e950: feat(automations): Add
free_spacecondition (#1061) (@Barcode-eng) - 3b106d6: feat(automations): make conditions optional for non-delete rules and add drag reorder (#939) (@s0up4200)
- 0684d75: feat(config): Add QUI__OIDC_CLIENT_SECRET_FILE env var (#841) (@PedDavid)
- dac0173: feat(config): allow disabling tracker icon fetching (#823) (@s0up4200)
- dc10bad: feat(crossseed): add cancel run and opt-in errored torrent recovery (#918) (@s0up4200)
- cd1fcc9: feat(crossseed): add custom category option for cross-seeds (#907) (@s0up4200)
- d189fe9: feat(crossseed): add indexerName to webhook apply + fix category mode defaults (#916) (@s0up4200)
- 03a147e: feat(crossseed): add option to skip recheck-required matches (#825) (@s0up4200)
- edae00a: feat(crossseed): add optional hardlink mode for cross-seeding (#849) (@s0up4200)
- 0938436: feat(crossseed): add source aliasing for WEB/WEB-DL/WEBRip precheck matching (#874) (@s0up4200)
- 65f6129: feat(crossseed): show failure reasons, prune runs, and add cache cleanup (#923) (@s0up4200)
- e10fba8: feat(details): torrent details panel improvements (#884) (@s0up4200)
- 6921140: feat(docs): add Docusaurus documentation site (@s0up4200)
- 6a5a66c: feat(docs): add Icon and webUI variables to the Unraid install guide (#942) (@BaukeZwart)
- 281fce7: feat(docs): add local search plugin (#1076) (@s0up4200)
- 566de08: feat(docs): add qui logo, update readme, remove v4 flag (@s0up4200)
- b83ac5a: feat(docs): apply minimal.css theme to Docusaurus (@s0up4200)
- fe6a6df: feat(docs): improve documentation pages and add support page (@s0up4200)
- 62a7ad5: feat(docs): use qui favicon (@s0up4200)
- 5d124c0: feat(orphan): add auto cleanup mode (#897) (@s0up4200)
- 3172ad9: feat(settings): add log settings + live log stream (#876) (@s0up4200)
- 3c1b34b: feat(torrents): add "torrent introuvable" to unregistered status (#836) (@kephasdev)
- afe4d39: feat(torrents): add tracker URL editing for single torrents (#848) (@s0up4200)
- 76dedd7: feat(torrents): update GeneralTabHorizontal to display limits and improve layout (#1078) (@martylukyy)
- 6831c24: feat(ui): unify payment options into single dialog (@s0up4200)
- 4dcdf7f: feat(web): add local file access indicator to instance cards (#911) (@s0up4200)
- a560e5e: feat(web): compact torrent details panel (#833) (@martylukyy)
- 557e7bd: feat: add issue/discussion template (#945) (@s0up4200)
- 8b93719: feat: add workflow automation system with category actions, orphan scanner, and hardlink detection (#818) (@s0up4200)
Bug Fixes
- b85ad6b: fix(automations): allow delete rules to match incomplete torrents (#926) (@s0up4200)
- ae06200: fix(automations): make tags field condition operators tag-aware (#908) (@s0up4200)
- ace0101: fix(crossseed): detect folder mismatch for bare file to folder cross-seeds (#846) (@s0up4200)
- 1cc1243: fix(crossseed): enforce resolution and language matching with sensible defaults (#855) (@s0up4200)
- cefb9cd: fix(crossseed): execute external program reliably after injection (#1083) (@s0up4200)
- 867e2da: fix(crossseed): improve matching with size validation and relaxed audio checks (#845) (@s0up4200)
- 4b5079b: fix(crossseed): persist custom category settings in PATCH handler (#913) (@s0up4200)
- cfbbc1f: fix(crossseed): prevent season packs matching episodes (#854) (@s0up4200)
- c7c1706: fix(crossseed): reconcile interrupted runs on startup (#1084) (@s0up4200)
- 7d633bd: fix(crossseed): use ContentPath for manually-managed single-file torrents (#832) (@s0up4200)
- d5db761: fix(database): include arr_instances in string pool cleanup + remove auto-recovery (#898) (@s0up4200)
- c73ec6f: fix(database): prevent race between stmt cache access and db close (#840) (@s0up4200)
- a40b872: fix(db): drop legacy hardlink columns from cross_seed_settings (#912) (@s0up4200)
- e400af3: fix(db): recover wedged SQLite writer + stop cross-seed tight loop (#890) (@s0up4200)
- 90e15b4: fix(deps): update rls to recognize IP as iPlayer (#922) (@s0up4200)
- 8e81b9f: fix(proxy): honor TLSSkipVerify for proxied requests (#1051) (@s0up4200)
- eb2bee0: fix(security): redact sensitive URL parameters in logs (#853) (@s0up4200)
- 40982bc: fix(themes): prevent reset on license errors, improve switch performance (#844) (@s0up4200)
- a8a32f7: fix(ui): incomplete torrents aren't "Completed: 1969-12-31" (#851) (@finevan)
- 5908bba: fix(ui): preserve category collapse state when toggling incognito mode (#834) (@jabloink)
- 25c847e: fix(ui): torrents with no creation metadata don't display 1969 (#873) (@finevan)
- 6403b6a: fix(web): column filter status now matches all states in category (#880) (@s0up4200)
- eafc4e7: fix(web): make delete cross-seed check rely on content_path matches (#1080) (@s0up4200)
- d57c749: fix(web): only show selection checkbox on normal view (#830) (@jabloink)
- 60338f6: fix(web): optimize TorrentDetailsPanel for mobile view and make tabs scrollable horizontally (#1066) (@martylukyy)
- aedab87: fix(web): speed limit input reformatting during typing (#881) (@s0up4200)
- df7f3e0: fix(web): truncate file progress percentage instead of rounding (#919) (@s0up4200)
- 2fadd01: fix(web): update eslint config for flat config compatibility (#879) (@s0up4200)
- 721cedd: fix(web): use fixed heights for mobile torrent cards (#812) (@jabloink)
- a7db605: fix: remove pnpm-workspace.yaml breaking CI (@s0up4200)
- c0ddc0a: fix: use prefix matching for allowed bash commands (@s0up4200)
Other Changes
- fff52ce: chore(ci): disable reviewer (@s0up4200)
- 7ef2a38: chore(ci): fix automated triage and deduplication workflows (#1057) (@s0up4200)
- d84910b: chore(docs): move Tailwind to documentation workspace only (@s0up4200)
- 37ebe05: chore(docs): move netlify.toml to documentation directory (@s0up4200)
- e25de38: chore(docs): remove disclaimer (@s0up4200)
- c59b809: chore(docs): update support sections (#1063) (@s0up4200)
- b723523: chore(tests): remove dead tests and optimize slow test cases (#842) (@s0up4200)
- 662a1c6: chore(workflows): update runners from 4vcpu to 2vcpu for all jobs (#859) (@s0up4200)
- 46f2a1c: chore: clean up repo root by moving Docker, scripts, and community docs (#1054) (@s0up4200)
- 2f27c0d: chore: remove old issue templates (@s0up4200)
- 04f361a: ci(triage): add labeling for feature-requests-ideas discussions (@s0up4200)
- f249c69: ci(triage): remove needs-triage label after applying labels (@s0up4200)
- bdda1de: ci(workflows): add self-dispatch workaround for discussion events (@s0up4200)
- a9732a2: ci(workflows): increase max-turns to 25 for Claude workflows (@s0up4200)
- d7d830d: docs(README): add Buy Me a Coffee link (#863) (@s0up4200)
- 266d92e: docs(readme): Clarify ignore pattern (#878) (@quorn23)
- 9586084: docs(readme): add banner linking to stable docs (#925) (@s0up4200)
- e36a621: docs(readme): use markdown link for Polar URL (@s0up4200)
- 9394676: docs: add frontmatter titles and descriptions, remove marketing language (@s0up4200)
- ba9d45e: docs: add local filesystem access snippet and swizzle Details component (@s0up4200)
- 4329edd: docs: disclaimer about unreleased features (#943) (@s0up4200)
- 735d065: docs: improve external programs, orphan scan, reverse proxy, tracker icons documentation (@s0up4200)
- 78...
v1.11.0
Changelog
New Features
- 6e65de4: feat(torrents): add "não registrado" to unregistered status (#794) (@fabricionaweb)
- ac5f8f3: feat(torrents): add web seeds table (#808) (@s0up4200)
- 24559c9: feat(web): add Size default sort option to Tracker Breakdown table settings (#786) (@thesecretlifeofabunny)
Bug Fixes
- 69ed1a3: fix(api): respect baseURL for path autocompletion cap (#798) (@Ryu481)
- 0a721d0: fix(crossseed): add verification and retry for async file renames (#789) (@s0up4200)
- e9fcbda: fix(crossseed): pass source filters through to FindCandidates (#802) (@s0up4200)
- b4f1ffa: fix(crossseed): require strict HDR and Collection matching (#799) (@s0up4200)
- 4f3365b: fix(sync): edited trackers no longer appear under old domain in sidebar (#792) (@s0up4200)
- fcb081e: fix(web): move global stats to bottom of torrents page (#800) (@s0up4200)
- 13b40b5: fix(web): prevent Edit Tracker Name dialog overflow (#797) (@s0up4200)
- 8e3b352: fix(web): replace completion filter inputs with MultiSelect dropdowns (#791) (@s0up4200)
- adfd5bb: fix(web): restore piece size display in torrent details panel (#790) (@s0up4200)
- 5d97b49: fix(web): sort trackers by display name in filter sidebar (#810) (@s0up4200)
- 2fad4e8: fix(web): use total counts for Seeds/Peers column filtering (#796) (@s0up4200)
Other Changes
- 1bf1b6e: chore(crossseed): add debug logging for RSS and webhook source filters (#795) (@s0up4200)
- 95e4bc0: chore(deps): bump github.com/expr-lang/expr from 1.17.6 to 1.17.7 (#809) (@dependabot[bot])
Full Changelog: v1.10.0...v1.11.0
Docker images
docker pull ghcr.io/autobrr/qui:v1.11.0docker pull ghcr.io/autobrr/qui:latest
What to do next?
- Join our Discord server
Thank you for using qui!