Gauvain
5221ed1963
fix(tv): only defer subtitle selection when it navigates
...
The close-first + runAfterInteractions pattern is needed only in the player,
where selecting a subtitle can navigate (replacePlayer for a burn-in switch
while transcoding). On the item detail page the selection just updates state, so
deferring it until after the modal is dismissed re-renders the page after focus
returns and yanks TV focus — leaving navigation stuck. Gate the deferral behind
deferApplyUntilDismissed (set by the in-player caller only); the detail page runs
the selection before closing, preserving focus.
2026-07-07 00:33:09 +02:00
Gauvain
461d055c7a
chore(subtitles): address review nitpicks
...
Sort streams with a missing Index to the end of the menu (not to the top via 0,
which collides with a real Index 0). Reword the native ff-index comment to say
it is exposed for future/diagnostic use, not consumed by the current resolver.
Revert the incidental edit to the unused TVSubtitleSheet (removed separately in
the dead-code PR #1780 ).
2026-07-07 00:24:12 +02:00
Gauvain
14ea18e0d2
fix(subtitles): resolve duplicate-language and burned-in tracks by identity
...
Group-ordinal within the same-identity set (a preceding different-language
track no longer makes the first duplicate unreachable), exclude server-burned
(Encode) streams from the embedded ordinal and signal them as burnedIn, match
languages across ISO 639-1/639-2 B-T/IETF variants, and sort the menu by the
raw IsExternal flag so the order stays stable between direct play and transcode.
Adds getExternalSubtitleUrl as the single source of truth for the external-sub
URL, and short-circuits disable/burnedIn before enumerating the track list.
2026-07-06 23:48:01 +02:00
Gauvain
115c163aeb
Merge branch 'develop' into fix/subtitle-track-selection
2026-06-30 09:04:31 +02:00
Gauvain
286a3cad47
refactor: migrate app.config and Expo config plugins to TypeScript ( #1718 )
2026-06-30 09:03:47 +02:00
Gauvain
08efa1b0f7
Merge branch 'develop' into fix/subtitle-track-selection
2026-06-30 01:10:59 +02:00
Gauvain
90ea934548
fix(subtitles): address CodeRabbit review
...
- Unify external detection: isExternalSubtitle drops the bare-DeliveryUrl case
(an Hls-delivered sub has a DeliveryUrl but isn't sub-add-ed) so sorting,
loading and resolution agree; compareTracksForMenu now uses it.
- applyMpvSubtitleSelection wraps player calls in try/catch — fire-and-forget
call sites no longer risk unhandled rejections.
- VideoContext offline-transcoded branch: treat missing IsTextSubtitleStream as
text (use !isImageBasedSubtitle), matching the shared helper.
- ItemContent.tv refreshSubtitleTracks: apply compareTracksForMenu like the
initial list.
- Tests: use the @/ alias; rework the embedded cases to actually exercise
identity (reversed player order) and the ordinal fallback (same-language,
no title).
2026-06-30 01:08:50 +02:00
Gauvain
ceeacda7f9
feat(subtitles): identity-based track resolver + jellyfin-web menu order
...
resolveSubtitleTrack matches a Jellyfin subtitle against the player's real
track list (external by external-filename, embedded by language/title) instead
of positional counting, which mis-selects when externals/embedded are reordered
or the server hides embedded subs. applyMpvSubtitleSelection is the shared entry
point (reusable for the cast backend). compareTracksForMenu mirrors web's
itemHelper.sortTracks. Drops dead getMpvSubtitleId/isSubtitleInMpv. 14 unit tests.
2026-06-30 00:11:12 +02:00
Gauvain
97b6a912e0
refactor: migrate JS/MJS sources and scripts to TypeScript ( #1717 )
🚦 Security & Quality Gate / 🔍 Lint & Test (i18n:check) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Has been cancelled
🛡️ Trivy Security Scan / 🔎 Filesystem scan (push) Has been cancelled
🏗️ 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
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Has been cancelled
🏗️ Build Apps / 🍎 Build tvOS IPA (Unsigned) (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 / 🔍 Vulnerable Dependencies (push) Has been cancelled
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Has been cancelled
🚦 Security & Quality Gate / 📝 Validate PR Title (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 (typecheck) (push) Has been cancelled
2026-06-29 19:48:32 +02:00
lance chant
cc0007926d
fix: fixing some performance issues and mpv upgrade ( #1765 )
...
🏗️ 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
🛡️ Trivy Security Scan / 🔎 Filesystem scan (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 (typecheck) (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
🌐 Translation Sync / sync-translations (push) Has been cancelled
🐛 Update Issue Form Versions / 🔢 Populate version dropdown (push) Has been cancelled
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Gauvain <contact@uruk.dev >
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
2026-06-28 17:35: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
Gauvain
96116e0451
feat(settings): show Actions run number for CI builds, hide store build number ( #1711 )
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Has been cancelled
🏗️ 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
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (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
2026-06-11 11:08:07 +02:00
Gauvain
0a2dadffd2
feat(settings): graduated version tracking (build, branch, commit) ( #1677 )
...
🏗️ 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 / 🔍 Lint & Test (typecheck) (push) Has been cancelled
🛡️ Trivy Security Scan / 🔎 Filesystem scan (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
Co-authored-by: retardgerman <78982850+retardgerman@users.noreply.github.com >
2026-06-10 17:19:28 +02:00
boolemancer
1685571406
fix(downloads): Use mediaSource.Id instead of item.Id in direct download URL ( #1666 )
...
🏗️ 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
🌐 Translation Sync / sync-translations (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
🛡️ Trivy Security Scan / 🔎 Filesystem scan (push) Has been cancelled
Co-authored-by: lance chant <13349722+lancechant@users.noreply.github.com >
Co-authored-by: Gauvain <contact@uruk.dev >
2026-06-08 14:59:29 +02:00
lance chant
338fb9713b
fix: qr code scanning not working ios ( #1619 )
...
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
2026-06-01 12:38:54 +02:00
lance chant
939fd2512d
fix: max episodes count ( #1554 )
...
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
2026-06-01 12:38:34 +02:00
Fredrik Burmester
a4d4f588fb
Merge remote-tracking branch 'origin/chore/sdk-56-migration' into feat/tv-interface
...
# Conflicts:
# bun.lock
# package.json
2026-05-30 21:44:02 +02:00
Fredrik Burmester
6876ce046f
fix(player): retain subtitle language and mode across episodes
...
Carry the live subtitle/audio selection to the next episode on all TV
navigation paths (next/prev buttons, autoplay) and feed TV subtitle modal
selections back into player state via onSubtitleIndexChange so the chosen
track is what gets carried.
Rank subtitles by language plus forced/hearing-impaired mode, with a
no-language fallback (mode + codec + position), and use an explicit match
flag so a deliberate "off" selection is retained too.
2026-05-30 20:15:24 +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
62c86533b1
fix(settings): preserve app defaults for unlocked plugin values
2026-05-30 10:03:56 +02:00
Gauvain
0f86c776ba
feat(player): add chapter markers and chapter list ( #1586 )
...
Co-authored-by: retardgerman <78982850+retardgerman@users.noreply.github.com >
2026-05-30 09:22:23 +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
Gauvain
38d638cdeb
chore(deps): migrate to Expo SDK 56 (Phase 1 - compat)
...
Compatibility migration from SDK 55 to SDK 56 (react-native-tvos 0.85.3-0,
React 19.2.3). Phase 1 = breaking changes needed to build; new-feature
adoption and TypeScript 6 are deferred to Phase 2.
- Deps aligned to SDK 56 via `expo install --fix` (all expo-* 56.x, screens
4.25.2, reanimated 4.3.1, worklets 0.8.3, gesture-handler 2.31.x, svg 15.15.4)
- react-native -> react-native-tvos@0.85 .3-0; react/react-dom 19.2.3
- expo-router forked React Navigation: ran the SDK 56 codemod
(@react-navigation/* imports -> expo-router/*), removed the 3 now-unused
direct @react-navigation/* dependencies, retyped NestedTabPageStack via
expo-router Stack.Screen options
- StyleSheet.absoluteFillObject -> absoluteFill (removed from RN 0.85 types)
- app.json ios.deploymentTarget 15.6 -> 16.4 (SDK 56 minimum)
- CI: Xcode 26.2 -> 26.4; made xcode-version Renovate-managed via a
customManager + xcodereleases customDatasource
- @babel/core 7.29.7; dropped version-locked screens/codegen bun-patches
(no longer applicable on SDK 56)
Deferred to Phase 2: TypeScript 6 (toolchain: @types/node, jest globals,
UdpSocket typing), @expo/vector-icons -> @react-native-vector-icons codemod.
typecheck passes. expo-doctor: 2 known failures remain (react-native-track-player
New Arch fork; typescript major mismatch pending the deferred TS6 bump).
2026-05-28 23:56:03 +02:00
Lance Chant
6b0f8b833f
Chore: log cleanups, and Vo settings enablement
...
Added the ability to swap VO options for android only between "GPU" and
"GPU-next"
Removed some console logs from previous debugging
Added the ability to see what VO is being used to render in the video
player
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
2026-05-25 14:19:36 +02:00
Lance Chant
cc89b5df89
fix: a few playback and home recommendation issues
...
Fixed the home recommendation display to use proper images.
Fixed an issue for the subtitles background rendering
Fixed playback resume from position
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
2026-05-21 18:04:45 +02:00
Steve Byatt
11a4f14732
feat(android-tv): TV recommendations ( #1575 )
2026-05-21 13:55:26 +02:00
Steve Byatt
121ff0eea0
feat(tvos): Add TopShelf Extension ( #1561 )
2026-05-21 08:47:45 +02:00
lance chant
e84cea6427
chore: cleanup ( #1565 )
2026-05-20 15:29:24 +02:00
lance chant
92deba14f3
Adding QR code login ( #1557 )
...
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
2026-05-20 08:41:49 +02:00
lance chant
ece5750d34
Feat/tv interface uniform scale ( #1562 )
...
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
2026-05-20 07:56:39 +02:00
Fredrik Burmester
c35e97f388
feat(tv): persist downloaded opensubtitles across app restarts
2026-02-01 19:19:32 +01:00
Fredrik Burmester
bc575c26c1
feat(mpv): add opaque subtitle background with adjustable opacity (iOS only)
2026-02-01 17:29:31 +01:00
Fredrik Burmester
3d406314a4
feat(tv): add configurable inactivity timeout with auto-logout
2026-01-31 22:29:39 +01:00
Fredrik Burmester
81cf672eb7
fix: convert native.js to native.ts and fix imports for EAS builds
...
- Convert utils/profiles/native.js to TypeScript
- Add barrel export index.ts for profiles
- Update all imports to use explicit file paths instead of barrel export
- Fix .gitignore to only ignore root-level profiles/ directory
2026-01-31 18:54:23 +01:00
Fredrik Burmester
1ec887c29e
feat(tv): new login design
2026-01-31 11:49:15 +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
2c0a9b6cd9
feat(tv): migrate login to white design with navigation modals
2026-01-29 12:12:20 +01:00
Fredrik Burmester
409629bb4a
feat(tv): add background theme music playback
2026-01-28 22:08:32 +01:00
Fredrik Burmester
9763c26046
fix(player): handle remote streams and live tv containers correctly
2026-01-28 19:40:18 +01:00
Fredrik Burmester
1cbb46f0ca
feat(player): add mpv cache and buffer configuration
2026-01-26 20:46:42 +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
dca7cc99f2
feat(tv): add setting to show series poster on episode detail pages
2026-01-25 23:01:08 +01:00
Fredrik Burmester
875a017e8c
feat(tv): add scalable typography with user-configurable text size
2026-01-25 22:55:44 +01:00
Fredrik Burmester
1f454c0f12
feat(tv): add Apple TV+ style hero carousel to home page
2026-01-24 23:43:40 +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