Skip to content

fix(web): move instance status bar back to bottom of screen - #2024

Merged
s0up4200 merged 3 commits into
autobrr:developfrom
OlziYT:fix/status-bar-position
Jun 13, 2026
Merged

fix(web): move instance status bar back to bottom of screen#2024
s0up4200 merged 3 commits into
autobrr:developfrom
OlziYT:fix/status-bar-position

Conversation

@OlziYT

@OlziYT OlziYT commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Fixes #2023

Description

This PR addresses an issue where the global instance status bar was moved inside the torrent table area during the SSE migration. Because of this, when a user selects a torrent and the torrent-details ResizablePanel opens, the status bar is pushed upwards, sitting uncomfortably between the list and the details panel instead of staying fixed at the bottom.

Technical Solution

Instead of heavily refactoring the TorrentTableOptimized component to lift dozens of state variables (SSE streams, selected counts, speeds, view modes) up to a parent component or into a massive React Context, this PR uses a React Portal.

  • Added a fixed #qui-status-bar-container div at the very bottom of the Torrents.tsx layout (outside the ResizablePanelGroup).
  • The TorrentTableOptimized component still handles all the complex logic, but it now renders the status bar into the bottom portal.
  • This ensures the status bar remains visually locked to the absolute bottom of the screen regardless of the details panel being open, while keeping the component logic tightly encapsulated and performant (no flickering, no unnecessary re-renders).

Visual Changes

  • The status bar now stays strictly at the bottom of the screen.

How to Test

  1. Select any instance with torrents.
  2. Note the status bar at the bottom.
  3. Click on a torrent to open the details panel.
  4. The status bar should remain fixed at the very bottom of the screen, below the details panel.

Summary by CodeRabbit

  • Refactor
    • Improved status bar rendering and placement for more consistent behavior across desktop and mobile, including a reliable fallback when the dedicated container isn’t present.
    • Fixed desktop panel sizing to ensure proper resizing and smoother scrolling/layout behavior.

@coderabbitai

coderabbitai Bot commented Jun 11, 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: 36b947e5-08cb-4870-8e9c-5230ebef9245

📥 Commits

Reviewing files that changed from the base of the PR and between dc918ec and 3fcfbeb.

📒 Files selected for processing (2)
  • web/src/components/torrents/TorrentTableOptimized.tsx
  • web/src/pages/Torrents.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • web/src/components/torrents/TorrentTableOptimized.tsx

Walkthrough

Adds a DOM target and layout tweaks in Torrents.tsx, and updates TorrentTableOptimized.tsx to detect that target and render the status bar via React portal when available, falling back to inline rendering.

Changes

Status Bar Portal Rendering

Layer / File(s) Summary
Layout container and flex wrappers
web/src/pages/Torrents.tsx
Adds className="flex-1 min-h-0" to the desktop ResizablePanelGroup and renders a div#qui-status-bar-container beneath it for portal targets.
Portal detection and conditional rendering
web/src/components/torrents/TorrentTableOptimized.tsx
Moves createPortal import, adds statusBarContainer state initialized in useLayoutEffect, builds statusBarContent and conditionally uses createPortal(statusBarContent, statusBarContainer) or inline rendering when the container is absent.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • autobrr/qui#522: Related status-bar/UI restructuring in TorrentTableOptimized.tsx.
  • autobrr/qui#760: Related desktop resizable-panel layout changes affecting Torrents.tsx.

Suggested labels

web, torrent, bugfix, area/frontend

Suggested reviewers

  • s0up4200

Poem

🐇 A little rabbit hops to see,
A portal planted by the tree,
Status bar drifts to its new place,
Falls back kindly if no space,
Layout snug, the view feels free.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% 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 PR title clearly and specifically summarizes the main change: moving the instance status bar back to the bottom of the screen, which is the core objective of the pull request.
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

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.

@s0up4200 s0up4200 changed the title fix(web): move instance status bar back to bottom of screen (#2023) fix(web): move instance status bar back to bottom of screen Jun 12, 2026
s0up4200 and others added 2 commits June 13, 2026 18:30
…arkup

Re-indent the status bar JSX that was wrapped in the new portal IIFE
without re-indentation (242 @stylistic/indent errors -> 0). Switch the
container lookup to useLayoutEffect so the bar no longer paints one frame
in its old inline position before adopting the portal. Drop the
unreachable border-b/w-full portal-only classes and the dead mobile-branch
portal container that never receives content.
@s0up4200
s0up4200 merged commit d49e168 into autobrr:develop Jun 13, 2026
13 checks passed
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants