Skip to main content

v1.14.0

Changelog​

New Features​

Bug Fixes​

  • fix(api): correct add-torrent OpenAPI param names and add missing fields (#1426) (@s0up4200)
  • fix(api): honor explicit basic auth clear from URL userinfo (@s0up4200)
  • fix(api): tighten CORS/auth routing and base URL joins (#1325) (@s0up4200)
  • fix(automations): improve applied action summaries (#1478) (@s0up4200)
  • fix(automations): negate regex match for NotContains/NotEqual operators (#1441) (@andresatierf)
  • fix(automations): respect remove-only tag conditions (#1444) (@s0up4200)
  • fix(backups): add failure cooldown and export throttling (#1214) (@s0up4200)
  • fix(backups): skip exports missing metadata (#1362) (@s0up4200)
  • fix(config): update commented log settings in place (#1402) (@s0up4200)
  • fix(crossseed): tighten TV title matching (#1445) (@s0up4200)
  • fix(dirscan): prevent immediate requeue after cancel (#1446) (@s0up4200)
  • fix(docs): avoid mdx jsx parse error (@s0up4200)
  • fix(filters): stabilize dense sidebar layout (#1384) (@s0up4200)
  • fix(orphanscan): NFC-normalize paths to avoid false orphans (#1422) (@s0up4200)
  • fix(reflink): retry EAGAIN clones (#1360) (@s0up4200)
  • fix(reflinktree): retry transient FICLONE EINVAL and add diagnostics (#1487) (@s0up4200)
  • fix(rss): enable rules list scrolling (#1359) (@s0up4200)
  • fix(sync): Optimize torrent sorting and reference management (#1474) (@KyleSanderson)
  • fix(ui): update placeholder text in ArrInstanceForm based on instance type (#1375) (@pashioya)
  • fix(web): format IPv6 peer addresses and copy IP without port (#1417) (@sleepm)
  • fix(web): handle SSO session expiry behind Cloudflare Access and other proxies (#1438) (@nitrobass24)
  • fix(web): prevent category submenu re-render (#1357) (@jabloink)
  • fix(web): raise instance preferences max value from 999 to 99999 (#1311) (@s0up4200)
  • fix(web): raise virtualization threshold (#1355) (@jabloink)
  • fix(web): remove column filters when column is hidden (#1418) (@jabloink)
  • fix(web): remove panel size bounds (@s0up4200)
  • fix(web): show piece size in torrent details (#1365) (@s0up4200)
  • fix(web): use absolute for scroll-to-top on desktop (#1419) (@jabloink)
  • fix: detect tracker health support after qBit upgrade (#909) (@s0up4200)
  • fix: disable update indicators when update checks are off (#1364) (@s0up4200)
  • fix: normalize DD+ and DDP file keys (#1456) (@s0up4200)

Other Changes​

Full Changelog: https://github.com/autobrr/qui/compare/v1.13.1...v1.14.0

v1.13.1

Changelog​

Bug Fixes​

Other Changes​

Full Changelog: https://github.com/autobrr/qui/compare/v1.13.0...v1.13.1

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

v1.12.0

Changelog​

New Features​

  • feat(automations): Add free_space condition (#1061) (@Barcode-eng)
  • feat(automations): make conditions optional for non-delete rules and add drag reorder (#939) (@s0up4200)
  • feat(config): Add QUI__OIDC_CLIENT_SECRET_FILE env var (#841) (@PedDavid)
  • feat(config): allow disabling tracker icon fetching (#823) (@s0up4200)
  • feat(crossseed): add cancel run and opt-in errored torrent recovery (#918) (@s0up4200)
  • feat(crossseed): add custom category option for cross-seeds (#907) (@s0up4200)
  • feat(crossseed): add indexerName to webhook apply + fix category mode defaults (#916) (@s0up4200)
  • feat(crossseed): add option to skip recheck-required matches (#825) (@s0up4200)
  • feat(crossseed): add optional hardlink mode for cross-seeding (#849) (@s0up4200)
  • feat(crossseed): add source aliasing for WEB/WEB-DL/WEBRip precheck matching (#874) (@s0up4200)
  • feat(crossseed): show failure reasons, prune runs, and add cache cleanup (#923) (@s0up4200)
  • feat(details): torrent details panel improvements (#884) (@s0up4200)
  • feat(docs): add Docusaurus documentation site (@s0up4200)
  • feat(docs): add Icon and webUI variables to the Unraid install guide (#942) (@BaukeZwart)
  • feat(docs): add local search plugin (#1076) (@s0up4200)
  • feat(docs): add qui logo, update readme, remove v4 flag (@s0up4200)
  • feat(docs): apply minimal.css theme to Docusaurus (@s0up4200)
  • feat(docs): improve documentation pages and add support page (@s0up4200)
  • feat(docs): use qui favicon (@s0up4200)
  • feat(orphan): add auto cleanup mode (#897) (@s0up4200)
  • feat(settings): add log settings + live log stream (#876) (@s0up4200)
  • feat(torrents): add "torrent introuvable" to unregistered status (#836) (@kephasdev)
  • feat(torrents): add tracker URL editing for single torrents (#848) (@s0up4200)
  • feat(torrents): update GeneralTabHorizontal to display limits and improve layout (#1078) (@martylukyy)
  • feat(ui): unify payment options into single dialog (@s0up4200)
  • feat(web): add local file access indicator to instance cards (#911) (@s0up4200)
  • feat(web): compact torrent details panel (#833) (@martylukyy)
  • feat: add issue/discussion template (#945) (@s0up4200)
  • feat: add workflow automation system with category actions, orphan scanner, and hardlink detection (#818) (@s0up4200)

Bug Fixes​

  • fix(automations): allow delete rules to match incomplete torrents (#926) (@s0up4200)
  • fix(automations): make tags field condition operators tag-aware (#908) (@s0up4200)
  • fix(crossseed): detect folder mismatch for bare file to folder cross-seeds (#846) (@s0up4200)
  • fix(crossseed): enforce resolution and language matching with sensible defaults (#855) (@s0up4200)
  • fix(crossseed): execute external program reliably after injection (#1083) (@s0up4200)
  • fix(crossseed): improve matching with size validation and relaxed audio checks (#845) (@s0up4200)
  • fix(crossseed): persist custom category settings in PATCH handler (#913) (@s0up4200)
  • fix(crossseed): prevent season packs matching episodes (#854) (@s0up4200)
  • fix(crossseed): reconcile interrupted runs on startup (#1084) (@s0up4200)
  • fix(crossseed): use ContentPath for manually-managed single-file torrents (#832) (@s0up4200)
  • fix(database): include arr_instances in string pool cleanup + remove auto-recovery (#898) (@s0up4200)
  • fix(database): prevent race between stmt cache access and db close (#840) (@s0up4200)
  • fix(db): drop legacy hardlink columns from cross_seed_settings (#912) (@s0up4200)
  • fix(db): recover wedged SQLite writer + stop cross-seed tight loop (#890) (@s0up4200)
  • fix(deps): update rls to recognize IP as iPlayer (#922) (@s0up4200)
  • fix(proxy): honor TLSSkipVerify for proxied requests (#1051) (@s0up4200)
  • fix(security): redact sensitive URL parameters in logs (#853) (@s0up4200)
  • fix(themes): prevent reset on license errors, improve switch performance (#844) (@s0up4200)
  • fix(ui): incomplete torrents aren't "Completed: 1969-12-31" (#851) (@finevan)
  • fix(ui): preserve category collapse state when toggling incognito mode (#834) (@jabloink)
  • fix(ui): torrents with no creation metadata don't display 1969 (#873) (@finevan)
  • fix(web): column filter status now matches all states in category (#880) (@s0up4200)
  • fix(web): make delete cross-seed check rely on content_path matches (#1080) (@s0up4200)
  • fix(web): only show selection checkbox on normal view (#830) (@jabloink)
  • fix(web): optimize TorrentDetailsPanel for mobile view and make tabs scrollable horizontally (#1066) (@martylukyy)
  • fix(web): speed limit input reformatting during typing (#881) (@s0up4200)
  • fix(web): truncate file progress percentage instead of rounding (#919) (@s0up4200)
  • fix(web): update eslint config for flat config compatibility (#879) (@s0up4200)
  • fix(web): use fixed heights for mobile torrent cards (#812) (@jabloink)
  • fix: remove pnpm-workspace.yaml breaking CI (@s0up4200)
  • fix: use prefix matching for allowed bash commands (@s0up4200)

Other Changes​

  • chore(ci): disable reviewer (@s0up4200)
  • chore(ci): fix automated triage and deduplication workflows (#1057) (@s0up4200)
  • chore(docs): move Tailwind to documentation workspace only (@s0up4200)
  • chore(docs): move netlify.toml to documentation directory (@s0up4200)
  • chore(docs): remove disclaimer (@s0up4200)
  • chore(docs): update support sections (#1063) (@s0up4200)
  • chore(tests): remove dead tests and optimize slow test cases (#842) (@s0up4200)
  • chore(workflows): update runners from 4vcpu to 2vcpu for all jobs (#859) (@s0up4200)
  • chore: clean up repo root by moving Docker, scripts, and community docs (#1054) (@s0up4200)
  • chore: remove old issue templates (@s0up4200)
  • ci(triage): add labeling for feature-requests-ideas discussions (@s0up4200)
  • ci(triage): remove needs-triage label after applying labels (@s0up4200)
  • ci(workflows): add self-dispatch workaround for discussion events (@s0up4200)
  • ci(workflows): increase max-turns to 25 for Claude workflows (@s0up4200)
  • docs(README): add Buy Me a Coffee link (#863) (@s0up4200)
  • docs(readme): Clarify ignore pattern (#878) (@quorn23)
  • docs(readme): add banner linking to stable docs (#925) (@s0up4200)
  • docs(readme): use markdown link for Polar URL (@s0up4200)
  • docs: add frontmatter titles and descriptions, remove marketing language (@s0up4200)
  • docs: add local filesystem access snippet and swizzle Details component (@s0up4200)
  • docs: disclaimer about unreleased features (#943) (@s0up4200)
  • docs: improve external programs, orphan scan, reverse proxy, tracker icons documentation (@s0up4200)
  • docs: remove premature tip and fix stat command (@s0up4200)
  • docs: update social card image in Docusaurus configuration (@s0up4200)
  • refactor(crossseed): hardcode ignore patterns for file matching (#915) (@s0up4200)

Full Changelog: https://github.com/autobrr/qui/compare/v1.11.0...v1.12.0

v1.11.0

Changelog​

New Features​

Bug Fixes​

  • fix(api): respect baseURL for path autocompletion cap (#798) (@Ryu481)
  • fix(crossseed): add verification and retry for async file renames (#789) (@s0up4200)
  • fix(crossseed): pass source filters through to FindCandidates (#802) (@s0up4200)
  • fix(crossseed): require strict HDR and Collection matching (#799) (@s0up4200)
  • fix(sync): edited trackers no longer appear under old domain in sidebar (#792) (@s0up4200)
  • fix(web): move global stats to bottom of torrents page (#800) (@s0up4200)
  • fix(web): prevent Edit Tracker Name dialog overflow (#797) (@s0up4200)
  • fix(web): replace completion filter inputs with MultiSelect dropdowns (#791) (@s0up4200)
  • fix(web): restore piece size display in torrent details panel (#790) (@s0up4200)
  • fix(web): sort trackers by display name in filter sidebar (#810) (@s0up4200)
  • fix(web): use total counts for Seeds/Peers column filtering (#796) (@s0up4200)

Other Changes​

  • chore(crossseed): add debug logging for RSS and webhook source filters (#795) (@s0up4200)
  • chore(deps): bump github.com/expr-lang/expr from 1.17.6 to 1.17.7 (#809) (@dependabot[bot])

Full Changelog: https://github.com/autobrr/qui/compare/v1.10.0...v1.11.0

v1.10.0

Changelog​

New Features​

  • feat(config): add SESSION_SECRET_FILE env var (#661) (@undefined-landmark)
  • feat(crossseed): add RSS source filters for categories and tags (#757) (@s0up4200)
  • feat(crossseed): add Unicode normalization for title and file matching (#742) (@s0up4200)
  • feat(crossseed): add skip auto-resume settings per mode (#755) (@s0up4200)
  • feat(crossseed): add webhook source filters for categories and tags (#763) (@s0up4200)
  • feat(crossseed): only poll status endpoints when features are enabled (#738) (@s0up4200)
  • feat(sidebar): add size tooltips and deduplicate cross-seed sizes (#724) (@s0up4200)
  • feat(torrent): add sequential download toggles (#776) (@rare-magma)
  • feat(torrents): autocomplete paths (#634) (@rare-magma)
  • feat(torrents): replace filtered speeds with global (#745) (@jabloink)
  • feat(tracker): add per-domain stats inclusion toggle for merged trackers (#781) (@s0up4200)
  • feat(web): add Size column to Tracker Breakdown table (#770) (@s0up4200)
  • feat(web): add zebra striping to torrent table (#726) (@s0up4200)
  • feat(web): improve auto-search on completion UX (#743) (@s0up4200)
  • feat(web): improve torrent selection UX with unified click and escape behavior (#782) (@s0up4200)
  • feat(web): napster theme (#728) (@s0up4200)
  • feat(web): new torrent details panel for desktop (#760) (@s0up4200)
  • feat(web): persist tab state in URL for CrossSeed and Settings pages (#775) (@s0up4200)
  • feat(web): share tracker customizations with filtersidebar (#717) (@s0up4200)

Bug Fixes​

  • fix(api): add webhook source filter fields to PATCH settings endpoint (#774) (@s0up4200)
  • fix(api): support apikey query param with custom base URL (#748) (@s0up4200)
  • fix(crossseed): compare Site and Sum fields for anime releases (#769) (@s0up4200)
  • fix(crossseed): detect file name differences and fix hasExtraSourceFiles (#741) (@s0up4200)
  • fix(crossseed): fix batch completion searches and remove legacy settings (#744) (@s0up4200)
  • fix(crossseed): normalize punctuation in title matching (#718) (@s0up4200)
  • fix(crossseed): rename files before folder to avoid path conflicts (#752) (@s0up4200)
  • fix(crossseed): resolve category creation race condition and relax autoTMM (#767) (@s0up4200)
  • fix(crossseed): support game scene releases with RAR files (#768) (@s0up4200)
  • fix(crossseed): treat x264/H.264/H264/AVC as equivalent codecs (#766) (@s0up4200)
  • fix(dashboard): merge tracker customizations with duplicate displayName (#751) (@jabloink)
  • fix(license): remove redundant validation call after activation (#749) (@s0up4200)
  • fix(reannounce): simplify tracker detection to match qbrr logic (#746) (@s0up4200)
  • fix(rss): skip download when torrent already exists by infohash (#715) (@s0up4200)
  • fix(swagger): respect base URL for API docs routes (#758) (@s0up4200)
  • fix(web): add height constraint to filter sidebar wrapper for proper scrolling (#778) (@s0up4200)
  • fix(web): default torrent format to v1 in creator dialog (#723) (@s0up4200)
  • fix(web): pin submit button in Services sheet footer (#756) (@s0up4200)
  • fix(web): preserve folder collapse state during file tree sync (#740) (@ewenjo)
  • fix(web): sort Peers column by total peers instead of connected (#759) (@s0up4200)
  • fix(web): sort Seeds column by total seeds instead of connected (#747) (@s0up4200)
  • fix(web): sort folders before files in torrent file tree (#764) (@s0up4200)

Other Changes​

  • chore(assets): replace napster.svg with napster.png for logo update (@s0up4200)
  • chore(deps): bump the github group with 3 updates (#761) (@dependabot[bot])
  • chore: fix napster logo (@s0up4200)
  • refactor(web): extract CrossSeed completion to accordion component (#762) (@s0up4200)

Full Changelog: https://github.com/autobrr/qui/compare/v1.9.1...v1.10.0

v1.9.0

Important​

Cross-seeds are now added to .cross-suffixed categories by default. This is opt-out. The old delay logic is removed.

Highlights​

  • Customize your Dashboard-page (order, visibility)
  • Tracker Breakdown section in Dashboard with import/export functionality
  • Warnings and actions for cross-seeds when you attempt to delete torrents
  • Show free space in torrent table footer

Changelog​

New Features​

  • feat(dashboard): tracker breakdown and customizable layout (#637) (@s0up4200)
  • feat(jackett): propagate 429 rate limits with retry and cooldown (#684) (@s0up4200)
  • feat(reannounce): add configurable max retries setting (#685) (@s0up4200)
  • feat(settings): add TMM relocation behavior settings (#664) (@s0up4200)
  • feat(torrents): add confirmation dialogs for TMM and Set Location (#687) (@s0up4200)
  • feat(torrents): warn about cross-seeded torrents in delete dialogs (#670) (@s0up4200)
  • feat(ui): persist category collapse state in sidebar (#692) (@jabloink)
  • feat(web): Torrent list details bar shows free space (#691) (@finevan)

Bug Fixes​

  • fix(crossseed): use matched torrent save path instead of category path (#700) (@s0up4200)
  • fix(instance): intern empty string on demand for bypass auth (#693) (@s0up4200)
  • fix(jackett): fetch indexer capabilities in parallel with retries (#701) (@s0up4200)
  • fix(qbittorrent): cache tracker health counts in background (#662) (@KyleSanderson)
  • fix(search): download torrent files via backend for remote instances (#686) (@s0up4200)
  • fix(torrents): AddTorrentDialog uses the downloadPath api (#677) (@finevan)
  • fix(ui): use full category paths in multi-select (#683) (@jabloink)
  • fix(web): add iOS Safari compatibility for torrent file picker (#707) (@s0up4200)
  • fix(web): dont hide free space when disk is full (#694) (@ewenjo)

Other Changes​

  • chore(deps): bump the golang group with 7 updates (#660) (@dependabot[bot])
  • chore(deps): bump the npm group across 1 directory with 29 updates (#663) (@dependabot[bot])
  • docs: Update README to remove size field description (#695) (@s0up4200)

Full Changelog: https://github.com/autobrr/qui/compare/v1.8.1...v1.9.0

v1.8.0

Changelog​

New Features​

  • feat(crossseed): batch torrent file lookups end-to-end (#625) (@s0up4200)
  • feat(crossseed): persist seeded search settings (#618) (@s0up4200)
  • feat(docker): add curl to Dockerfiles (#570) (@onedr0p)
  • feat(filters): default-hide empty status/category/tag groups (#581) (@s0up4200)
  • feat(header): add missing links to header burger menu (#624) (@nuxencs)
  • feat(instances): allow disabling qbit instances (#582) (@s0up4200)
  • feat(search): column filters (#633) (@nuxencs)
  • feat(themes): add basic variation support (#569) (@jabloink)
  • feat(torrents): add clear filters action for empty filtered state (#627) (@s0up4200)
  • feat(torrents): add cross-seeding and search (#553) (@KyleSanderson)
  • feat(torrents): add reannounce monitor (#606) (@s0up4200)
  • feat(torrents): add rename functionality in TorrentDetailsPanel (#590) (@s0up4200)
  • feat(torrents): implement drag-and-drop file upload to add torrents (#568) (@dthinhle)
  • feat(ui): add dense view mode for compact table display (#643) (@s0up4200)
  • feat(ui): improve torrent details panel file tree and rename UX (#650) (@s0up4200)
  • feat(web): Use original qBittorrent status names (#595) (@FibreTTP)
  • feat(web): show listening port in connectable status tooltip (#635) (@s0up4200)
  • feat: make tracker icon column sortable (#513) (@s0up4200)

Bug Fixes​

Other Changes​

  • build(vite): enable default minification (#574) (@s0up4200)
  • chore(ci): upgrade Claude Code workflow to Opus 4.5 (@s0up4200)
  • chore(deps): bump actions/checkout from 5 to 6 in the github group (#628) (@dependabot[bot])
  • chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.45.0 (#611) (@dependabot[bot])
  • chore(deps): bump the golang group with 3 updates (#546) (@dependabot[bot])
  • chore(themes): add crypto instructions in-app (#620) (@s0up4200)
  • docs(funding): add donation methods and crypto addresses (#583) (@s0up4200)
  • docs: update qui image (#655) (@s0up4200)

Full Changelog: https://github.com/autobrr/qui/compare/v1.7.0...v1.8.0