fix(slider): add async to spring animation#2978
Conversation
📝 WalkthroughWalkthroughThe Slider component's scroll position boundary logic now includes a margin offset that adjusts when state transitions between "end" and "middle/start" occur. The animation system was refactored to convert the Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ 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. Review rate limit: 7/8 reviews remaining, refill in 7 minutes and 30 seconds.Comment |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/components/Slider/index.tsx (1)
104-142:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winReuse
handleScroll()after the animation.These branches still recompute
isStart/isEndwith the old exact thresholds, so the new 5px margin is ignored immediately after a button-triggered slide. IfnewXlands inside that buffer, the arrow state can be wrong until the debouncedonScrollcatches up.Suggested simplification
await setX.start({ from: { x: scrollPosition }, to: { x: newX }, onChange: (results) => { if (containerRef.current) { containerRef.current.scrollLeft = results.value.x; } }, reset: true, config: { friction: 60, tension: 500, velocity: 20 }, })[0]; - if (newX === 0) { - setScrollPos({ isStart: true, isEnd: false }); - } else { - setScrollPos({ isStart: false, isEnd: false }); - } + handleScroll(); } else if (direction === Direction.RIGHT) { const newX = Math.min( scrollPosition - scrollOffset + visibleItems * cardWidth, containerRef.current?.scrollWidth ?? 0 - clientWidth ); await setX.start({ from: { x: scrollPosition }, to: { x: newX }, onChange: (results) => { if (containerRef.current) { containerRef.current.scrollLeft = results.value.x; } }, reset: true, config: { friction: 60, tension: 500, velocity: 20 }, })[0]; - if (newX >= (containerRef.current?.scrollWidth ?? 0) - clientWidth) { - setScrollPos({ isStart: false, isEnd: true }); - } else { - setScrollPos({ isStart: false, isEnd: false }); - } + handleScroll(); }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/components/Slider/index.tsx` around lines 104 - 142, The branches that call setX.start(...) currently set isStart/isEnd manually using exact thresholds and ignore the new 5px buffer; replace the manual setScrollPos(...) logic by invoking the existing handleScroll() after the awaited animation so the same debounced/edge-buffer logic is reused. Specifically, in both Direction.LEFT and Direction.RIGHT branches, after the await setX.start(...) completes (and after containerRef.scrollLeft has been updated by the animation), call handleScroll() instead of the current setScrollPos(...) conditional blocks so arrow state is computed consistently (use the existing containerRef, newX and handleScroll function).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In `@src/components/Slider/index.tsx`:
- Around line 104-142: The branches that call setX.start(...) currently set
isStart/isEnd manually using exact thresholds and ignore the new 5px buffer;
replace the manual setScrollPos(...) logic by invoking the existing
handleScroll() after the awaited animation so the same debounced/edge-buffer
logic is reused. Specifically, in both Direction.LEFT and Direction.RIGHT
branches, after the await setX.start(...) completes (and after
containerRef.scrollLeft has been updated by the animation), call handleScroll()
instead of the current setScrollPos(...) conditional blocks so arrow state is
computed consistently (use the existing containerRef, newX and handleScroll
function).
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 3468cf77-b1f5-4f1e-a3db-4e05e14e16c7
📒 Files selected for processing (1)
src/components/Slider/index.tsx
|
What do you think about coderabbit's suggestion ? |
I think that it's irrelevant in practice. The slider buttons move the scrollbar by a screen size to the left/right, and the Math.max / Math.min adds a threshold to block them at the very beginning/end. The goal of the threshold was to fix a minor issue I had while testing the fix, where my browser didn't let me scroll (with my mouse) without forcing it to the end of the scrollbar. |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [seerr/seerr](https://github.com/seerr-team/seerr) | minor | `v3.2.0` → `v3.3.0` | --- ### Release Notes <details> <summary>seerr-team/seerr (seerr/seerr)</summary> ### [`v3.3.0`](https://github.com/seerr-team/seerr/releases/tag/v3.3.0) [Compare Source](seerr-team/seerr@v3.2.0...v3.3.0) ##### [3.3.0](https://github.com/seerr-team/seerr/compare/v3.2.0..v3.3.0) - 2026-06-02 ##### 🚀 Features - *(db)* Add DB\_POOL\_SIZE environment variable for postgres connection pool ([#​2990](seerr-team/seerr#2990)) - ([f093c69](seerr-team/seerr@f093c69)) - *(i18n)* Add server-side i18n for notification agents ([#​2731](seerr-team/seerr#2731)) - ([cd257ba](seerr-team/seerr@cd257ba)) - *(notification)* Add support for public seerr logo in email ([#​3036](seerr-team/seerr#3036)) - ([a8f147d](seerr-team/seerr@a8f147d)) - *(notifications)* Support multiple Discord IDs ([#​2712](seerr-team/seerr#2712)) - ([63175f5](seerr-team/seerr@63175f5)) - Add plex media ratingKey and ratingKey4k to webhook payload and… ([#​1812](seerr-team/seerr#1812)) - ([9b7b50b](seerr-team/seerr@9b7b50b)) - Add route to fetch user by jellyfin id ([#​2074](seerr-team/seerr#2074)) - ([15296a0](seerr-team/seerr@15296a0)) - Filter out "Thanks" credits when looking at a person's credits ([#​2370](seerr-team/seerr#2370)) - ([d024849](seerr-team/seerr@d024849)) ##### 🐛 Bug Fixes - *(auth)* Drop popup.closed check in Plex pin poll ([#​2941](seerr-team/seerr#2941)) - ([ce9643c](seerr-team/seerr@ce9643c)) - *(availability-sync)* Detect deleted seasons when media server retains empty season metadata ([#​2850](seerr-team/seerr#2850)) - ([9c34864](seerr-team/seerr@9c34864)) - *(discover)* Preserve keyword filter input focus after selection ([#​2962](seerr-team/seerr#2962)) - ([32169d9](seerr-team/seerr@32169d9)) - *(docs)* Enable trailingSlash to prevent 404 flash on direct navigation ([#​3039](seerr-team/seerr#3039)) - ([df105b8](seerr-team/seerr@df105b8)) - *(docs)* Switch to SWC minimizer to fix broken runtime bundle - ([d88242f](seerr-team/seerr@d88242f)) - *(docs)* Bump openapi docs packages to 5.0.2 ([#​3027](seerr-team/seerr#3027)) - ([080c68a](seerr-team/seerr@080c68a)) - *(entity)* Set the default value of UpdateDateColumn to CURRENT\_TIMESTAMP ([#​2913](seerr-team/seerr#2913)) - ([86e780e](seerr-team/seerr@86e780e)) - *(external-link)* Replace TMDB ID with IMDB ID for Trakt links ([#​2934](seerr-team/seerr#2934)) - ([f078da8](seerr-team/seerr@f078da8)) - *(imdbRadarrProxy)* Pass headers and nodeCache as options instead of params ([#​2900](seerr-team/seerr#2900)) - ([7861db4](seerr-team/seerr@7861db4)) - *(issuedescription)* Fix issue display lists in IssueDescription ([#​2972](seerr-team/seerr#2972)) - ([ce47cfb](seerr-team/seerr@ce47cfb)) - *(media)* Clean up watchlist on error card delete ([#​3073](seerr-team/seerr#3073)) - ([ee915b9](seerr-team/seerr@ee915b9)) - *(media-request)* Remove cascade from modifiedBy to prevent user column wipe ([#​2911](seerr-team/seerr#2911)) - ([2dfea0c](seerr-team/seerr@2dfea0c)) - *(ntfy)* Save priority field as number instead of string ([#​3096](seerr-team/seerr#3096)) - ([2fa535d](seerr-team/seerr@2fa535d)) - *(ntfy)* Remove undefined fields from ntfy payload ([#​2931](seerr-team/seerr#2931)) - ([377bf65](seerr-team/seerr@377bf65)) - *(override-rules)* Use find() instead of index lookup for service resolution ([#​2903](seerr-team/seerr#2903)) - ([5fdedb1](seerr-team/seerr@5fdedb1)) - *(plex-watchlist-sync)* Handle MediaContainer.Video fallback in watchlist sync ([#​2992](seerr-team/seerr#2992)) - ([99f8520](seerr-team/seerr@99f8520)) - *(request)* Restore media status correctly when deleting requests ([#​3064](seerr-team/seerr#3064)) - ([ff88d52](seerr-team/seerr@ff88d52)) - *(scanners)* Reset orphaned processing media from deleted Radarr/Sonarr entries ([#​2757](seerr-team/seerr#2757)) - ([198e4e5](seerr-team/seerr@198e4e5)) - *(scanners)* Ignore unknown seasons in availability rollup and skip empty placeholder seasons ([#​2958](seerr-team/seerr#2958)) - ([ce51f6a](seerr-team/seerr@ce51f6a)) - *(search)* Replace "TV" with "Series" in search placeholder ([#​3067](seerr-team/seerr#3067)) - ([c04172a](seerr-team/seerr@c04172a)) - *(slider)* Add async to spring animation ([#​2978](seerr-team/seerr#2978)) - ([5267611](seerr-team/seerr@5267611)) - *(tag)* Use inset ring to avoid clipped outlines ([#​2985](seerr-team/seerr#2985)) - ([cf87205](seerr-team/seerr@cf87205)) - *(tvrequest)* Allow special episodes when partial series requests are disabled ([#​2973](seerr-team/seerr#2973)) - ([b32ab02](seerr-team/seerr@b32ab02)) - *(users)* Correct auth middleware for web push subscription ([#​3005](seerr-team/seerr#3005)) - ([bd27f2d](seerr-team/seerr@bd27f2d)) - *(watchlistsync)* Re-request deleted media from watchlist ([#​3072](seerr-team/seerr#3072)) - ([2588e49](seerr-team/seerr@2588e49)) - Update series status to partially available when seasons are missing ([#​3044](seerr-team/seerr#3044)) - ([4ed29cf](seerr-team/seerr@4ed29cf)) - Add missing "key" to React arrays ([#​3043](seerr-team/seerr#3043)) - ([4fa2c71](seerr-team/seerr@4fa2c71)) - Send availability notification if media is available before approval ([#​2819](seerr-team/seerr#2819)) - ([d426e1e](seerr-team/seerr@d426e1e)) - Normalize webhook payload encoding to support raw JSON inputs ([#​2641](seerr-team/seerr#2641)) - ([5b45806](seerr-team/seerr@5b45806)) ##### 📖 Documentation - *(blog)* Add v3.3.0 release blog post ([#​3098](seerr-team/seerr#3098)) - ([759e359](seerr-team/seerr@759e359)) - *(fail2ban)* Add fail2ban documentation ([#​2894](seerr-team/seerr#2894)) - ([39e9f1f](seerr-team/seerr@39e9f1f)) - *(nixpkgs)* Add documentation for nixpkgs 26.05 ([#​3089](seerr-team/seerr#3089)) - ([5fc7a40](seerr-team/seerr@5fc7a40)) - Add REST API documentation ([#​2981](seerr-team/seerr#2981)) - ([7aa1470](seerr-team/seerr@7aa1470)) - Add Terraform/OpenTofu provider page ([#​2967](seerr-team/seerr#2967)) - ([811126d](seerr-team/seerr@811126d)) ##### 🚜 Refactor - *(docs)* Move REST API docs to navbar and dedicated sidebar ([#​3040](seerr-team/seerr#3040)) - ([08b7bd4](seerr-team/seerr@08b7bd4)) - *(logs)* Align failed login attempt message with failed sign-i… ([#​2914](seerr-team/seerr#2914)) - ([3e4bf1b](seerr-team/seerr@3e4bf1b)) - Replace react-toast-notifications with react-hot-toast ([#​3004](seerr-team/seerr#3004)) - ([dfde4d3](seerr-team/seerr@dfde4d3)) ##### ⚙️ Miscellaneous Tasks - *(actions)* Update github actions ([#​3028](seerr-team/seerr#3028)) - ([6bb402a](seerr-team/seerr@6bb402a)) - *(actions)* Update github actions ([#​2982](seerr-team/seerr#2982)) - ([20dbc30](seerr-team/seerr@20dbc30)) - *(actions)* Update github actions (major) ([#​2947](seerr-team/seerr#2947)) - ([952261b](seerr-team/seerr@952261b)) - *(actions)* Update taiki-e/install-action action to v2.75.18 ([#​2961](seerr-team/seerr#2961)) - ([d50bdad](seerr-team/seerr@d50bdad)) - *(actions)* Update github actions ([#​2945](seerr-team/seerr#2945)) - ([60a2a87](seerr-team/seerr@60a2a87)) - *(create-tag)* Add gh token to avoid api rate limit in tag version retrieval ([#​2886](seerr-team/seerr#2886)) - ([85bfdb2](seerr-team/seerr@85bfdb2)) - *(i18n)* Update translations from Weblate - ([73fcfd2](seerr-team/seerr@73fcfd2)) - *(i18n)* Update translations from Weblate - ([788311a](seerr-team/seerr@788311a)) - *(i18n)* Update translations from Weblate - ([6eb43e0](seerr-team/seerr@6eb43e0)) - *(i18n)* Update translations from Weblate - ([656e33f](seerr-team/seerr@656e33f)) - *(i18n)* Update translations from Weblate - ([4742018](seerr-team/seerr@4742018)) - *(i18n)* Update translations from Weblate - ([2d4cd03](seerr-team/seerr@2d4cd03)) - *(i18n)* Update translations from Weblate - ([3c249c7](seerr-team/seerr@3c249c7)) - *(i18n)* Update translations from Weblate - ([4e4e673](seerr-team/seerr@4e4e673)) - *(i18n)* Update translations from Weblate ([#​2906](seerr-team/seerr#2906)) - ([6513915](seerr-team/seerr@6513915)) - *(i18n)* Update translations from Weblate ([#​2901](seerr-team/seerr#2901)) - ([56ab94a](seerr-team/seerr@56ab94a)) - *(release)* Prepare v3.2.0 - ([703faf9](seerr-team/seerr@703faf9)) - *(release)* Merge develop into main - ([0621e3d](seerr-team/seerr@0621e3d)) - *(release)* Remove git-cliff footer in release changelog ([#​2986](seerr-team/seerr#2986)) - ([550c3bc](seerr-team/seerr@550c3bc)) - Cleanup intl polyfills and dev config ([#​2965](seerr-team/seerr#2965)) - ([ba6ed6c](seerr-team/seerr@ba6ed6c)) - Ignore Renovate bot on irrelevant jobs ([#​2904](seerr-team/seerr#2904)) - ([1d2aa76](seerr-team/seerr@1d2aa76)) ##### New Contributors ❤️ - [@​defaultdino](https://github.com/defaultdino) made their first contribution - [@​haribo-hyung](https://github.com/haribo-hyung) made their first contribution - [@​felixschndr](https://github.com/felixschndr) made their first contribution - [@​burakemirsezen](https://github.com/burakemirsezen) made their first contribution - [@​death2all110](https://github.com/death2all110) made their first contribution - [@​fredrikburmester](https://github.com/fredrikburmester) made their first contribution - [@​marcinjurczak](https://github.com/marcinjurczak) made their first contribution - [@​Josh-Archer](https://github.com/Josh-Archer) made their first contribution - [@​Finchow](https://github.com/Finchow) made their first contribution - [@​kyle-engler](https://github.com/kyle-engler) made their first contribution - [@​danjuv](https://github.com/danjuv) made their first contribution - [@​aldoeliacim](https://github.com/aldoeliacim) made their first contribution </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/791
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [seerr/seerr](https://github.com/seerr-team/seerr) | minor | `v3.2.0` → `v3.3.0` | --- ### Release Notes <details> <summary>seerr-team/seerr (seerr/seerr)</summary> ### [`v3.3.0`](https://github.com/seerr-team/seerr/releases/tag/v3.3.0) [Compare Source](seerr-team/seerr@v3.2.0...v3.3.0) ##### [3.3.0](https://github.com/seerr-team/seerr/compare/v3.2.0..v3.3.0) - 2026-06-02 ##### 🚀 Features - *(db)* Add DB\_POOL\_SIZE environment variable for postgres connection pool ([#​2990](seerr-team/seerr#2990)) - ([f093c69](seerr-team/seerr@f093c69)) - *(i18n)* Add server-side i18n for notification agents ([#​2731](seerr-team/seerr#2731)) - ([cd257ba](seerr-team/seerr@cd257ba)) - *(notification)* Add support for public seerr logo in email ([#​3036](seerr-team/seerr#3036)) - ([a8f147d](seerr-team/seerr@a8f147d)) - *(notifications)* Support multiple Discord IDs ([#​2712](seerr-team/seerr#2712)) - ([63175f5](seerr-team/seerr@63175f5)) - Add plex media ratingKey and ratingKey4k to webhook payload and… ([#​1812](seerr-team/seerr#1812)) - ([9b7b50b](seerr-team/seerr@9b7b50b)) - Add route to fetch user by jellyfin id ([#​2074](seerr-team/seerr#2074)) - ([15296a0](seerr-team/seerr@15296a0)) - Filter out "Thanks" credits when looking at a person's credits ([#​2370](seerr-team/seerr#2370)) - ([d024849](seerr-team/seerr@d024849)) ##### 🐛 Bug Fixes - *(auth)* Drop popup.closed check in Plex pin poll ([#​2941](seerr-team/seerr#2941)) - ([ce9643c](seerr-team/seerr@ce9643c)) - *(availability-sync)* Detect deleted seasons when media server retains empty season metadata ([#​2850](seerr-team/seerr#2850)) - ([9c34864](seerr-team/seerr@9c34864)) - *(discover)* Preserve keyword filter input focus after selection ([#​2962](seerr-team/seerr#2962)) - ([32169d9](seerr-team/seerr@32169d9)) - *(docs)* Enable trailingSlash to prevent 404 flash on direct navigation ([#​3039](seerr-team/seerr#3039)) - ([df105b8](seerr-team/seerr@df105b8)) - *(docs)* Switch to SWC minimizer to fix broken runtime bundle - ([d88242f](seerr-team/seerr@d88242f)) - *(docs)* Bump openapi docs packages to 5.0.2 ([#​3027](seerr-team/seerr#3027)) - ([080c68a](seerr-team/seerr@080c68a)) - *(entity)* Set the default value of UpdateDateColumn to CURRENT\_TIMESTAMP ([#​2913](seerr-team/seerr#2913)) - ([86e780e](seerr-team/seerr@86e780e)) - *(external-link)* Replace TMDB ID with IMDB ID for Trakt links ([#​2934](seerr-team/seerr#2934)) - ([f078da8](seerr-team/seerr@f078da8)) - *(imdbRadarrProxy)* Pass headers and nodeCache as options instead of params ([#​2900](seerr-team/seerr#2900)) - ([7861db4](seerr-team/seerr@7861db4)) - *(issuedescription)* Fix issue display lists in IssueDescription ([#​2972](seerr-team/seerr#2972)) - ([ce47cfb](seerr-team/seerr@ce47cfb)) - *(media)* Clean up watchlist on error card delete ([#​3073](seerr-team/seerr#3073)) - ([ee915b9](seerr-team/seerr@ee915b9)) - *(media-request)* Remove cascade from modifiedBy to prevent user column wipe ([#​2911](seerr-team/seerr#2911)) - ([2dfea0c](seerr-team/seerr@2dfea0c)) - *(ntfy)* Save priority field as number instead of string ([#​3096](seerr-team/seerr#3096)) - ([2fa535d](seerr-team/seerr@2fa535d)) - *(ntfy)* Remove undefined fields from ntfy payload ([#​2931](seerr-team/seerr#2931)) - ([377bf65](seerr-team/seerr@377bf65)) - *(override-rules)* Use find() instead of index lookup for service resolution ([#​2903](seerr-team/seerr#2903)) - ([5fdedb1](seerr-team/seerr@5fdedb1)) - *(plex-watchlist-sync)* Handle MediaContainer.Video fallback in watchlist sync ([#​2992](seerr-team/seerr#2992)) - ([99f8520](seerr-team/seerr@99f8520)) - *(request)* Restore media status correctly when deleting requests ([#​3064](seerr-team/seerr#3064)) - ([ff88d52](seerr-team/seerr@ff88d52)) - *(scanners)* Reset orphaned processing media from deleted Radarr/Sonarr entries ([#​2757](seerr-team/seerr#2757)) - ([198e4e5](seerr-team/seerr@198e4e5)) - *(scanners)* Ignore unknown seasons in availability rollup and skip empty placeholder seasons ([#​2958](seerr-team/seerr#2958)) - ([ce51f6a](seerr-team/seerr@ce51f6a)) - *(search)* Replace "TV" with "Series" in search placeholder ([#​3067](seerr-team/seerr#3067)) - ([c04172a](seerr-team/seerr@c04172a)) - *(slider)* Add async to spring animation ([#​2978](seerr-team/seerr#2978)) - ([5267611](seerr-team/seerr@5267611)) - *(tag)* Use inset ring to avoid clipped outlines ([#​2985](seerr-team/seerr#2985)) - ([cf87205](seerr-team/seerr@cf87205)) - *(tvrequest)* Allow special episodes when partial series requests are disabled ([#​2973](seerr-team/seerr#2973)) - ([b32ab02](seerr-team/seerr@b32ab02)) - *(users)* Correct auth middleware for web push subscription ([#​3005](seerr-team/seerr#3005)) - ([bd27f2d](seerr-team/seerr@bd27f2d)) - *(watchlistsync)* Re-request deleted media from watchlist ([#​3072](seerr-team/seerr#3072)) - ([2588e49](seerr-team/seerr@2588e49)) - Update series status to partially available when seasons are missing ([#​3044](seerr-team/seerr#3044)) - ([4ed29cf](seerr-team/seerr@4ed29cf)) - Add missing "key" to React arrays ([#​3043](seerr-team/seerr#3043)) - ([4fa2c71](seerr-team/seerr@4fa2c71)) - Send availability notification if media is available before approval ([#​2819](seerr-team/seerr#2819)) - ([d426e1e](seerr-team/seerr@d426e1e)) - Normalize webhook payload encoding to support raw JSON inputs ([#​2641](seerr-team/seerr#2641)) - ([5b45806](seerr-team/seerr@5b45806)) ##### 📖 Documentation - *(blog)* Add v3.3.0 release blog post ([#​3098](seerr-team/seerr#3098)) - ([759e359](seerr-team/seerr@759e359)) - *(fail2ban)* Add fail2ban documentation ([#​2894](seerr-team/seerr#2894)) - ([39e9f1f](seerr-team/seerr@39e9f1f)) - *(nixpkgs)* Add documentation for nixpkgs 26.05 ([#​3089](seerr-team/seerr#3089)) - ([5fc7a40](seerr-team/seerr@5fc7a40)) - Add REST API documentation ([#​2981](seerr-team/seerr#2981)) - ([7aa1470](seerr-team/seerr@7aa1470)) - Add Terraform/OpenTofu provider page ([#​2967](seerr-team/seerr#2967)) - ([811126d](seerr-team/seerr@811126d)) ##### 🚜 Refactor - *(docs)* Move REST API docs to navbar and dedicated sidebar ([#​3040](seerr-team/seerr#3040)) - ([08b7bd4](seerr-team/seerr@08b7bd4)) - *(logs)* Align failed login attempt message with failed sign-i… ([#​2914](seerr-team/seerr#2914)) - ([3e4bf1b](seerr-team/seerr@3e4bf1b)) - Replace react-toast-notifications with react-hot-toast ([#​3004](seerr-team/seerr#3004)) - ([dfde4d3](seerr-team/seerr@dfde4d3)) ##### ⚙️ Miscellaneous Tasks - *(actions)* Update github actions ([#​3028](seerr-team/seerr#3028)) - ([6bb402a](seerr-team/seerr@6bb402a)) - *(actions)* Update github actions ([#​2982](seerr-team/seerr#2982)) - ([20dbc30](seerr-team/seerr@20dbc30)) - *(actions)* Update github actions (major) ([#​2947](seerr-team/seerr#2947)) - ([952261b](seerr-team/seerr@952261b)) - *(actions)* Update taiki-e/install-action action to v2.75.18 ([#​2961](seerr-team/seerr#2961)) - ([d50bdad](seerr-team/seerr@d50bdad)) - *(actions)* Update github actions ([#​2945](seerr-team/seerr#2945)) - ([60a2a87](seerr-team/seerr@60a2a87)) - *(create-tag)* Add gh token to avoid api rate limit in tag version retrieval ([#​2886](seerr-team/seerr#2886)) - ([85bfdb2](seerr-team/seerr@85bfdb2)) - *(i18n)* Update translations from Weblate - ([73fcfd2](seerr-team/seerr@73fcfd2)) - *(i18n)* Update translations from Weblate - ([788311a](seerr-team/seerr@788311a)) - *(i18n)* Update translations from Weblate - ([6eb43e0](seerr-team/seerr@6eb43e0)) - *(i18n)* Update translations from Weblate - ([656e33f](seerr-team/seerr@656e33f)) - *(i18n)* Update translations from Weblate - ([4742018](seerr-team/seerr@4742018)) - *(i18n)* Update translations from Weblate - ([2d4cd03](seerr-team/seerr@2d4cd03)) - *(i18n)* Update translations from Weblate - ([3c249c7](seerr-team/seerr@3c249c7)) - *(i18n)* Update translations from Weblate - ([4e4e673](seerr-team/seerr@4e4e673)) - *(i18n)* Update translations from Weblate ([#​2906](seerr-team/seerr#2906)) - ([6513915](seerr-team/seerr@6513915)) - *(i18n)* Update translations from Weblate ([#​2901](seerr-team/seerr#2901)) - ([56ab94a](seerr-team/seerr@56ab94a)) - *(release)* Prepare v3.2.0 - ([703faf9](seerr-team/seerr@703faf9)) - *(release)* Merge develop into main - ([0621e3d](seerr-team/seerr@0621e3d)) - *(release)* Remove git-cliff footer in release changelog ([#​2986](seerr-team/seerr#2986)) - ([550c3bc](seerr-team/seerr@550c3bc)) - Cleanup intl polyfills and dev config ([#​2965](seerr-team/seerr#2965)) - ([ba6ed6c](seerr-team/seerr@ba6ed6c)) - Ignore Renovate bot on irrelevant jobs ([#​2904](seerr-team/seerr#2904)) - ([1d2aa76](seerr-team/seerr@1d2aa76)) ##### New Contributors ❤️ - [@​defaultdino](https://github.com/defaultdino) made their first contribution - [@​haribo-hyung](https://github.com/haribo-hyung) made their first contribution - [@​felixschndr](https://github.com/felixschndr) made their first contribution - [@​burakemirsezen](https://github.com/burakemirsezen) made their first contribution - [@​death2all110](https://github.com/death2all110) made their first contribution - [@​fredrikburmester](https://github.com/fredrikburmester) made their first contribution - [@​marcinjurczak](https://github.com/marcinjurczak) made their first contribution - [@​Josh-Archer](https://github.com/Josh-Archer) made their first contribution - [@​Finchow](https://github.com/Finchow) made their first contribution - [@​kyle-engler](https://github.com/kyle-engler) made their first contribution - [@​danjuv](https://github.com/danjuv) made their first contribution - [@​aldoeliacim](https://github.com/aldoeliacim) made their first contribution </details> --- ### Configuration 📅 **Schedule**: (in timezone America/New_York) - 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDYuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIwNi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19--> Reviewed-on: https://git.greyrock.io/greyrock-labs/home-ops/pulls/177
Description
Due to the update of
react-springto v10 in #2874, the buttons of the slider in the Discover page where not working anymore.This PRs fixes this and also adds a small
marginto enable/disable the buttons when the scroll is very near the beginning/end of the scrollWidth.How Has This Been Tested?
Click on the slider buttons on the homepage
Screenshots / Logs (if applicable)
These buttons where not working anymore.

Checklist:
pnpm buildpnpm i18n:extractSummary by CodeRabbit