Skip to content

feat(ui): add loading state to request approve/decline buttons#2815

Merged
fallenbagel merged 4 commits intoseerr-team:developfrom
bobziroll:fix-request-approve-loading-state
Apr 6, 2026
Merged

feat(ui): add loading state to request approve/decline buttons#2815
fallenbagel merged 4 commits intoseerr-team:developfrom
bobziroll:fix-request-approve-loading-state

Conversation

@bobziroll
Copy link
Copy Markdown
Contributor

@bobziroll bobziroll commented Apr 3, 2026

fix(ui): add loading state to request approve/decline buttons

When approving/declining a request, the server-side operation can take several seconds due to Radarr/Sonarr processing. During this time, the UI gave no feedback, leaving buttons fully interactive and the app appearing unresponsive. Add an isUpdating loading state to RequestItem and RequestCard that disables buttons and swaps icons for a spinner while the request is being processed, matching existing patterns used elsewhere in the codebase (e.g. RequestBlock, TvDetails).

Description

When you approve or decline a request, there's a noticeable delay (sometimes 10+ seconds) while the server talks to Radarr/Sonarr (at least on my NAS setup). During that whole time, nothing happens in the UI — the buttons just sit there looking clickable, and the app feels like it's frozen.

This adds a simple loading state so the buttons are disabled and show a spinner while the request is being processed.

Changes are in two files:

  • RequestItem (the /requests page)
  • RequestCard (the recent requests slider on Discover and user profiles)

How Has This Been Tested?

Ran the app locally with pnpm dev, created requests from a non-admin user, then approved/declined them as an admin. Verified the spinner shows up, buttons are disabled during the request, and everything goes back to normal once it completes. Tested both the /requests page and the recent requests section on the Discover page.

Screenshots / Logs (if applicable)

Screenshot 2026-04-03 at 12 31 29 PM Screenshot 2026-04-03 at 12 31 58 PM

Checklist:

  • I have read and followed the contribution guidelines.
  • Disclosed any use of AI (see our policy)
  • I have updated the documentation accordingly. (N/A)
  • All new and existing tests passed.
  • Successful build pnpm build
  • Translation keys pnpm i18n:extract
  • Database migration (if required) (N/A)

AI Disclosure: This PR was written with significant help from Cursor (Claude). I directed the changes and reviewed everything manually (including some manual changes), but the code was largely AI-generated.

Summary by CodeRabbit

  • Bug Fixes
    • Approve/decline actions now show a spinner and disable related controls (including edit) while processing, reliably reset their state when finished, and surface a clear error toast if the action fails.
  • Localization
    • Added English message for request modification failures to improve error clarity for users.

@bobziroll bobziroll requested a review from a team as a code owner April 3, 2026 18:34
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 3, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c141dc9e-f60d-4570-bbfe-7ccd72638dae

📥 Commits

Reviewing files that changed from the base of the PR and between 2d1007c and fa4694d.

📒 Files selected for processing (3)
  • src/components/RequestCard/index.tsx
  • src/components/RequestList/RequestItem/index.tsx
  • src/i18n/locale/en.json
✅ Files skipped from review due to trivial changes (1)
  • src/i18n/locale/en.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/components/RequestCard/index.tsx

📝 Walkthrough

Walkthrough

Replaced a boolean loading flag with updatingType: 'approve' | 'decline' | null in two request components; approve/decline flows set updatingType before the axios POST, show a spinner on the active action, disable related buttons (including edit/modal buttons) while in-flight, show a localized toast on failure, and perform cache revalidation/mutation only on success; updatingType is cleared in finally.

Changes

Cohort / File(s) Summary
RequestCard component
src/components/RequestCard/index.tsx
Added Spinner import and `updatingType: 'approve'
RequestItem (RequestList)
src/components/RequestList/RequestItem/index.tsx
Introduced updatingType state and Spinner import. modifyRequest now sets updatingType before the POST, uses try/catch/finally, shows components.RequestList.RequestItem.failedmodify on failure, triggers SWR revalidation/mutation only in the success path, and clears updatingType in finally. Approve/decline and edit (PencilIcon) buttons disabled during updates and show spinner for the active action.
Localization
src/i18n/locale/en.json
Added two i18n keys: components.RequestCard.failedmodify and components.RequestList.RequestItem.failedmodify with the message "Something went wrong while modifying the request.".

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐇 I tapped my paw, the buttons froze,

A gentle spinner hums and glows.
Approve or decline — one at a time,
No hurried clicks, no clumsy rhyme.
— a rabbit, pleased with tidy state ❤️

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main feature added: loading state indicators (spinners) on approve/decline buttons in the request UI components.

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


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.

@bobziroll bobziroll changed the title fix(requestcard and requestlist): add loading state to request approve/decline buttons fix(ui): add loading state to request approve/decline buttons Apr 3, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/RequestCard/index.tsx`:
- Around line 264-278: The modifyRequest function currently has no error
handling; wrap the axios.post call with a catch that calls addToast with an
appropriate failure message (use the same messaging pattern as retryRequest and
a key from globalMessages, e.g., globalMessages.requestModifyFailed or add a new
key), ensure revalidate/mutate are only called on success, and keep the existing
finally block that calls setIsUpdating(false); reference modifyRequest,
retryRequest, addToast, globalMessages, revalidate, mutate and axios.post when
making the change.

In `@src/components/RequestList/RequestItem/index.tsx`:
- Around line 328-342: modifyRequest currently sets isUpdating and makes the
POST but provides no error feedback; update modifyRequest to catch errors and
call addToast with an error message (similar to retryRequest), ensure
setIsUpdating(false) remains in finally, and only revalidate/mutate on success;
reference the modifyRequest function, the addToast helper, retryRequest for the
pattern, and retain calls to revalidate() and mutate('/api/v1/request/count')
when the POST succeeds.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d72513ca-d287-41ae-96b5-3eac9b5264ba

📥 Commits

Reviewing files that changed from the base of the PR and between 6f9b743 and 9e65353.

📒 Files selected for processing (2)
  • src/components/RequestCard/index.tsx
  • src/components/RequestList/RequestItem/index.tsx

Comment thread src/components/RequestCard/index.tsx
Comment thread src/components/RequestList/RequestItem/index.tsx
Copy link
Copy Markdown
Collaborator

@fallenbagel fallenbagel left a comment

Choose a reason for hiding this comment

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

Also one small UX suggestion. Since isUpdating is a single boolean, both the approve and decline buttons show a spinner simultaneously when either is clicked. It'd feel more polished if only the clicked button showed the spinner while the other is just disabled.

You could just track which action is in flight instead with something like:

const [updatingType, setUpdatingType] = useState<'approve' | 'decline' | null>(null);

Comment thread src/components/RequestCard/index.tsx
@seerr-automation-bot seerr-automation-bot added this to the v3.2.0 milestone Apr 4, 2026
@gauthier-th gauthier-th changed the title fix(ui): add loading state to request approve/decline buttons feat(ui): add loading state to request approve/decline buttons Apr 4, 2026
@gauthier-th gauthier-th requested a review from Copilot April 4, 2026 14:19
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds UI feedback while approving/declining requests by introducing an isUpdating loading state that disables relevant actions and shows a spinner during the server-side operation.

Changes:

  • Add isUpdating state + spinner icon swap for approve/decline actions in RequestItem and RequestCard
  • Disable approve/decline (and edit) buttons while the request modification call is in flight
  • Add new i18n strings for a “failed to modify request” toast message

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
src/i18n/locale/en.json Adds new English translation keys for “failed modify” toast messages.
src/components/RequestList/RequestItem/index.tsx Introduces isUpdating to disable approve/decline/edit and show spinner while modifying a request on the Requests page.
src/components/RequestCard/index.tsx Mirrors the same loading/disabled behavior for approve/decline/edit actions in the RequestCard UI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

…e/decline buttons

When approving/declining a request, the server-side operation can take several seconds due to
Radarr/Sonarr processing. During this time, the UI gave no feedback, leaving buttons fully
interactive and the app appearing unresponsive.Add an `isUpdating` loading state to `RequestItem`
and `RequestCard` that disables buttons and swaps icons for a spinner while the request is being
processed, matching existing patterns used elsewhere in the codebase (e.g. RequestBlock, TvDetails).
Addressing coderabbitai's concerns about missing error handling
@bobziroll bobziroll force-pushed the fix-request-approve-loading-state branch from 2d1007c to fa4694d Compare April 4, 2026 19:01
@bobziroll bobziroll requested a review from fallenbagel April 4, 2026 19:02
@fallenbagel fallenbagel merged commit bd8f2d4 into seerr-team:develop Apr 6, 2026
13 checks passed
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Apr 16, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [seerr/seerr](https://github.com/seerr-team/seerr) | minor | `v3.1.1` → `v3.2.0` |

---

### Release Notes

<details>
<summary>seerr-team/seerr (seerr/seerr)</summary>

### [`v3.2.0`](https://github.com/seerr-team/seerr/releases/tag/v3.2.0)

[Compare Source](seerr-team/seerr@v3.1.1...v3.2.0)

##### [3.2.0](https://github.com/seerr-team/seerr/compare/v3.1.1..v3.2.0) - 2026-04-15

##### 🚀 Features

- *(blocklist)* Add support for collections ([#&#8203;1841](seerr-team/seerr#1841)) - ([993ae4c](seerr-team/seerr@993ae4c))
- *(discover)* Handle errors gracefully when content is available ([#&#8203;1542](seerr-team/seerr#1542)) - ([7920970](seerr-team/seerr@7920970))
- *(i18n)* Add Estonian language support ([#&#8203;2611](seerr-team/seerr#2611)) - ([56b79ff](seerr-team/seerr@56b79ff))
- *(i18n)* Add Luxembourgish language support ([#&#8203;2671](seerr-team/seerr#2671)) - ([dccdc95](seerr-team/seerr@dccdc95))
- *(i18n)* Add Vietnamese language support ([#&#8203;2670](seerr-team/seerr#2670)) - ([40edaea](seerr-team/seerr@40edaea))
- *(jellyfin)* Allow Jellyfin Guids with dashes for import-from-jellyfin endpoint ([#&#8203;2340](seerr-team/seerr#2340)) - ([3557745](seerr-team/seerr@3557745))
- *(notifications)* Add ntfy markdown formatting ([#&#8203;2602](seerr-team/seerr#2602)) - ([77f2c13](seerr-team/seerr@77f2c13))
- *(notifications)* Webhook custom headers ([#&#8203;2230](seerr-team/seerr#2230)) - ([3152f72](seerr-team/seerr@3152f72))
- *(notifications)* Add priority setting for ntfy agent ([#&#8203;2306](seerr-team/seerr#2306)) - ([61e0377](seerr-team/seerr@61e0377))
- *(person)* Add tmdb- and imdb link on person detail page ([#&#8203;2136](seerr-team/seerr#2136)) - ([fb2ee7c](seerr-team/seerr@fb2ee7c))
- *(quota)* Added support for unlimited quota days ([#&#8203;2797](seerr-team/seerr#2797)) - ([6d8b2b7](seerr-team/seerr@6d8b2b7))
- *(requests)* Mark requests as failed when Radarr/Sonarr unreachable ([#&#8203;2171](seerr-team/seerr#2171)) - ([c23117e](seerr-team/seerr@c23117e))
- *(settings)* Add blocklist region and language options ([#&#8203;1802](seerr-team/seerr#1802)) - ([ff469cb](seerr-team/seerr@ff469cb))
- *(settings)* Add help tooltips for services setup ([#&#8203;2662](seerr-team/seerr#2662)) - ([f5115da](seerr-team/seerr@f5115da))
- *(sonarr)* Add monitorNewItems option to sonarr settings & modal ([#&#8203;2071](seerr-team/seerr#2071)) - ([5c34c91](seerr-team/seerr@5c34c91))
- *(trending)* Add filter options ([#&#8203;2137](seerr-team/seerr#2137)) - ([4ce0db1](seerr-team/seerr@4ce0db1))
- *(ui)* Add loading state to request approve/decline buttons ([#&#8203;2815](seerr-team/seerr#2815)) - ([bd8f2d4](seerr-team/seerr@bd8f2d4))
- *(userlist)* Add sortable columns to User List ([#&#8203;1615](seerr-team/seerr#1615)) - ([eaf397a](seerr-team/seerr@eaf397a))
- *(webhook)* Add imdbid to webhook notification ([#&#8203;2658](seerr-team/seerr#2658)) - ([2432e8d](seerr-team/seerr@2432e8d))
- Sort quality profiles ASC in request and service configuration ([#&#8203;1805](seerr-team/seerr#1805)) - ([25e376c](seerr-team/seerr@25e376c))
- Add trailing whitespace warning on login username field ([#&#8203;2040](seerr-team/seerr#2040)) ([#&#8203;2177](seerr-team/seerr#2177)) - ([636dcb9](seerr-team/seerr@636dcb9))

##### 🐛 Bug Fixes

- *(auth)* Resolve Plex OAuth client ID mismatch ([#&#8203;2746](seerr-team/seerr#2746)) - ([15b3109](seerr-team/seerr@15b3109))
- *(email)* Correctly classify final MIME header in PGP email encryption ([#&#8203;2618](seerr-team/seerr#2618)) - ([9ec3d58](seerr-team/seerr@9ec3d58))
- *(email)* Preserve newlines in PGP key textarea fields ([#&#8203;2617](seerr-team/seerr#2617)) - ([835e917](seerr-team/seerr@835e917))
- *(emby)* Use static version in auth header for emby only ([#&#8203;2821](seerr-team/seerr#2821)) - ([fe2c041](seerr-team/seerr@fe2c041))
- *(entities)* Replace MySQL-only onUpdate with [@&#8203;UpdateDateColumn](https://github.com/UpdateDateColumn) ([#&#8203;2823](seerr-team/seerr#2823)) - ([0b8f872](seerr-team/seerr@0b8f872))
- *(generate-password)* Await setPassword to fix race condition ([#&#8203;2845](seerr-team/seerr#2845)) - ([061121c](seerr-team/seerr@061121c))
- *(issues)* Update issue timestamp when adding comments ([#&#8203;2616](seerr-team/seerr#2616)) - ([a16d046](seerr-team/seerr@a16d046))
- *(jellyfin-scanner)* Add TheMovieDb provider fallback for Jellyfin scanner ([#&#8203;2605](seerr-team/seerr#2605)) - ([10f23f0](seerr-team/seerr@10f23f0))
- *(login)* Resolve stuck transition when switching login forms ([#&#8203;2779](seerr-team/seerr#2779)) - ([735ec47](seerr-team/seerr@735ec47))
- *(media)* Exclude null mediaAddedAt entries ([#&#8203;2607](seerr-team/seerr#2607)) - ([001f6b1](seerr-team/seerr@001f6b1))
- *(migration)* Repair postgres blocklist id sequence ([#&#8203;2686](seerr-team/seerr#2686)) - ([f40323c](seerr-team/seerr@f40323c))
- *(movie,tv)* Respect display language for trailers ([#&#8203;2674](seerr-team/seerr#2674)) - ([90d407d](seerr-team/seerr@90d407d))
- *(open-api)* Add missing mediaType query parameter to blocklist and watchlist ([#&#8203;2722](seerr-team/seerr#2722)) - ([c7185d4](seerr-team/seerr@c7185d4))
- *(override-rules)* Remove users from `useEffect` dependency array ([#&#8203;2771](seerr-team/seerr#2771)) - ([be57997](seerr-team/seerr@be57997))
- *(overseerr-merge)* Sanitise corrupt quota values during overseerr migration ([#&#8203;2863](seerr-team/seerr#2863)) - ([43eff25](seerr-team/seerr@43eff25))
- *(plex)* Set 4K Plex URLs whenever ratingKey4k is set ([#&#8203;2635](seerr-team/seerr#2635)) - ([1548948](seerr-team/seerr@1548948))
- *(proxy)* Add path validation guardrail to imageproxy ([#&#8203;2531](seerr-team/seerr#2531)) - ([e086081](seerr-team/seerr@e086081))
- *(region-selector)* Prevent empty region reporting during sync ([#&#8203;2636](seerr-team/seerr#2636)) - ([fbfcb43](seerr-team/seerr@fbfcb43))
- *(request)* Record modifiedBy on retry and add route tests  ([#&#8203;2824](seerr-team/seerr#2824)) - ([20ccd4b](seerr-team/seerr@20ccd4b))
- *(request)* Correct delete permission check and await movie save ([#&#8203;2742](seerr-team/seerr#2742)) - ([6aeab38](seerr-team/seerr@6aeab38))
- *(requests)* Mark requests as completed when media is already available ([#&#8203;2462](seerr-team/seerr#2462)) - ([d25d0ca](seerr-team/seerr@d25d0ca))
- *(settings)* Persist new settings defaults to disk on startup ([#&#8203;2884](seerr-team/seerr#2884)) - ([66130be](seerr-team/seerr@66130be))
- *(settings)* Serialize settings writes and prevent partial overwrites ([#&#8203;2696](seerr-team/seerr#2696)) - ([6c52a2f](seerr-team/seerr@6c52a2f))
- *(settings)* Remove beta info banner ([#&#8203;2615](seerr-team/seerr#2615)) - ([fece753](seerr-team/seerr@fece753))
- *(setup)* Fix Plex login not proceeding after authentication ([#&#8203;2596](seerr-team/seerr#2596)) - ([1dc5154](seerr-team/seerr@1dc5154))
- *(watchlist-sync)* Handle empty watchlists on PostgreSQL ([#&#8203;2718](seerr-team/seerr#2718)) - ([865396f](seerr-team/seerr@865396f))
- Improve local login UX ([#&#8203;2849](seerr-team/seerr#2849)) - ([aef2481](seerr-team/seerr@aef2481))
- Await missing repository saves ([#&#8203;2760](seerr-team/seerr#2760)) - ([1bb638e](seerr-team/seerr@1bb638e))
- Helm chart liveness and readiness probe ([#&#8203;2755](seerr-team/seerr#2755)) - ([4434c45](seerr-team/seerr@4434c45))
- Disambiguate tmdb ids by media type across lookups ([#&#8203;2577](seerr-team/seerr#2577)) - ([0be1896](seerr-team/seerr@0be1896))
- Anchor streaming service filter check icon to each provider card ([#&#8203;2634](seerr-team/seerr#2634)) - ([94ccd47](seerr-team/seerr@94ccd47))

##### 📖 Documentation

- *(contributing-guide)* Fix a typo ([#&#8203;2807](seerr-team/seerr#2807)) - ([6f9b743](seerr-team/seerr@6f9b743))
- *(docker)* Replace backslashes by backticks in windows docker run commands \[skip-ci] ([#&#8203;2557](seerr-team/seerr#2557)) - ([40e02bb](seerr-team/seerr@40e02bb))
- Clarify Docker volume creation instructions on fresh Windows install ([#&#8203;2861](seerr-team/seerr#2861)) - ([a133930](seerr-team/seerr@a133930))
- Move network-related docs to a dedicated tab ([#&#8203;2791](seerr-team/seerr#2791)) - ([5bbdc52](seerr-team/seerr@5bbdc52))
- Promote Nixpkgs as an official installation method ([#&#8203;2775](seerr-team/seerr#2775)) - ([05ad60c](seerr-team/seerr@05ad60c))
- Fix PM2 start command syntax ([#&#8203;2713](seerr-team/seerr#2713)) - ([5373da4](seerr-team/seerr@5373da4))

##### 🚜 Refactor

- *(imageproxy)* Reduce noisy image cache logging ([#&#8203;2789](seerr-team/seerr#2789)) - ([036d000](seerr-team/seerr@036d000))
- *(notifications)* Move event from author to title field in Discord Embed ([#&#8203;2119](seerr-team/seerr#2119)) - ([a2d1e1b](seerr-team/seerr@a2d1e1b))
- *(userlist)* Responsive columns and buttons ([#&#8203;2083](seerr-team/seerr#2083)) - ([dbe1fca](seerr-team/seerr@dbe1fca))
- *(watchlistsync)* Log media request creation after success instead of before ([#&#8203;2790](seerr-team/seerr#2790)) - ([685cb44](seerr-team/seerr@685cb44))
- Rename Error components to ErrorPage ([#&#8203;2668](seerr-team/seerr#2668)) - ([d5c5f1f](seerr-team/seerr@d5c5f1f))

##### 🧪 Testing

- *(user-list)* Deflake sorting assertions ([#&#8203;2766](seerr-team/seerr#2766)) - ([20c2ed8](seerr-team/seerr@20c2ed8))
- Support server-side unit testing ([#&#8203;2485](seerr-team/seerr#2485)) - ([8563362](seerr-team/seerr@8563362))

##### ⚙️ Miscellaneous Tasks

- *(actions)* Update github actions ([#&#8203;2683](seerr-team/seerr#2683)) - ([a2154f9](seerr-team/seerr@a2154f9))
- *(actions)* Update github actions ([#&#8203;2672](seerr-team/seerr#2672)) - ([f047cab](seerr-team/seerr@f047cab))
- *(actions)* Update github actions ([#&#8203;2632](seerr-team/seerr#2632)) - ([e25c1a5](seerr-team/seerr@e25c1a5))
- *(create-tag)* Correct quote style in commit message for tag preparation ([#&#8203;2593](seerr-team/seerr#2593)) - ([687f18b](seerr-team/seerr@687f18b))
- *(docker)* Release alias for major and minor version series ([#&#8203;2881](seerr-team/seerr#2881)) - ([1cc73a8](seerr-team/seerr@1cc73a8))
- *(i18n)* Update translations from Weblate - ([e85216a](seerr-team/seerr@e85216a))
- *(i18n)* Update translations from Weblate - ([b1adc79](seerr-team/seerr@b1adc79))
- *(i18n)* Update translations from Weblate ([#&#8203;2419](seerr-team/seerr#2419)) - ([4bd7c19](seerr-team/seerr@4bd7c19))
- *(pr-validation)* Make checklist box detection case-insensitive ([#&#8203;2802](seerr-team/seerr#2802)) - ([58514ec](seerr-team/seerr@58514ec))
- *(pr-validation)* Update pull request permissions to write for validation jobs ([#&#8203;2800](seerr-team/seerr#2800)) - ([986761f](seerr-team/seerr@986761f))
- *(pr-validation)* Disable package manager cache in nodejs setup ([#&#8203;2799](seerr-team/seerr#2799)) - ([67e27d5](seerr-team/seerr@67e27d5))
- *(release)* Prepare v3.2.0 - ([e0b2a1c](seerr-team/seerr@e0b2a1c))
- *(release)* Merge develop into main - ([c5800a0](seerr-team/seerr@c5800a0))
- Bump minimum required node version to 22.19.0 ([#&#8203;2873](seerr-team/seerr#2873)) - ([891265f](seerr-team/seerr@891265f))
- Add PR validation workflow and update contributing guidelines ([#&#8203;2777](seerr-team/seerr#2777)) - ([772e83d](seerr-team/seerr@772e83d))
- Upgrade to eslint v9 ([#&#8203;2574](seerr-team/seerr#2574)) - ([36243a0](seerr-team/seerr@36243a0))
- Ignore helm scope in git-cliff ([#&#8203;2638](seerr-team/seerr#2638)) - ([4d2b658](seerr-team/seerr@4d2b658))

##### New Contributors ❤️

- [@&#8203;aslafy-z](https://github.com/aslafy-z) made their first contribution
- [@&#8203;leereilly](https://github.com/leereilly) made their first contribution
- [@&#8203;jisef](https://github.com/jisef) made their first contribution
- [@&#8203;dougrathbone](https://github.com/dougrathbone) made their first contribution
- [@&#8203;bobziroll](https://github.com/bobziroll) made their first contribution
- [@&#8203;v3DJG6GL](https://github.com/v3DJG6GL) made their first contribution
- [@&#8203;Roboroads](https://github.com/Roboroads) made their first contribution
- [@&#8203;costajohnt](https://github.com/costajohnt) made their first contribution
- [@&#8203;tiagodefendi](https://github.com/tiagodefendi) made their first contribution
- [@&#8203;Jyasapara](https://github.com/Jyasapara) made their first contribution
- [@&#8203;Sym-jay](https://github.com/Sym-jay) made their first contribution
- [@&#8203;bibi0019](https://github.com/bibi0019) made their first contribution
- [@&#8203;redondos](https://github.com/redondos) made their first contribution
- [@&#8203;bogo22](https://github.com/bogo22) made their first contribution
- [@&#8203;jabloink](https://github.com/jabloink) made their first contribution
- [@&#8203;YakGravity](https://github.com/YakGravity) made their first contribution
- [@&#8203;dj0024javia](https://github.com/dj0024javia) made their first contribution
- [@&#8203;Jerra94](https://github.com/Jerra94) made their first contribution
- [@&#8203;its-wizza](https://github.com/its-wizza) made their first contribution
- [@&#8203;ventiph](https://github.com/ventiph) made their first contribution
- [@&#8203;RinZ27](https://github.com/RinZ27) made their first contribution<!-- generated by git-cliff -->

</details>

---

### Configuration

📅 **Schedule**: 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 [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/180
Co-authored-by: bot-owl <bot@erwanleboucher.dev>
Co-committed-by: bot-owl <bot@erwanleboucher.dev>
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Apr 16, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [seerr/seerr](https://github.com/seerr-team/seerr) | minor | `v3.1.1` → `v3.2.0` |

---

### Release Notes

<details>
<summary>seerr-team/seerr (seerr/seerr)</summary>

### [`v3.2.0`](https://github.com/seerr-team/seerr/releases/tag/v3.2.0)

[Compare Source](seerr-team/seerr@v3.1.1...v3.2.0)

##### [3.2.0](https://github.com/seerr-team/seerr/compare/v3.1.1..v3.2.0) - 2026-04-15

##### 🚀 Features

- *(blocklist)* Add support for collections ([#&#8203;1841](seerr-team/seerr#1841)) - ([993ae4c](seerr-team/seerr@993ae4c))
- *(discover)* Handle errors gracefully when content is available ([#&#8203;1542](seerr-team/seerr#1542)) - ([7920970](seerr-team/seerr@7920970))
- *(i18n)* Add Estonian language support ([#&#8203;2611](seerr-team/seerr#2611)) - ([56b79ff](seerr-team/seerr@56b79ff))
- *(i18n)* Add Luxembourgish language support ([#&#8203;2671](seerr-team/seerr#2671)) - ([dccdc95](seerr-team/seerr@dccdc95))
- *(i18n)* Add Vietnamese language support ([#&#8203;2670](seerr-team/seerr#2670)) - ([40edaea](seerr-team/seerr@40edaea))
- *(jellyfin)* Allow Jellyfin Guids with dashes for import-from-jellyfin endpoint ([#&#8203;2340](seerr-team/seerr#2340)) - ([3557745](seerr-team/seerr@3557745))
- *(notifications)* Add ntfy markdown formatting ([#&#8203;2602](seerr-team/seerr#2602)) - ([77f2c13](seerr-team/seerr@77f2c13))
- *(notifications)* Webhook custom headers ([#&#8203;2230](seerr-team/seerr#2230)) - ([3152f72](seerr-team/seerr@3152f72))
- *(notifications)* Add priority setting for ntfy agent ([#&#8203;2306](seerr-team/seerr#2306)) - ([61e0377](seerr-team/seerr@61e0377))
- *(person)* Add tmdb- and imdb link on person detail page ([#&#8203;2136](seerr-team/seerr#2136)) - ([fb2ee7c](seerr-team/seerr@fb2ee7c))
- *(quota)* Added support for unlimited quota days ([#&#8203;2797](seerr-team/seerr#2797)) - ([6d8b2b7](seerr-team/seerr@6d8b2b7))
- *(requests)* Mark requests as failed when Radarr/Sonarr unreachable ([#&#8203;2171](seerr-team/seerr#2171)) - ([c23117e](seerr-team/seerr@c23117e))
- *(settings)* Add blocklist region and language options ([#&#8203;1802](seerr-team/seerr#1802)) - ([ff469cb](seerr-team/seerr@ff469cb))
- *(settings)* Add help tooltips for services setup ([#&#8203;2662](seerr-team/seerr#2662)) - ([f5115da](seerr-team/seerr@f5115da))
- *(sonarr)* Add monitorNewItems option to sonarr settings & modal ([#&#8203;2071](seerr-team/seerr#2071)) - ([5c34c91](seerr-team/seerr@5c34c91))
- *(trending)* Add filter options ([#&#8203;2137](seerr-team/seerr#2137)) - ([4ce0db1](seerr-team/seerr@4ce0db1))
- *(ui)* Add loading state to request approve/decline buttons ([#&#8203;2815](seerr-team/seerr#2815)) - ([bd8f2d4](seerr-team/seerr@bd8f2d4))
- *(userlist)* Add sortable columns to User List ([#&#8203;1615](seerr-team/seerr#1615)) - ([eaf397a](seerr-team/seerr@eaf397a))
- *(webhook)* Add imdbid to webhook notification ([#&#8203;2658](seerr-team/seerr#2658)) - ([2432e8d](seerr-team/seerr@2432e8d))
- Sort quality profiles ASC in request and service configuration ([#&#8203;1805](seerr-team/seerr#1805)) - ([25e376c](seerr-team/seerr@25e376c))
- Add trailing whitespace warning on login username field ([#&#8203;2040](seerr-team/seerr#2040)) ([#&#8203;2177](seerr-team/seerr#2177)) - ([636dcb9](seerr-team/seerr@636dcb9))

##### 🐛 Bug Fixes

- *(auth)* Resolve Plex OAuth client ID mismatch ([#&#8203;2746](seerr-team/seerr#2746)) - ([15b3109](seerr-team/seerr@15b3109))
- *(email)* Correctly classify final MIME header in PGP email encryption ([#&#8203;2618](seerr-team/seerr#2618)) - ([9ec3d58](seerr-team/seerr@9ec3d58))
- *(email)* Preserve newlines in PGP key textarea fields ([#&#8203;2617](seerr-team/seerr#2617)) - ([835e917](seerr-team/seerr@835e917))
- *(emby)* Use static version in auth header for emby only ([#&#8203;2821](seerr-team/seerr#2821)) - ([fe2c041](seerr-team/seerr@fe2c041))
- *(entities)* Replace MySQL-only onUpdate with [@&#8203;UpdateDateColumn](https://github.com/UpdateDateColumn) ([#&#8203;2823](seerr-team/seerr#2823)) - ([0b8f872](seerr-team/seerr@0b8f872))
- *(generate-password)* Await setPassword to fix race condition ([#&#8203;2845](seerr-team/seerr#2845)) - ([061121c](seerr-team/seerr@061121c))
- *(issues)* Update issue timestamp when adding comments ([#&#8203;2616](seerr-team/seerr#2616)) - ([a16d046](seerr-team/seerr@a16d046))
- *(jellyfin-scanner)* Add TheMovieDb provider fallback for Jellyfin scanner ([#&#8203;2605](seerr-team/seerr#2605)) - ([10f23f0](seerr-team/seerr@10f23f0))
- *(login)* Resolve stuck transition when switching login forms ([#&#8203;2779](seerr-team/seerr#2779)) - ([735ec47](seerr-team/seerr@735ec47))
- *(media)* Exclude null mediaAddedAt entries ([#&#8203;2607](seerr-team/seerr#2607)) - ([001f6b1](seerr-team/seerr@001f6b1))
- *(migration)* Repair postgres blocklist id sequence ([#&#8203;2686](seerr-team/seerr#2686)) - ([f40323c](seerr-team/seerr@f40323c))
- *(movie,tv)* Respect display language for trailers ([#&#8203;2674](seerr-team/seerr#2674)) - ([90d407d](seerr-team/seerr@90d407d))
- *(open-api)* Add missing mediaType query parameter to blocklist and watchlist ([#&#8203;2722](seerr-team/seerr#2722)) - ([c7185d4](seerr-team/seerr@c7185d4))
- *(override-rules)* Remove users from `useEffect` dependency array ([#&#8203;2771](seerr-team/seerr#2771)) - ([be57997](seerr-team/seerr@be57997))
- *(overseerr-merge)* Sanitise corrupt quota values during overseerr migration ([#&#8203;2863](seerr-team/seerr#2863)) - ([43eff25](seerr-team/seerr@43eff25))
- *(plex)* Set 4K Plex URLs whenever ratingKey4k is set ([#&#8203;2635](seerr-team/seerr#2635)) - ([1548948](seerr-team/seerr@1548948))
- *(proxy)* Add path validation guardrail to imageproxy ([#&#8203;2531](seerr-team/seerr#2531)) - ([e086081](seerr-team/seerr@e086081))
- *(region-selector)* Prevent empty region reporting during sync ([#&#8203;2636](seerr-team/seerr#2636)) - ([fbfcb43](seerr-team/seerr@fbfcb43))
- *(request)* Record modifiedBy on retry and add route tests  ([#&#8203;2824](seerr-team/seerr#2824)) - ([20ccd4b](seerr-team/seerr@20ccd4b))
- *(request)* Correct delete permission check and await movie save ([#&#8203;2742](seerr-team/seerr#2742)) - ([6aeab38](seerr-team/seerr@6aeab38))
- *(requests)* Mark requests as completed when media is already available ([#&#8203;2462](seerr-team/seerr#2462)) - ([d25d0ca](seerr-team/seerr@d25d0ca))
- *(settings)* Persist new settings defaults to disk on startup ([#&#8203;2884](seerr-team/seerr#2884)) - ([66130be](seerr-team/seerr@66130be))
- *(settings)* Serialize settings writes and prevent partial overwrites ([#&#8203;2696](seerr-team/seerr#2696)) - ([6c52a2f](seerr-team/seerr@6c52a2f))
- *(settings)* Remove beta info banner ([#&#8203;2615](seerr-team/seerr#2615)) - ([fece753](seerr-team/seerr@fece753))
- *(setup)* Fix Plex login not proceeding after authentication ([#&#8203;2596](seerr-team/seerr#2596)) - ([1dc5154](seerr-team/seerr@1dc5154))
- *(watchlist-sync)* Handle empty watchlists on PostgreSQL ([#&#8203;2718](seerr-team/seerr#2718)) - ([865396f](seerr-team/seerr@865396f))
- Improve local login UX ([#&#8203;2849](seerr-team/seerr#2849)) - ([aef2481](seerr-team/seerr@aef2481))
- Await missing repository saves ([#&#8203;2760](seerr-team/seerr#2760)) - ([1bb638e](seerr-team/seerr@1bb638e))
- Helm chart liveness and readiness probe ([#&#8203;2755](seerr-team/seerr#2755)) - ([4434c45](seerr-team/seerr@4434c45))
- Disambiguate tmdb ids by media type across lookups ([#&#8203;2577](seerr-team/seerr#2577)) - ([0be1896](seerr-team/seerr@0be1896))
- Anchor streaming service filter check icon to each provider card ([#&#8203;2634](seerr-team/seerr#2634)) - ([94ccd47](seerr-team/seerr@94ccd47))

##### 📖 Documentation

- *(contributing-guide)* Fix a typo ([#&#8203;2807](seerr-team/seerr#2807)) - ([6f9b743](seerr-team/seerr@6f9b743))
- *(docker)* Replace backslashes by backticks in windows docker run commands \[skip-ci] ([#&#8203;2557](seerr-team/seerr#2557)) - ([40e02bb](seerr-team/seerr@40e02bb))
- Clarify Docker volume creation instructions on fresh Windows install ([#&#8203;2861](seerr-team/seerr#2861)) - ([a133930](seerr-team/seerr@a133930))
- Move network-related docs to a dedicated tab ([#&#8203;2791](seerr-team/seerr#2791)) - ([5bbdc52](seerr-team/seerr@5bbdc52))
- Promote Nixpkgs as an official installation method ([#&#8203;2775](seerr-team/seerr#2775)) - ([05ad60c](seerr-team/seerr@05ad60c))
- Fix PM2 start command syntax ([#&#8203;2713](seerr-team/seerr#2713)) - ([5373da4](seerr-team/seerr@5373da4))

##### 🚜 Refactor

- *(imageproxy)* Reduce noisy image cache logging ([#&#8203;2789](seerr-team/seerr#2789)) - ([036d000](seerr-team/seerr@036d000))
- *(notifications)* Move event from author to title field in Discord Embed ([#&#8203;2119](seerr-team/seerr#2119)) - ([a2d1e1b](seerr-team/seerr@a2d1e1b))
- *(userlist)* Responsive columns and buttons ([#&#8203;2083](seerr-team/seerr#2083)) - ([dbe1fca](seerr-team/seerr@dbe1fca))
- *(watchlistsync)* Log media request creation after success instead of before ([#&#8203;2790](seerr-team/seerr#2790)) - ([685cb44](seerr-team/seerr@685cb44))
- Rename Error components to ErrorPage ([#&#8203;2668](seerr-team/seerr#2668)) - ([d5c5f1f](seerr-team/seerr@d5c5f1f))

##### 🧪 Testing

- *(user-list)* Deflake sorting assertions ([#&#8203;2766](seerr-team/seerr#2766)) - ([20c2ed8](seerr-team/seerr@20c2ed8))
- Support server-side unit testing ([#&#8203;2485](seerr-team/seerr#2485)) - ([8563362](seerr-team/seerr@8563362))

##### ⚙️ Miscellaneous Tasks

- *(actions)* Update github actions ([#&#8203;2683](seerr-team/seerr#2683)) - ([a2154f9](seerr-team/seerr@a2154f9))
- *(actions)* Update github actions ([#&#8203;2672](seerr-team/seerr#2672)) - ([f047cab](seerr-team/seerr@f047cab))
- *(actions)* Update github actions ([#&#8203;2632](seerr-team/seerr#2632)) - ([e25c1a5](seerr-team/seerr@e25c1a5))
- *(create-tag)* Correct quote style in commit message for tag preparation ([#&#8203;2593](seerr-team/seerr#2593)) - ([687f18b](seerr-team/seerr@687f18b))
- *(docker)* Release alias for major and minor version series ([#&#8203;2881](seerr-team/seerr#2881)) - ([1cc73a8](seerr-team/seerr@1cc73a8))
- *(i18n)* Update translations from Weblate - ([e85216a](seerr-team/seerr@e85216a))
- *(i18n)* Update translations from Weblate - ([b1adc79](seerr-team/seerr@b1adc79))
- *(i18n)* Update translations from Weblate ([#&#8203;2419](seerr-team/seerr#2419)) - ([4bd7c19](seerr-team/seerr@4bd7c19))
- *(pr-validation)* Make checklist box detection case-insensitive ([#&#8203;2802](seerr-team/seerr#2802)) - ([58514ec](seerr-team/seerr@58514ec))
- *(pr-validation)* Update pull request permissions to write for validation jobs ([#&#8203;2800](seerr-team/seerr#2800)) - ([986761f](seerr-team/seerr@986761f))
- *(pr-validation)* Disable package manager cache in nodejs setup ([#&#8203;2799](seerr-team/seerr#2799)) - ([67e27d5](seerr-team/seerr@67e27d5))
- *(release)* Prepare v3.2.0 - ([e0b2a1c](seerr-team/seerr@e0b2a1c))
- *(release)* Merge develop into main - ([c5800a0](seerr-team/seerr@c5800a0))
- Bump minimum required node version to 22.19.0 ([#&#8203;2873](seerr-team/seerr#2873)) - ([891265f](seerr-team/seerr@891265f))
- Add PR validation workflow and update contributing guidelines ([#&#8203;2777](seerr-team/seerr#2777)) - ([772e83d](seerr-team/seerr@772e83d))
- Upgrade to eslint v9 ([#&#8203;2574](seerr-team/seerr#2574)) - ([36243a0](seerr-team/seerr@36243a0))
- Ignore helm scope in git-cliff ([#&#8203;2638](seerr-team/seerr#2638)) - ([4d2b658](seerr-team/seerr@4d2b658))

##### New Contributors ❤️

- [@&#8203;aslafy-z](https://github.com/aslafy-z) made their first contribution
- [@&#8203;leereilly](https://github.com/leereilly) made their first contribution
- [@&#8203;jisef](https://github.com/jisef) made their first contribution
- [@&#8203;dougrathbone](https://github.com/dougrathbone) made their first contribution
- [@&#8203;bobziroll](https://github.com/bobziroll) made their first contribution
- [@&#8203;v3DJG6GL](https://github.com/v3DJG6GL) made their first contribution
- [@&#8203;Roboroads](https://github.com/Roboroads) made their first contribution
- [@&#8203;costajohnt](https://github.com/costajohnt) made their first contribution
- [@&#8203;tiagodefendi](https://github.com/tiagodefendi) made their first contribution
- [@&#8203;Jyasapara](https://github.com/Jyasapara) made their first contribution
- [@&#8203;Sym-jay](https://github.com/Sym-jay) made their first contribution
- [@&#8203;bibi0019](https://github.com/bibi0019) made their first contribution
- [@&#8203;redondos](https://github.com/redondos) made their first contribution
- [@&#8203;bogo22](https://github.com/bogo22) made their first contribution
- [@&#8203;jabloink](https://github.com/jabloink) made their first contribution
- [@&#8203;YakGravity](https://github.com/YakGravity) made their first contribution
- [@&#8203;dj0024javia](https://github.com/dj0024javia) made their first contribution
- [@&#8203;Jerra94](https://github.com/Jerra94) made their first contribution
- [@&#8203;its-wizza](https://github.com/its-wizza) made their first contribution
- [@&#8203;ventiph](https://github.com/ventiph) made their first contribution
- [@&#8203;RinZ27](https://github.com/RinZ27) made their first contribution<!-- generated by git-cliff -->

</details>

---

### Configuration

📅 **Schedule**: 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 [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/187
Co-authored-by: bot-owl <bot@erwanleboucher.dev>
Co-committed-by: bot-owl <bot@erwanleboucher.dev>
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Apr 16, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [seerr/seerr](https://github.com/seerr-team/seerr) | minor | `v3.1.1` → `v3.2.0` |

---

### Release Notes

<details>
<summary>seerr-team/seerr (seerr/seerr)</summary>

### [`v3.2.0`](https://github.com/seerr-team/seerr/releases/tag/v3.2.0)

[Compare Source](seerr-team/seerr@v3.1.1...v3.2.0)

##### [3.2.0](https://github.com/seerr-team/seerr/compare/v3.1.1..v3.2.0) - 2026-04-15

##### 🚀 Features

- *(blocklist)* Add support for collections ([#&#8203;1841](seerr-team/seerr#1841)) - ([993ae4c](seerr-team/seerr@993ae4c))
- *(discover)* Handle errors gracefully when content is available ([#&#8203;1542](seerr-team/seerr#1542)) - ([7920970](seerr-team/seerr@7920970))
- *(i18n)* Add Estonian language support ([#&#8203;2611](seerr-team/seerr#2611)) - ([56b79ff](seerr-team/seerr@56b79ff))
- *(i18n)* Add Luxembourgish language support ([#&#8203;2671](seerr-team/seerr#2671)) - ([dccdc95](seerr-team/seerr@dccdc95))
- *(i18n)* Add Vietnamese language support ([#&#8203;2670](seerr-team/seerr#2670)) - ([40edaea](seerr-team/seerr@40edaea))
- *(jellyfin)* Allow Jellyfin Guids with dashes for import-from-jellyfin endpoint ([#&#8203;2340](seerr-team/seerr#2340)) - ([3557745](seerr-team/seerr@3557745))
- *(notifications)* Add ntfy markdown formatting ([#&#8203;2602](seerr-team/seerr#2602)) - ([77f2c13](seerr-team/seerr@77f2c13))
- *(notifications)* Webhook custom headers ([#&#8203;2230](seerr-team/seerr#2230)) - ([3152f72](seerr-team/seerr@3152f72))
- *(notifications)* Add priority setting for ntfy agent ([#&#8203;2306](seerr-team/seerr#2306)) - ([61e0377](seerr-team/seerr@61e0377))
- *(person)* Add tmdb- and imdb link on person detail page ([#&#8203;2136](seerr-team/seerr#2136)) - ([fb2ee7c](seerr-team/seerr@fb2ee7c))
- *(quota)* Added support for unlimited quota days ([#&#8203;2797](seerr-team/seerr#2797)) - ([6d8b2b7](seerr-team/seerr@6d8b2b7))
- *(requests)* Mark requests as failed when Radarr/Sonarr unreachable ([#&#8203;2171](seerr-team/seerr#2171)) - ([c23117e](seerr-team/seerr@c23117e))
- *(settings)* Add blocklist region and language options ([#&#8203;1802](seerr-team/seerr#1802)) - ([ff469cb](seerr-team/seerr@ff469cb))
- *(settings)* Add help tooltips for services setup ([#&#8203;2662](seerr-team/seerr#2662)) - ([f5115da](seerr-team/seerr@f5115da))
- *(sonarr)* Add monitorNewItems option to sonarr settings & modal ([#&#8203;2071](seerr-team/seerr#2071)) - ([5c34c91](seerr-team/seerr@5c34c91))
- *(trending)* Add filter options ([#&#8203;2137](seerr-team/seerr#2137)) - ([4ce0db1](seerr-team/seerr@4ce0db1))
- *(ui)* Add loading state to request approve/decline buttons ([#&#8203;2815](seerr-team/seerr#2815)) - ([bd8f2d4](seerr-team/seerr@bd8f2d4))
- *(userlist)* Add sortable columns to User List ([#&#8203;1615](seerr-team/seerr#1615)) - ([eaf397a](seerr-team/seerr@eaf397a))
- *(webhook)* Add imdbid to webhook notification ([#&#8203;2658](seerr-team/seerr#2658)) - ([2432e8d](seerr-team/seerr@2432e8d))
- Sort quality profiles ASC in request and service configuration ([#&#8203;1805](seerr-team/seerr#1805)) - ([25e376c](seerr-team/seerr@25e376c))
- Add trailing whitespace warning on login username field ([#&#8203;2040](seerr-team/seerr#2040)) ([#&#8203;2177](seerr-team/seerr#2177)) - ([636dcb9](seerr-team/seerr@636dcb9))

##### 🐛 Bug Fixes

- *(auth)* Resolve Plex OAuth client ID mismatch ([#&#8203;2746](seerr-team/seerr#2746)) - ([15b3109](seerr-team/seerr@15b3109))
- *(email)* Correctly classify final MIME header in PGP email encryption ([#&#8203;2618](seerr-team/seerr#2618)) - ([9ec3d58](seerr-team/seerr@9ec3d58))
- *(email)* Preserve newlines in PGP key textarea fields ([#&#8203;2617](seerr-team/seerr#2617)) - ([835e917](seerr-team/seerr@835e917))
- *(emby)* Use static version in auth header for emby only ([#&#8203;2821](seerr-team/seerr#2821)) - ([fe2c041](seerr-team/seerr@fe2c041))
- *(entities)* Replace MySQL-only onUpdate with [@&#8203;UpdateDateColumn](https://github.com/UpdateDateColumn) ([#&#8203;2823](seerr-team/seerr#2823)) - ([0b8f872](seerr-team/seerr@0b8f872))
- *(generate-password)* Await setPassword to fix race condition ([#&#8203;2845](seerr-team/seerr#2845)) - ([061121c](seerr-team/seerr@061121c))
- *(issues)* Update issue timestamp when adding comments ([#&#8203;2616](seerr-team/seerr#2616)) - ([a16d046](seerr-team/seerr@a16d046))
- *(jellyfin-scanner)* Add TheMovieDb provider fallback for Jellyfin scanner ([#&#8203;2605](seerr-team/seerr#2605)) - ([10f23f0](seerr-team/seerr@10f23f0))
- *(login)* Resolve stuck transition when switching login forms ([#&#8203;2779](seerr-team/seerr#2779)) - ([735ec47](seerr-team/seerr@735ec47))
- *(media)* Exclude null mediaAddedAt entries ([#&#8203;2607](seerr-team/seerr#2607)) - ([001f6b1](seerr-team/seerr@001f6b1))
- *(migration)* Repair postgres blocklist id sequence ([#&#8203;2686](seerr-team/seerr#2686)) - ([f40323c](seerr-team/seerr@f40323c))
- *(movie,tv)* Respect display language for trailers ([#&#8203;2674](seerr-team/seerr#2674)) - ([90d407d](seerr-team/seerr@90d407d))
- *(open-api)* Add missing mediaType query parameter to blocklist and watchlist ([#&#8203;2722](seerr-team/seerr#2722)) - ([c7185d4](seerr-team/seerr@c7185d4))
- *(override-rules)* Remove users from `useEffect` dependency array ([#&#8203;2771](seerr-team/seerr#2771)) - ([be57997](seerr-team/seerr@be57997))
- *(overseerr-merge)* Sanitise corrupt quota values during overseerr migration ([#&#8203;2863](seerr-team/seerr#2863)) - ([43eff25](seerr-team/seerr@43eff25))
- *(plex)* Set 4K Plex URLs whenever ratingKey4k is set ([#&#8203;2635](seerr-team/seerr#2635)) - ([1548948](seerr-team/seerr@1548948))
- *(proxy)* Add path validation guardrail to imageproxy ([#&#8203;2531](seerr-team/seerr#2531)) - ([e086081](seerr-team/seerr@e086081))
- *(region-selector)* Prevent empty region reporting during sync ([#&#8203;2636](seerr-team/seerr#2636)) - ([fbfcb43](seerr-team/seerr@fbfcb43))
- *(request)* Record modifiedBy on retry and add route tests  ([#&#8203;2824](seerr-team/seerr#2824)) - ([20ccd4b](seerr-team/seerr@20ccd4b))
- *(request)* Correct delete permission check and await movie save ([#&#8203;2742](seerr-team/seerr#2742)) - ([6aeab38](seerr-team/seerr@6aeab38))
- *(requests)* Mark requests as completed when media is already available ([#&#8203;2462](seerr-team/seerr#2462)) - ([d25d0ca](seerr-team/seerr@d25d0ca))
- *(settings)* Persist new settings defaults to disk on startup ([#&#8203;2884](seerr-team/seerr#2884)) - ([66130be](seerr-team/seerr@66130be))
- *(settings)* Serialize settings writes and prevent partial overwrites ([#&#8203;2696](seerr-team/seerr#2696)) - ([6c52a2f](seerr-team/seerr@6c52a2f))
- *(settings)* Remove beta info banner ([#&#8203;2615](seerr-team/seerr#2615)) - ([fece753](seerr-team/seerr@fece753))
- *(setup)* Fix Plex login not proceeding after authentication ([#&#8203;2596](seerr-team/seerr#2596)) - ([1dc5154](seerr-team/seerr@1dc5154))
- *(watchlist-sync)* Handle empty watchlists on PostgreSQL ([#&#8203;2718](seerr-team/seerr#2718)) - ([865396f](seerr-team/seerr@865396f))
- Improve local login UX ([#&#8203;2849](seerr-team/seerr#2849)) - ([aef2481](seerr-team/seerr@aef2481))
- Await missing repository saves ([#&#8203;2760](seerr-team/seerr#2760)) - ([1bb638e](seerr-team/seerr@1bb638e))
- Helm chart liveness and readiness probe ([#&#8203;2755](seerr-team/seerr#2755)) - ([4434c45](seerr-team/seerr@4434c45))
- Disambiguate tmdb ids by media type across lookups ([#&#8203;2577](seerr-team/seerr#2577)) - ([0be1896](seerr-team/seerr@0be1896))
- Anchor streaming service filter check icon to each provider card ([#&#8203;2634](seerr-team/seerr#2634)) - ([94ccd47](seerr-team/seerr@94ccd47))

##### 📖 Documentation

- *(contributing-guide)* Fix a typo ([#&#8203;2807](seerr-team/seerr#2807)) - ([6f9b743](seerr-team/seerr@6f9b743))
- *(docker)* Replace backslashes by backticks in windows docker run commands \[skip-ci] ([#&#8203;2557](seerr-team/seerr#2557)) - ([40e02bb](seerr-team/seerr@40e02bb))
- Clarify Docker volume creation instructions on fresh Windows install ([#&#8203;2861](seerr-team/seerr#2861)) - ([a133930](seerr-team/seerr@a133930))
- Move network-related docs to a dedicated tab ([#&#8203;2791](seerr-team/seerr#2791)) - ([5bbdc52](seerr-team/seerr@5bbdc52))
- Promote Nixpkgs as an official installation method ([#&#8203;2775](seerr-team/seerr#2775)) - ([05ad60c](seerr-team/seerr@05ad60c))
- Fix PM2 start command syntax ([#&#8203;2713](seerr-team/seerr#2713)) - ([5373da4](seerr-team/seerr@5373da4))

##### 🚜 Refactor

- *(imageproxy)* Reduce noisy image cache logging ([#&#8203;2789](seerr-team/seerr#2789)) - ([036d000](seerr-team/seerr@036d000))
- *(notifications)* Move event from author to title field in Discord Embed ([#&#8203;2119](seerr-team/seerr#2119)) - ([a2d1e1b](seerr-team/seerr@a2d1e1b))
- *(userlist)* Responsive columns and buttons ([#&#8203;2083](seerr-team/seerr#2083)) - ([dbe1fca](seerr-team/seerr@dbe1fca))
- *(watchlistsync)* Log media request creation after success instead of before ([#&#8203;2790](seerr-team/seerr#2790)) - ([685cb44](seerr-team/seerr@685cb44))
- Rename Error components to ErrorPage ([#&#8203;2668](seerr-team/seerr#2668)) - ([d5c5f1f](seerr-team/seerr@d5c5f1f))

##### 🧪 Testing

- *(user-list)* Deflake sorting assertions ([#&#8203;2766](seerr-team/seerr#2766)) - ([20c2ed8](seerr-team/seerr@20c2ed8))
- Support server-side unit testing ([#&#8203;2485](seerr-team/seerr#2485)) - ([8563362](seerr-team/seerr@8563362))

##### ⚙️ Miscellaneous Tasks

- *(actions)* Update github actions ([#&#8203;2683](seerr-team/seerr#2683)) - ([a2154f9](seerr-team/seerr@a2154f9))
- *(actions)* Update github actions ([#&#8203;2672](seerr-team/seerr#2672)) - ([f047cab](seerr-team/seerr@f047cab))
- *(actions)* Update github actions ([#&#8203;2632](seerr-team/seerr#2632)) - ([e25c1a5](seerr-team/seerr@e25c1a5))
- *(create-tag)* Correct quote style in commit message for tag preparation ([#&#8203;2593](seerr-team/seerr#2593)) - ([687f18b](seerr-team/seerr@687f18b))
- *(docker)* Release alias for major and minor version series ([#&#8203;2881](seerr-team/seerr#2881)) - ([1cc73a8](seerr-team/seerr@1cc73a8))
- *(i18n)* Update translations from Weblate - ([e85216a](seerr-team/seerr@e85216a))
- *(i18n)* Update translations from Weblate - ([b1adc79](seerr-team/seerr@b1adc79))
- *(i18n)* Update translations from Weblate ([#&#8203;2419](seerr-team/seerr#2419)) - ([4bd7c19](seerr-team/seerr@4bd7c19))
- *(pr-validation)* Make checklist box detection case-insensitive ([#&#8203;2802](seerr-team/seerr#2802)) - ([58514ec](seerr-team/seerr@58514ec))
- *(pr-validation)* Update pull request permissions to write for validation jobs ([#&#8203;2800](seerr-team/seerr#2800)) - ([986761f](seerr-team/seerr@986761f))
- *(pr-validation)* Disable package manager cache in nodejs setup ([#&#8203;2799](seerr-team/seerr#2799)) - ([67e27d5](seerr-team/seerr@67e27d5))
- *(release)* Prepare v3.2.0 - ([e0b2a1c](seerr-team/seerr@e0b2a1c))
- *(release)* Merge develop into main - ([c5800a0](seerr-team/seerr@c5800a0))
- Bump minimum required node version to 22.19.0 ([#&#8203;2873](seerr-team/seerr#2873)) - ([891265f](seerr-team/seerr@891265f))
- Add PR validation workflow and update contributing guidelines ([#&#8203;2777](seerr-team/seerr#2777)) - ([772e83d](seerr-team/seerr@772e83d))
- Upgrade to eslint v9 ([#&#8203;2574](seerr-team/seerr#2574)) - ([36243a0](seerr-team/seerr@36243a0))
- Ignore helm scope in git-cliff ([#&#8203;2638](seerr-team/seerr#2638)) - ([4d2b658](seerr-team/seerr@4d2b658))

##### New Contributors ❤️

- [@&#8203;aslafy-z](https://github.com/aslafy-z) made their first contribution
- [@&#8203;leereilly](https://github.com/leereilly) made their first contribution
- [@&#8203;jisef](https://github.com/jisef) made their first contribution
- [@&#8203;dougrathbone](https://github.com/dougrathbone) made their first contribution
- [@&#8203;bobziroll](https://github.com/bobziroll) made their first contribution
- [@&#8203;v3DJG6GL](https://github.com/v3DJG6GL) made their first contribution
- [@&#8203;Roboroads](https://github.com/Roboroads) made their first contribution
- [@&#8203;costajohnt](https://github.com/costajohnt) made their first contribution
- [@&#8203;tiagodefendi](https://github.com/tiagodefendi) made their first contribution
- [@&#8203;Jyasapara](https://github.com/Jyasapara) made their first contribution
- [@&#8203;Sym-jay](https://github.com/Sym-jay) made their first contribution
- [@&#8203;bibi0019](https://github.com/bibi0019) made their first contribution
- [@&#8203;redondos](https://github.com/redondos) made their first contribution
- [@&#8203;bogo22](https://github.com/bogo22) made their first contribution
- [@&#8203;jabloink](https://github.com/jabloink) made their first contribution
- [@&#8203;YakGravity](https://github.com/YakGravity) made their first contribution
- [@&#8203;dj0024javia](https://github.com/dj0024javia) made their first contribution
- [@&#8203;Jerra94](https://github.com/Jerra94) made their first contribution
- [@&#8203;its-wizza](https://github.com/its-wizza) made their first contribution
- [@&#8203;ventiph](https://github.com/ventiph) made their first contribution
- [@&#8203;RinZ27](https://github.com/RinZ27) made their first contribution<!-- generated by git-cliff -->

</details>

---

### Configuration

📅 **Schedule**: 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 [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/187
Co-authored-by: bot-owl <bot@erwanleboucher.dev>
Co-committed-by: bot-owl <bot@erwanleboucher.dev>
lucianchauvin pushed a commit to lucianchauvin/jellyseerr that referenced this pull request Apr 20, 2026
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.

5 participants