Gauvain
bd5b95c835
fix(library): per-library filter memory + reset-to-top, reset on app close
...
Genre/year/tag filters lived in global atoms with no per-library memory and
no reset on library switch, so a selection in one library (e.g. Anime) bled
into another (e.g. Shows). Sort/order/filterBy were already per-library but
persisted across app restarts.
Move all per-library filter state to in-memory preferences — genres/years/tags
get their own, and sort/order/filterBy stop using atomWithStorage: each library
remembers its own filters for the session and everything resets when the app is
fully closed. The library mount effect restores the active library's selection,
the shared useFilterReset clears it, and collections open with a clean slate.
Also fix the grid not returning to the top on a filter/sort change or reset:
it now pins to the top instantly and re-pins once the filtered fetch settles
(FlashList was restoring the previous offset as the new content grew);
pagination is left untouched.
2026-06-25 00:32:59 +02:00
Gauvain
8a37ec46bf
fix(library): reset (X) also clears sort & order, via a shared hook
...
The mobile ResetFiltersButton and the TV filter header each had their own
active-state and reset logic, and both ignored sort & order — so the reset
chip never appeared for a changed sort and reset never restored it.
Centralise both in useFilterReset(libraryId): the chip now reflects a
non-default sort, and reset restores SortName/Ascending and clears the
per-library persisted sort/order/filter preferences so the reset sticks.
2026-06-24 23:14:55 +02:00
Gauvain
6195db2a83
Merge branch 'develop' into fix/ui-and-bugs
2026-06-15 01:36:00 +02:00
Gauvain
b7ec841118
refactor: remove dead code ( #1625 )
🏗️ Build Apps / 🤖 Build Android APK (Phone) (push) Has been cancelled
🏗️ Build Apps / 🤖 Build Android APK (TV) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build iOS IPA (Phone) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build iOS IPA (Phone - Unsigned) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build tvOS IPA (push) Has been cancelled
🏗️ Build Apps / 🍎 Build tvOS IPA (Unsigned) (push) Has been cancelled
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (push) Has been cancelled
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Has been cancelled
🚦 Security & Quality Gate / 📝 Validate PR Title (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Vulnerable Dependencies (push) Has been cancelled
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (check) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (format) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (i18n:check) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Has been cancelled
🛡️ Trivy Security Scan / 🔎 Filesystem scan (push) Has been cancelled
🌐 Translation Sync / sync-translations (push) Has been cancelled
2026-06-14 18:30:50 +02:00
Gauvino
3247bf709c
fix(review): address CodeRabbit feedback
...
- swap direct i18next t imports for the useTranslation hook so the four
touched components re-render on language change
- localize the buffer seconds unit via a buffer_seconds key instead of a
literal trailing s
- reword the useAppRouter guard comment to match its real scope
2026-06-12 15:00:49 +02:00
Gauvain
aec3444829
fix(nav): drop duplicate pushes from rapid taps
...
Tapping an item twice before the pushed screen rendered stacked the
screen twice. A push blurs the source screen synchronously in the
navigation state, so a second tap sees an unfocused screen and is
dropped (focus-based guard, no timers).
2026-06-11 00:42:52 +02:00
Gauvain
0d47c8d43a
feat(i18n): localize hardcoded UI strings and fix misspelled keys
...
Move remaining hardcoded English strings (player menus, technical-info
overlay, music/now-playing, live TV, TV search badges, MPV subtitle
settings, accessibility labels, not-found screen, session picker) to
en.json, and correct misspelled keys (occured -> occurred, autorized ->
authorized, liraries -> libraries, jellyseer -> jellyseerr) along with
their usages.
2026-06-10 22:29:16 +02:00
Alex
ceb9b5a1ae
fix(downloads): poster images not showing for downloaded content ( #1652 )
...
🏗️ Build Apps / 🤖 Build Android APK (Phone) (push) Has been cancelled
🏗️ Build Apps / 🤖 Build Android APK (TV) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build iOS IPA (Phone) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build iOS IPA (Phone - Unsigned) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build tvOS IPA (push) Has been cancelled
🏗️ Build Apps / 🍎 Build tvOS IPA (Unsigned) (push) Has been cancelled
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (push) Has been cancelled
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Has been cancelled
🚦 Security & Quality Gate / 📝 Validate PR Title (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Vulnerable Dependencies (push) Has been cancelled
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (check) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (format) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Has been cancelled
Co-authored-by: Gauvain <contact@uruk.dev >
2026-06-02 19:47:14 +02:00
Gauvain
1144ff5049
fix(player): correct prev/next episode buttons at boundaries & for missing episodes ( #1649 )
2026-06-02 19:12:21 +02:00
Alex
915a4febbb
fix(player): respect safe area in chapter list and refine UX ( #1653 )
2026-06-02 22:31:49 +10:00
Fredrik Burmester
2166bb3867
feat(sync): auto-refresh on Jellyfin LibraryChanged events
...
Handle the server's LibraryChanged WebSocket message to invalidate
library-dependent React Query caches when items are added/updated/
removed, so newly added episodes/movies appear without a manual
refresh. Debounced to coalesce a scan's burst of events.
Add useRefreshLibraryOnFocus as a fallback that re-checks on screen
focus (throttled, online-only, skips first focus), wired into home
(mobile + TV) and the library pages.
2026-05-30 13:05:43 +02:00
Fredrik Burmester
a190122eea
Merge branch 'develop' into feat/tv-interface
...
# Conflicts:
# .gitignore
# app/(auth)/(tabs)/(home)/_layout.tsx
# components/PlatformDropdown.tsx
# components/search/DiscoverFilters.tsx
# components/video-player/controls/BottomControls.tsx
# components/video-player/controls/TrickplayBubble.tsx
# modules/mpv-player/ios/MPVLayerRenderer.swift
2026-05-30 11:08:22 +02:00
Fredrik Burmester
0e531da2e0
fix(watchlists): invalidate watchlists list query on add/remove
2026-05-30 10:03:55 +02:00
lostb1t
07b79de203
fix: Do not cache background request for mediasources ( #1602 )
2026-05-30 09:11:59 +02:00
Gauvain
0ba3f44615
chore: upgrade Biome to 2.4.16, clean up lint, and fix TV password modal ( #1598 )
2026-05-29 08:32:21 +02:00
lance chant
eb02ac253a
chore: expo 55 upgrade ( #1594 )
...
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com >
2026-05-27 21:38:08 +02:00
Steve Byatt
4bef386b82
fix(tvOS): Patches for udp and screens menu button handling ( #1564 )
2026-05-20 15:30:40 +02:00
Steve Byatt
ca4f24ded0
fix: handle TV menu and back navigation ( #1559 )
2026-05-20 09:57:19 +02:00
Fredrik Burmester
c35e97f388
feat(tv): persist downloaded opensubtitles across app restarts
2026-02-01 19:19:32 +01:00
Fredrik Burmester
7d0b3be8c2
chore(tv): remove debug logs from back handler
2026-02-01 16:27:32 +01:00
Fredrik Burmester
85a74a9a6a
refactor: login page
2026-01-31 10:52:21 +01:00
Fredrik Burmester
6e85c8d54a
feat(tv): add user switching from settings
2026-01-31 09:53:54 +01:00
Fredrik Burmester
8ecb7c205b
feat(tv): add smart back button handler to prevent unwanted app exit
2026-01-29 21:53:45 +01:00
Fredrik Burmester
2c0a9b6cd9
feat(tv): migrate login to white design with navigation modals
2026-01-29 12:12:20 +01:00
Fredrik Burmester
4bea01c963
fix(tv): prevent theme music from playing twice on shared transitions
2026-01-29 07:31:34 +01:00
Fredrik Burmester
409629bb4a
feat(tv): add background theme music playback
2026-01-28 22:08:32 +01:00
Fredrik Burmester
2ff9625903
feat(tv): add long-press mark as watched action using alert dialog
2026-01-28 20:36:57 +01:00
Fredrik Burmester
7fe24369c0
feat(tv): add language-based audio and subtitle track selection
2026-01-26 19:32:06 +01:00
Fredrik Burmester
c215fda973
feat(tv): add 60s background refresh for idle screens
2026-01-24 10:48:42 +01:00
Fredrik Burmester
26e8489384
fix(tv): season modal using correct modal
2026-01-22 08:37:35 +01:00
Fredrik Burmester
be2fd53f31
fix(tv): resolve subtitle selector index mismatch using VideoContext tracks
2026-01-22 08:29:57 +01:00
Fredrik Burmester
506d8b14dc
fix(tv): wrap actor page in scrollview to fix focus navigation between sections
2026-01-20 22:15:00 +01:00
Fredrik Burmester
0353a718f3
feat(tv): seerr
2026-01-20 22:15:00 +01:00
Fredrik Burmester
f9a3a1f9f6
feat(tv): add live subtitle track refresh after opensubs download
2026-01-18 17:44:13 +01:00
Fredrik Burmester
d545ca3584
fix(tv): modals
2026-01-18 15:22:44 +01:00
Fredrik Burmester
ee3a288fa0
wip
2026-01-18 10:38:06 +01:00
Fredrik Burmester
56ffec3173
fix(player): add null guards for item in play settings
2026-01-16 21:26:56 +01:00
Fredrik Burmester
4ad103acb6
fix: conditionals for tv to build / run
2026-01-16 08:04:09 +01:00
Simon Eklundh
6957c4fd64
feat: add autorotate for landscape ( #1265 )
...
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
Co-authored-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com >
2026-01-11 22:27:19 +01:00
Alex
ad54823f96
refactor: downloads to minimize prop drilling and improve layout and design ( #1337 )
...
Co-authored-by: Alex Kim <alexkim@Alexs-MacBook-Pro.local >
Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com >
Co-authored-by: Simon-Eklundh <simon.eklundh@proton.me >
2026-01-11 17:38:41 +01:00
Fredrik Burmester
467bea7192
feat(network): add local network auto-switch feature ( #1334 )
2026-01-11 13:08:14 +01:00
Fredrik Burmester
399eb0a351
fix(chromecast): add missing MediaInfo fields
🏗️ Build Apps / 🤖 Build Android APK (Phone) (push) Has been cancelled
🏗️ Build Apps / 🤖 Build Android APK (TV) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build iOS IPA (Phone) (push) Has been cancelled
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (push) Has been cancelled
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Has been cancelled
🚦 Security & Quality Gate / 📝 Validate PR Title (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Vulnerable Dependencies (push) Has been cancelled
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (check) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (format) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Has been cancelled
2026-01-10 21:32:09 +01:00
Fredrik Burmester
f1575ca48b
feat: MPV player for both Android and iOS with added HW decoding PiP (with subtitles) ( #1332 )
...
Co-authored-by: Alex Kim <alexkim@Alexs-MacBook-Pro.local >
Co-authored-by: Alex <111128610+Alexk2309@users.noreply.github.com >
Co-authored-by: Simon-Eklundh <simon.eklundh@proton.me >
2026-01-10 19:35:27 +01:00
Fredrik Burmester
e1dd410f73
feat: airplay and chromecast for music
2026-01-06 19:10:19 +01:00
Fredrik Burmester
3453fd22b8
fix: better music modal design and favorite song
2026-01-06 17:55:37 +01:00
Fredrik Burmester
090ed98233
fix: refresh data on open page in background replace cached data
2026-01-05 21:32:41 +01:00
Fredrik Burmester
054fb05651
feat: delete playlist
🏗️ Build Apps / 🤖 Build Android APK (Phone) (push) Has been cancelled
🏗️ Build Apps / 🤖 Build Android APK (TV) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build iOS IPA (Phone) (push) Has been cancelled
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (push) Has been cancelled
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Has been cancelled
🚦 Security & Quality Gate / 📝 Validate PR Title (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Vulnerable Dependencies (push) Has been cancelled
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (check) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (format) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Has been cancelled
🌐 Translation Sync / sync-translations (push) Has been cancelled
2026-01-04 23:01:03 +01:00
Fredrik Burmester
4121502bfe
fix: remove song from playlist
2026-01-04 13:44:53 +01:00
Fredrik Burmester
ab3465aec5
feat: cache and download music
2026-01-04 12:50:41 +01:00
Fredrik Burmester
b1da9f8777
feat: add actions to song rows
2026-01-04 00:09:21 +01:00