Gauvain
558fb41833
fix(downloads): refresh BaseItemDto for Chapters before queuing offline
...
Some screens fetch items with a fields filter (e.g. series detail uses
["MediaSources", "MediaStreams", "Overview", "Trickplay"]) and pass the
resulting DTO straight into the download flow. Jellyfin only returns
Chapters in that case when explicitly listed, so the snapshot we store
under DownloadedItem.item carries Chapters: undefined and the offline
player renders no ticks / list / current-chapter label.
initiateDownload now re-fetches the item via getUserLibraryApi.getItem
(no fields filter -> full DTO incl. Chapters) when Chapters is missing,
and uses the enriched item for both getDownloadUrl and the snapshot. If
the refresh call fails we log and fall back to the original item — the
download itself still proceeds.
Trickplay offline already worked (useTrickplay reads trickPlayData.path
from the downloaded sheets).
2026-05-27 16:52:08 +02:00
Gauvain
98b90f5bdb
feat(player): wire chapter UI into native player controls
...
Threads chapters + duration through Controls -> BottomControls so the
ChapterTicks overlay, ChapterList modal and current-chapter label have
the data they need.
BottomControls
- Memoizes chapterMarkerList (markers within the media duration) once
per (chapters, durationMs) change and feeds it to ChapterTicks.
- hasChapters gates the bookmark icon + list modal; nothing renders
when chapters are missing or below two real markers.
- Current chapter name shown as a small label below the title/year
during playback; the same helper feeds the trickplay bubble while
scrubbing. Both labels disappear gracefully when chapters are absent.
useVideoSlider
- Adds seekTo(value): a programmatic seek for non-gesture entry points
(chapter list, hot-keys). Reads isPlaying directly instead of
wasPlayingRef — which is only populated inside handleSliderStart, so
a tap-to-seek on the chapter list previously either stranded paused
playback or auto-resumed against a manual pause.
TrickplayBubble
- Adds an optional chapterName prop; renders a small left-aligned
overlay inside the preview frame (Jellyfin web style) showing chapter
name above the timestamp. Hides the chapter line entirely when null.
- zIndex + elevation so the bubble lands in front of the title /
surrounding overlays.
- Slight reposition (bottom -20, paddingTop 12) brings the bubble
closer to the slider.
translations/en.json
- chapters.title / chapters.chapter_number / chapters.open /
chapters.close keys for the list modal and the bookmark a11y label.
2026-05-27 16:39:50 +02:00
Gauvain
5f64ce49c0
feat(chapters): add ChapterTicks overlay and ChapterList modal
...
Two presentational components, both player-agnostic:
ChapterTicks — absolute overlay that draws tick marks on the progress
slider, one per chapter start (skipping the leading 0ms marker).
- Reads markers from a memoized prop computed by the caller so the
filter/sort runs at most once per chapters change, not per render.
- Snaps tick position AND width to the device pixel grid via
PixelRatio.roundToNearestPixel(). Without this, fractional dp values
land at different sub-pixel fractions on non-integer density displays
(420dpi -> 2.625x ratio) and Android anti-aliases each tick
differently, making some look visibly thicker than others.
- Tick colour defaults to rgba(0,0,0,0.55), contrasting against both
the filled progress (#fff) and the unfilled track so ticks stay
visible as playback advances.
- pointerEvents="none" so the slider underneath still receives touches.
- overflow: "visible" so taller ticks can bleed past the parent track.
ChapterList — bottom-sheet modal listing chapters with their timestamps.
- Highlights the currently active row (purple primary tint).
- Falls back to a localized "Chapter N" label when a chapter has no name.
- Imperatively scrolls to the active row each time the sheet becomes
visible. <Modal> keeps its children mounted across visible toggles,
so FlatList.initialScrollIndex (which only fires at first mount) would
only work on the very first open. Uses a ref + useEffect on `visible`
+ scrollToIndex inside requestAnimationFrame, with an
onScrollToIndexFailed fallback for indices outside the render window.
- All static styles in StyleSheet.create() — only dynamic backgroundColor
/ text colour stays inline. The list re-renders on every playback tick
so cutting the per-render style allocations is worth it.
- Colors from constants/Colors.ts (primary, background, text, icon),
no hardcoded hex.
2026-05-27 16:39:32 +02:00
Fredrik Burmester
b0bb6c6c9a
feat: add technical stream info overlay for MPV player
2026-01-12 21:55:32 +01:00
Simon Eklundh
7a0f70778d
fix: fix music videos and home videos on library ( #1326 )
...
🏗️ 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
Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com >
2026-01-11 22:31:25 +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
62b45121e5
feat(settings): add toggle to disable auto-play next episode ( #1342 )
2026-01-11 13:07:38 +01:00
Fredrik Burmester
0e238ad10e
feat(ios): glassview container for badges
2026-01-11 11:48:30 +01:00
Fredrik Burmester
ce793e3469
fix: ensure continue watching overlay appears above controls
2026-01-11 11:30:28 +01:00
Fredrik Burmester
beba4853b9
Revert "feat(settings): add toggle to disable auto-play next episode"
...
This reverts commit d1b15a9dde .
2026-01-11 10:19:35 +01:00
Fredrik Burmester
d1b15a9dde
feat(settings): add toggle to disable auto-play next episode
...
Add new setting to completely disable the auto-play next episode feature.
When disabled, the countdown button is hidden and the max episode count
setting appears greyed out.
2026-01-11 10:16:10 +01:00
Fredrik Burmester
12847894df
feat(watchlists): add see all navigation for promoted watchlists
🏗️ 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-11 00:19:31 +01:00
Fredrik Burmester
773eae8cb9
feat(home): add see all navigation from recently added sections
2026-01-11 00:16:18 +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
7514bc2c2c
fix: redirect when intro modal first time
2026-01-10 11:33:07 +01:00
Fredrik Burmester
241f8c949a
fix: cache issues with songs, partial downloads, component rerenders, etc
2026-01-10 11:33:07 +01:00
Fredrik Burmester
81449963fa
feat(auth): add multi-account support with PIN/password protection
2026-01-09 08:37:30 +01:00
Fredrik Burmester
8569cd390b
fix(android): quick connect not showing bc keyboard
2026-01-09 07:56:17 +01:00
Fredrik Burmester
3959aa2f72
fix(android): convert intro modal to bottom sheet bc broken on smaller screens
2026-01-09 07:15:53 +01:00
Fredrik Burmester
d1387ec725
fix(downloads): preserve audio track selection for offline playback
2026-01-08 21:51:27 +01:00
Fredrik Burmester
51ecde1565
fix(vlc): add audio transcoding mode to fix 7.1 TrueHD playback
2026-01-08 21:51:27 +01:00
Fredrik Burmester
99aa6bd342
fix(player): hide sub size when vlc
2026-01-07 22:20:11 +01:00
Fredrik Burmester
be8651357b
feat(player): vlc subtitle options
2026-01-07 22:18:11 +01:00
Fredrik Burmester
588c8ffeb5
fix(player): audio and subtitle dropdown not visible in player
2026-01-07 22:18:11 +01:00
Fredrik Burmester
896c7460df
refactor(music): move storage clear options
2026-01-06 18:15:53 +01:00
Fredrik Burmester
1c3369c61f
feat: search for artists, albums and songs
🏗️ 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
🕒 Handle Stale Issues / 🗑️ Cleanup Stale Issues (push) Has been cancelled
2026-01-06 16:40:47 +01:00
Fredrik Burmester
055357de60
feat: swipe to remove individual server logins
2026-01-06 15:46:12 +01:00
Fredrik Burmester
a24e254a9e
fix: better animation
2026-01-06 15:37:13 +01:00
Fredrik Burmester
9825ccce6e
fix: width to be same as bottom tab bar ios specifically
2026-01-06 15:27:08 +01:00
Fredrik Burmester
37b0b10098
feat: save login credentials when switching servers
2026-01-05 21:32:41 +01:00
Fredrik Burmester
964d53cc79
feat(music): add haptic feedback to track options menu
2026-01-05 21:32:41 +01:00
Fredrik Burmester
a26980ddab
refactor: improve music design
2026-01-05 21:32:41 +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
e4134d6f9a
fix: item content header button colors
2026-01-05 21:32:40 +01:00
Elias
1fde3c82a3
feat: add Dolby Vision badge ( #1177 )
2026-01-05 08:48:40 +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
a2058a8009
fix: music downloading not playing + queue drag and drop
🏗️ 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
🌐 Translation Sync / sync-translations (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (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 (typecheck) (push) Has been cancelled
🕒 Handle Stale Issues / 🗑️ Cleanup Stale Issues (push) Has been cancelled
2026-01-04 16:28:35 +01:00
Fredrik Burmester
d22827bc9b
feat: add toggle to hide streamystats watchlist tab/functions
2026-01-04 14:31:55 +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
Fredrik Burmester
bfdc2c053b
fix: improve gestures
2026-01-03 23:51:27 +01:00
Fredrik Burmester
245c9597c4
feat: music bar geastures
2026-01-03 23:44:15 +01:00
lance chant
bd4e5bb70a
fix: jellyseer categories ( #1233 )
...
🏗️ 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
🌐 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
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com >
2026-01-03 19:58:17 +01:00
Fredrik Burmester
e8089cfd20
fix: key id fail
2026-01-03 19:39:04 +01:00
Fredrik Burmester
039bf9729a
feat: hide volume or/and brightness in controls setting
2026-01-03 19:34:45 +01:00
Fredrik Burmester
3ff7c47b7f
feat: playback speed options
2026-01-03 19:14:20 +01:00