<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://getqui.com/release-notes/</id>
    <title>qui Blog</title>
    <updated>2026-10-13T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://getqui.com/release-notes/"/>
    <subtitle>qui Blog</subtitle>
    <icon>https://getqui.com/img/favicon.png</icon>
    <entry>
        <title type="html"><![CDATA[v1.32.0]]></title>
        <id>https://getqui.com/release-notes/v1.32.0/</id>
        <link href="https://getqui.com/release-notes/v1.32.0/"/>
        <updated>2026-10-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Breaking changes]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="breaking-changes">Breaking changes<a href="https://getqui.com/release-notes/v1.32.0/#breaking-changes" class="hash-link" aria-label="Direct link to Breaking changes" title="Direct link to Breaking changes" translate="no">​</a></h2>
<ul>
<li class=""><strong>Backup history uses a new storage format.</strong> If you plan to go back to an earlier qui after you upgrade, export the backup runs that you need first, because restore fails for every run after a downgrade. Exported archives import on any version.</li>
<li class=""><strong>Automation rule JSON is decoded strictly.</strong> A create, update, import, or dry run now returns 400 for an unknown key, a key with the wrong case, or a value of the wrong type. An import with <code>intervalSeconds</code> below 60 also fails, so remove these keys from your scripts and saved JSON files.</li>
<li class=""><strong>Rule conditions are checked against a field table.</strong> qui now rejects an unknown field or operator and a value that the field does not list, such as <code>seeding</code> for a state. To save a changed condition, fix the line that the error names.</li>
<li class=""><strong>Group IDs are checked on save.</strong> When you edit a rule, the save fails if <code>grouping.defaultGroupId</code>, an action <code>groupId</code>, or a score rule names a group that does not exist, or a built-in ID with different capitals. Change the ID to an existing group in Edit as JSON.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="highlights">Highlights<a href="https://getqui.com/release-notes/v1.32.0/#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<ul>
<li class=""><strong>Automation rules that say what is wrong.</strong> qui lists each mistake in a rule with its JSON path, so a typo no longer saves a rule that never matches.</li>
<li class=""><strong>Byte and speed units in your language.</strong> Units, decimal separators, and bit rates follow the interface language, for example <code>1,5 Gio</code> in French.</li>
<li class=""><strong>Lighter backups.</strong> Each backup stores only the torrents that changed, so backups write about 53x less WAL on Postgres.</li>
<li class=""><strong>Update guidance for every setup.</strong> <strong>Install update</strong> shows on every setup, and the dialog explains why automatic installation is unavailable and gives manual steps.</li>
<li class=""><strong>Hardlink and cross-seed fixes.</strong> Delete rules on <code>HARDLINK_SCOPE_CROSS</code> now delete the matching torrents, and season-less batches cross-seed against tracker names with a year.</li>
<li class=""><strong>Fixes and polish.</strong> Row actions stay in view in wide tables, a license portal link at the activation limit, correct size labels on the backups page, fewer cached search warnings in the log, and a release notes page in the docs.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.32.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.32.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(automations): check condition fields, operators and values against a field table (<a href="https://github.com/autobrr/qui/pull/3112" target="_blank" rel="noopener noreferrer" class="">#3112</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(automations): decode rule JSON strictly and list every error (<a href="https://github.com/autobrr/qui/pull/3110" target="_blank" rel="noopener noreferrer" class="">#3110</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(automations): generate the JSON reference and check group IDs on save (<a href="https://github.com/autobrr/qui/pull/3122" target="_blank" rel="noopener noreferrer" class="">#3122</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(docs): add a release notes page from each GitHub release (<a href="https://github.com/autobrr/qui/pull/3099" target="_blank" rel="noopener noreferrer" class="">#3099</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(docs): add a release notes page from each GitHub release (<a href="https://github.com/autobrr/qui/pull/3099" target="_blank" rel="noopener noreferrer" class="">#3099</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(docs): show a Discord card for docs and release notes links (<a href="https://github.com/autobrr/qui/pull/3121" target="_blank" rel="noopener noreferrer" class="">#3121</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(release): write release Highlights with Claude before publishing (<a href="https://github.com/autobrr/qui/pull/3130" target="_blank" rel="noopener noreferrer" class="">#3130</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(triage): carry log links from discussions to issues (<a href="https://github.com/autobrr/qui/pull/3146" target="_blank" rel="noopener noreferrer" class="">#3146</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(web): localize byte and speed units (<a href="https://github.com/autobrr/qui/pull/2835" target="_blank" rel="noopener noreferrer" class="">#2835</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">feat(web): show update guidance for unsupported setups (<a href="https://github.com/autobrr/qui/pull/3085" target="_blank" rel="noopener noreferrer" class="">#3085</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.32.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(automations): rebuild the hardlink index once per TTL and check delete scope by kind (<a href="https://github.com/autobrr/qui/pull/3124" target="_blank" rel="noopener noreferrer" class="">#3124</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): match season-less batches against tracker names with a year (<a href="https://github.com/autobrr/qui/pull/3162" target="_blank" rel="noopener noreferrer" class="">#3162</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): run the partial pool only on local filesystem access (<a href="https://github.com/autobrr/qui/pull/3079" target="_blank" rel="noopener noreferrer" class="">#3079</a>) (<a href="https://github.com/com6056" target="_blank" rel="noopener noreferrer" class="">@com6056</a>)</li>
<li class="">fix(crossseed): use the backend path dialect for link trees, season packs and local matches (<a href="https://github.com/autobrr/qui/pull/3140" target="_blank" rel="noopener noreferrer" class="">#3140</a>) (<a href="https://github.com/com6056" target="_blank" rel="noopener noreferrer" class="">@com6056</a>)</li>
<li class="">fix(jackett): log the cached search fallback at trace (<a href="https://github.com/autobrr/qui/pull/3080" target="_blank" rel="noopener noreferrer" class="">#3080</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(sshtest): count a handshake before the client's dial returns (<a href="https://github.com/autobrr/qui/pull/3092" target="_blank" rel="noopener noreferrer" class="">#3092</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): keep table row actions in view when the table scrolls sideways (<a href="https://github.com/autobrr/qui/pull/3096" target="_blank" rel="noopener noreferrer" class="">#3096</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): send users who hit the license activation limit to the license portal (<a href="https://github.com/autobrr/qui/pull/3089" target="_blank" rel="noopener noreferrer" class="">#3089</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.32.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(ci): add a mojibake check and a review rule for Windows claims (<a href="https://github.com/autobrr/qui/pull/3084" target="_blank" rel="noopener noreferrer" class="">#3084</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(docs): build faster and serve page Markdown from the site (<a href="https://github.com/autobrr/qui/pull/3102" target="_blank" rel="noopener noreferrer" class="">#3102</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">ci(release): run the Release workflow on every PR and skip its jobs for docs-only changes (<a href="https://github.com/autobrr/qui/pull/3131" target="_blank" rel="noopener noreferrer" class="">#3131</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">ci(triage): hand a discussion to a maintainer when logs decide (<a href="https://github.com/autobrr/qui/pull/3149" target="_blank" rel="noopener noreferrer" class="">#3149</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">ci: add a Breaking change section to the PR template and give the Highlights job the claude environment (<a href="https://github.com/autobrr/qui/pull/3164" target="_blank" rel="noopener noreferrer" class="">#3164</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">ci: keep the Claude token in the claude environment (<a href="https://github.com/autobrr/qui/pull/3161" target="_blank" rel="noopener noreferrer" class="">#3161</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(automations): test the JSON examples in CI and fix three sections (<a href="https://github.com/autobrr/qui/pull/3118" target="_blank" rel="noopener noreferrer" class="">#3118</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(proxy): explain how to exclude the proxy path from basic auth (<a href="https://github.com/autobrr/qui/pull/3163" target="_blank" rel="noopener noreferrer" class="">#3163</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(proxy): explain how to exclude the proxy path from basic auth (<a href="https://github.com/autobrr/qui/pull/3163" target="_blank" rel="noopener noreferrer" class="">#3163</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(triage): prove a cause live before a comment names it (<a href="https://github.com/autobrr/qui/pull/3160" target="_blank" rel="noopener noreferrer" class="">#3160</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: describe the tracker URL edit and the episode cleanup after a season pack (<a href="https://github.com/autobrr/qui/pull/3137" target="_blank" rel="noopener noreferrer" class="">#3137</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(backups): store each torrent's backup state once across runs (<a href="https://github.com/autobrr/qui/pull/2694" target="_blank" rel="noopener noreferrer" class="">#2694</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">refactor(web): generate the query builder field constants from the Go field table (<a href="https://github.com/autobrr/qui/pull/3128" target="_blank" rel="noopener noreferrer" class="">#3128</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.31.1...v1.32.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.31.1...v1.32.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.31.1]]></title>
        <id>https://getqui.com/release-notes/v1.31.1/</id>
        <link href="https://getqui.com/release-notes/v1.31.1/"/>
        <updated>2026-10-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Highlights]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="highlights">Highlights<a href="https://getqui.com/release-notes/v1.31.1/#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<ul>
<li class=""><strong>Update from the web UI.</strong> On v1.31.0, click <strong>Install update</strong> and qui updates and restarts itself. The old version stays as a <code>.bak</code> file for a rollback. Docker users pull the image as always.</li>
<li class=""><strong>Steady torrent list on phones.</strong> It no longer bounces at the end of the list.</li>
<li class=""><strong>Labels for every torrent state.</strong> For example <code>(F) Fetching Metadata</code> instead of <code>forcedMetaDL</code>.</li>
<li class=""><strong>Windows, updating from 1.30?</strong> v1.30.0 does not add the new tray app by itself. Copy <code>qui-tray.exe</code> from the zip into the folder with <code>qui.exe</code> once unless you did already. After that, each update replaces both files.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.31.1/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.31.1/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(mobile): stop the torrent list from jumping when the footer nav hides (<a href="https://github.com/autobrr/qui/pull/3067" target="_blank" rel="noopener noreferrer" class="">#3067</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): take t() fallbacks from the locale files instead of hardcoded English (<a href="https://github.com/autobrr/qui/pull/2837" target="_blank" rel="noopener noreferrer" class="">#2837</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.31.1/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(github): add CODEOWNERS (<a href="https://github.com/autobrr/qui/pull/3069" target="_blank" rel="noopener noreferrer" class="">#3069</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">ci(triage): triage only bug discussions automatically (<a href="https://github.com/autobrr/qui/pull/3075" target="_blank" rel="noopener noreferrer" class="">#3075</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: explain the missing qui-tray.exe after an update from 1.30 and add a generic webhook example (<a href="https://github.com/autobrr/qui/pull/3065" target="_blank" rel="noopener noreferrer" class="">#3065</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: prefer a proven library for spec-defined logic (<a href="https://github.com/autobrr/qui/pull/3068" target="_blank" rel="noopener noreferrer" class="">#3068</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.31.0...v1.31.1" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.31.0...v1.31.1</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.30.0]]></title>
        <id>https://getqui.com/release-notes/v1.30.0/</id>
        <link href="https://getqui.com/release-notes/v1.30.0/"/>
        <updated>2026-09-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Breaking]]></summary>
        <content type="html"><![CDATA[<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="breaking">Breaking<a href="https://getqui.com/release-notes/v1.30.0/#breaking" class="hash-link" aria-label="Direct link to Breaking" title="Direct link to Breaking" translate="no">​</a></h3>
<p>Enter your Dodo key again if you still had a Polar license. This release removes the legacy Polar license support.</p>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="highlights">Highlights<a href="https://getqui.com/release-notes/v1.30.0/#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h3>
<ul>
<li class=""><strong>Hardlink mode no longer risks your source files.</strong> When a hardlinked file failed its recheck, auto-resume could still start the torrent. qBittorrent then wrote the missing pieces into the hardlink and changed the file that your original torrent seeds. qui now leaves such torrents paused and names the file in the log and in a new "Resume" row of the season pack history.</li>
<li class=""><strong>Stricter login and sessions.</strong> qui limits password login to five failures per minute, and a password change signs out every session. The new <code>sessionCookieSecure</code> option marks the session cookie Secure for HTTPS setups. Write requests that use the session cookie now need an <code>X-Requested-With</code> header. The web UI sends it, but a script that reuses a browser cookie must use an API key instead. The new optional <code>allowedHosts</code> setting blocks DNS rebinding and is off by default.</li>
<li class=""><strong>Less database churn, most of all on Postgres.</strong> File cache refreshes now write only the rows that changed. One homelab measured 16% of its cluster WAL on unchanged rows, now zero, and SQLite runs the same refresh 3-4x faster. RSS polls no longer rewrite unchanged feed items. Concurrent file fetches no longer fail with "deadlock detected". Backup archive filenames stay the same across runs for torrents with several trackers.</li>
<li class=""><strong>New automation condition: Season pack status.</strong> Each torrent is a pack, an episode that a pack covers, or an episode with no pack. An any-instance variant looks across all your instances. Use it to tag season packs or to clean up episodes that a pack already covers. Matching is strict, so a 720p pack never counts as cover for a 1080p episode. Dry runs now report the same torrents as the impact preview instead of stopping at the delete cooldown gates.</li>
<li class=""><strong>Gazelle cross-seed finds older uploads.</strong> RED and OPS hash lookups also try the legacy PTH and APL source flags. Uploads from before the renames now match by infohash instead of a filename search. A failed lookup (tracker down, rate limited) no longer starts the torrent's cooldown.</li>
<li class=""><strong>Catalan is language number eleven.</strong> The Catalan translator for the *arr apps contributed it. Czech now renders counts 2-4 instead of English, and several plural strings are fixed across locales.</li>
<li class=""><strong>Fixes and polish.</strong> getqui.com now embeds a live demo of the real frontend with 10,000 synthetic torrents and no login. The Create Torrent source picker lists files and works with Windows paths. Downloads from the Content tab show the real size and progress and can resume. "Export all" under a parent category includes its subcategories. Select-all in cross-seed mode follows the visible rows. The tab icon no longer stays blank in Firefox background tabs. <code>--config-dir</code> with no config.toml writes a default instead of a crash.</li>
</ul>
<p>Thanks to <strong>ColinHebert</strong>, <strong>nitrobass24</strong>, <strong>thejdubb02</strong>, <strong>schwarz</strong>, and <strong>Kisnov</strong> for contributing to this release.</p>
<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.30.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.30.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(automations): season pack status condition fields (<a href="https://github.com/autobrr/qui/pull/2770" target="_blank" rel="noopener noreferrer" class="">#2770</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(docs): live demo on the getqui.com landing page (<a href="https://github.com/autobrr/qui/pull/2767" target="_blank" rel="noopener noreferrer" class="">#2767</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(i18n): add Catalan (ca) translation (<a href="https://github.com/autobrr/qui/pull/2682" target="_blank" rel="noopener noreferrer" class="">#2682</a>) (<a href="https://github.com/Kisnov" target="_blank" rel="noopener noreferrer" class="">@Kisnov</a>)</li>
<li class="">feat(models): add SSH schema and HasFilesystemAccess helper (<a href="https://github.com/autobrr/qui/pull/1917" target="_blank" rel="noopener noreferrer" class="">#1917</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(security): add optional allowed hosts restriction (<a href="https://github.com/autobrr/qui/pull/2642" target="_blank" rel="noopener noreferrer" class="">#2642</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(sshpool): SSH connection layer, host-key pinning, and credential endpoints (<a href="https://github.com/autobrr/qui/pull/2728" target="_blank" rel="noopener noreferrer" class="">#2728</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.30.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(api): preserve content length for torrent file downloads (<a href="https://github.com/autobrr/qui/pull/2766" target="_blank" rel="noopener noreferrer" class="">#2766</a>) (<a href="https://github.com/schwarz" target="_blank" rel="noopener noreferrer" class="">@schwarz</a>)</li>
<li class="">fix(auth): harden the API and session boundary (<a href="https://github.com/autobrr/qui/pull/2548" target="_blank" rel="noopener noreferrer" class="">#2548</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): dry run reports the same torrents as the preview (<a href="https://github.com/autobrr/qui/pull/2775" target="_blank" rel="noopener noreferrer" class="">#2775</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(backups): keep archive filenames stable across runs (<a href="https://github.com/autobrr/qui/pull/2689" target="_blank" rel="noopener noreferrer" class="">#2689</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(config): write default config.toml when --config-dir has none (<a href="https://github.com/autobrr/qui/pull/2693" target="_blank" rel="noopener noreferrer" class="">#2693</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(crossseed): keep a hardlink resume out of a linked file that failed its recheck (<a href="https://github.com/autobrr/qui/pull/2688" target="_blank" rel="noopener noreferrer" class="">#2688</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): stop rewriting unchanged feed items on every poll (<a href="https://github.com/autobrr/qui/pull/2692" target="_blank" rel="noopener noreferrer" class="">#2692</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(crossseed): try legacy source flags in Gazelle hash lookups and keep failed lookups eligible (<a href="https://github.com/autobrr/qui/pull/2765" target="_blank" rel="noopener noreferrer" class="">#2765</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(docs): open the demo in a new tab on phones (<a href="https://github.com/autobrr/qui/pull/2776" target="_blank" rel="noopener noreferrer" class="">#2776</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(filesmanager): upsert cache rows in a fixed order to avoid Postgres deadlocks (<a href="https://github.com/autobrr/qui/pull/2690" target="_blank" rel="noopener noreferrer" class="">#2690</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(http): send the real qui version in the Sonarr, Radarr, and Gazelle User-Agent (<a href="https://github.com/autobrr/qui/pull/2706" target="_blank" rel="noopener noreferrer" class="">#2706</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(i18n): render Czech instead of English for counts 2-4 (<a href="https://github.com/autobrr/qui/pull/2681" target="_blank" rel="noopener noreferrer" class="">#2681</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(i18n): render the plural form for the ignored-paths count (<a href="https://github.com/autobrr/qui/pull/2680" target="_blank" rel="noopener noreferrer" class="">#2680</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(i18n): restore meaning dropped by three abbreviated translations (<a href="https://github.com/autobrr/qui/pull/2701" target="_blank" rel="noopener noreferrer" class="">#2701</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(orphanscan): say items, not files, where a count includes directories (<a href="https://github.com/autobrr/qui/pull/2675" target="_blank" rel="noopener noreferrer" class="">#2675</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(torrents): list files in the Create Torrent source path picker (<a href="https://github.com/autobrr/qui/pull/2744" target="_blank" rel="noopener noreferrer" class="">#2744</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): serve a static favicon so Firefox background tabs are not blank (<a href="https://github.com/autobrr/qui/pull/2671" target="_blank" rel="noopener noreferrer" class="">#2671</a>) (<a href="https://github.com/thejdubb02" target="_blank" rel="noopener noreferrer" class="">@thejdubb02</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.30.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump anthropics/claude-code-action from 1.0.216 to 1.0.223 in the github group (<a href="https://github.com/autobrr/qui/pull/2758" target="_blank" rel="noopener noreferrer" class="">#2758</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump go-qbittorrent to v1.19.0 (<a href="https://github.com/autobrr/qui/pull/2764" target="_blank" rel="noopener noreferrer" class="">#2764</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(i18n): remove unreferenced locale blocks and check for new ones (<a href="https://github.com/autobrr/qui/pull/2684" target="_blank" rel="noopener noreferrer" class="">#2684</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">ci(triage): reduce backlog sweep to five discussions (<a href="https://github.com/autobrr/qui/pull/2737" target="_blank" rel="noopener noreferrer" class="">#2737</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(seo): descriptive titles on every page, sitemap lastmod, and cross-links (<a href="https://github.com/autobrr/qui/pull/2721" target="_blank" rel="noopener noreferrer" class="">#2721</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(seo): match Netlify trailing slashes, add robots.txt, and give pages descriptive titles (<a href="https://github.com/autobrr/qui/pull/2708" target="_blank" rel="noopener noreferrer" class="">#2708</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(seo): match Netlify trailing slashes, add robots.txt, and give pages descriptive titles (<a href="https://github.com/autobrr/qui/pull/2715" target="_blank" rel="noopener noreferrer" class="">#2715</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: add where to run qui, the cross-seed scope, filter exclusion, and the Windows task limit (<a href="https://github.com/autobrr/qui/pull/2697" target="_blank" rel="noopener noreferrer" class="">#2697</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(filesmanager): skip unchanged rows before the files cache upsert (<a href="https://github.com/autobrr/qui/pull/2691" target="_blank" rel="noopener noreferrer" class="">#2691</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">refactor(crossseed): one gatherer for the Torznab search passes (<a href="https://github.com/autobrr/qui/pull/2755" target="_blank" rel="noopener noreferrer" class="">#2755</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(crossseed): one link-mode body behind hardlink and reflink (<a href="https://github.com/autobrr/qui/pull/2753" target="_blank" rel="noopener noreferrer" class="">#2753</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(crossseed): the matching rules leave Service (<a href="https://github.com/autobrr/qui/pull/2756" target="_blank" rel="noopener noreferrer" class="">#2756</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(license): remove the Polar license provider (<a href="https://github.com/autobrr/qui/pull/2707" target="_blank" rel="noopener noreferrer" class="">#2707</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(torrents): one selection resolver for copy and bulk actions (<a href="https://github.com/autobrr/qui/pull/2777" target="_blank" rel="noopener noreferrer" class="">#2777</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(web): one filter serializer and one select-all scope for the torrent table (<a href="https://github.com/autobrr/qui/pull/2779" target="_blank" rel="noopener noreferrer" class="">#2779</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor: consumer-side interfaces over SyncManager in orphanscan, automations, and the torrents handler (<a href="https://github.com/autobrr/qui/pull/2752" target="_blank" rel="noopener noreferrer" class="">#2752</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(i18n): run every scripts/*.test.mjs in check:i18n (<a href="https://github.com/autobrr/qui/pull/2683" target="_blank" rel="noopener noreferrer" class="">#2683</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.29.0...v1.30.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.29.0...v1.30.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.29.0]]></title>
        <id>https://getqui.com/release-notes/v1.29.0/</id>
        <link href="https://getqui.com/release-notes/v1.29.0/"/>
        <updated>2026-09-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Important]]></summary>
        <content type="html"><![CDATA[<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="important">Important<a href="https://getqui.com/release-notes/v1.29.0/#important" class="hash-link" aria-label="Direct link to Important" title="Direct link to Important" translate="no">​</a></h3>
<ul>
<li class=""><strong>Credential encryption.</strong> The key protecting stored passwords and API keys is now derived from the <code>sessionSecret</code> with HKDF. qui re-encrypts every stored credential on first start, so take a database backup before upgrading: an older qui cannot read the new format.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="highlights">Highlights<a href="https://getqui.com/release-notes/v1.29.0/#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h3>
<ul>
<li class=""><strong>Far fewer requests to qBittorrent on big instances.</strong> Startup no longer fires one tracker request per torrent, and an instance whose first capability probe failed no longer stays on that per-torrent path for every refresh after (needs qBittorrent 5.1+), the hardlink index reuses cached file lists instead of re-downloading every torrent's files on each rebuild, reannounce filters candidates before fetching trackers and caps at four jobs per instance, and dead tracker favicon hosts back off up to 24 hours instead of hammering DNS. The live stream also keeps your rows on screen through a short error instead of blanking and reconnecting.</li>
<li class=""><strong>Orphan scan reaches further, deletes safer.</strong> New per-instance switches under <strong>Scan Scope</strong>: <strong>Scan Default Save Path</strong>, <strong>Including Category Paths</strong>, and <strong>Delete Abandoned Directories</strong>. Stray files in the default save path are finally visible, and empty directories left behind by moves show up in the preview. All three are off by default. A scan that could not reach every path is marked <strong>Partial scan</strong> and skips automatic cleanup.</li>
<li class=""><strong>Cross-seed: anime, games, manual season packs.</strong> Anime episodes match across numbering schemes (absolute <code>- 81</code> versus <code>S04E15</code>) via the episode map from a linked Sonarr. Releases split into more than 100 RAR volumes (<code>.s01</code> was read as season 1) now apply. The manual match dialog can assemble a season pack from several episodes you already seed. Matches with 100% overlap no longer sit paused for an hour, the Library Scan card counts honestly with a <strong>Cross-seeds added</strong> line, and an indexer answering a download with a login page no longer poisons the torrent cache.</li>
<li class=""><strong>BDInfo reports from the Content tab.</strong> Every Blu-ray Disc gets a <strong>BDInfo</strong> action that scans in the background and hands you the Quick Summary and Forum blocks for upload forms (needs Local Filesystem Access).</li>
<li class=""><strong>Torrent table and Content tab.</strong> A new toolbar button stretches the <strong>Name</strong> column to fill the table so the desktop view stops scrolling sideways (on by default, toggle it off to keep your own Name width), the Toggle columns menu has drag handles for reordering, and the Content tab sorts by <strong>Name</strong>, <strong>Progress</strong>, <strong>Size</strong>, or <strong>Priority</strong>.</li>
<li class=""><strong>Automations.</strong> New <strong>Has Skipped Files</strong> condition, the category action can target <strong>Uncategorized</strong>, a slow or failed preview no longer blocks enabling a workflow (<strong>Save without preview</strong>), and overnight ranges finally work: System Hour between 20 and 6 wraps past midnight instead of matching nothing. Hardlink and missing-file conditions never match when qui cannot read the files.</li>
<li class=""><strong>Fixes and polish.</strong> Unified view actions on a torrent that exists on several instances no longer fan out to all of them (the cross-seed run API also renames <code>torrentsAdded</code> to <code>crossSeedsAdded</code>), the sidebar <strong>Clear filters</strong> button gets a dropdown for sidebar, column, or filters and search, magnet links opened through the browser honour the instance's save path and TMM settings, log viewer and orphan preview timestamps follow your Date &amp; Time preferences, and manual backups no longer error after visiting Automations.</li>
</ul>
<p>Want a new look? <a href="https://github.com/autobrr/qui-community-themes" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui-community-themes</a> has 24 community themes (Tokyo Night, Dracula, Gruvbox, Rosé Pine, and more). Drop the <code>.css</code> into your themes dir and hit Refresh under Settings &gt; Themes. Sideloading needs a licence key, PRs with your own theme are welcome!</p>
<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.29.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.29.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(arr): read and cache the Sonarr episode map (<a href="https://github.com/autobrr/qui/pull/2537" target="_blank" rel="noopener noreferrer" class="">#2537</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(automations): add HAS_SKIPPED_FILES condition (<a href="https://github.com/autobrr/qui/pull/2518" target="_blank" rel="noopener noreferrer" class="">#2518</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): assemble season packs from manually selected episodes (<a href="https://github.com/autobrr/qui/pull/2641" target="_blank" rel="noopener noreferrer" class="">#2641</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): search and match anime episodes through the episode map (<a href="https://github.com/autobrr/qui/pull/2541" target="_blank" rel="noopener noreferrer" class="">#2541</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(orphanscan): preview every directory a run removes (<a href="https://github.com/autobrr/qui/pull/2666" target="_blank" rel="noopener noreferrer" class="">#2666</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">feat(orphanscan): scan beyond torrent save paths and clean up empty directories (<a href="https://github.com/autobrr/qui/pull/2588" target="_blank" rel="noopener noreferrer" class="">#2588</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">feat(security): HKDF-derive the credential key and version ciphertext (<a href="https://github.com/autobrr/qui/pull/2652" target="_blank" rel="noopener noreferrer" class="">#2652</a>) (<a href="https://github.com/com6056" target="_blank" rel="noopener noreferrer" class="">@com6056</a>)</li>
<li class="">feat(torrents): BDInfo Disc reports in the Content tab (<a href="https://github.com/autobrr/qui/pull/2570" target="_blank" rel="noopener noreferrer" class="">#2570</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(torrents): name column stretch mode and menu column reordering (<a href="https://github.com/autobrr/qui/pull/2674" target="_blank" rel="noopener noreferrer" class="">#2674</a>) (<a href="https://github.com/gl0ryus" target="_blank" rel="noopener noreferrer" class="">@gl0ryus</a>)</li>
<li class="">feat(torrents): sort the Content tab by name, size, progress, or priority (<a href="https://github.com/autobrr/qui/pull/2547" target="_blank" rel="noopener noreferrer" class="">#2547</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.29.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(automations): allow workflows to clear categories (<a href="https://github.com/autobrr/qui/pull/2660" target="_blank" rel="noopener noreferrer" class="">#2660</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): fold Unicode in CONTAINS_IN name matching (<a href="https://github.com/autobrr/qui/pull/2648" target="_blank" rel="noopener noreferrer" class="">#2648</a>) (<a href="https://github.com/thejdubb02" target="_blank" rel="noopener noreferrer" class="">@thejdubb02</a>)</li>
<li class="">fix(automations): keep unknown filesystem conditions from matching (<a href="https://github.com/autobrr/qui/pull/2643" target="_blank" rel="noopener noreferrer" class="">#2643</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): let a slow or failed preview not block enabling a workflow (<a href="https://github.com/autobrr/qui/pull/2566" target="_blank" rel="noopener noreferrer" class="">#2566</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): wrap BETWEEN ranges on clock fields (<a href="https://github.com/autobrr/qui/pull/2668" target="_blank" rel="noopener noreferrer" class="">#2668</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(backups): scope run cache updates to backup queries (<a href="https://github.com/autobrr/qui/pull/2517" target="_blank" rel="noopener noreferrer" class="">#2517</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ci): limit Postgres job to integration tests (<a href="https://github.com/autobrr/qui/pull/2659" target="_blank" rel="noopener noreferrer" class="">#2659</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): fetch file lists only for contested duplicate groups (<a href="https://github.com/autobrr/qui/pull/2573" target="_blank" rel="noopener noreferrer" class="">#2573</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): reconcile run counters and count cross-seeds added separately (<a href="https://github.com/autobrr/qui/pull/2577" target="_blank" rel="noopener noreferrer" class="">#2577</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): resume fast verification rechecks that finish between polls (<a href="https://github.com/autobrr/qui/pull/2558" target="_blank" rel="noopener noreferrer" class="">#2558</a>) (<a href="https://github.com/thejdubb02" target="_blank" rel="noopener noreferrer" class="">@thejdubb02</a>)</li>
<li class="">fix(crossseed): search and match absolute-numbered anime episodes (<a href="https://github.com/autobrr/qui/pull/2533" target="_blank" rel="noopener noreferrer" class="">#2533</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): stop rewriting the search run results blob on every candidate (<a href="https://github.com/autobrr/qui/pull/2574" target="_blank" rel="noopener noreferrer" class="">#2574</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(database): register the sqlite connection hook at init (<a href="https://github.com/autobrr/qui/pull/2589" target="_blank" rel="noopener noreferrer" class="">#2589</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(dirscan): prune tracked files that no longer exist on disk (<a href="https://github.com/autobrr/qui/pull/2587" target="_blank" rel="noopener noreferrer" class="">#2587</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(gojackett): stop retrying once the caller's context ends (<a href="https://github.com/autobrr/qui/pull/2650" target="_blank" rel="noopener noreferrer" class="">#2650</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(i18n): render the correct plural form for six count strings (<a href="https://github.com/autobrr/qui/pull/2677" target="_blank" rel="noopener noreferrer" class="">#2677</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(jackett): reject non-torrent download responses (<a href="https://github.com/autobrr/qui/pull/2640" target="_blank" rel="noopener noreferrer" class="">#2640</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): key the peer fetch on the lowered hash (<a href="https://github.com/autobrr/qui/pull/2612" target="_blank" rel="noopener noreferrer" class="">#2612</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): serialize peer fetch and merge per torrent (<a href="https://github.com/autobrr/qui/pull/2611" target="_blank" rel="noopener noreferrer" class="">#2611</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(releases): keep S23E19.Episode.1174 names as one episode (<a href="https://github.com/autobrr/qui/pull/2543" target="_blank" rel="noopener noreferrer" class="">#2543</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(search): correct the glob examples in the search help (<a href="https://github.com/autobrr/qui/pull/2670" target="_blank" rel="noopener noreferrer" class="">#2670</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(sse): retain page snapshots and avoid unnecessary reconnects (<a href="https://github.com/autobrr/qui/pull/2656" target="_blank" rel="noopener noreferrer" class="">#2656</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(stream): prevent desync after missed baselines (<a href="https://github.com/autobrr/qui/pull/2506" target="_blank" rel="noopener noreferrer" class="">#2506</a>) (<a href="https://github.com/Zariel" target="_blank" rel="noopener noreferrer" class="">@Zariel</a>)</li>
<li class="">fix(torrents): make filter clearing scopes explicit (<a href="https://github.com/autobrr/qui/pull/2595" target="_blank" rel="noopener noreferrer" class="">#2595</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): require targets for unified bulk actions (<a href="https://github.com/autobrr/qui/pull/2530" target="_blank" rel="noopener noreferrer" class="">#2530</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): seed add-torrent options from preferences on a cold mount (<a href="https://github.com/autobrr/qui/pull/2653" target="_blank" rel="noopener noreferrer" class="">#2653</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): send instance targets for recheck and reannounce in the unified view (<a href="https://github.com/autobrr/qui/pull/2528" target="_blank" rel="noopener noreferrer" class="">#2528</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): stop re-applying the search client-side in cross-seed filter mode (<a href="https://github.com/autobrr/qui/pull/2532" target="_blank" rel="noopener noreferrer" class="">#2532</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(trackericons): back off dead tracker hosts and stop the DNS flood (<a href="https://github.com/autobrr/qui/pull/2549" target="_blank" rel="noopener noreferrer" class="">#2549</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): dismiss path autocomplete on outside pointer interaction (<a href="https://github.com/autobrr/qui/pull/2526" target="_blank" rel="noopener noreferrer" class="">#2526</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): format timestamps with date/time preferences everywhere (<a href="https://github.com/autobrr/qui/pull/2519" target="_blank" rel="noopener noreferrer" class="">#2519</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.29.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump anthropics/claude-code-action from 1.0.200 to 1.0.210 in the github group (<a href="https://github.com/autobrr/qui/pull/2562" target="_blank" rel="noopener noreferrer" class="">#2562</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 3 updates (<a href="https://github.com/autobrr/qui/pull/2679" target="_blank" rel="noopener noreferrer" class="">#2679</a>) (@dependabot[bot])</li>
<li class="">chore(i18n): remove unreferenced locale blocks (<a href="https://github.com/autobrr/qui/pull/2676" target="_blank" rel="noopener noreferrer" class="">#2676</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">chore(repo): remove unused workflows, artwork, and ReDoc (<a href="https://github.com/autobrr/qui/pull/2635" target="_blank" rel="noopener noreferrer" class="">#2635</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">ci(test): cache the embedded Postgres binary (<a href="https://github.com/autobrr/qui/pull/2673" target="_blank" rel="noopener noreferrer" class="">#2673</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(agents): add code comment rules (<a href="https://github.com/autobrr/qui/pull/2647" target="_blank" rel="noopener noreferrer" class="">#2647</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(agents): one PR per feature, slice commits instead of stacked PRs (<a href="https://github.com/autobrr/qui/pull/2569" target="_blank" rel="noopener noreferrer" class="">#2569</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(api): update the torrent peers response schema (<a href="https://github.com/autobrr/qui/pull/2614" target="_blank" rel="noopener noreferrer" class="">#2614</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(backups): state what a snapshot does not contain (<a href="https://github.com/autobrr/qui/pull/2591" target="_blank" rel="noopener noreferrer" class="">#2591</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(context): add search candidate, cross-seed added, and due candidate (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: add Disc report glossary terms and ADR 0003 (<a href="https://github.com/autobrr/qui/pull/2568" target="_blank" rel="noopener noreferrer" class="">#2568</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: require before/after performance results in PRs (<a href="https://github.com/autobrr/qui/pull/2655" target="_blank" rel="noopener noreferrer" class="">#2655</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(automations): rebuild the hardlink index from cached file lists (<a href="https://github.com/autobrr/qui/pull/2590" target="_blank" rel="noopener noreferrer" class="">#2590</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(filesmanager): skip no-op writes in torrent files cache upsert (<a href="https://github.com/autobrr/qui/pull/2586" target="_blank" rel="noopener noreferrer" class="">#2586</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">perf(proxy): remove duplicate peer fetch (<a href="https://github.com/autobrr/qui/pull/2604" target="_blank" rel="noopener noreferrer" class="">#2604</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(qbittorrent): enable bulk tracker fetching after client initialization (<a href="https://github.com/autobrr/qui/pull/2584" target="_blank" rel="noopener noreferrer" class="">#2584</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(qbittorrent): expire unused peer sync managers (<a href="https://github.com/autobrr/qui/pull/2605" target="_blank" rel="noopener noreferrer" class="">#2605</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(qbittorrent): share one app info refresh across concurrent callers (<a href="https://github.com/autobrr/qui/pull/2593" target="_blank" rel="noopener noreferrer" class="">#2593</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(reannounce): narrow tracker fetches and bound jobs (<a href="https://github.com/autobrr/qui/pull/2596" target="_blank" rel="noopener noreferrer" class="">#2596</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(torrents): answer single-hash requests from the cache index (<a href="https://github.com/autobrr/qui/pull/2594" target="_blank" rel="noopener noreferrer" class="">#2594</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(api): drop the dead full_update field from the peers response (<a href="https://github.com/autobrr/qui/pull/2606" target="_blank" rel="noopener noreferrer" class="">#2606</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(backend): remove unused APIs and helpers (<a href="https://github.com/autobrr/qui/pull/2633" target="_blank" rel="noopener noreferrer" class="">#2633</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(cache): migrate ttlcache to autobrr/go-cache (<a href="https://github.com/autobrr/qui/pull/2672" target="_blank" rel="noopener noreferrer" class="">#2672</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(crossseed): remove inactive auto-resume policy flag (<a href="https://github.com/autobrr/qui/pull/2636" target="_blank" rel="noopener noreferrer" class="">#2636</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(filesmanager): remove unused cache paths and chunk helpers (<a href="https://github.com/autobrr/qui/pull/2630" target="_blank" rel="noopener noreferrer" class="">#2630</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(i18n): consolidate locale coverage checkers (<a href="https://github.com/autobrr/qui/pull/2627" target="_blank" rel="noopener noreferrer" class="">#2627</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(jackett): remove unused APIs and backup plumbing (<a href="https://github.com/autobrr/qui/pull/2629" target="_blank" rel="noopener noreferrer" class="">#2629</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(notifications): reuse production Notifiarr payload builders (<a href="https://github.com/autobrr/qui/pull/2639" target="_blank" rel="noopener noreferrer" class="">#2639</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(web): remove unused APIs and redundant helpers (<a href="https://github.com/autobrr/qui/pull/2634" target="_blank" rel="noopener noreferrer" class="">#2634</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(backend): remove copied and inactive test code (<a href="https://github.com/autobrr/qui/pull/2628" target="_blank" rel="noopener noreferrer" class="">#2628</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(i18n): replace source checks with behavior tests (<a href="https://github.com/autobrr/qui/pull/2638" target="_blank" rel="noopener noreferrer" class="">#2638</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(postgres): run backend suite with embedded Postgres (<a href="https://github.com/autobrr/qui/pull/2616" target="_blank" rel="noopener noreferrer" class="">#2616</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(qbittorrent): pin list hydration to never call torrents/trackers (<a href="https://github.com/autobrr/qui/pull/2592" target="_blank" rel="noopener noreferrer" class="">#2592</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(torznab): cover HTTP 500 and unreachable outcomes of the indexer test (<a href="https://github.com/autobrr/qui/pull/2422" target="_blank" rel="noopener noreferrer" class="">#2422</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.28.0...v1.29.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.28.0...v1.29.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.28.0]]></title>
        <id>https://getqui.com/release-notes/v1.28.0/</id>
        <link href="https://getqui.com/release-notes/v1.28.0/"/>
        <updated>2026-09-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.28.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.28.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(crossseed): add manual match against a chosen target torrent (<a href="https://github.com/autobrr/qui/pull/2499" target="_blank" rel="noopener noreferrer" class="">#2499</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): coordinate pooled partial completion (<a href="https://github.com/autobrr/qui/pull/2356" target="_blank" rel="noopener noreferrer" class="">#2356</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.28.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(automations): match tracker conditions against every tracker of a torrent (<a href="https://github.com/autobrr/qui/pull/2487" target="_blank" rel="noopener noreferrer" class="">#2487</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ci): move the triage sweep cron off the top of the hour (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ci): raise the triage turn cap to 80 (<a href="https://github.com/autobrr/qui/pull/2474" target="_blank" rel="noopener noreferrer" class="">#2474</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ci): re-trigger triage on needs-info comments from any human (<a href="https://github.com/autobrr/qui/pull/2497" target="_blank" rel="noopener noreferrer" class="">#2497</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ci): triage follow-ups and the ADR for the Claude subscription (<a href="https://github.com/autobrr/qui/pull/2475" target="_blank" rel="noopener noreferrer" class="">#2475</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): align webhook notifications with apply outcomes (<a href="https://github.com/autobrr/qui/pull/2463" target="_blank" rel="noopener noreferrer" class="">#2463</a>) (<a href="https://github.com/nuxencs" target="_blank" rel="noopener noreferrer" class="">@nuxencs</a>)</li>
<li class="">fix(crossseed): correct Dir Scan mode guidance (<a href="https://github.com/autobrr/qui/pull/2476" target="_blank" rel="noopener noreferrer" class="">#2476</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): use ARR alternate titles for announce matching (<a href="https://github.com/autobrr/qui/pull/2494" target="_blank" rel="noopener noreferrer" class="">#2494</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(database): drop unused timestamp indexes on torrent_files_cache/sync (<a href="https://github.com/autobrr/qui/pull/2455" target="_blank" rel="noopener noreferrer" class="">#2455</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(database): truncate cross_seed_feed_items.last_seen_at to day precision (<a href="https://github.com/autobrr/qui/pull/2456" target="_blank" rel="noopener noreferrer" class="">#2456</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(docs): restore list bullets by removing Tailwind (<a href="https://github.com/autobrr/qui/pull/2471" target="_blank" rel="noopener noreferrer" class="">#2471</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(indexers): ignore missing requested indexers (<a href="https://github.com/autobrr/qui/pull/2458" target="_blank" rel="noopener noreferrer" class="">#2458</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(indexers): keep activity lists in a stable order (<a href="https://github.com/autobrr/qui/pull/2485" target="_blank" rel="noopener noreferrer" class="">#2485</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(indexers): skip caps sync for disabled indexers (<a href="https://github.com/autobrr/qui/pull/2461" target="_blank" rel="noopener noreferrer" class="">#2461</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(jackett): let tests override the torznab request interval (<a href="https://github.com/autobrr/qui/pull/2470" target="_blank" rel="noopener noreferrer" class="">#2470</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(jackett): schedule opportunistic cleanup of torznab indexer latency (<a href="https://github.com/autobrr/qui/pull/2457" target="_blank" rel="noopener noreferrer" class="">#2457</a>) (<a href="https://github.com/ColinHebert" target="_blank" rel="noopener noreferrer" class="">@ColinHebert</a>)</li>
<li class="">fix(logging): lower routine search events to debug (<a href="https://github.com/autobrr/qui/pull/2460" target="_blank" rel="noopener noreferrer" class="">#2460</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(mobile): keep torrent actions sheet and limit dialogs inside the viewport (<a href="https://github.com/autobrr/qui/pull/2510" target="_blank" rel="noopener noreferrer" class="">#2510</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(notifications): route Notifiarr test events (<a href="https://github.com/autobrr/qui/pull/2453" target="_blank" rel="noopener noreferrer" class="">#2453</a>) (<a href="https://github.com/nuxencs" target="_blank" rel="noopener noreferrer" class="">@nuxencs</a>)</li>
<li class="">fix(orphanscan): drop scan roots covered by ignore paths (<a href="https://github.com/autobrr/qui/pull/2486" target="_blank" rel="noopener noreferrer" class="">#2486</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(reannounce): skip the scan when the scope cannot match (<a href="https://github.com/autobrr/qui/pull/2491" target="_blank" rel="noopener noreferrer" class="">#2491</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(search): require an explicit search type (<a href="https://github.com/autobrr/qui/pull/2452" target="_blank" rel="noopener noreferrer" class="">#2452</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(search): rerun recent searches with their restored indexer selection (<a href="https://github.com/autobrr/qui/pull/2451" target="_blank" rel="noopener noreferrer" class="">#2451</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): separate mobile and desktop view modes (<a href="https://github.com/autobrr/qui/pull/2459" target="_blank" rel="noopener noreferrer" class="">#2459</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): support qBittorrent I2P peers (<a href="https://github.com/autobrr/qui/pull/2466" target="_blank" rel="noopener noreferrer" class="">#2466</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): wrap I2P peer addresses on mobile (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torznab): honor upstream rate limits (<a href="https://github.com/autobrr/qui/pull/2462" target="_blank" rel="noopener noreferrer" class="">#2462</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): avoid canvas readback for dynamic favicon (<a href="https://github.com/autobrr/qui/pull/2503" target="_blank" rel="noopener noreferrer" class="">#2503</a>) (<a href="https://github.com/heathlarsen" target="_blank" rel="noopener noreferrer" class="">@heathlarsen</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.28.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump the github group with 2 updates (<a href="https://github.com/autobrr/qui/pull/2468" target="_blank" rel="noopener noreferrer" class="">#2468</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the golang group with 12 updates (<a href="https://github.com/autobrr/qui/pull/2515" target="_blank" rel="noopener noreferrer" class="">#2515</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 26 updates (<a href="https://github.com/autobrr/qui/pull/2516" target="_blank" rel="noopener noreferrer" class="">#2516</a>) (@dependabot[bot])</li>
<li class="">docs(agents): require PR documentation review (<a href="https://github.com/autobrr/qui/pull/2467" target="_blank" rel="noopener noreferrer" class="">#2467</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(automations): add example for finding duplicate releases (<a href="https://github.com/autobrr/qui/pull/2493" target="_blank" rel="noopener noreferrer" class="">#2493</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(triage): key the promotion rule on the enhancement label (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(triage): promote bug reports only, feature requests stay a human call (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(triage): standing reason for enhancements, bug-only gate on the promote recipe (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: revamp user documentation (<a href="https://github.com/autobrr/qui/pull/2450" target="_blank" rel="noopener noreferrer" class="">#2450</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">other(ci): triage discussions end to end without a human (<a href="https://github.com/autobrr/qui/pull/2472" target="_blank" rel="noopener noreferrer" class="">#2472</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.27.0...v1.28.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.27.0...v1.28.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.27.0]]></title>
        <id>https://getqui.com/release-notes/v1.27.0/</id>
        <link href="https://getqui.com/release-notes/v1.27.0/"/>
        <updated>2026-08-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.27.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.27.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(cli): migrate Deluge, rTorrent and Transmission to qBittorrent with stats (<a href="https://github.com/autobrr/qui/pull/616" target="_blank" rel="noopener noreferrer" class="">#616</a>) (<a href="https://github.com/zze0s" target="_blank" rel="noopener noreferrer" class="">@zze0s</a>)</li>
<li class="">feat(crossseed): fall back to MKV metadata IDs when ARR supplies none (<a href="https://github.com/autobrr/qui/pull/2398" target="_blank" rel="noopener noreferrer" class="">#2398</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): search by MKV tag IDs first when no arr supplies them (<a href="https://github.com/autobrr/qui/pull/2404" target="_blank" rel="noopener noreferrer" class="">#2404</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): show why a manual search accepted or rejected candidates (<a href="https://github.com/autobrr/qui/pull/2427" target="_blank" rel="noopener noreferrer" class="">#2427</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(docker): add PUID/PGID support (<a href="https://github.com/autobrr/qui/pull/858" target="_blank" rel="noopener noreferrer" class="">#858</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(docs): redesign landing page (<a href="https://github.com/autobrr/qui/pull/2347" target="_blank" rel="noopener noreferrer" class="">#2347</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(fsops): add Backend interface, local implementation, and pool resolver (<a href="https://github.com/autobrr/qui/pull/1914" target="_blank" rel="noopener noreferrer" class="">#1914</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(i18n): add Traditional Chinese (zh-TW) translation (<a href="https://github.com/autobrr/qui/pull/2367" target="_blank" rel="noopener noreferrer" class="">#2367</a>) (<a href="https://github.com/hkaden" target="_blank" rel="noopener noreferrer" class="">@hkaden</a>)</li>
<li class="">feat(mobile): add torrent export to actions sheet (<a href="https://github.com/autobrr/qui/pull/2421" target="_blank" rel="noopener noreferrer" class="">#2421</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(preferences): add slow torrent settings to the queue form (<a href="https://github.com/autobrr/qui/pull/2428" target="_blank" rel="noopener noreferrer" class="">#2428</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(settings): add client_settings key-value store and API (<a href="https://github.com/autobrr/qui/pull/2407" target="_blank" rel="noopener noreferrer" class="">#2407</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(settings): sync UI state to the database (<a href="https://github.com/autobrr/qui/pull/2412" target="_blank" rel="noopener noreferrer" class="">#2412</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(settings): sync localStorage user settings to the database (<a href="https://github.com/autobrr/qui/pull/2409" target="_blank" rel="noopener noreferrer" class="">#2409</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(settings): sync table preferences and sidebar filters to the database (<a href="https://github.com/autobrr/qui/pull/2410" target="_blank" rel="noopener noreferrer" class="">#2410</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(themes): store theme selection in the database (<a href="https://github.com/autobrr/qui/pull/2384" target="_blank" rel="noopener noreferrer" class="">#2384</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(torrents): archive large exports (<a href="https://github.com/autobrr/qui/pull/2378" target="_blank" rel="noopener noreferrer" class="">#2378</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.27.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(automations): ignore absent skipped files in hardlink scans (<a href="https://github.com/autobrr/qui/pull/2370" target="_blank" rel="noopener noreferrer" class="">#2370</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): verify files before a cross-seed delete expands (<a href="https://github.com/autobrr/qui/pull/2351" target="_blank" rel="noopener noreferrer" class="">#2351</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(build): add Windows executable extension (<a href="https://github.com/autobrr/qui/pull/2414" target="_blank" rel="noopener noreferrer" class="">#2414</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">fix(crossseed): disable download path on recheck adds so complete cross-seeds don't stall at 0% (<a href="https://github.com/autobrr/qui/pull/2432" target="_blank" rel="noopener noreferrer" class="">#2432</a>) (<a href="https://github.com/statelycurmudgeon" target="_blank" rel="noopener noreferrer" class="">@statelycurmudgeon</a>)</li>
<li class="">fix(crossseed): don't reuse cached indexer sets across content types (<a href="https://github.com/autobrr/qui/pull/2420" target="_blank" rel="noopener noreferrer" class="">#2420</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): log repeated size-mismatch rejections at trace (<a href="https://github.com/autobrr/qui/pull/2371" target="_blank" rel="noopener noreferrer" class="">#2371</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): omit categories from ID-driven searches (<a href="https://github.com/autobrr/qui/pull/2395" target="_blank" rel="noopener noreferrer" class="">#2395</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): recover exact-size matches with compatible names (<a href="https://github.com/autobrr/qui/pull/2345" target="_blank" rel="noopener noreferrer" class="">#2345</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): retry per indexer when nothing usable comes back (<a href="https://github.com/autobrr/qui/pull/2400" target="_blank" rel="noopener noreferrer" class="">#2400</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): silence content fallback log (<a href="https://github.com/autobrr/qui/pull/2401" target="_blank" rel="noopener noreferrer" class="">#2401</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): trust disc layout for content detection (<a href="https://github.com/autobrr/qui/pull/2359" target="_blank" rel="noopener noreferrer" class="">#2359</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(database): resolve the sqlite→postgres import against the connection's schema (<a href="https://github.com/autobrr/qui/pull/2383" target="_blank" rel="noopener noreferrer" class="">#2383</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(docker): honor configured non-root user (<a href="https://github.com/autobrr/qui/pull/2447" target="_blank" rel="noopener noreferrer" class="">#2447</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(docker): make the standalone Dockerfile build again (<a href="https://github.com/autobrr/qui/pull/2416" target="_blank" rel="noopener noreferrer" class="">#2416</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(lint): resolve the correctness findings in the golangci-lint backlog (<a href="https://github.com/autobrr/qui/pull/2386" target="_blank" rel="noopener noreferrer" class="">#2386</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(mobile): make Back close torrent details instead of leaving the page (<a href="https://github.com/autobrr/qui/pull/2426" target="_blank" rel="noopener noreferrer" class="">#2426</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(orphanscan): protect metadata-less paths (<a href="https://github.com/autobrr/qui/pull/2445" target="_blank" rel="noopener noreferrer" class="">#2445</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(orphanscan): skip torrents without metadata (<a href="https://github.com/autobrr/qui/pull/2441" target="_blank" rel="noopener noreferrer" class="">#2441</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): treat request timeouts as slow instances, not dead ones (<a href="https://github.com/autobrr/qui/pull/2408" target="_blank" rel="noopener noreferrer" class="">#2408</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(reflinktree): track root before support probe (<a href="https://github.com/autobrr/qui/pull/2341" target="_blank" rel="noopener noreferrer" class="">#2341</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(rss): improve large feed performance (<a href="https://github.com/autobrr/qui/pull/2438" target="_blank" rel="noopener noreferrer" class="">#2438</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(settings): preserve latest cross-tab write (<a href="https://github.com/autobrr/qui/pull/2444" target="_blank" rel="noopener noreferrer" class="">#2444</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ui): show sideloaded themes in the mobile theme picker (<a href="https://github.com/autobrr/qui/pull/2373" target="_blank" rel="noopener noreferrer" class="">#2373</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ui): show unknown for unavailable disk space (<a href="https://github.com/autobrr/qui/pull/2348" target="_blank" rel="noopener noreferrer" class="">#2348</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): resolve dynamic imports relative to chunk for base_url deployments (<a href="https://github.com/autobrr/qui/pull/2442" target="_blank" rel="noopener noreferrer" class="">#2442</a>) (<a href="https://github.com/MaKTaiL" target="_blank" rel="noopener noreferrer" class="">@MaKTaiL</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.27.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(build): bump Go to 1.27 (<a href="https://github.com/autobrr/qui/pull/2369" target="_blank" rel="noopener noreferrer" class="">#2369</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(deps): bump anthropics/claude-code-action from 1.0.189 to 1.0.193 in the github group (<a href="https://github.com/autobrr/qui/pull/2394" target="_blank" rel="noopener noreferrer" class="">#2394</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump go-mediainfo to v0.8.0 (<a href="https://github.com/autobrr/qui/pull/2399" target="_blank" rel="noopener noreferrer" class="">#2399</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(docs): require field testing and refuse Gemini-authored PRs (<a href="https://github.com/autobrr/qui/pull/2391" target="_blank" rel="noopener noreferrer" class="">#2391</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(github): trim pull request template (<a href="https://github.com/autobrr/qui/pull/2390" target="_blank" rel="noopener noreferrer" class="">#2390</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(jackett): raise torznab torrent cache TTL to 24h (<a href="https://github.com/autobrr/qui/pull/2372" target="_blank" rel="noopener noreferrer" class="">#2372</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(lint): clear the mechanical findings in the golangci-lint backlog (<a href="https://github.com/autobrr/qui/pull/2387" target="_blank" rel="noopener noreferrer" class="">#2387</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(lint): take the backlog to zero and gate on the whole repo (<a href="https://github.com/autobrr/qui/pull/2393" target="_blank" rel="noopener noreferrer" class="">#2393</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore: bump golangci-lint to v2.13.0 and apply go fix for Go 1.27 (<a href="https://github.com/autobrr/qui/pull/2381" target="_blank" rel="noopener noreferrer" class="">#2381</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">chore: merge main into develop (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(agents): scope local test runs and keep caches off tmpfs (<a href="https://github.com/autobrr/qui/pull/2430" target="_blank" rel="noopener noreferrer" class="">#2430</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(agents): stack cross-layer PRs and trim diffs before commit (<a href="https://github.com/autobrr/qui/pull/2419" target="_blank" rel="noopener noreferrer" class="">#2419</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(config): explain UI preference persistence (<a href="https://github.com/autobrr/qui/pull/2443" target="_blank" rel="noopener noreferrer" class="">#2443</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(crossseed): explain that Prowlarr indexer filters also apply (<a href="https://github.com/autobrr/qui/pull/2429" target="_blank" rel="noopener noreferrer" class="">#2429</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(metrics): document exporter and add Grafana dashboard (<a href="https://github.com/autobrr/qui/pull/2431" target="_blank" rel="noopener noreferrer" class="">#2431</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: correct tracker customizations location and document the feature (<a href="https://github.com/autobrr/qui/pull/2364" target="_blank" rel="noopener noreferrer" class="">#2364</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: explain when to pick postgres over sqlite (<a href="https://github.com/autobrr/qui/pull/2424" target="_blank" rel="noopener noreferrer" class="">#2424</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: link the community themes repository (<a href="https://github.com/autobrr/qui/pull/2377" target="_blank" rel="noopener noreferrer" class="">#2377</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: move macOS Container install to the docs site (<a href="https://github.com/autobrr/qui/pull/2357" target="_blank" rel="noopener noreferrer" class="">#2357</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(sse): compress stream sessions with gzip (<a href="https://github.com/autobrr/qui/pull/2358" target="_blank" rel="noopener noreferrer" class="">#2358</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(torrents): trim magnet_uri from the torrent list payload (<a href="https://github.com/autobrr/qui/pull/2360" target="_blank" rel="noopener noreferrer" class="">#2360</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(web): migrate torrent tables to TanStack Table v9 (<a href="https://github.com/autobrr/qui/pull/2379" target="_blank" rel="noopener noreferrer" class="">#2379</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(services): use fsops.Backend for all filesystem operations (<a href="https://github.com/autobrr/qui/pull/1915" target="_blank" rel="noopener noreferrer" class="">#1915</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(themes): serve built-in themes from the backend (<a href="https://github.com/autobrr/qui/pull/2385" target="_blank" rel="noopener noreferrer" class="">#2385</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.26.0...v1.27.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.26.0...v1.27.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.26.0]]></title>
        <id>https://getqui.com/release-notes/v1.26.0/</id>
        <link href="https://getqui.com/release-notes/v1.26.0/"/>
        <updated>2026-08-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.26.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.26.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(automations): add CROSS_SEED_TAGS condition across same-instance cross-seeds (<a href="https://github.com/autobrr/qui/pull/2302" target="_blank" rel="noopener noreferrer" class="">#2302</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(automations): add inside-qBittorrent hardlink scope condition (<a href="https://github.com/autobrr/qui/pull/2194" target="_blank" rel="noopener noreferrer" class="">#2194</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(backups): add a configurable backup directory (<a href="https://github.com/autobrr/qui/pull/2304" target="_blank" rel="noopener noreferrer" class="">#2304</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): let file extensions correct the search category (<a href="https://github.com/autobrr/qui/pull/2305" target="_blank" rel="noopener noreferrer" class="">#2305</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): map qBittorrent categories to search categories (<a href="https://github.com/autobrr/qui/pull/2306" target="_blank" rel="noopener noreferrer" class="">#2306</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(dashboard): add session download/upload columns to server statistics and tracker breakdown (<a href="https://github.com/autobrr/qui/pull/2149" target="_blank" rel="noopener noreferrer" class="">#2149</a>) (<a href="https://github.com/BeliasCC" target="_blank" rel="noopener noreferrer" class="">@BeliasCC</a>)</li>
<li class="">feat(dirscan): add skip individual episodes to scan directories (<a href="https://github.com/autobrr/qui/pull/2248" target="_blank" rel="noopener noreferrer" class="">#2248</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(dirscan): retry a search that found nothing usable (<a href="https://github.com/autobrr/qui/pull/2247" target="_blank" rel="noopener noreferrer" class="">#2247</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(mobile): auto-hide bottom bars, resurface view mode, improve selection visibility (<a href="https://github.com/autobrr/qui/pull/2265" target="_blank" rel="noopener noreferrer" class="">#2265</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(orphanscan): show the paths a scan run covered (<a href="https://github.com/autobrr/qui/pull/2297" target="_blank" rel="noopener noreferrer" class="">#2297</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(themes): add spreadsheet disguise themes (<a href="https://github.com/autobrr/qui/pull/2315" target="_blank" rel="noopener noreferrer" class="">#2315</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(themes): streamline theme selection (<a href="https://github.com/autobrr/qui/pull/2334" target="_blank" rel="noopener noreferrer" class="">#2334</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(torrents): add total session downloaded/uploaded in the footer (<a href="https://github.com/autobrr/qui/pull/2148" target="_blank" rel="noopener noreferrer" class="">#2148</a>) (<a href="https://github.com/BeliasCC" target="_blank" rel="noopener noreferrer" class="">@BeliasCC</a>)</li>
<li class="">feat(web): add shared FieldHelp component for field tooltips (<a href="https://github.com/autobrr/qui/pull/2284" target="_blank" rel="noopener noreferrer" class="">#2284</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.26.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(arr): keep live positive ID-cache rows over concurrent negative writes (<a href="https://github.com/autobrr/qui/pull/2301" target="_blank" rel="noopener noreferrer" class="">#2301</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(backups): apply restore category and tags on add only (<a href="https://github.com/autobrr/qui/pull/2295" target="_blank" rel="noopener noreferrer" class="">#2295</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(backups): restore category-managed save paths (<a href="https://github.com/autobrr/qui/pull/2258" target="_blank" rel="noopener noreferrer" class="">#2258</a>) (<a href="https://github.com/ultronknowhere" target="_blank" rel="noopener noreferrer" class="">@ultronknowhere</a>)</li>
<li class="">fix(crossseed): classify a disc rip as a movie (<a href="https://github.com/autobrr/qui/pull/2337" target="_blank" rel="noopener noreferrer" class="">#2337</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): parse the file name instead of its whole path (<a href="https://github.com/autobrr/qui/pull/2335" target="_blank" rel="noopener noreferrer" class="">#2335</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): read a slash in a release title as a separator (<a href="https://github.com/autobrr/qui/pull/2249" target="_blank" rel="noopener noreferrer" class="">#2249</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): recover exact matches lost to failed ARR lookups and rename-only recheck skips (<a href="https://github.com/autobrr/qui/pull/2298" target="_blank" rel="noopener noreferrer" class="">#2298</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(crossseed): replace anacrolix/torrent with autobrr/go-torrent (<a href="https://github.com/autobrr/qui/pull/2264" target="_blank" rel="noopener noreferrer" class="">#2264</a>) (<a href="https://github.com/arjunrn" target="_blank" rel="noopener noreferrer" class="">@arjunrn</a>)</li>
<li class="">fix(crossseed): roll back only the files a failed link attempt created (<a href="https://github.com/autobrr/qui/pull/2287" target="_blank" rel="noopener noreferrer" class="">#2287</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dashboard): tighten the dashboard on mobile (<a href="https://github.com/autobrr/qui/pull/2333" target="_blank" rel="noopener noreferrer" class="">#2333</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dirscan): drop the year from the indexer search query (<a href="https://github.com/autobrr/qui/pull/2246" target="_blank" rel="noopener noreferrer" class="">#2246</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(jackett): warn when a search runs without indexer capabilities (<a href="https://github.com/autobrr/qui/pull/2296" target="_blank" rel="noopener noreferrer" class="">#2296</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(mobile): keep the last card clear of the selection bar and guard footer scroll registration (<a href="https://github.com/autobrr/qui/pull/2279" target="_blank" rel="noopener noreferrer" class="">#2279</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(orphanscan): compare paths case-insensitively (<a href="https://github.com/autobrr/qui/pull/2316" target="_blank" rel="noopener noreferrer" class="">#2316</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): read the tracker mapping before publishing it (<a href="https://github.com/autobrr/qui/pull/2332" target="_blank" rel="noopener noreferrer" class="">#2332</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(releases): read a multi-episode range as a pack (<a href="https://github.com/autobrr/qui/pull/2253" target="_blank" rel="noopener noreferrer" class="">#2253</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): keep stored view mode when a restricted consumer mounts (<a href="https://github.com/autobrr/qui/pull/2271" target="_blank" rel="noopener noreferrer" class="">#2271</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): add force start to mobile actions (<a href="https://github.com/autobrr/qui/pull/2268" target="_blank" rel="noopener noreferrer" class="">#2268</a>) (<a href="https://github.com/VsnGamer" target="_blank" rel="noopener noreferrer" class="">@VsnGamer</a>)</li>
<li class="">fix(web): emit CSS asset urls relative to the stylesheet (<a href="https://github.com/autobrr/qui/pull/2276" target="_blank" rel="noopener noreferrer" class="">#2276</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): offer both toggle directions when selection is partly loaded (<a href="https://github.com/autobrr/qui/pull/2278" target="_blank" rel="noopener noreferrer" class="">#2278</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): translate hardcoded strings in CrossSeedPage (<a href="https://github.com/autobrr/qui/pull/2275" target="_blank" rel="noopener noreferrer" class="">#2275</a>) (<a href="https://github.com/OlziYT" target="_blank" rel="noopener noreferrer" class="">@OlziYT</a>)</li>
<li class="">fix: land on the app when entering through /index.html under a base URL (<a href="https://github.com/autobrr/qui/pull/2277" target="_blank" rel="noopener noreferrer" class="">#2277</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.26.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(crossseed): log byte sizes in season pack size mismatch demotions (<a href="https://github.com/autobrr/qui/pull/2270" target="_blank" rel="noopener noreferrer" class="">#2270</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(deps): bump docker/login-action from 4.5.2 to 4.6.0 in the github group (<a href="https://github.com/autobrr/qui/pull/2261" target="_blank" rel="noopener noreferrer" class="">#2261</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 2 updates (<a href="https://github.com/autobrr/qui/pull/2330" target="_blank" rel="noopener noreferrer" class="">#2330</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group across 1 directory with 15 updates (<a href="https://github.com/autobrr/qui/pull/2227" target="_blank" rel="noopener noreferrer" class="">#2227</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 7 updates (<a href="https://github.com/autobrr/qui/pull/2226" target="_blank" rel="noopener noreferrer" class="">#2226</a>) (@dependabot[bot])</li>
<li class="">chore(docs): fix go.mod and package.json links in contributing guide (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(docs): forbid tracker links and copied torrent names in published text (<a href="https://github.com/autobrr/qui/pull/2273" target="_blank" rel="noopener noreferrer" class="">#2273</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(docs): remove collaborators-only PR restriction (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(github): add pull request template (<a href="https://github.com/autobrr/qui/pull/2281" target="_blank" rel="noopener noreferrer" class="">#2281</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(readme): add qBittorrent interface alternatives (<a href="https://github.com/autobrr/qui/pull/2317" target="_blank" rel="noopener noreferrer" class="">#2317</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(automations): update the hardlink index instead of rebuilding it (<a href="https://github.com/autobrr/qui/pull/2241" target="_blank" rel="noopener noreferrer" class="">#2241</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(crossseed): cache the AKA title parse (<a href="https://github.com/autobrr/qui/pull/2254" target="_blank" rel="noopener noreferrer" class="">#2254</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(instances): report all-time totals from transfer-info (<a href="https://github.com/autobrr/qui/pull/2240" target="_blank" rel="noopener noreferrer" class="">#2240</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(qbittorrent): read maindata fields without cloning the torrent map (<a href="https://github.com/autobrr/qui/pull/2329" target="_blank" rel="noopener noreferrer" class="">#2329</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(torrents): keep one object identity per unchanged row so table rows can memoize (<a href="https://github.com/autobrr/qui/pull/2263" target="_blank" rel="noopener noreferrer" class="">#2263</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">perf(torrents): make list, search and sort faster on large libraries (<a href="https://github.com/autobrr/qui/pull/2319" target="_blank" rel="noopener noreferrer" class="">#2319</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(automations): move field help into label tooltips (<a href="https://github.com/autobrr/qui/pull/2293" target="_blank" rel="noopener noreferrer" class="">#2293</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(crossseed): move field help into label tooltips (<a href="https://github.com/autobrr/qui/pull/2294" target="_blank" rel="noopener noreferrer" class="">#2294</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(crossseed): stop tests from reaching the live gazelle trackers (<a href="https://github.com/autobrr/qui/pull/2311" target="_blank" rel="noopener noreferrer" class="">#2311</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(instances): move the hand-written field help into label tooltips (<a href="https://github.com/autobrr/qui/pull/2292" target="_blank" rel="noopener noreferrer" class="">#2292</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(mobile): share the selection bar condition and drop its dead transition (<a href="https://github.com/autobrr/qui/pull/2280" target="_blank" rel="noopener noreferrer" class="">#2280</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(web): delete field help that repeats its own label or tooltip (<a href="https://github.com/autobrr/qui/pull/2288" target="_blank" rel="noopener noreferrer" class="">#2288</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(web): move notification and RSS field help into label tooltips (<a href="https://github.com/autobrr/qui/pull/2291" target="_blank" rel="noopener noreferrer" class="">#2291</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(web): move preference field help into label tooltips (<a href="https://github.com/autobrr/qui/pull/2290" target="_blank" rel="noopener noreferrer" class="">#2290</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(crossseed): stop the suite from calling the real trackers (<a href="https://github.com/autobrr/qui/pull/2309" target="_blank" rel="noopener noreferrer" class="">#2309</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.25.0...v1.26.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.25.0...v1.26.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.25.0]]></title>
        <id>https://getqui.com/release-notes/v1.25.0/</id>
        <link href="https://getqui.com/release-notes/v1.25.0/"/>
        <updated>2026-08-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.25.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.25.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(crossseed): add skip individual episodes option to library search runs (<a href="https://github.com/autobrr/qui/pull/2216" target="_blank" rel="noopener noreferrer" class="">#2216</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): assemble season packs from seeded episodes in automation flows (<a href="https://github.com/autobrr/qui/pull/2211" target="_blank" rel="noopener noreferrer" class="">#2211</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): curb season pack churn in automation flows (<a href="https://github.com/autobrr/qui/pull/2213" target="_blank" rel="noopener noreferrer" class="">#2213</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): match torrents whose files pair by exact size (<a href="https://github.com/autobrr/qui/pull/2219" target="_blank" rel="noopener noreferrer" class="">#2219</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): page RSS feeds until a page is fully known (<a href="https://github.com/autobrr/qui/pull/2207" target="_blank" rel="noopener noreferrer" class="">#2207</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): replace the auto-resume percentage rule with a byte limit (<a href="https://github.com/autobrr/qui/pull/2228" target="_blank" rel="noopener noreferrer" class="">#2228</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): rescue exact-size title mismatches (<a href="https://github.com/autobrr/qui/pull/2230" target="_blank" rel="noopener noreferrer" class="">#2230</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): search for season packs of seeded episodes in library runs (<a href="https://github.com/autobrr/qui/pull/2212" target="_blank" rel="noopener noreferrer" class="">#2212</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): track seeded search history per indexer (<a href="https://github.com/autobrr/qui/pull/2218" target="_blank" rel="noopener noreferrer" class="">#2218</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(filters): saved filter views (<a href="https://github.com/autobrr/qui/pull/2193" target="_blank" rel="noopener noreferrer" class="">#2193</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(indexers): remember Prowlarr and Jackett connections in the discover dialog (<a href="https://github.com/autobrr/qui/pull/2231" target="_blank" rel="noopener noreferrer" class="">#2231</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(torrents): navigate the torrent list with arrow keys (<a href="https://github.com/autobrr/qui/pull/2196" target="_blank" rel="noopener noreferrer" class="">#2196</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.25.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(crossseed): apply search aliases only to the source torrent (<a href="https://github.com/autobrr/qui/pull/2221" target="_blank" rel="noopener noreferrer" class="">#2221</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): clarify the max age setting copy (<a href="https://github.com/autobrr/qui/pull/2223" target="_blank" rel="noopener noreferrer" class="">#2223</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): compare the search size band against the full torrent size (<a href="https://github.com/autobrr/qui/pull/2206" target="_blank" rel="noopener noreferrer" class="">#2206</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): demote unlinkable season pack episodes to missing (<a href="https://github.com/autobrr/qui/pull/2215" target="_blank" rel="noopener noreferrer" class="">#2215</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): match titles whose punctuation scene naming drops (<a href="https://github.com/autobrr/qui/pull/2191" target="_blank" rel="noopener noreferrer" class="">#2191</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): recover season structure from files when a search result is applied (<a href="https://github.com/autobrr/qui/pull/2232" target="_blank" rel="noopener noreferrer" class="">#2232</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): recover season structure from metainfo files when a torrent is applied (<a href="https://github.com/autobrr/qui/pull/2235" target="_blank" rel="noopener noreferrer" class="">#2235</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): retry zero-result searches with alternate titles (<a href="https://github.com/autobrr/qui/pull/2204" target="_blank" rel="noopener noreferrer" class="">#2204</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): skip Gazelle lookups for content that RED/OPS cannot host (<a href="https://github.com/autobrr/qui/pull/2195" target="_blank" rel="noopener noreferrer" class="">#2195</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): treat one-sided HDR and collection tags as compatible (<a href="https://github.com/autobrr/qui/pull/2205" target="_blank" rel="noopener noreferrer" class="">#2205</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dirscan): reopen no_match files when new indexers appear (<a href="https://github.com/autobrr/qui/pull/2199" target="_blank" rel="noopener noreferrer" class="">#2199</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(indexers): prevent incorrect autodiscovery updates (<a href="https://github.com/autobrr/qui/pull/2236" target="_blank" rel="noopener noreferrer" class="">#2236</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(logging): make DEBUG the supported diagnostic level (<a href="https://github.com/autobrr/qui/pull/2239" target="_blank" rel="noopener noreferrer" class="">#2239</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torznab): keep rate-limited caps searches uncovered (<a href="https://github.com/autobrr/qui/pull/2229" target="_blank" rel="noopener noreferrer" class="">#2229</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torznab): keep structured season/ep params when indexer caps support them (<a href="https://github.com/autobrr/qui/pull/2214" target="_blank" rel="noopener noreferrer" class="">#2214</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torznab): skip indexers whose caps fetch is rate limited (<a href="https://github.com/autobrr/qui/pull/2217" target="_blank" rel="noopener noreferrer" class="">#2217</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): don't hijack Cmd/Ctrl+Shift+A as select-all in torrent table (<a href="https://github.com/autobrr/qui/pull/2200" target="_blank" rel="noopener noreferrer" class="">#2200</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): scope overlay blur to the support dialog (<a href="https://github.com/autobrr/qui/pull/2197" target="_blank" rel="noopener noreferrer" class="">#2197</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.25.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump docker/login-action from 4.5.1 to 4.5.2 in the github group (<a href="https://github.com/autobrr/qui/pull/2225" target="_blank" rel="noopener noreferrer" class="">#2225</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump postcss from 8.5.18 to 8.5.23 in /documentation (<a href="https://github.com/autobrr/qui/pull/2224" target="_blank" rel="noopener noreferrer" class="">#2224</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 2 updates (<a href="https://github.com/autobrr/qui/pull/2203" target="_blank" rel="noopener noreferrer" class="">#2203</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the golang group with 16 updates (<a href="https://github.com/autobrr/qui/pull/2209" target="_blank" rel="noopener noreferrer" class="">#2209</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 43 updates (<a href="https://github.com/autobrr/qui/pull/2210" target="_blank" rel="noopener noreferrer" class="">#2210</a>) (@dependabot[bot])</li>
<li class="">ci(release): fold signing smoke test into develop snapshot build (<a href="https://github.com/autobrr/qui/pull/2201" target="_blank" rel="noopener noreferrer" class="">#2201</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs(web): correct the vitest setup-file and auto-cleanup rules (<a href="https://github.com/autobrr/qui/pull/2238" target="_blank" rel="noopener noreferrer" class="">#2238</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.24.0...v1.25.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.24.0...v1.25.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.24.0]]></title>
        <id>https://getqui.com/release-notes/v1.24.0/</id>
        <link href="https://getqui.com/release-notes/v1.24.0/"/>
        <updated>2026-07-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.24.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.24.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(backups): reclaim orphaned torrent cache blobs at startup (<a href="https://github.com/autobrr/qui/pull/2190" target="_blank" rel="noopener noreferrer" class="">#2190</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(crossseed): detect ReFS block-cloned delete matches (<a href="https://github.com/autobrr/qui/pull/2183" target="_blank" rel="noopener noreferrer" class="">#2183</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">feat(crossseed): detect hardlinked cross-seeds in delete dialog (<a href="https://github.com/autobrr/qui/pull/2180" target="_blank" rel="noopener noreferrer" class="">#2180</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(crossseed): match season packs across alternate titles and anime absolute numbering (<a href="https://github.com/autobrr/qui/pull/2105" target="_blank" rel="noopener noreferrer" class="">#2105</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(qbittorrent): detect "torrent has been rejected" as unregistered (<a href="https://github.com/autobrr/qui/pull/2133" target="_blank" rel="noopener noreferrer" class="">#2133</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(web): add Brazilian Portuguese (pt-BR) localization and i18n coverage tooling (<a href="https://github.com/autobrr/qui/pull/2136" target="_blank" rel="noopener noreferrer" class="">#2136</a>) (<a href="https://github.com/MaKTaiL" target="_blank" rel="noopener noreferrer" class="">@MaKTaiL</a>)</li>
<li class="">feat(web): add supporter subscription entry point (<a href="https://github.com/autobrr/qui/pull/2185" target="_blank" rel="noopener noreferrer" class="">#2185</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.24.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(backups): overlap export stalls and cap the adaptive delay (<a href="https://github.com/autobrr/qui/pull/2188" target="_blank" rel="noopener noreferrer" class="">#2188</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(backups): write cache blobs atomically (<a href="https://github.com/autobrr/qui/pull/2189" target="_blank" rel="noopener noreferrer" class="">#2189</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(crossseed): complete RSS-deduplicated searches and surface search errors (<a href="https://github.com/autobrr/qui/pull/2162" target="_blank" rel="noopener noreferrer" class="">#2162</a>) (<a href="https://github.com/jussaw" target="_blank" rel="noopener noreferrer" class="">@jussaw</a>)</li>
<li class="">fix(crossseed): keep partial results when a single tracker fails (<a href="https://github.com/autobrr/qui/pull/2156" target="_blank" rel="noopener noreferrer" class="">#2156</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): retain candidates using exact size evidence (<a href="https://github.com/autobrr/qui/pull/2160" target="_blank" rel="noopener noreferrer" class="">#2160</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">fix(hardlink): use 128-bit Windows file IDs (<a href="https://github.com/autobrr/qui/pull/2182" target="_blank" rel="noopener noreferrer" class="">#2182</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">fix(reannounce): update torrent age calculation and add 'started' outcome to reannounce automation (<a href="https://github.com/autobrr/qui/pull/2135" target="_blank" rel="noopener noreferrer" class="">#2135</a>) (<a href="https://github.com/MaKTaiL" target="_blank" rel="noopener noreferrer" class="">@MaKTaiL</a>)</li>
<li class="">fix(web): update radix-ui packages to fix dialog dismissal regression (<a href="https://github.com/autobrr/qui/pull/2143" target="_blank" rel="noopener noreferrer" class="">#2143</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix: preserve empty torrent path components (<a href="https://github.com/autobrr/qui/pull/2152" target="_blank" rel="noopener noreferrer" class="">#2152</a>) (<a href="https://github.com/Mevas" target="_blank" rel="noopener noreferrer" class="">@Mevas</a>)</li>
<li class="">fix: reject qBittorrent never-completed sentinels in completion detection, automations, and UI (<a href="https://github.com/autobrr/qui/pull/2171" target="_blank" rel="noopener noreferrer" class="">#2171</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix: sanitize non-UTF-8 bytes from torrent-derived strings (<a href="https://github.com/autobrr/qui/pull/2158" target="_blank" rel="noopener noreferrer" class="">#2158</a>) (<a href="https://github.com/Zmegolaz" target="_blank" rel="noopener noreferrer" class="">@Zmegolaz</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.24.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump fast-uri from 3.1.3 to 3.1.4 in /web (<a href="https://github.com/autobrr/qui/pull/2174" target="_blank" rel="noopener noreferrer" class="">#2174</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump go-qbittorrent to v1.17.0 (<a href="https://github.com/autobrr/qui/pull/2178" target="_blank" rel="noopener noreferrer" class="">#2178</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(deps): bump postcss from 8.5.16 to 8.5.18 in /documentation (<a href="https://github.com/autobrr/qui/pull/2176" target="_blank" rel="noopener noreferrer" class="">#2176</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 2 updates (<a href="https://github.com/autobrr/qui/pull/2153" target="_blank" rel="noopener noreferrer" class="">#2153</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 4 updates (<a href="https://github.com/autobrr/qui/pull/2173" target="_blank" rel="noopener noreferrer" class="">#2173</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 7 updates (<a href="https://github.com/autobrr/qui/pull/2128" target="_blank" rel="noopener noreferrer" class="">#2128</a>) (@dependabot[bot])</li>
<li class="">chore(docs): fix missing tip close (<a href="https://github.com/autobrr/qui/pull/2155" target="_blank" rel="noopener noreferrer" class="">#2155</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">chore(web): bump postcss to 8.5.23 (<a href="https://github.com/autobrr/qui/pull/2181" target="_blank" rel="noopener noreferrer" class="">#2181</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: add instructions for macOS Container (<a href="https://github.com/autobrr/qui/pull/2161" target="_blank" rel="noopener noreferrer" class="">#2161</a>) (<a href="https://github.com/danielcg" target="_blank" rel="noopener noreferrer" class="">@danielcg</a>)</li>
<li class="">docs: update Telegram Shoutrrr URL format (<a href="https://github.com/autobrr/qui/pull/2145" target="_blank" rel="noopener noreferrer" class="">#2145</a>) (<a href="https://github.com/denisoster" target="_blank" rel="noopener noreferrer" class="">@denisoster</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.23.0...v1.24.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.23.0...v1.24.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.23.0]]></title>
        <id>https://getqui.com/release-notes/v1.23.0/</id>
        <link href="https://getqui.com/release-notes/v1.23.0/"/>
        <updated>2026-07-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.23.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.23.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(backups): capture &amp; restore per-torrent save paths (<a href="https://github.com/autobrr/qui/pull/2067" target="_blank" rel="noopener noreferrer" class="">#2067</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(fs): respect process umask for content directory creation (<a href="https://github.com/autobrr/qui/pull/2086" target="_blank" rel="noopener noreferrer" class="">#2086</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(i18n): add Czech (cs) translation (<a href="https://github.com/autobrr/qui/pull/2049" target="_blank" rel="noopener noreferrer" class="">#2049</a>) (<a href="https://github.com/luckylittle" target="_blank" rel="noopener noreferrer" class="">@luckylittle</a>)</li>
<li class="">feat(logs): expose log file downloads in settings (<a href="https://github.com/autobrr/qui/pull/2122" target="_blank" rel="noopener noreferrer" class="">#2122</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(rss): show feed titles in affected feeds selector (<a href="https://github.com/autobrr/qui/pull/2115" target="_blank" rel="noopener noreferrer" class="">#2115</a>) (<a href="https://github.com/pengchongfu" target="_blank" rel="noopener noreferrer" class="">@pengchongfu</a>)</li>
<li class="">feat(themes): sideloadable custom themes (<a href="https://github.com/autobrr/qui/pull/2070" target="_blank" rel="noopener noreferrer" class="">#2070</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.23.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(crossseed): stop season-pack double-nesting and honor hardlink dir preset (<a href="https://github.com/autobrr/qui/pull/2088" target="_blank" rel="noopener noreferrer" class="">#2088</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dashboard): preserve fallback status during SSE reconnect (<a href="https://github.com/autobrr/qui/pull/2085" target="_blank" rel="noopener noreferrer" class="">#2085</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">fix(dirscan): align injected torrent paths to on-disk layout (<a href="https://github.com/autobrr/qui/pull/2113" target="_blank" rel="noopener noreferrer" class="">#2113</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): avoid sync cache reader convoys (<a href="https://github.com/autobrr/qui/pull/2106" target="_blank" rel="noopener noreferrer" class="">#2106</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): keep loading when a qBittorrent instance is unresponsive (<a href="https://github.com/autobrr/qui/pull/2097" target="_blank" rel="noopener noreferrer" class="">#2097</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): keep rename dialog scrolled to start of file name (<a href="https://github.com/autobrr/qui/pull/2111" target="_blank" rel="noopener noreferrer" class="">#2111</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): keep renamed folders expanded in file tree (<a href="https://github.com/autobrr/qui/pull/2110" target="_blank" rel="noopener noreferrer" class="">#2110</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): refresh scrolled-in pages after mutations (<a href="https://github.com/autobrr/qui/pull/2116" target="_blank" rel="noopener noreferrer" class="">#2116</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.23.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump postcss from 8.5.15 to 8.5.16 in /documentation in the npm group (<a href="https://github.com/autobrr/qui/pull/2098" target="_blank" rel="noopener noreferrer" class="">#2098</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 3 updates (<a href="https://github.com/autobrr/qui/pull/2091" target="_blank" rel="noopener noreferrer" class="">#2091</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 5 updates (<a href="https://github.com/autobrr/qui/pull/2109" target="_blank" rel="noopener noreferrer" class="">#2109</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the golang group with 14 updates (<a href="https://github.com/autobrr/qui/pull/2090" target="_blank" rel="noopener noreferrer" class="">#2090</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /documentation with 9 updates (<a href="https://github.com/autobrr/qui/pull/2092" target="_blank" rel="noopener noreferrer" class="">#2092</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 39 updates (<a href="https://github.com/autobrr/qui/pull/2093" target="_blank" rel="noopener noreferrer" class="">#2093</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 4 updates (<a href="https://github.com/autobrr/qui/pull/2099" target="_blank" rel="noopener noreferrer" class="">#2099</a>) (@dependabot[bot])</li>
<li class="">chore(deps): clear all open Dependabot alerts (dev/build/docs tooling) (<a href="https://github.com/autobrr/qui/pull/2089" target="_blank" rel="noopener noreferrer" class="">#2089</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">ci(discussions): unblock triage/dedup runs and harden the write path (<a href="https://github.com/autobrr/qui/pull/2083" target="_blank" rel="noopener noreferrer" class="">#2083</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.22.0...v1.23.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.22.0...v1.23.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.22.0]]></title>
        <id>https://getqui.com/release-notes/v1.22.0/</id>
        <link href="https://getqui.com/release-notes/v1.22.0/"/>
        <updated>2026-06-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.22.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.22.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(web): add copy path option to content tab context menu (<a href="https://github.com/autobrr/qui/pull/933" target="_blank" rel="noopener noreferrer" class="">#933</a>) (<a href="https://github.com/lenisko" target="_blank" rel="noopener noreferrer" class="">@lenisko</a>)</li>
<li class="">feat(web): add kanagawa themes (<a href="https://github.com/autobrr/qui/pull/2069" target="_blank" rel="noopener noreferrer" class="">#2069</a>) (<a href="https://github.com/notmarek" target="_blank" rel="noopener noreferrer" class="">@notmarek</a>)</li>
<li class="">feat(web): shift+click range select in torrent content tab (<a href="https://github.com/autobrr/qui/pull/2081" target="_blank" rel="noopener noreferrer" class="">#2081</a>) (<a href="https://github.com/jussaw" target="_blank" rel="noopener noreferrer" class="">@jussaw</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.22.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(sync): keep SSE aggregates fresh without tracker hydration (<a href="https://github.com/autobrr/qui/pull/2072" target="_blank" rel="noopener noreferrer" class="">#2072</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.22.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump the github group with 5 updates (<a href="https://github.com/autobrr/qui/pull/2073" target="_blank" rel="noopener noreferrer" class="">#2073</a>) (@dependabot[bot])</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.21.0...v1.22.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.21.0...v1.22.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.21.0]]></title>
        <id>https://getqui.com/release-notes/v1.21.0/</id>
        <link href="https://getqui.com/release-notes/v1.21.0/"/>
        <updated>2026-06-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.21.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.21.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(api): add GET /api/version reporting the running version (<a href="https://github.com/autobrr/qui/pull/2060" target="_blank" rel="noopener noreferrer" class="">#2060</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(automations): add RLS_YEAR release-year condition (<a href="https://github.com/autobrr/qui/pull/2003" target="_blank" rel="noopener noreferrer" class="">#2003</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(automations): add tracker status and message conditions (<a href="https://github.com/autobrr/qui/pull/2006" target="_blank" rel="noopener noreferrer" class="">#2006</a>) (<a href="https://github.com/luckylittle" target="_blank" rel="noopener noreferrer" class="">@luckylittle</a>)</li>
<li class="">feat(automations): list configured indexer trackers in workflow selector (<a href="https://github.com/autobrr/qui/pull/2005" target="_blank" rel="noopener noreferrer" class="">#2005</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(i18n): add Italian (it) translation (<a href="https://github.com/autobrr/qui/pull/2011" target="_blank" rel="noopener noreferrer" class="">#2011</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(i18n): add Korean (ko) translation (<a href="https://github.com/autobrr/qui/pull/2042" target="_blank" rel="noopener noreferrer" class="">#2042</a>) (<a href="https://github.com/jussaw" target="_blank" rel="noopener noreferrer" class="">@jussaw</a>)</li>
<li class="">feat(i18n): add Ukrainian (uk) translation (<a href="https://github.com/autobrr/qui/pull/2032" target="_blank" rel="noopener noreferrer" class="">#2032</a>) (<a href="https://github.com/rodion981" target="_blank" rel="noopener noreferrer" class="">@rodion981</a>)</li>
<li class="">feat(sse): keep cached torrents with a staleness badge when qBittorrent is slow (<a href="https://github.com/autobrr/qui/pull/2057" target="_blank" rel="noopener noreferrer" class="">#2057</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(web): add file priority controls to torrent file views (<a href="https://github.com/autobrr/qui/pull/2062" target="_blank" rel="noopener noreferrer" class="">#2062</a>) (<a href="https://github.com/jussaw" target="_blank" rel="noopener noreferrer" class="">@jussaw</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.21.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(ci): skip release binary build on main pushes (<a href="https://github.com/autobrr/qui/pull/2008" target="_blank" rel="noopener noreferrer" class="">#2008</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): drop resolution token from TV search queries (<a href="https://github.com/autobrr/qui/pull/2017" target="_blank" rel="noopener noreferrer" class="">#2017</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(crossseed): inject rootless single-file adds into matched folder (<a href="https://github.com/autobrr/qui/pull/2029" target="_blank" rel="noopener noreferrer" class="">#2029</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(crossseed): re-query indexers with no usable hit in the alternate connector pass (<a href="https://github.com/autobrr/qui/pull/2002" target="_blank" rel="noopener noreferrer" class="">#2002</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(database): prevent int4 sequence exhaustion in Postgres string interning (<a href="https://github.com/autobrr/qui/pull/2015" target="_blank" rel="noopener noreferrer" class="">#2015</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(db): index string_pool FK columns so GC stops timing out (<a href="https://github.com/autobrr/qui/pull/2051" target="_blank" rel="noopener noreferrer" class="">#2051</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(docs): use relative file paths for markdown links (<a href="https://github.com/autobrr/qui/pull/2013" target="_blank" rel="noopener noreferrer" class="">#2013</a>) (<a href="https://github.com/nasenov" target="_blank" rel="noopener noreferrer" class="">@nasenov</a>)</li>
<li class="">fix(i18n): improve French translation, fix hardcoded UI statuses, and update agent rules (<a href="https://github.com/autobrr/qui/pull/2014" target="_blank" rel="noopener noreferrer" class="">#2014</a>) (<a href="https://github.com/OlziYT" target="_blank" rel="noopener noreferrer" class="">@OlziYT</a>)</li>
<li class="">fix(jackett): decouple cache persistence from SkipHistory (<a href="https://github.com/autobrr/qui/pull/2056" target="_blank" rel="noopener noreferrer" class="">#2056</a>) (<a href="https://github.com/jussaw" target="_blank" rel="noopener noreferrer" class="">@jussaw</a>)</li>
<li class="">fix(pprof): bind to configurable loopback address instead of :6060 (<a href="https://github.com/autobrr/qui/pull/2044" target="_blank" rel="noopener noreferrer" class="">#2044</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): serve stale app info/preferences when refresh fails (<a href="https://github.com/autobrr/qui/pull/2054" target="_blank" rel="noopener noreferrer" class="">#2054</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(sse): resolve sync-error staleness stamp off the sync-loop callback (<a href="https://github.com/autobrr/qui/pull/2065" target="_blank" rel="noopener noreferrer" class="">#2065</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(sse): send torrent page deltas instead of full snapshots (<a href="https://github.com/autobrr/qui/pull/2047" target="_blank" rel="noopener noreferrer" class="">#2047</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(sse): size full-sync timeout to prevent permanent disconnect on large instances (<a href="https://github.com/autobrr/qui/pull/2037" target="_blank" rel="noopener noreferrer" class="">#2037</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(torrents): route unified view exports to the owning instance (<a href="https://github.com/autobrr/qui/pull/2018" target="_blank" rel="noopener noreferrer" class="">#2018</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): move instance status bar back to bottom of screen (<a href="https://github.com/autobrr/qui/pull/2024" target="_blank" rel="noopener noreferrer" class="">#2024</a>) (<a href="https://github.com/OlziYT" target="_blank" rel="noopener noreferrer" class="">@OlziYT</a>)</li>
<li class="">fix(web): prevent framer-motion tab indicator from triggering layout shifts (<a href="https://github.com/autobrr/qui/pull/2025" target="_blank" rel="noopener noreferrer" class="">#2025</a>) (<a href="https://github.com/OlziYT" target="_blank" rel="noopener noreferrer" class="">@OlziYT</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.21.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump anthropics/claude-code-action from 1.0.140 to 1.0.148 in the github group (<a href="https://github.com/autobrr/qui/pull/2045" target="_blank" rel="noopener noreferrer" class="">#2045</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 2 updates (<a href="https://github.com/autobrr/qui/pull/2031" target="_blank" rel="noopener noreferrer" class="">#2031</a>) (@dependabot[bot])</li>
<li class="">docs: document frontend testing conventions (<a href="https://github.com/autobrr/qui/pull/1984" target="_blank" rel="noopener noreferrer" class="">#1984</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">docs: promote multi-language support (<a href="https://github.com/autobrr/qui/pull/2009" target="_blank" rel="noopener noreferrer" class="">#2009</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(web): add coverage for hooks and lib/api.ts contract layer (<a href="https://github.com/autobrr/qui/pull/1931" target="_blank" rel="noopener noreferrer" class="">#1931</a>) (<a href="https://github.com/autobrr/qui/pull/1998" target="_blank" rel="noopener noreferrer" class="">#1998</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.20.0...v1.21.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.20.0...v1.21.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.20.0]]></title>
        <id>https://getqui.com/release-notes/v1.20.0/</id>
        <link href="https://getqui.com/release-notes/v1.20.0/"/>
        <updated>2026-06-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.20.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.20.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(automations): add include/exclude for trackers (<a href="https://github.com/autobrr/qui/pull/1953" target="_blank" rel="noopener noreferrer" class="">#1953</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">feat(ci): build binaries for develop branch (<a href="https://github.com/autobrr/qui/pull/1969" target="_blank" rel="noopener noreferrer" class="">#1969</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">feat(crossseed): match cross-tracker relabels and alternate and/&amp; title spellings (<a href="https://github.com/autobrr/qui/pull/1990" target="_blank" rel="noopener noreferrer" class="">#1990</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(crossseed): route season packs to categories by resolution and source (<a href="https://github.com/autobrr/qui/pull/1972" target="_blank" rel="noopener noreferrer" class="">#1972</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(i18n): add French translation, dynamic loading, and browser locale auto-detect (<a href="https://github.com/autobrr/qui/pull/1956" target="_blank" rel="noopener noreferrer" class="">#1956</a>) (<a href="https://github.com/OlziYT" target="_blank" rel="noopener noreferrer" class="">@OlziYT</a>)</li>
<li class="">feat(i18n): add German (de) translation (<a href="https://github.com/autobrr/qui/pull/1965" target="_blank" rel="noopener noreferrer" class="">#1965</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(i18n): add multi-language support with Simplified Chinese (<a href="https://github.com/autobrr/qui/pull/1732" target="_blank" rel="noopener noreferrer" class="">#1732</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(sse): stream torrent and activity updates, replacing background polling (<a href="https://github.com/autobrr/qui/pull/551" target="_blank" rel="noopener noreferrer" class="">#551</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(torrents): filter for torrents with other tracker errors (<a href="https://github.com/autobrr/qui/pull/1945" target="_blank" rel="noopener noreferrer" class="">#1945</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">feat(web): virtualized and memoized the indexer search results  (<a href="https://github.com/autobrr/qui/pull/1944" target="_blank" rel="noopener noreferrer" class="">#1944</a>) (<a href="https://github.com/GtwoK" target="_blank" rel="noopener noreferrer" class="">@GtwoK</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.20.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(api): remove WriteTimeout that aborted downloads and SSE at 120s (<a href="https://github.com/autobrr/qui/pull/1964" target="_blank" rel="noopener noreferrer" class="">#1964</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(arr): make arr_id_cache expiry timezone-independent (<a href="https://github.com/autobrr/qui/pull/1986" target="_blank" rel="noopener noreferrer" class="">#1986</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(crossseed): harden filesystem fallback and post-add rechecks (<a href="https://github.com/autobrr/qui/pull/1912" target="_blank" rel="noopener noreferrer" class="">#1912</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">fix(crossseed): pin explicit savepath when cross category save path diverges (<a href="https://github.com/autobrr/qui/pull/1993" target="_blank" rel="noopener noreferrer" class="">#1993</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(gazelle): pre-search content matching and api limits (<a href="https://github.com/autobrr/qui/pull/1981" target="_blank" rel="noopener noreferrer" class="">#1981</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">fix(i18n): translate torrent state labels (<a href="https://github.com/autobrr/qui/pull/1955" target="_blank" rel="noopener noreferrer" class="">#1955</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(proxy): forward API key auth to qBittorrent on passthrough requests (<a href="https://github.com/autobrr/qui/pull/1948" target="_blank" rel="noopener noreferrer" class="">#1948</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(qbittorrent): match 'repack available'/'grab internal' as unregistered (<a href="https://github.com/autobrr/qui/pull/1960" target="_blank" rel="noopener noreferrer" class="">#1960</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(sse): pause torrent-list stream while the tab is hidden (<a href="https://github.com/autobrr/qui/pull/1994" target="_blank" rel="noopener noreferrer" class="">#1994</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(sse): stop intermittent "offline" flips that fall back to polling (<a href="https://github.com/autobrr/qui/pull/1992" target="_blank" rel="noopener noreferrer" class="">#1992</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(web): emit allowSubcategories from the filtered-data callback (<a href="https://github.com/autobrr/qui/pull/1979" target="_blank" rel="noopener noreferrer" class="">#1979</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(web): preserve paginated rows on unified-view SSE updates (<a href="https://github.com/autobrr/qui/pull/1985" target="_blank" rel="noopener noreferrer" class="">#1985</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.20.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump actions/checkout from 6 to 6.0.2 in the github group (<a href="https://github.com/autobrr/qui/pull/1999" target="_blank" rel="noopener noreferrer" class="">#1999</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump rls to v0.8.1 (<a href="https://github.com/autobrr/qui/pull/2007" target="_blank" rel="noopener noreferrer" class="">#2007</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(deps): bump the github group with 5 updates (<a href="https://github.com/autobrr/qui/pull/1937" target="_blank" rel="noopener noreferrer" class="">#1937</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 5 updates (<a href="https://github.com/autobrr/qui/pull/1959" target="_blank" rel="noopener noreferrer" class="">#1959</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the golang group with 14 updates (<a href="https://github.com/autobrr/qui/pull/1988" target="_blank" rel="noopener noreferrer" class="">#1988</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 11 updates (<a href="https://github.com/autobrr/qui/pull/1989" target="_blank" rel="noopener noreferrer" class="">#1989</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 28 updates (<a href="https://github.com/autobrr/qui/pull/1946" target="_blank" rel="noopener noreferrer" class="">#1946</a>) (@dependabot[bot])</li>
<li class="">chore(refactor): remove explicit any and enable no-explicit-any rule (<a href="https://github.com/autobrr/qui/pull/1966" target="_blank" rel="noopener noreferrer" class="">#1966</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">chore(web): add vitest test infrastructure and CI gating (<a href="https://github.com/autobrr/qui/pull/1936" target="_blank" rel="noopener noreferrer" class="">#1936</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">chore(web): remove unused code and packages (<a href="https://github.com/autobrr/qui/pull/1957" target="_blank" rel="noopener noreferrer" class="">#1957</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">docs(agents): scope agent guidance (<a href="https://github.com/autobrr/qui/pull/1995" target="_blank" rel="noopener noreferrer" class="">#1995</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">refactor(go): remove dead code (<a href="https://github.com/autobrr/qui/pull/1740" target="_blank" rel="noopener noreferrer" class="">#1740</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(web): extract TorrentTableDialogs from TorrentTableOptimized (<a href="https://github.com/autobrr/qui/pull/1980" target="_blank" rel="noopener noreferrer" class="">#1980</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract compact-sort, cross-seed, and hotkey hooks (<a href="https://github.com/autobrr/qui/pull/1976" target="_blank" rel="noopener noreferrer" class="">#1976</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract torrent-table display helpers and row components (<a href="https://github.com/autobrr/qui/pull/1970" target="_blank" rel="noopener noreferrer" class="">#1970</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract useBulkActionWrappers (<a href="https://github.com/autobrr/qui/pull/1977" target="_blank" rel="noopener noreferrer" class="">#1977</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract useTorrentSelection (<a href="https://github.com/autobrr/qui/pull/1974" target="_blank" rel="noopener noreferrer" class="">#1974</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract useTorrentSelectionDerivations (<a href="https://github.com/autobrr/qui/pull/1975" target="_blank" rel="noopener noreferrer" class="">#1975</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract useTorrentTableColumns and useTorrentTableNotifications (<a href="https://github.com/autobrr/qui/pull/1978" target="_blank" rel="noopener noreferrer" class="">#1978</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract useTorrentTableFilterExpr (<a href="https://github.com/autobrr/qui/pull/1973" target="_blank" rel="noopener noreferrer" class="">#1973</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract useTrackerIconCache and useEffectiveServerState (<a href="https://github.com/autobrr/qui/pull/1971" target="_blank" rel="noopener noreferrer" class="">#1971</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): extract virtualization, filter-lifecycle FSM, and column DnD from TorrentTableOptimized (<a href="https://github.com/autobrr/qui/pull/1982" target="_blank" rel="noopener noreferrer" class="">#1982</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): split types/index.ts into domain modules behind a barrel (<a href="https://github.com/autobrr/qui/pull/1968" target="_blank" rel="noopener noreferrer" class="">#1968</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">test(db): speed up migrated database tests (<a href="https://github.com/autobrr/qui/pull/1938" target="_blank" rel="noopener noreferrer" class="">#1938</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">test(sse): warm up subscription before coalescing burst (<a href="https://github.com/autobrr/qui/pull/1987" target="_blank" rel="noopener noreferrer" class="">#1987</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(web): add unit tests for Priority 1 pure utilities (<a href="https://github.com/autobrr/qui/pull/1940" target="_blank" rel="noopener noreferrer" class="">#1940</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">test: fan out testdb helper to remaining database.New callers (<a href="https://github.com/autobrr/qui/pull/1962" target="_blank" rel="noopener noreferrer" class="">#1962</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.19.0...v1.20.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.19.0...v1.20.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.19.0]]></title>
        <id>https://getqui.com/release-notes/v1.19.0/</id>
        <link href="https://getqui.com/release-notes/v1.19.0/"/>
        <updated>2026-05-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.19.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.19.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(actions): include web-dist in release artifacts (<a href="https://github.com/autobrr/qui/pull/1801" target="_blank" rel="noopener noreferrer" class="">#1801</a>) (<a href="https://github.com/turtletowerz" target="_blank" rel="noopener noreferrer" class="">@turtletowerz</a>)</li>
<li class="">feat(automations): add export to instance action (<a href="https://github.com/autobrr/qui/pull/1736" target="_blank" rel="noopener noreferrer" class="">#1736</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(instances): api key authentication (<a href="https://github.com/autobrr/qui/pull/1854" target="_blank" rel="noopener noreferrer" class="">#1854</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">feat(qbittorrent): show process uptime (<a href="https://github.com/autobrr/qui/pull/1849" target="_blank" rel="noopener noreferrer" class="">#1849</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(torrents): hide filter icon when not active or hovering over (<a href="https://github.com/autobrr/qui/pull/1869" target="_blank" rel="noopener noreferrer" class="">#1869</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">feat(torrents): implement auto-fit width for columns on double-click (<a href="https://github.com/autobrr/qui/pull/1867" target="_blank" rel="noopener noreferrer" class="">#1867</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">feat(torrents): set comment (<a href="https://github.com/autobrr/qui/pull/1928" target="_blank" rel="noopener noreferrer" class="">#1928</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">feat(torrents): support new share limit parameters (<a href="https://github.com/autobrr/qui/pull/1872" target="_blank" rel="noopener noreferrer" class="">#1872</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">feat(torrents): update AddTorrent methods for qbit 5.2.x support (<a href="https://github.com/autobrr/qui/pull/1902" target="_blank" rel="noopener noreferrer" class="">#1902</a>) (<a href="https://github.com/zze0s" target="_blank" rel="noopener noreferrer" class="">@zze0s</a>)</li>
<li class="">feat: add support for monitored folders (<a href="https://github.com/autobrr/qui/pull/1847" target="_blank" rel="noopener noreferrer" class="">#1847</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.19.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(automations): discard add torrent response (<a href="https://github.com/autobrr/qui/pull/1904" target="_blank" rel="noopener noreferrer" class="">#1904</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ci): repair docs and release builds (<a href="https://github.com/autobrr/qui/pull/1932" target="_blank" rel="noopener noreferrer" class="">#1932</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): normalize empty qbit metadata (<a href="https://github.com/autobrr/qui/pull/1887" target="_blank" rel="noopener noreferrer" class="">#1887</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): reuse shared string normalizer to stop goroutine leak (<a href="https://github.com/autobrr/qui/pull/1909" target="_blank" rel="noopener noreferrer" class="">#1909</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): run external programs after link-mode injection (<a href="https://github.com/autobrr/qui/pull/1874" target="_blank" rel="noopener noreferrer" class="">#1874</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): handle forced subcategories (<a href="https://github.com/autobrr/qui/pull/1863" target="_blank" rel="noopener noreferrer" class="">#1863</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): handle new tracker statuses (<a href="https://github.com/autobrr/qui/pull/1879" target="_blank" rel="noopener noreferrer" class="">#1879</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(rss): mirror torrentParams to legacy flat fields for qBit &lt; 5.0 compat (<a href="https://github.com/autobrr/qui/pull/1846" target="_blank" rel="noopener noreferrer" class="">#1846</a>) (<a href="https://github.com/frrad" target="_blank" rel="noopener noreferrer" class="">@frrad</a>)</li>
<li class="">fix(seasonpacker): windows path handling (<a href="https://github.com/autobrr/qui/pull/1910" target="_blank" rel="noopener noreferrer" class="">#1910</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">fix(torrents): clear filters in unified-view empty state (<a href="https://github.com/autobrr/qui/pull/1898" target="_blank" rel="noopener noreferrer" class="">#1898</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(web): Show collapsed folders when searching torrent contents (<a href="https://github.com/autobrr/qui/pull/1850" target="_blank" rel="noopener noreferrer" class="">#1850</a>) (<a href="https://github.com/ewenjo" target="_blank" rel="noopener noreferrer" class="">@ewenjo</a>)</li>
<li class="">fix(web): keep showing torrent column filter icons on touch devices (<a href="https://github.com/autobrr/qui/pull/1881" target="_blank" rel="noopener noreferrer" class="">#1881</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">fix(web): select-all bulk actions delete more torrents than visible when filters are stacked (<a href="https://github.com/autobrr/qui/pull/1926" target="_blank" rel="noopener noreferrer" class="">#1926</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(web): sidebar element collisions (<a href="https://github.com/autobrr/qui/pull/1876" target="_blank" rel="noopener noreferrer" class="">#1876</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">fix(web): use unique keys for duplicate search results (<a href="https://github.com/autobrr/qui/pull/1886" target="_blank" rel="noopener noreferrer" class="">#1886</a>) (<a href="https://github.com/GtwoK" target="_blank" rel="noopener noreferrer" class="">@GtwoK</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.19.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.28.5 to 7.29.4 in /documentation (<a href="https://github.com/autobrr/qui/pull/1889" target="_blank" rel="noopener noreferrer" class="">#1889</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 in /web (<a href="https://github.com/autobrr/qui/pull/1888" target="_blank" rel="noopener noreferrer" class="">#1888</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /documentation (<a href="https://github.com/autobrr/qui/pull/1903" target="_blank" rel="noopener noreferrer" class="">#1903</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 2 updates (<a href="https://github.com/autobrr/qui/pull/1894" target="_blank" rel="noopener noreferrer" class="">#1894</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 3 updates (<a href="https://github.com/autobrr/qui/pull/1861" target="_blank" rel="noopener noreferrer" class="">#1861</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump webpack-dev-server from 5.2.2 to 5.2.4 in /documentation (<a href="https://github.com/autobrr/qui/pull/1908" target="_blank" rel="noopener noreferrer" class="">#1908</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump ws from 8.18.3 to 8.20.1 in /documentation (<a href="https://github.com/autobrr/qui/pull/1907" target="_blank" rel="noopener noreferrer" class="">#1907</a>) (@dependabot[bot])</li>
<li class="">chore(web): migrate to pnpm 11 (<a href="https://github.com/autobrr/qui/pull/1883" target="_blank" rel="noopener noreferrer" class="">#1883</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">docs: add shared agent instructions symlink (<a href="https://github.com/autobrr/qui/pull/1911" target="_blank" rel="noopener noreferrer" class="">#1911</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">other(docs): resolve 5 Dependabot security alerts on Docs Site (<a href="https://github.com/autobrr/qui/pull/1906" target="_blank" rel="noopener noreferrer" class="">#1906</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(crossseed): gather all results for matching and refine TV based searching (<a href="https://github.com/autobrr/qui/pull/1871" target="_blank" rel="noopener noreferrer" class="">#1871</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">refactor(crossseed): improve anime/AKA handling (<a href="https://github.com/autobrr/qui/pull/1882" target="_blank" rel="noopener noreferrer" class="">#1882</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">refactor(torrents): drop unused rename props from TorrentContextMenu (<a href="https://github.com/autobrr/qui/pull/1900" target="_blank" rel="noopener noreferrer" class="">#1900</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">refactor(web): clean up 180 multiline-ternary warnings repo-wide (<a href="https://github.com/autobrr/qui/pull/1905" target="_blank" rel="noopener noreferrer" class="">#1905</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.18.0...v1.19.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.18.0...v1.19.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.18.0]]></title>
        <id>https://getqui.com/release-notes/v1.18.0/</id>
        <link href="https://getqui.com/release-notes/v1.18.0/"/>
        <updated>2026-05-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.18.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.18.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(automations): add UPLOADED_OVER_SIZE condition field (<a href="https://github.com/autobrr/qui/pull/1830" target="_blank" rel="noopener noreferrer" class="">#1830</a>) (<a href="https://github.com/com6056" target="_blank" rel="noopener noreferrer" class="">@com6056</a>)</li>
<li class="">feat(automations): cross-instance HARDLINK_SCOPE_CROSS (<a href="https://github.com/autobrr/qui/pull/1810" target="_blank" rel="noopener noreferrer" class="">#1810</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(dirscan): add webhook download client filters (<a href="https://github.com/autobrr/qui/pull/1751" target="_blank" rel="noopener noreferrer" class="">#1751</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(web): Add option to copy magnet link from the context menu (<a href="https://github.com/autobrr/qui/pull/1835" target="_blank" rel="noopener noreferrer" class="">#1835</a>) (<a href="https://github.com/pietrocaselani" target="_blank" rel="noopener noreferrer" class="">@pietrocaselani</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.18.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(crossseed): broaden TV/movie torznab categories and skip year on TV (<a href="https://github.com/autobrr/qui/pull/1822" target="_blank" rel="noopener noreferrer" class="">#1822</a>) (<a href="https://github.com/imSp4rky" target="_blank" rel="noopener noreferrer" class="">@imSp4rky</a>)</li>
<li class="">fix(license): unblock stale polar license migration (<a href="https://github.com/autobrr/qui/pull/1799" target="_blank" rel="noopener noreferrer" class="">#1799</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbit): stop serving stale maindata to the status bar (<a href="https://github.com/autobrr/qui/pull/1785" target="_blank" rel="noopener noreferrer" class="">#1785</a>) (<a href="https://github.com/Zariel" target="_blank" rel="noopener noreferrer" class="">@Zariel</a>)</li>
<li class="">fix(rss): populate legacy assignedCategory for qBittorrent &lt; 5.0 comp… (<a href="https://github.com/autobrr/qui/pull/1836" target="_blank" rel="noopener noreferrer" class="">#1836</a>) (<a href="https://github.com/frrad" target="_blank" rel="noopener noreferrer" class="">@frrad</a>)</li>
<li class="">fix(settings): explain disabled API keys (<a href="https://github.com/autobrr/qui/pull/1826" target="_blank" rel="noopener noreferrer" class="">#1826</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): remove deprecated tsconfig baseUrl (<a href="https://github.com/autobrr/qui/pull/1840" target="_blank" rel="noopener noreferrer" class="">#1840</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.18.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump postcss from 8.5.6 to 8.5.10 in /documentation (<a href="https://github.com/autobrr/qui/pull/1837" target="_blank" rel="noopener noreferrer" class="">#1837</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group across 1 directory with 3 updates (<a href="https://github.com/autobrr/qui/pull/1834" target="_blank" rel="noopener noreferrer" class="">#1834</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the golang group with 15 updates (<a href="https://github.com/autobrr/qui/pull/1832" target="_blank" rel="noopener noreferrer" class="">#1832</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 20 updates (<a href="https://github.com/autobrr/qui/pull/1833" target="_blank" rel="noopener noreferrer" class="">#1833</a>) (@dependabot[bot])</li>
<li class="">chore(deps): update go-qbittorrent for new qbt 5.2.x webAPI version (<a href="https://github.com/autobrr/qui/pull/1841" target="_blank" rel="noopener noreferrer" class="">#1841</a>) (<a href="https://github.com/martylukyy" target="_blank" rel="noopener noreferrer" class="">@martylukyy</a>)</li>
<li class="">refactor(time): use seconds and cleanup (<a href="https://github.com/autobrr/qui/pull/1823" target="_blank" rel="noopener noreferrer" class="">#1823</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">refactor: O(n²) cross-seed lookups in automations preview and execution paths (<a href="https://github.com/autobrr/qui/pull/1829" target="_blank" rel="noopener noreferrer" class="">#1829</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.17.0...v1.18.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.17.0...v1.18.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.17.0]]></title>
        <id>https://getqui.com/release-notes/v1.17.0/</id>
        <link href="https://getqui.com/release-notes/v1.17.0/"/>
        <updated>2026-04-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.17.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.17.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(automations): clarify cross-seed condition labels (<a href="https://github.com/autobrr/qui/pull/1763" target="_blank" rel="noopener noreferrer" class="">#1763</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(crossseed): skip link-mode category path warnings (<a href="https://github.com/autobrr/qui/pull/1753" target="_blank" rel="noopener noreferrer" class="">#1753</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(orphanscan): align content path root detection (<a href="https://github.com/autobrr/qui/pull/1771" target="_blank" rel="noopener noreferrer" class="">#1771</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(orphanscan): ignore qBittorrent incomplete files (<a href="https://github.com/autobrr/qui/pull/1761" target="_blank" rel="noopener noreferrer" class="">#1761</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(web): fix add torrent/magnet urls (<a href="https://github.com/autobrr/qui/pull/1762" target="_blank" rel="noopener noreferrer" class="">#1762</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.17.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(ci): speed up CI pipeline (9.3 min → 4.3 min for PRs) (<a href="https://github.com/autobrr/qui/pull/1750" target="_blank" rel="noopener noreferrer" class="">#1750</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">chore: trim embedded web assets and Docker build context (<a href="https://github.com/autobrr/qui/pull/1723" target="_blank" rel="noopener noreferrer" class="">#1723</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">docs: add migration PR guidance (<a href="https://github.com/autobrr/qui/pull/1748" target="_blank" rel="noopener noreferrer" class="">#1748</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(search): table &amp; cards cleanup (<a href="https://github.com/autobrr/qui/pull/1768" target="_blank" rel="noopener noreferrer" class="">#1768</a>) (<a href="https://github.com/nuxencs" target="_blank" rel="noopener noreferrer" class="">@nuxencs</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.16.1...v1.17.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.16.1...v1.17.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.16.1]]></title>
        <id>https://getqui.com/release-notes/v1.16.1/</id>
        <link href="https://getqui.com/release-notes/v1.16.1/"/>
        <updated>2026-04-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.16.1/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.16.1/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(auth): harden OIDC PKCE flow (<a href="https://github.com/autobrr/qui/pull/1746" target="_blank" rel="noopener noreferrer" class="">#1746</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dirscan): tighten flexible matching and improve diagnostics (<a href="https://github.com/autobrr/qui/pull/1742" target="_blank" rel="noopener noreferrer" class="">#1742</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.16.0...v1.16.1" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.16.0...v1.16.1</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.16.0]]></title>
        <id>https://getqui.com/release-notes/v1.16.0/</id>
        <link href="https://getqui.com/release-notes/v1.16.0/"/>
        <updated>2026-04-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Highlights]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="highlights">Highlights<a href="https://getqui.com/release-notes/v1.16.0/#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<ul>
<li class="">Automations got a major upgrade: rules can now match across instances, use system time, control AutoTMM, and opt out of notifications per workflow.</li>
<li class="">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.</li>
<li class="">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.</li>
<li class="">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.</li>
<li class="">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.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.16.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.16.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(auth): add PKCE support to OIDC implementation (<a href="https://github.com/autobrr/qui/pull/1737" target="_blank" rel="noopener noreferrer" class="">#1737</a>) (<a href="https://github.com/oynqr" target="_blank" rel="noopener noreferrer" class="">@oynqr</a>)</li>
<li class="">feat(automations): add AutoTMM condition and action (<a href="https://github.com/autobrr/qui/pull/1698" target="_blank" rel="noopener noreferrer" class="">#1698</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(automations): add system time to query builder (<a href="https://github.com/autobrr/qui/pull/1677" target="_blank" rel="noopener noreferrer" class="">#1677</a>) (<a href="https://github.com/wastaken7" target="_blank" rel="noopener noreferrer" class="">@wastaken7</a>)</li>
<li class="">feat(automations): allow disable of notifications (<a href="https://github.com/autobrr/qui/pull/1652" target="_blank" rel="noopener noreferrer" class="">#1652</a>) (<a href="https://github.com/heathlarsen" target="_blank" rel="noopener noreferrer" class="">@heathlarsen</a>)</li>
<li class="">feat(automations): cross instance condition (<a href="https://github.com/autobrr/qui/pull/1648" target="_blank" rel="noopener noreferrer" class="">#1648</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat(update): verify self-updates with signed release checksums (<a href="https://github.com/autobrr/qui/pull/1665" target="_blank" rel="noopener noreferrer" class="">#1665</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(web): Add action buttons to unified instance. (<a href="https://github.com/autobrr/qui/pull/1637" target="_blank" rel="noopener noreferrer" class="">#1637</a>) (<a href="https://github.com/drtaru" target="_blank" rel="noopener noreferrer" class="">@drtaru</a>)</li>
<li class="">feat(web): Clarify dashboard quick links (<a href="https://github.com/autobrr/qui/pull/1636" target="_blank" rel="noopener noreferrer" class="">#1636</a>) (<a href="https://github.com/drtaru" target="_blank" rel="noopener noreferrer" class="">@drtaru</a>)</li>
<li class="">feat(web): add "Save changes to all instances" button to backup settings (<a href="https://github.com/autobrr/qui/pull/1651" target="_blank" rel="noopener noreferrer" class="">#1651</a>) (<a href="https://github.com/drtaru" target="_blank" rel="noopener noreferrer" class="">@drtaru</a>)</li>
<li class="">feat(web): add Discord perk section to license manager (<a href="https://github.com/autobrr/qui/pull/1656" target="_blank" rel="noopener noreferrer" class="">#1656</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(web): unify tab styling and animations (<a href="https://github.com/autobrr/qui/pull/1632" target="_blank" rel="noopener noreferrer" class="">#1632</a>) (<a href="https://github.com/nuxencs" target="_blank" rel="noopener noreferrer" class="">@nuxencs</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.16.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(automations): add AutoTMM to condition validation (<a href="https://github.com/autobrr/qui/pull/1726" target="_blank" rel="noopener noreferrer" class="">#1726</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): hardlink signature grouping (<a href="https://github.com/autobrr/qui/pull/1670" target="_blank" rel="noopener noreferrer" class="">#1670</a>) (<a href="https://github.com/aulterego" target="_blank" rel="noopener noreferrer" class="">@aulterego</a>)</li>
<li class="">fix(automations): include AutoManagement in delete standalone check (<a href="https://github.com/autobrr/qui/pull/1731" target="_blank" rel="noopener noreferrer" class="">#1731</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(backups): adaptive export throttle (<a href="https://github.com/autobrr/qui/pull/1630" target="_blank" rel="noopener noreferrer" class="">#1630</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(backups): gate bulk save on resolved instance capabilities (<a href="https://github.com/autobrr/qui/pull/1682" target="_blank" rel="noopener noreferrer" class="">#1682</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(backups): skip live export for hybrid torrents (<a href="https://github.com/autobrr/qui/pull/1669" target="_blank" rel="noopener noreferrer" class="">#1669</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): skip disabled instances (<a href="https://github.com/autobrr/qui/pull/1635" target="_blank" rel="noopener noreferrer" class="">#1635</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): tone down async cache reuse log (<a href="https://github.com/autobrr/qui/pull/1686" target="_blank" rel="noopener noreferrer" class="">#1686</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dirscan): link plan size tolerance + partial season pack injection in link tree mode (<a href="https://github.com/autobrr/qui/pull/1695" target="_blank" rel="noopener noreferrer" class="">#1695</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dirscan): retain recent runs and clarify restart behavior (<a href="https://github.com/autobrr/qui/pull/1564" target="_blank" rel="noopener noreferrer" class="">#1564</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(openapi): document dirscan downloadMissingFiles (<a href="https://github.com/autobrr/qui/pull/1727" target="_blank" rel="noopener noreferrer" class="">#1727</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(orphanscan): use content_path to prevent false positives when Auto TMM changes save_path (<a href="https://github.com/autobrr/qui/pull/1712" target="_blank" rel="noopener noreferrer" class="">#1712</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(qbittorrent): avoid tracker health URL false positives (<a href="https://github.com/autobrr/qui/pull/1738" target="_blank" rel="noopener noreferrer" class="">#1738</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): honor tracker health in unified view (<a href="https://github.com/autobrr/qui/pull/1668" target="_blank" rel="noopener noreferrer" class="">#1668</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): stabilize tag and category dialogs (<a href="https://github.com/autobrr/qui/pull/1638" target="_blank" rel="noopener noreferrer" class="">#1638</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): validate creator output path (<a href="https://github.com/autobrr/qui/pull/1739" target="_blank" rel="noopener noreferrer" class="">#1739</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): cross-seed warning in unified view (<a href="https://github.com/autobrr/qui/pull/1692" target="_blank" rel="noopener noreferrer" class="">#1692</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): improve duplicate torrent state and check another field.state.value type in AddTorrentDialog (<a href="https://github.com/autobrr/qui/pull/1679" target="_blank" rel="noopener noreferrer" class="">#1679</a>) (<a href="https://github.com/keatonhasse" target="_blank" rel="noopener noreferrer" class="">@keatonhasse</a>)</li>
<li class="">fix(web): migrate vite chunk splitting config (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.16.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">build(deps): add cooldown to dependabot config (<a href="https://github.com/autobrr/qui/pull/1691" target="_blank" rel="noopener noreferrer" class="">#1691</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">chore(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 (<a href="https://github.com/autobrr/qui/pull/1713" target="_blank" rel="noopener noreferrer" class="">#1713</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump golang.org/x/image from 0.36.0 to 0.38.0 (<a href="https://github.com/autobrr/qui/pull/1685" target="_blank" rel="noopener noreferrer" class="">#1685</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump pnpm/action-setup from 4 to 5 in the github group (<a href="https://github.com/autobrr/qui/pull/1634" target="_blank" rel="noopener noreferrer" class="">#1634</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the golang group with 11 updates (<a href="https://github.com/autobrr/qui/pull/1693" target="_blank" rel="noopener noreferrer" class="">#1693</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the golang group with 3 updates (<a href="https://github.com/autobrr/qui/pull/1701" target="_blank" rel="noopener noreferrer" class="">#1701</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 25 updates (<a href="https://github.com/autobrr/qui/pull/1694" target="_blank" rel="noopener noreferrer" class="">#1694</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the npm group in /web with 5 updates (<a href="https://github.com/autobrr/qui/pull/1702" target="_blank" rel="noopener noreferrer" class="">#1702</a>) (@dependabot[bot])</li>
<li class="">docs(dirscan): clarify re-identification after torrent removal (<a href="https://github.com/autobrr/qui/pull/1720" target="_blank" rel="noopener noreferrer" class="">#1720</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: add license management page with deactivation guide (<a href="https://github.com/autobrr/qui/pull/1706" target="_blank" rel="noopener noreferrer" class="">#1706</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: fix link in issue triage template (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: update release follow-up docs (<a href="https://github.com/autobrr/qui/pull/1741" target="_blank" rel="noopener noreferrer" class="">#1741</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.15.0...v1.16.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.15.0...v1.16.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.15.0]]></title>
        <id>https://getqui.com/release-notes/v1.15.0/</id>
        <link href="https://getqui.com/release-notes/v1.15.0/"/>
        <updated>2026-03-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Breaking change]]></summary>
        <content type="html"><![CDATA[<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="breaking-change">Breaking change<a href="https://getqui.com/release-notes/v1.15.0/#breaking-change" class="hash-link" aria-label="Direct link to Breaking change" title="Direct link to Breaking change" translate="no">​</a></h3>
<p>CORS is disabled by default; enable by setting QUI__CORS_ALLOWED_ORIGINS with explicit origins (http(s)://host[:port]). See <a href="https://getqui.com/docs/advanced/sso-proxy-cors" target="_blank" rel="noopener noreferrer" class="">https://getqui.com/docs/advanced/sso-proxy-cors</a></p>
<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.15.0/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="new-features">New Features<a href="https://getqui.com/release-notes/v1.15.0/#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h3>
<ul>
<li class="">feat(automations): add configurable processing priority/sorting (<a href="https://github.com/autobrr/qui/pull/1235" target="_blank" rel="noopener noreferrer" class="">#1235</a>) (<a href="https://github.com/Oscariremma" target="_blank" rel="noopener noreferrer" class="">@Oscariremma</a>)</li>
<li class="">feat(database): add postgres and sqlite migration CLI (<a href="https://github.com/autobrr/qui/pull/1530" target="_blank" rel="noopener noreferrer" class="">#1530</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(torrents): mediaInfo dialog (<a href="https://github.com/autobrr/qui/pull/1537" target="_blank" rel="noopener noreferrer" class="">#1537</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat(web): Add persistence to unified instance filter in sidebar (<a href="https://github.com/autobrr/qui/pull/1560" target="_blank" rel="noopener noreferrer" class="">#1560</a>) (<a href="https://github.com/drtaru" target="_blank" rel="noopener noreferrer" class="">@drtaru</a>)</li>
<li class="">feat(web): add path autocomplete to set location dialog (<a href="https://github.com/autobrr/qui/pull/1432" target="_blank" rel="noopener noreferrer" class="">#1432</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">feat: add mediainfo api endpoint (<a href="https://github.com/autobrr/qui/pull/1545" target="_blank" rel="noopener noreferrer" class="">#1545</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">feat: endpoint to trigger directory scans from external tools (<a href="https://github.com/autobrr/qui/pull/1559" target="_blank" rel="noopener noreferrer" class="">#1559</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">feat: unify bulk tag editor (<a href="https://github.com/autobrr/qui/pull/1571" target="_blank" rel="noopener noreferrer" class="">#1571</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.15.0/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(api): align add torrent OpenAPI field (<a href="https://github.com/autobrr/qui/pull/1617" target="_blank" rel="noopener noreferrer" class="">#1617</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(api): restrict CORS to explicit allowlist (<a href="https://github.com/autobrr/qui/pull/1551" target="_blank" rel="noopener noreferrer" class="">#1551</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(auth): allow loopback health probes (<a href="https://github.com/autobrr/qui/pull/1621" target="_blank" rel="noopener noreferrer" class="">#1621</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): align include-cross-seeds category apply (<a href="https://github.com/autobrr/qui/pull/1517" target="_blank" rel="noopener noreferrer" class="">#1517</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): scope skipWithin to only deleted action (<a href="https://github.com/autobrr/qui/pull/1538" target="_blank" rel="noopener noreferrer" class="">#1538</a>) (<a href="https://github.com/jabloink" target="_blank" rel="noopener noreferrer" class="">@jabloink</a>)</li>
<li class="">fix(crossseed): avoid completion timeout misses on non-Gazelle torrents (<a href="https://github.com/autobrr/qui/pull/1536" target="_blank" rel="noopener noreferrer" class="">#1536</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): handle missing webhook collection tags (<a href="https://github.com/autobrr/qui/pull/1610" target="_blank" rel="noopener noreferrer" class="">#1610</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): normalize hdr aliases (<a href="https://github.com/autobrr/qui/pull/1572" target="_blank" rel="noopener noreferrer" class="">#1572</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): queue completion searches and retry rate-limit waits (<a href="https://github.com/autobrr/qui/pull/1523" target="_blank" rel="noopener noreferrer" class="">#1523</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): use autobrr indexer ids for webhooks (<a href="https://github.com/autobrr/qui/pull/1614" target="_blank" rel="noopener noreferrer" class="">#1614</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): valid partial matches being rejected (<a href="https://github.com/autobrr/qui/pull/1291" target="_blank" rel="noopener noreferrer" class="">#1291</a>) (<a href="https://github.com/rybertm" target="_blank" rel="noopener noreferrer" class="">@rybertm</a>)</li>
<li class="">fix(database): avoid postgres temp-table statement caching (<a href="https://github.com/autobrr/qui/pull/1581" target="_blank" rel="noopener noreferrer" class="">#1581</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dirscan): honor canceled queued webhook runs (<a href="https://github.com/autobrr/qui/pull/1612" target="_blank" rel="noopener noreferrer" class="">#1612</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dirscan): queue webhook scans and tighten age filtering (<a href="https://github.com/autobrr/qui/pull/1603" target="_blank" rel="noopener noreferrer" class="">#1603</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(dirscan): select concrete hardlink base dir (<a href="https://github.com/autobrr/qui/pull/1606" target="_blank" rel="noopener noreferrer" class="">#1606</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(instances): improve settings dialog scrolling (<a href="https://github.com/autobrr/qui/pull/1569" target="_blank" rel="noopener noreferrer" class="">#1569</a>) (<a href="https://github.com/nuxencs" target="_blank" rel="noopener noreferrer" class="">@nuxencs</a>)</li>
<li class="">fix(proxy): reauth qbit passthrough requests (<a href="https://github.com/autobrr/qui/pull/1582" target="_blank" rel="noopener noreferrer" class="">#1582</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(proxy): search endpoint handling (<a href="https://github.com/autobrr/qui/pull/1524" target="_blank" rel="noopener noreferrer" class="">#1524</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">fix(qbit): prune empty managed dirs after delete_with_files (<a href="https://github.com/autobrr/qui/pull/1604" target="_blank" rel="noopener noreferrer" class="">#1604</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): stop reboot torrent_completed spam (<a href="https://github.com/autobrr/qui/pull/1515" target="_blank" rel="noopener noreferrer" class="">#1515</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(settings): contain settings tab scrolling (<a href="https://github.com/autobrr/qui/pull/1567" target="_blank" rel="noopener noreferrer" class="">#1567</a>) (<a href="https://github.com/nuxencs" target="_blank" rel="noopener noreferrer" class="">@nuxencs</a>)</li>
<li class="">fix(settings): smoother gradient (<a href="https://github.com/autobrr/qui/pull/1570" target="_blank" rel="noopener noreferrer" class="">#1570</a>) (<a href="https://github.com/nuxencs" target="_blank" rel="noopener noreferrer" class="">@nuxencs</a>)</li>
<li class="">fix(torrents): copy MediaInfo summary without brackets (<a href="https://github.com/autobrr/qui/pull/1540" target="_blank" rel="noopener noreferrer" class="">#1540</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): auto-append slash on path autocomplete selection (<a href="https://github.com/autobrr/qui/pull/1431" target="_blank" rel="noopener noreferrer" class="">#1431</a>) (<a href="https://github.com/nitrobass24" target="_blank" rel="noopener noreferrer" class="">@nitrobass24</a>)</li>
<li class="">fix(web): check field.state.value type in AddTorrentDialog (<a href="https://github.com/autobrr/qui/pull/1613" target="_blank" rel="noopener noreferrer" class="">#1613</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): handle SSO proxy redirect to /index.html (<a href="https://github.com/autobrr/qui/pull/1600" target="_blank" rel="noopener noreferrer" class="">#1600</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(web): warn before enabling reannounce (<a href="https://github.com/autobrr/qui/pull/1583" target="_blank" rel="noopener noreferrer" class="">#1583</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.15.0/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump the github group with 3 updates (<a href="https://github.com/autobrr/qui/pull/1535" target="_blank" rel="noopener noreferrer" class="">#1535</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the github group with 7 updates (<a href="https://github.com/autobrr/qui/pull/1558" target="_blank" rel="noopener noreferrer" class="">#1558</a>) (@dependabot[bot])</li>
<li class="">chore(deps): bump the golang group with 15 updates (<a href="https://github.com/autobrr/qui/pull/1543" target="_blank" rel="noopener noreferrer" class="">#1543</a>) (@dependabot[bot])</li>
<li class="">chore(go,ci): adopt go fix, bump to 1.26, and speed up PR checks (<a href="https://github.com/autobrr/qui/pull/1480" target="_blank" rel="noopener noreferrer" class="">#1480</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">docs: add password reset section to CLI commands (<a href="https://github.com/autobrr/qui/pull/1598" target="_blank" rel="noopener noreferrer" class="">#1598</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(makefile): windows support (<a href="https://github.com/autobrr/qui/pull/1546" target="_blank" rel="noopener noreferrer" class="">#1546</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">refactor(reflinking): add windows ReFS filesystem support (<a href="https://github.com/autobrr/qui/pull/1576" target="_blank" rel="noopener noreferrer" class="">#1576</a>) (<a href="https://github.com/Audionut" target="_blank" rel="noopener noreferrer" class="">@Audionut</a>)</li>
<li class="">refactor(releases): share hdr normalization helpers (<a href="https://github.com/autobrr/qui/pull/1586" target="_blank" rel="noopener noreferrer" class="">#1586</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">refactor(web): tighten unified scope navigation (<a href="https://github.com/autobrr/qui/pull/1618" target="_blank" rel="noopener noreferrer" class="">#1618</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">test(handlers): cover tag baseline field requests (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.14.1...v1.15.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.14.1...v1.15.0</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[v1.14.1]]></title>
        <id>https://getqui.com/release-notes/v1.14.1/</id>
        <link href="https://getqui.com/release-notes/v1.14.1/"/>
        <updated>2026-02-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Changelog]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_qSUP" id="changelog">Changelog<a href="https://getqui.com/release-notes/v1.14.1/#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="bug-fixes">Bug Fixes<a href="https://getqui.com/release-notes/v1.14.1/#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">fix(auth): avoid chromium basic auth resets on expired qui sessions (<a href="https://github.com/autobrr/qui/pull/1495" target="_blank" rel="noopener noreferrer" class="">#1495</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(automations): make managed full tag sync idempotent (<a href="https://github.com/autobrr/qui/pull/1494" target="_blank" rel="noopener noreferrer" class="">#1494</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(crossseed): avoid webhook notification spam on pending matches (<a href="https://github.com/autobrr/qui/pull/1496" target="_blank" rel="noopener noreferrer" class="">#1496</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(notifications): improve torrent and automation event samples (<a href="https://github.com/autobrr/qui/pull/1501" target="_blank" rel="noopener noreferrer" class="">#1501</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): ignore pseudo tracker labels in domain parsing (<a href="https://github.com/autobrr/qui/pull/1489" target="_blank" rel="noopener noreferrer" class="">#1489</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(qbittorrent): repair unified torrent sorting (<a href="https://github.com/autobrr/qui/pull/1490" target="_blank" rel="noopener noreferrer" class="">#1490</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(themes): clarify crypto donation discount flow (<a href="https://github.com/autobrr/qui/pull/1503" target="_blank" rel="noopener noreferrer" class="">#1503</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(themes): clarify premium checkout and crypto flow (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(torrents): scope instance column to unified cross-instance data (<a href="https://github.com/autobrr/qui/pull/1502" target="_blank" rel="noopener noreferrer" class="">#1502</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ui): hide unified entry when one instance is active (<a href="https://github.com/autobrr/qui/pull/1493" target="_blank" rel="noopener noreferrer" class="">#1493</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ui): remove single-instance indent in header menu (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
<li class="">fix(ui): restore instances header in menu (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_qSUP" id="other-changes">Other Changes<a href="https://getqui.com/release-notes/v1.14.1/#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h3>
<ul>
<li class="">docs: update payment info (<a href="https://github.com/autobrr/qui/pull/1424" target="_blank" rel="noopener noreferrer" class="">#1424</a>) (<a href="https://github.com/s0up4200" target="_blank" rel="noopener noreferrer" class="">@s0up4200</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/autobrr/qui/compare/v1.14.0...v1.14.1" target="_blank" rel="noopener noreferrer" class="">https://github.com/autobrr/qui/compare/v1.14.0...v1.14.1</a></p>]]></content>
    </entry>
</feed>