Uruk
be30dd4ec5
refactor: clean up dead code and consolidate casting utilities
...
- Remove dead Chromecast files (ChromecastMiniPlayer, chromecast-player)
- Remove dead AirPlay files (AirPlayMiniPlayer, airplay-player, useAirPlayPlayer)
- Remove duplicate AirPlay utilities (options.ts, helpers.ts)
- Consolidate unique Chromecast helpers into unified casting helpers
- Add formatEpisodeInfo and shouldShowNextEpisodeCountdown
- Update all imports to use unified casting utilities
- Fix TypeScript errors:
- Use correct MediaStatus properties (playerState vs isPaused/isBuffering)
- Use getPlaystateApi from Jellyfin SDK
- Use setStreamVolume for RemoteMediaClient
- Fix calculateEndingTime signature
- Fix segment auto-skip to use proper settings (skipIntro, skipOutro, etc)
- Remove unused imports
- Update ChromecastSettingsMenu to use unified types from casting/types.ts
2026-01-19 22:40:05 +01:00
Uruk
7fd7059367
feat(casting): unify Chromecast and AirPlay into single casting interface
...
BREAKING CHANGE: Merged separate Chromecast and AirPlay implementations into unified casting system
- Created unified casting types and helpers (utils/casting/)
- Built useCasting hook that manages both protocols
- Single CastingMiniPlayer component works with both Chromecast and AirPlay
- Single casting-player modal for full-screen controls
- Protocol-aware UI: Red for Chromecast, Blue for AirPlay
- Shows device type icon (TV for Chromecast, Apple logo for AirPlay)
- Detects active protocol automatically
- Previous separate implementations (ChromecastMiniPlayer, AirPlayMiniPlayer) superseded
Benefits:
- Better UX: One cast button shows all available devices
- Cleaner architecture: Protocol differences abstracted
- Easier maintenance: Single UI codebase
- Protocol-specific logic isolated in adapters
2026-01-19 22:33:41 +01:00
Uruk
f6d00e75bf
feat(airplay): add complete AirPlay support for iOS
...
- Created AirPlay utilities (options, helpers)
- Built useAirPlayPlayer hook for state management
- Created AirPlayMiniPlayer component (bottom bar when AirPlaying)
- Built full AirPlay player modal with gesture controls
- Integrated AirPlay mini player into app layout
- iOS-only feature using native AVFoundation/ExpoAvRoutePickerView
- Apple-themed UI with blue accents (#007AFF)
- Supports swipe-down to dismiss
- Shows device name, progress, and playback controls
2026-01-19 22:30:34 +01:00
Uruk
932b89f629
feat(chromecast): add modal components and integrate autoskip API
2026-01-19 22:22:20 +01:00
Uruk
db5ecde928
feat(chromecast): integrate autoskip segments into chromecast player
...
- Merge autoskip branch with segment detection
- Update useChromecastSegments to use real segment API
- Support intro, credits, recap, commercial, and preview segments
- Add auto-skip support based on user settings
- Ready for full testing
2026-01-19 22:21:17 +01:00
Uruk
7a57669728
Merge branch 'autoskip' into refactor-chromecast
2026-01-19 22:15:17 +01:00
Uruk
b25faefdcf
fix(chromecast): resolve TypeScript errors and improve type safety
...
- Fix deviceName property to use friendlyName
- Update disconnect to use stop() instead of endSession()
- Fix null handling in getPosterUrl and useTrickplay
- Remove unused variables and imports
- Add proper null checks in segment skipping
- Disable auto-skip until settings are available
2026-01-19 22:13:54 +01:00
Uruk
45f7923e84
feat(chromecast): add new player UI with mini player, hooks, and utilities
...
- Create ChromecastMiniPlayer component (bottom bar navigation)
- Create chromecast-player modal route with full UI
- Add useChromecastPlayer hook (playback controls & state)
- Add useChromecastSegments hook (intro/credits/segments)
- Add chromecast options (constants & config)
- Add chromecast helpers (time formatting, quality checks)
- Implement swipe-down gesture to dismiss
- Add Netflix-style buffering indicator
- Add progress tracking with trickplay support
- Add next episode countdown
- Ready for segments integration from autoskip branch
2026-01-19 22:02:06 +01:00
Uruk
1176905cb7
fix: add Chromecast video progress tracking
2026-01-19 20:41:06 +01:00
Uruk
58f8015e3b
refactor: optimize segment handling with useMemo and improve skip function fallback
2026-01-14 20:21:15 +01:00
Uruk
a27ea154ba
feat: add skip credit button text localization to BottomControls and Controls
2026-01-14 20:18:09 +01:00
Uruk
294b3f19c3
feat: add timeout management for playback to prevent race conditions
2026-01-14 20:13:49 +01:00
Uruk
96f6ad000b
feat: add i18n support for skip button text
...
- Add player.skip_* translation keys for all 5 segment types
- Enable proper localization of skip button text
- Addresses GitHub Copilot review comment
2026-01-14 14:10:28 +01:00
Uruk
be575b7c04
refactor: address GitHub Copilot review comments
...
- Remove unnecessary currentSegment from skipSegment dependency array
- Remove redundant wrappedSeek wrapper (ref guard prevents issues)
- Document 200ms setTimeout delay for seek operations
- Improve code clarity and reduce unnecessary re-renders
2026-01-14 14:07:14 +01:00
Uruk
62f50590d4
feat: add comprehensive segment skip with all 5 types and settings submenu
...
- Add SegmentSkipMode type ('none', 'ask', 'auto') in settings.ts
- Create 5 segment skip settings: skipIntro, skipOutro, skipRecap, skipCommercial, skipPreview
- Update segments.ts to fetch all 5 segment types from Jellyfin MediaSegments API (10.11+)
- Create unified useSegmentSkipper hook supporting all segment types with 3 modes
- Update video player Controls.tsx with priority system (Commercial > Recap > Intro > Preview > Outro)
- Add dynamic skip button text in BottomControls.tsx
- Create dedicated settings submenu at settings/segment-skip/page.tsx
- Simplify PlaybackControlsSettings.tsx with navigation to submenu
- Extend DownloadedItem interface with all segment types for offline support
- Add 13+ translation keys for segment skip UI
2026-01-14 13:53:06 +01: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