Skip to content

fix(crossseed): drop resolution token from TV search queries - #2017

Merged
s0up4200 merged 3 commits into
developfrom
fix/crossseed-tv-resolution-query
Jun 10, 2026
Merged

fix(crossseed): drop resolution token from TV search queries#2017
s0up4200 merged 3 commits into
developfrom
fix/crossseed-tv-resolution-query

Conversation

@nitrobass24

@nitrobass24 nitrobass24 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary

TV cross-seed searches were silently failing on indexers whose free-text search matches only the series name (notably BTN and IPT): the search returned 0 results, so cross-seeds to those trackers were never created — while the same release cross-seeded fine elsewhere.

Reported on Discord by multiple users. The tell-tale: a manual Prowlarr search for tvshow S01E01 returns results on BTN, but tvshow S01E01 1080 returns zero.

Root cause

For TV content, qui appended a bare resolution token to the free-text Torznab query, producing q = "<title> S01E01 1080". Indexers that match q against the series name find nothing for the 1080 token and return zero results. (Sonarr works because it issues a structured tvsearch with IDs + season/ep and no resolution in q; RSS automation works because it matches the full feed title with no q search at all.)

The resolution was injected at two sites, both added in #1871 ("refine TV based searching", which also raised the result limit to 100 + ReturnAllResults):

  1. The cross-seed query builder — IncludeResolution for TV (internal/services/crossseed/search_query.go).
  2. The jackett Prowlarr ID-driven path — idDrivenTVQuery re-extracted the resolution from the release name even when the query itself was clean (internal/services/jackett/service.go).

Fix

Drop the resolution token from the TV q at both sites:

  • Remove the SearchQueryOptions{IncludeResolution} apparatus from the cross-seed query builder.
  • ID-driven TV searches now use the bare S01E01 token; removed the now-dead idDrivenTVQuery / firstResolutionToken / searchResolutionToken helpers.

Kept unchanged: the S01E01 season/episode narrowing, the generic appendSearchToken season-token repositioning, and the 100-result / ReturnAllResults behavior.

Resulting query: "<title> S01E01" (non-ID) / "S01E01" (ID-driven) — the form confirmed to return results on BTN.

Why this is safe

Resolution in q was only ever a result-narrowing heuristic, never required for correctness: internal/services/crossseed/matching.go still strictly rejects resolution mismatches after the search (1080p2160p are different files). Dropping the token changes which candidates an indexer returns, not which ones we accept.

Testing

  • make test — full -race -count=1 ./...: pass (0 failures / 0 races).
  • Targeted internal/services/crossseed + internal/services/jackett pass; updated the unit tests that asserted the old … 1080 / S17 1080p / S22 720 queries.
  • make precommit (lint): 0 errors. make build: frontend + Go binary compile.
  • No schema/DB changes (Postgres / migration CI jobs unaffected).
  • Pending: live confirmation against real BTN/IPT by the reporting users.

Notes

Net −75 lines. One residual tradeoff (what #1871 was guarding against): without resolution narrowing, a very popular single episode could return more candidates and, worst case, risk truncation at the 100-result cap — small for episode-level searches. If it ever bites, a 0-result fallback retry (search with resolution, retry the indexer without it) would recover the narrowing without breaking series-name-only indexers; deliberately left out here to keep the change minimal.

Summary by CodeRabbit

  • Bug Fixes
    • Removed automatic resolution tokens from generated search queries (including ID-driven TV searches), producing cleaner, more consistent searches and avoiding duplicated resolution tags.
  • Tests
    • Updated and extended tests to reflect the new query behavior and added a fallback to ensure queries are never empty.

TV cross-seed searches appended a bare resolution token to the free-text
Torznab query (e.g. "<title> S01E01 1080"). Indexers whose q matches only
the series name (BTN, IPT) return zero results for such queries, so
cross-seeding to them silently failed while other trackers worked. Sonarr
works because it uses structured tvsearch (ids + season/ep, no resolution
in q); RSS automation works because it matches the full feed title.

Resolution was injected at two sites, both added in #1871:
- the cross-seed query builder (IncludeResolution for TV)
- the jackett Prowlarr ID-driven path (idDrivenTVQuery re-adding it from
  the release name)

Remove resolution from the TV query at both sites. The season/episode
narrowing and the 100-result/ReturnAllResults behavior from #1871 are
unchanged, and resolution is still enforced post-search in releasesMatch,
so match correctness is unaffected.
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 41eed64e-f43a-4330-abff-66ec7a993bee

📥 Commits

Reviewing files that changed from the base of the PR and between b2db987 and 1ff6146.

📒 Files selected for processing (2)
  • internal/services/crossseed/search_query.go
  • internal/services/crossseed/search_query_test.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • internal/services/crossseed/search_query_test.go

Walkthrough

The PR removes resolution-token handling from CrossSeed and Jackett search query generation. buildSafeSearchQuery no longer accepts options and always uses trimmed/cleaned titles or fallbacks for the query. Jackett’s ID-driven Prowlarr TV workaround now sets q to the season token only and removes season/ep params.

Changes

Resolution token removal from search query builders

Layer / File(s) Summary
CrossSeed query builder simplification
internal/services/crossseed/search_query.go, internal/services/crossseed/service.go, internal/services/crossseed/source_release_inference_test.go
Deletes exported SearchQueryOptions and resolution-token handling; buildSafeSearchQuery(name, release, baseQuery) now sets SearchQuery.Query from trimmed baseQuery or cleaned title with fallbacks; call sites updated to the new signature.
CrossSeed tests and callsite updates
internal/services/crossseed/search_query_test.go
Updates tests to remove per-case SearchQueryOptions, asserts parsed titles remain unmodified (no appended resolution), and adds a fallback test for empty cleaned titles.
Jackett Prowlarr TV query simplification
internal/services/jackett/service.go, internal/services/jackett/service_test.go
Removes idDrivenTVQuery and firstResolutionToken helpers and one resolution regex; applyProwlarrTVTokenWorkaround now sets q to the SxxExx token only when ID params are present and prunes season/ep; tests updated to expect season-only q.

Sequence Diagram(s)

sequenceDiagram
  participant Caller
  participant buildSafeSearchQuery
  participant SearchQuery
  Caller->>buildSafeSearchQuery: name, release, baseQuery
  alt baseQuery not empty
    buildSafeSearchQuery->>SearchQuery: Query = TrimSpace(baseQuery)
  else is movie
    buildSafeSearchQuery->>SearchQuery: Query = cleanedTitle
  else other
    alt cleanedTitle empty
      buildSafeSearchQuery->>SearchQuery: Query = TrimSpace(baseQuery) or TrimSpace(name)
    else
      buildSafeSearchQuery->>SearchQuery: Query = cleanedTitle
    end
  end
  buildSafeSearchQuery-->>Caller: SearchQuery (no resolution token)
Loading
sequenceDiagram
  participant Workaround
  participant applyProwlarrTVTokenWorkaround
  participant Request
  Workaround->>applyProwlarrTVTokenWorkaround: ID params present (imdbid/tvdbid/tmdbid/tvmazeid)
  applyProwlarrTVTokenWorkaround->>Request: Set q = TV token only (SxxExx)
  applyProwlarrTVTokenWorkaround->>Request: Remove season and ep params
  applyProwlarrTVTokenWorkaround-->>Workaround: Updated request (no resolution appended)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested labels

bugfix, cross-seed, backend, tests, area/backend

Suggested reviewers

  • s0up4200
  • Audionut

Poem

🐰 Resolution tokens fade and flee,
Queries lean, concise, and free,
CrossSeed trims and Jackett prunes,
Season tokens hum empty tunes,
A rabbit cheers the cleaner spree!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix(crossseed): drop resolution token from TV search queries' directly describes the main change: removing resolution tokens from TV search queries in the crossseed service.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/crossseed-tv-resolution-query

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/services/crossseed/search_query.go`:
- Around line 67-69: The current fallback for cleanedTitle only reassigns from
baseQuery which is already empty in this branch; change the fallback logic in
the cleanedTitle handling so that if cleanedTitle is empty after
cleanAnimeTitle(baseQuery) you fall back to the original name (trimmed) — e.g.,
in the block referencing cleanedTitle, baseQuery and name ensure you first try
baseQuery, and if that yields an empty string then set cleanedTitle =
strings.TrimSpace(name) so you return a conservative non-empty Torznab query.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: d466ee21-a990-4d0c-9ae4-3076a1c9cf15

📥 Commits

Reviewing files that changed from the base of the PR and between 8e8b6d9 and b2db987.

📒 Files selected for processing (6)
  • internal/services/crossseed/search_query.go
  • internal/services/crossseed/search_query_test.go
  • internal/services/crossseed/service.go
  • internal/services/crossseed/source_release_inference_test.go
  • internal/services/jackett/service.go
  • internal/services/jackett/service_test.go

Comment thread internal/services/crossseed/search_query.go
The TV/anime fallback path is only reached when baseQuery is empty, so the
prior `cleanedTitle = strings.TrimSpace(baseQuery)` fallback always reassigned
an empty string. When cleanAnimeTitle stripped the name to nothing this yielded
an empty query. Fall back to the trimmed torrent name instead, matching the
movie branch, so a conservative non-empty query is always returned.
@nitrobass24
nitrobass24 requested a review from Audionut June 9, 2026 22:09
@nitrobass24 nitrobass24 self-assigned this Jun 10, 2026
@Audionut

Copy link
Copy Markdown
Contributor

Bah, I always have that as a source, so never noticed that resolution was a blocker.

We're trading better matching at poorly curated sites, and probably the occasional super long running shows, against working capacity for the listed indexers, a no brainier.

Ran the bot over this, and it's only concern, funnily enough, was the risk of missing content because of the underlying constraints of jackett/prowlarr.

LGTM

@s0up4200
s0up4200 merged commit 57210a3 into develop Jun 10, 2026
13 checks passed
@s0up4200
s0up4200 deleted the fix/crossseed-tv-resolution-query branch June 10, 2026 08:24
ajgon pushed a commit to deedee-ops/home-ops that referenced this pull request Jun 26, 2026
…#160)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/autobrr/qui](https://github.com/autobrr/qui) | minor | `v1.20.0` → `v1.21.0` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/7) for more information.

---

### Release Notes

<details>
<summary>autobrr/qui (ghcr.io/autobrr/qui)</summary>

### [`v1.21.0`](https://github.com/autobrr/qui/releases/tag/v1.21.0)

[Compare Source](autobrr/qui@v1.20.0...v1.21.0)

##### Changelog

##### New Features

- [`51b29a1`](autobrr/qui@51b29a1): feat(api): add GET /api/version reporting the running version ([#&#8203;2060](autobrr/qui#2060)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`98348f1`](autobrr/qui@98348f1): feat(automations): add RLS\_YEAR release-year condition ([#&#8203;2003](autobrr/qui#2003)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`58cc7cb`](autobrr/qui@58cc7cb): feat(automations): add tracker status and message conditions ([#&#8203;2006](autobrr/qui#2006)) ([@&#8203;luckylittle](https://github.com/luckylittle))
- [`2176a92`](autobrr/qui@2176a92): feat(automations): list configured indexer trackers in workflow selector ([#&#8203;2005](autobrr/qui#2005)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`2de926e`](autobrr/qui@2de926e): feat(i18n): add Italian (it) translation ([#&#8203;2011](autobrr/qui#2011)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`7b66655`](autobrr/qui@7b66655): feat(i18n): add Korean (ko) translation ([#&#8203;2042](autobrr/qui#2042)) ([@&#8203;jussaw](https://github.com/jussaw))
- [`2c06a3d`](autobrr/qui@2c06a3d): feat(i18n): add Ukrainian (uk) translation ([#&#8203;2032](autobrr/qui#2032)) ([@&#8203;rodion981](https://github.com/rodion981))
- [`ef8da0b`](autobrr/qui@ef8da0b): feat(sse): keep cached torrents with a staleness badge when qBittorrent is slow ([#&#8203;2057](autobrr/qui#2057)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`38ebb6e`](autobrr/qui@38ebb6e): feat(web): add file priority controls to torrent file views ([#&#8203;2062](autobrr/qui#2062)) ([@&#8203;jussaw](https://github.com/jussaw))

##### Bug Fixes

- [`12ac536`](autobrr/qui@12ac536): fix(ci): skip release binary build on main pushes ([#&#8203;2008](autobrr/qui#2008)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`57210a3`](autobrr/qui@57210a3): fix(crossseed): drop resolution token from TV search queries ([#&#8203;2017](autobrr/qui#2017)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`791bc7d`](autobrr/qui@791bc7d): fix(crossseed): inject rootless single-file adds into matched folder ([#&#8203;2029](autobrr/qui#2029)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`3da437f`](autobrr/qui@3da437f): fix(crossseed): re-query indexers with no usable hit in the alternate connector pass ([#&#8203;2002](autobrr/qui#2002)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`8e8b6d9`](autobrr/qui@8e8b6d9): fix(database): prevent int4 sequence exhaustion in Postgres string interning ([#&#8203;2015](autobrr/qui#2015)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`c7e08b9`](autobrr/qui@c7e08b9): fix(db): index string\_pool FK columns so GC stops timing out ([#&#8203;2051](autobrr/qui#2051)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`2553f75`](autobrr/qui@2553f75): fix(docs): use relative file paths for markdown links ([#&#8203;2013](autobrr/qui#2013)) ([@&#8203;nasenov](https://github.com/nasenov))
- [`8a9c2fc`](autobrr/qui@8a9c2fc): fix(i18n): improve French translation, fix hardcoded UI statuses, and update agent rules ([#&#8203;2014](autobrr/qui#2014)) ([@&#8203;OlziYT](https://github.com/OlziYT))
- [`190d936`](autobrr/qui@190d936): fix(jackett): decouple cache persistence from SkipHistory ([#&#8203;2056](autobrr/qui#2056)) ([@&#8203;jussaw](https://github.com/jussaw))
- [`91ad7e4`](autobrr/qui@91ad7e4): fix(pprof): bind to configurable loopback address instead of :6060 ([#&#8203;2044](autobrr/qui#2044)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`10e2d02`](autobrr/qui@10e2d02): fix(qbittorrent): serve stale app info/preferences when refresh fails ([#&#8203;2054](autobrr/qui#2054)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`6d3b04c`](autobrr/qui@6d3b04c): fix(sse): resolve sync-error staleness stamp off the sync-loop callback ([#&#8203;2065](autobrr/qui#2065)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`677e8f4`](autobrr/qui@677e8f4): fix(sse): send torrent page deltas instead of full snapshots ([#&#8203;2047](autobrr/qui#2047)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`a4d252b`](autobrr/qui@a4d252b): fix(sse): size full-sync timeout to prevent permanent disconnect on large instances ([#&#8203;2037](autobrr/qui#2037)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`4f375c6`](autobrr/qui@4f375c6): fix(torrents): route unified view exports to the owning instance ([#&#8203;2018](autobrr/qui#2018)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`d49e168`](autobrr/qui@d49e168): fix(web): move instance status bar back to bottom of screen ([#&#8203;2024](autobrr/qui#2024)) ([@&#8203;OlziYT](https://github.com/OlziYT))
- [`a69ae69`](autobrr/qui@a69ae69): fix(web): prevent framer-motion tab indicator from triggering layout shifts ([#&#8203;2025](autobrr/qui#2025)) ([@&#8203;OlziYT](https://github.com/OlziYT))

##### Other Changes

- [`860b5bb`](autobrr/qui@860b5bb): chore(deps): bump anthropics/claude-code-action from 1.0.140 to 1.0.148 in the github group ([#&#8203;2045](autobrr/qui#2045)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`0b23a7d`](autobrr/qui@0b23a7d): chore(deps): bump the github group with 2 updates ([#&#8203;2031](autobrr/qui#2031)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`1fea36b`](autobrr/qui@1fea36b): docs: document frontend testing conventions ([#&#8203;1984](autobrr/qui#1984)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`f3443ec`](autobrr/qui@f3443ec): docs: promote multi-language support ([#&#8203;2009](autobrr/qui#2009)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`df88e63`](autobrr/qui@df88e63): test(web): add coverage for hooks and lib/api.ts contract layer ([#&#8203;1931](autobrr/qui#1931)) ([#&#8203;1998](autobrr/qui#1998)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))

**Full Changelog**: <autobrr/qui@v1.20.0...v1.21.0>

##### Docker images

- `docker pull ghcr.io/autobrr/qui:v1.21.0`
- `docker pull ghcr.io/autobrr/qui:latest`

##### What to do next?

- Join our [Discord server](https://discord.autobrr.com/qui)

Thank you for using qui!

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Warsaw)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDMuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI0My4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/160
hbjydev pushed a commit to hbjydev/phoebe that referenced this pull request Jul 10, 2026
… (#200)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/autobrr/qui](https://github.com/autobrr/qui) | minor | `v1.20.0` → `v1.22.0` |

---

### Release Notes

<details>
<summary>autobrr/qui (ghcr.io/autobrr/qui)</summary>

### [`v1.22.0`](https://github.com/autobrr/qui/releases/tag/v1.22.0)

[Compare Source](autobrr/qui@v1.21.0...v1.22.0)

##### Changelog

##### New Features

- [`5b9326e`](autobrr/qui@5b9326e): feat(web): add copy path option to content tab context menu ([#&#8203;933](autobrr/qui#933)) ([@&#8203;lenisko](https://github.com/lenisko))
- [`3a4383d`](autobrr/qui@3a4383d): feat(web): add kanagawa themes ([#&#8203;2069](autobrr/qui#2069)) ([@&#8203;notmarek](https://github.com/notmarek))
- [`db77a17`](autobrr/qui@db77a17): feat(web): shift+click range select in torrent content tab ([#&#8203;2081](autobrr/qui#2081)) ([@&#8203;jussaw](https://github.com/jussaw))

##### Bug Fixes

- [`b563d4b`](autobrr/qui@b563d4b): fix(sync): keep SSE aggregates fresh without tracker hydration ([#&#8203;2072](autobrr/qui#2072)) ([@&#8203;Audionut](https://github.com/Audionut))

##### Other Changes

- [`d428313`](autobrr/qui@d428313): chore(deps): bump the github group with 5 updates ([#&#8203;2073](autobrr/qui#2073)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])

**Full Changelog**: <autobrr/qui@v1.21.0...v1.22.0>

##### Docker images

- `docker pull ghcr.io/autobrr/qui:v1.22.0`
- `docker pull ghcr.io/autobrr/qui:latest`

##### What to do next?

- Join our [Discord server](https://discord.autobrr.com/qui)

Thank you for using qui!

### [`v1.21.0`](https://github.com/autobrr/qui/releases/tag/v1.21.0)

[Compare Source](autobrr/qui@v1.20.0...v1.21.0)

##### Changelog

##### New Features

- [`51b29a1`](autobrr/qui@51b29a1): feat(api): add GET /api/version reporting the running version ([#&#8203;2060](autobrr/qui#2060)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`98348f1`](autobrr/qui@98348f1): feat(automations): add RLS\_YEAR release-year condition ([#&#8203;2003](autobrr/qui#2003)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`58cc7cb`](autobrr/qui@58cc7cb): feat(automations): add tracker status and message conditions ([#&#8203;2006](autobrr/qui#2006)) ([@&#8203;luckylittle](https://github.com/luckylittle))
- [`2176a92`](autobrr/qui@2176a92): feat(automations): list configured indexer trackers in workflow selector ([#&#8203;2005](autobrr/qui#2005)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`2de926e`](autobrr/qui@2de926e): feat(i18n): add Italian (it) translation ([#&#8203;2011](autobrr/qui#2011)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`7b66655`](autobrr/qui@7b66655): feat(i18n): add Korean (ko) translation ([#&#8203;2042](autobrr/qui#2042)) ([@&#8203;jussaw](https://github.com/jussaw))
- [`2c06a3d`](autobrr/qui@2c06a3d): feat(i18n): add Ukrainian (uk) translation ([#&#8203;2032](autobrr/qui#2032)) ([@&#8203;rodion981](https://github.com/rodion981))
- [`ef8da0b`](autobrr/qui@ef8da0b): feat(sse): keep cached torrents with a staleness badge when qBittorrent is slow ([#&#8203;2057](autobrr/qui#2057)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`38ebb6e`](autobrr/qui@38ebb6e): feat(web): add file priority controls to torrent file views ([#&#8203;2062](autobrr/qui#2062)) ([@&#8203;jussaw](https://github.com/jussaw))

##### Bug Fixes

- [`12ac536`](autobrr/qui@12ac536): fix(ci): skip release binary build on main pushes ([#&#8203;2008](autobrr/qui#2008)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`57210a3`](autobrr/qui@57210a3): fix(crossseed): drop resolution token from TV search queries ([#&#8203;2017](autobrr/qui#2017)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`791bc7d`](autobrr/qui@791bc7d): fix(crossseed): inject rootless single-file adds into matched folder ([#&#8203;2029](autobrr/qui#2029)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`3da437f`](autobrr/qui@3da437f): fix(crossseed): re-query indexers with no usable hit in the alternate connector pass ([#&#8203;2002](autobrr/qui#2002)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`8e8b6d9`](autobrr/qui@8e8b6d9): fix(database): prevent int4 sequence exhaustion in Postgres string interning ([#&#8203;2015](autobrr/qui#2015)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`c7e08b9`](autobrr/qui@c7e08b9): fix(db): index string\_pool FK columns so GC stops timing out ([#&#8203;2051](autobrr/qui#2051)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`2553f75`](autobrr/qui@2553f75): fix(docs): use relative file paths for markdown links ([#&#8203;2013](autobrr/qui#2013)) ([@&#8203;nasenov](https://github.com/nasenov))
- [`8a9c2fc`](autobrr/qui@8a9c2fc): fix(i18n): improve French translation, fix hardcoded UI statuses, and update agent rules ([#&#8203;2014](autobrr/qui#2014)) ([@&#8203;OlziYT](https://github.com/OlziYT))
- [`190d936`](autobrr/qui@190d936): fix(jackett): decouple cache persistence from SkipHistory ([#&#8203;2056](autobrr/qui#2056)) ([@&#8203;jussaw](https://github.com/jussaw))
- [`91ad7e4`](autobrr/qui@91ad7e4): fix(pprof): bind to configurable loopback address instead of :6060 ([#&#8203;2044](autobrr/qui#2044)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`10e2d02`](autobrr/qui@10e2d02): fix(qbittorrent): serve stale app info/preferences when refresh fails ([#&#8203;2054](autobrr/qui#2054)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`6d3b04c`](autobrr/qui@6d3b04c): fix(sse): resolve sync-error staleness stamp off the sync-loop callback ([#&#8203;2065](autobrr/qui#2065)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`677e8f4`](autobrr/qui@677e8f4): fix(sse): send torrent page deltas instead of full snapshots ([#&#8203;2047](autobrr/qui#2047)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`a4d252b`](autobrr/qui@a4d252b): fix(sse): size full-sync timeout to prevent permanent disconnect on large instances ([#&#8203;2037](autobrr/qui#2037)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`4f375c6`](autobrr/qui@4f375c6): fix(torrents): route unified view exports to the owning instance ([#&#8203;2018](autobrr/qui#2018)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`d49e168`](autobrr/qui@d49e168): fix(web): move instance status bar back to bottom of screen ([#&#8203;2024](autobrr/qui#2024)) ([@&#8203;OlziYT](https://github.com/OlziYT))
- [`a69ae69`](autobrr/qui@a69ae69): fix(web): prevent framer-motion tab indicator from triggering layout shifts ([#&#8203;2025](autobrr/qui#2025)) ([@&#8203;OlziYT](https://github.com/OlziYT))

##### Other Changes

- [`860b5bb`](autobrr/qui@860b5bb): chore(deps): bump anthropics/claude-code-action from 1.0.140 to 1.0.148 in the github group ([#&#8203;2045](autobrr/qui#2045)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`0b23a7d`](autobrr/qui@0b23a7d): chore(deps): bump the github group with 2 updates ([#&#8203;2031](autobrr/qui#2031)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`1fea36b`](autobrr/qui@1fea36b): docs: document frontend testing conventions ([#&#8203;1984](autobrr/qui#1984)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`f3443ec`](autobrr/qui@f3443ec): docs: promote multi-language support ([#&#8203;2009](autobrr/qui#2009)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`df88e63`](autobrr/qui@df88e63): test(web): add coverage for hooks and lib/api.ts contract layer ([#&#8203;1931](autobrr/qui#1931)) ([#&#8203;1998](autobrr/qui#1998)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))

**Full Changelog**: <autobrr/qui@v1.20.0...v1.21.0>

##### Docker images

- `docker pull ghcr.io/autobrr/qui:v1.21.0`
- `docker pull ghcr.io/autobrr/qui:latest`

##### What to do next?

- Join our [Discord server](https://discord.autobrr.com/qui)

Thank you for using qui!

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/London)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19-->

Reviewed-on: https://forgejo.hayden.moe/hayden/phoebe/pulls/200
ajgon pushed a commit to deedee-ops/home-ops that referenced this pull request Jul 20, 2026
…#160)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/autobrr/qui](https://github.com/autobrr/qui) | minor | `v1.20.0` → `v1.21.0` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/7) for more information.

---

### Release Notes

<details>
<summary>autobrr/qui (ghcr.io/autobrr/qui)</summary>

### [`v1.21.0`](https://github.com/autobrr/qui/releases/tag/v1.21.0)

[Compare Source](autobrr/qui@v1.20.0...v1.21.0)

##### Changelog

##### New Features

- [`51b29a1`](autobrr/qui@51b29a1): feat(api): add GET /api/version reporting the running version ([#&#8203;2060](autobrr/qui#2060)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`98348f1`](autobrr/qui@98348f1): feat(automations): add RLS\_YEAR release-year condition ([#&#8203;2003](autobrr/qui#2003)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`58cc7cb`](autobrr/qui@58cc7cb): feat(automations): add tracker status and message conditions ([#&#8203;2006](autobrr/qui#2006)) ([@&#8203;luckylittle](https://github.com/luckylittle))
- [`2176a92`](autobrr/qui@2176a92): feat(automations): list configured indexer trackers in workflow selector ([#&#8203;2005](autobrr/qui#2005)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`2de926e`](autobrr/qui@2de926e): feat(i18n): add Italian (it) translation ([#&#8203;2011](autobrr/qui#2011)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`7b66655`](autobrr/qui@7b66655): feat(i18n): add Korean (ko) translation ([#&#8203;2042](autobrr/qui#2042)) ([@&#8203;jussaw](https://github.com/jussaw))
- [`2c06a3d`](autobrr/qui@2c06a3d): feat(i18n): add Ukrainian (uk) translation ([#&#8203;2032](autobrr/qui#2032)) ([@&#8203;rodion981](https://github.com/rodion981))
- [`ef8da0b`](autobrr/qui@ef8da0b): feat(sse): keep cached torrents with a staleness badge when qBittorrent is slow ([#&#8203;2057](autobrr/qui#2057)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`38ebb6e`](autobrr/qui@38ebb6e): feat(web): add file priority controls to torrent file views ([#&#8203;2062](autobrr/qui#2062)) ([@&#8203;jussaw](https://github.com/jussaw))

##### Bug Fixes

- [`12ac536`](autobrr/qui@12ac536): fix(ci): skip release binary build on main pushes ([#&#8203;2008](autobrr/qui#2008)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`57210a3`](autobrr/qui@57210a3): fix(crossseed): drop resolution token from TV search queries ([#&#8203;2017](autobrr/qui#2017)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`791bc7d`](autobrr/qui@791bc7d): fix(crossseed): inject rootless single-file adds into matched folder ([#&#8203;2029](autobrr/qui#2029)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`3da437f`](autobrr/qui@3da437f): fix(crossseed): re-query indexers with no usable hit in the alternate connector pass ([#&#8203;2002](autobrr/qui#2002)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`8e8b6d9`](autobrr/qui@8e8b6d9): fix(database): prevent int4 sequence exhaustion in Postgres string interning ([#&#8203;2015](autobrr/qui#2015)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`c7e08b9`](autobrr/qui@c7e08b9): fix(db): index string\_pool FK columns so GC stops timing out ([#&#8203;2051](autobrr/qui#2051)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`2553f75`](autobrr/qui@2553f75): fix(docs): use relative file paths for markdown links ([#&#8203;2013](autobrr/qui#2013)) ([@&#8203;nasenov](https://github.com/nasenov))
- [`8a9c2fc`](autobrr/qui@8a9c2fc): fix(i18n): improve French translation, fix hardcoded UI statuses, and update agent rules ([#&#8203;2014](autobrr/qui#2014)) ([@&#8203;OlziYT](https://github.com/OlziYT))
- [`190d936`](autobrr/qui@190d936): fix(jackett): decouple cache persistence from SkipHistory ([#&#8203;2056](autobrr/qui#2056)) ([@&#8203;jussaw](https://github.com/jussaw))
- [`91ad7e4`](autobrr/qui@91ad7e4): fix(pprof): bind to configurable loopback address instead of :6060 ([#&#8203;2044](autobrr/qui#2044)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`10e2d02`](autobrr/qui@10e2d02): fix(qbittorrent): serve stale app info/preferences when refresh fails ([#&#8203;2054](autobrr/qui#2054)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`6d3b04c`](autobrr/qui@6d3b04c): fix(sse): resolve sync-error staleness stamp off the sync-loop callback ([#&#8203;2065](autobrr/qui#2065)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`677e8f4`](autobrr/qui@677e8f4): fix(sse): send torrent page deltas instead of full snapshots ([#&#8203;2047](autobrr/qui#2047)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`a4d252b`](autobrr/qui@a4d252b): fix(sse): size full-sync timeout to prevent permanent disconnect on large instances ([#&#8203;2037](autobrr/qui#2037)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`4f375c6`](autobrr/qui@4f375c6): fix(torrents): route unified view exports to the owning instance ([#&#8203;2018](autobrr/qui#2018)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`d49e168`](autobrr/qui@d49e168): fix(web): move instance status bar back to bottom of screen ([#&#8203;2024](autobrr/qui#2024)) ([@&#8203;OlziYT](https://github.com/OlziYT))
- [`a69ae69`](autobrr/qui@a69ae69): fix(web): prevent framer-motion tab indicator from triggering layout shifts ([#&#8203;2025](autobrr/qui#2025)) ([@&#8203;OlziYT](https://github.com/OlziYT))

##### Other Changes

- [`860b5bb`](autobrr/qui@860b5bb): chore(deps): bump anthropics/claude-code-action from 1.0.140 to 1.0.148 in the github group ([#&#8203;2045](autobrr/qui#2045)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`0b23a7d`](autobrr/qui@0b23a7d): chore(deps): bump the github group with 2 updates ([#&#8203;2031](autobrr/qui#2031)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`1fea36b`](autobrr/qui@1fea36b): docs: document frontend testing conventions ([#&#8203;1984](autobrr/qui#1984)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`f3443ec`](autobrr/qui@f3443ec): docs: promote multi-language support ([#&#8203;2009](autobrr/qui#2009)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`df88e63`](autobrr/qui@df88e63): test(web): add coverage for hooks and lib/api.ts contract layer ([#&#8203;1931](autobrr/qui#1931)) ([#&#8203;1998](autobrr/qui#1998)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))

**Full Changelog**: <autobrr/qui@v1.20.0...v1.21.0>

##### Docker images

- `docker pull ghcr.io/autobrr/qui:v1.21.0`
- `docker pull ghcr.io/autobrr/qui:latest`

##### What to do next?

- Join our [Discord server](https://discord.autobrr.com/qui)

Thank you for using qui!

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Warsaw)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDMuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI0My4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/160
ajgon pushed a commit to deedee-ops/home-ops that referenced this pull request Jul 28, 2026
…#160)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/autobrr/qui](https://github.com/autobrr/qui) | minor | `v1.20.0` → `v1.21.0` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/7) for more information.

---

### Release Notes

<details>
<summary>autobrr/qui (ghcr.io/autobrr/qui)</summary>

### [`v1.21.0`](https://github.com/autobrr/qui/releases/tag/v1.21.0)

[Compare Source](autobrr/qui@v1.20.0...v1.21.0)

##### Changelog

##### New Features

- [`51b29a1`](autobrr/qui@51b29a1): feat(api): add GET /api/version reporting the running version ([#&#8203;2060](autobrr/qui#2060)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`98348f1`](autobrr/qui@98348f1): feat(automations): add RLS\_YEAR release-year condition ([#&#8203;2003](autobrr/qui#2003)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`58cc7cb`](autobrr/qui@58cc7cb): feat(automations): add tracker status and message conditions ([#&#8203;2006](autobrr/qui#2006)) ([@&#8203;luckylittle](https://github.com/luckylittle))
- [`2176a92`](autobrr/qui@2176a92): feat(automations): list configured indexer trackers in workflow selector ([#&#8203;2005](autobrr/qui#2005)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`2de926e`](autobrr/qui@2de926e): feat(i18n): add Italian (it) translation ([#&#8203;2011](autobrr/qui#2011)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`7b66655`](autobrr/qui@7b66655): feat(i18n): add Korean (ko) translation ([#&#8203;2042](autobrr/qui#2042)) ([@&#8203;jussaw](https://github.com/jussaw))
- [`2c06a3d`](autobrr/qui@2c06a3d): feat(i18n): add Ukrainian (uk) translation ([#&#8203;2032](autobrr/qui#2032)) ([@&#8203;rodion981](https://github.com/rodion981))
- [`ef8da0b`](autobrr/qui@ef8da0b): feat(sse): keep cached torrents with a staleness badge when qBittorrent is slow ([#&#8203;2057](autobrr/qui#2057)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`38ebb6e`](autobrr/qui@38ebb6e): feat(web): add file priority controls to torrent file views ([#&#8203;2062](autobrr/qui#2062)) ([@&#8203;jussaw](https://github.com/jussaw))

##### Bug Fixes

- [`12ac536`](autobrr/qui@12ac536): fix(ci): skip release binary build on main pushes ([#&#8203;2008](autobrr/qui#2008)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`57210a3`](autobrr/qui@57210a3): fix(crossseed): drop resolution token from TV search queries ([#&#8203;2017](autobrr/qui#2017)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`791bc7d`](autobrr/qui@791bc7d): fix(crossseed): inject rootless single-file adds into matched folder ([#&#8203;2029](autobrr/qui#2029)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`3da437f`](autobrr/qui@3da437f): fix(crossseed): re-query indexers with no usable hit in the alternate connector pass ([#&#8203;2002](autobrr/qui#2002)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`8e8b6d9`](autobrr/qui@8e8b6d9): fix(database): prevent int4 sequence exhaustion in Postgres string interning ([#&#8203;2015](autobrr/qui#2015)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`c7e08b9`](autobrr/qui@c7e08b9): fix(db): index string\_pool FK columns so GC stops timing out ([#&#8203;2051](autobrr/qui#2051)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`2553f75`](autobrr/qui@2553f75): fix(docs): use relative file paths for markdown links ([#&#8203;2013](autobrr/qui#2013)) ([@&#8203;nasenov](https://github.com/nasenov))
- [`8a9c2fc`](autobrr/qui@8a9c2fc): fix(i18n): improve French translation, fix hardcoded UI statuses, and update agent rules ([#&#8203;2014](autobrr/qui#2014)) ([@&#8203;OlziYT](https://github.com/OlziYT))
- [`190d936`](autobrr/qui@190d936): fix(jackett): decouple cache persistence from SkipHistory ([#&#8203;2056](autobrr/qui#2056)) ([@&#8203;jussaw](https://github.com/jussaw))
- [`91ad7e4`](autobrr/qui@91ad7e4): fix(pprof): bind to configurable loopback address instead of :6060 ([#&#8203;2044](autobrr/qui#2044)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`10e2d02`](autobrr/qui@10e2d02): fix(qbittorrent): serve stale app info/preferences when refresh fails ([#&#8203;2054](autobrr/qui#2054)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`6d3b04c`](autobrr/qui@6d3b04c): fix(sse): resolve sync-error staleness stamp off the sync-loop callback ([#&#8203;2065](autobrr/qui#2065)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`677e8f4`](autobrr/qui@677e8f4): fix(sse): send torrent page deltas instead of full snapshots ([#&#8203;2047](autobrr/qui#2047)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`a4d252b`](autobrr/qui@a4d252b): fix(sse): size full-sync timeout to prevent permanent disconnect on large instances ([#&#8203;2037](autobrr/qui#2037)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`4f375c6`](autobrr/qui@4f375c6): fix(torrents): route unified view exports to the owning instance ([#&#8203;2018](autobrr/qui#2018)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`d49e168`](autobrr/qui@d49e168): fix(web): move instance status bar back to bottom of screen ([#&#8203;2024](autobrr/qui#2024)) ([@&#8203;OlziYT](https://github.com/OlziYT))
- [`a69ae69`](autobrr/qui@a69ae69): fix(web): prevent framer-motion tab indicator from triggering layout shifts ([#&#8203;2025](autobrr/qui#2025)) ([@&#8203;OlziYT](https://github.com/OlziYT))

##### Other Changes

- [`860b5bb`](autobrr/qui@860b5bb): chore(deps): bump anthropics/claude-code-action from 1.0.140 to 1.0.148 in the github group ([#&#8203;2045](autobrr/qui#2045)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`0b23a7d`](autobrr/qui@0b23a7d): chore(deps): bump the github group with 2 updates ([#&#8203;2031](autobrr/qui#2031)) ([@&#8203;dependabot](https://github.com/dependabot)\[bot])
- [`1fea36b`](autobrr/qui@1fea36b): docs: document frontend testing conventions ([#&#8203;1984](autobrr/qui#1984)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))
- [`f3443ec`](autobrr/qui@f3443ec): docs: promote multi-language support ([#&#8203;2009](autobrr/qui#2009)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`df88e63`](autobrr/qui@df88e63): test(web): add coverage for hooks and lib/api.ts contract layer ([#&#8203;1931](autobrr/qui#1931)) ([#&#8203;1998](autobrr/qui#1998)) ([@&#8203;nitrobass24](https://github.com/nitrobass24))

**Full Changelog**: <autobrr/qui@v1.20.0...v1.21.0>

##### Docker images

- `docker pull ghcr.io/autobrr/qui:v1.21.0`
- `docker pull ghcr.io/autobrr/qui:latest`

##### What to do next?

- Join our [Discord server](https://discord.autobrr.com/qui)

Thank you for using qui!

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Warsaw)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDMuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI0My4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/160
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants