Uruk
58a93628b4
refactor(casting): remove AirPlay references, keep extensible architecture
...
- Remove AirPlay from CastProtocol type union (Chromecast only for now)
- Replace AirPlay TODOs with generic 'Future: Add X for other protocols' comments
- Remove PROTOCOL_COLORS export, use hardcoded Chromecast color (#F9AB00)
- Update all component headers to be protocol-agnostic
- Keep switch statements extensible for future protocol additions
- Maintain clean architecture for easy integration of new casting protocols
Architecture remains flexible for future protocols (AirPlay, DLNA, etc.)
2026-01-19 22:58:26 +01:00
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
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
Gauvain
0a58514964
Merge branch 'develop' into autoskip
2026-01-17 17:47:44 +01:00
Fredrik Burmester
28b67f3ad6
fix(mpv): handle audio track selection for transcoded streams on iOS
2026-01-15 07:53:15 +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
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
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
781c309332
feat(search): lower debounce to 200ms and add AbortController using TanStack Pacer
2026-01-10 23:51:16 +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
81449963fa
feat(auth): add multi-account support with PIN/password protection
2026-01-09 08:37:30 +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
be8651357b
feat(player): vlc subtitle options
2026-01-07 22:18:11 +01:00
Fredrik Burmester
e1dd410f73
feat: airplay and chromecast for music
2026-01-06 19:10:19 +01:00
Fredrik Burmester
055357de60
feat: swipe to remove individual server logins
2026-01-06 15:46:12 +01:00
Fredrik Burmester
4bdb8003bb
chore: lint
2026-01-06 15:28:58 +01:00
Fredrik Burmester
37b0b10098
feat: save login credentials when switching servers
2026-01-05 21:32:41 +01:00
Fredrik Burmester
cbbac3c25c
fix(hls): parse M3U8 attributes respecting quoted strings
...
The previous implementation split on commas without respecting quoted
values, causing subtitles with commas in names (e.g., "English, Forced")
or URIs with special characters to be incorrectly parsed.
Uses regex to properly match key=value pairs where values can be either
quoted (containing any characters except quotes) or unquoted (no commas).
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
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
ab3465aec5
feat: cache and download music
2026-01-04 12:50:41 +01:00
Fredrik Burmester
f941c88457
fix: device profile for music for rntp ios/android
2026-01-03 23:08:46 +01:00
Fredrik Burmester
9334263414
chore: update submodule
2026-01-03 19:49:44 +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
Fredrik Burmester
9cd55cf544
feat: setting to hide the item page header session button
2026-01-03 17:56:31 +01:00
Emre Sanden
090e0cb170
feat: add button to toggle video orientation in player ( #743 )
...
Co-authored-by: Gauvain <68083474+Gauvino@users.noreply.github.com >
Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com >
2026-01-03 17:52:45 +01:00
Fredrik Burmester
74d86b5d12
feat: KSPlayer as an option for iOS + other improvements ( #1266 )
2026-01-03 13:05:50 +01:00
lostb1t
56a3c62ed2
feat: move source and track selection to seperate sheet ( #1176 )
...
Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com >
2025-11-16 13:31:20 +01:00
Fredrik Burmester
64ffc8db8b
fix: lint issues
2025-11-16 08:50:01 +01:00
Fredrik Burmester
485dc6eeac
feat: Expo 54 (new arch) support + new in-house download module ( #1174 )
...
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
Co-authored-by: sarendsen <coding-mosses0z@icloud.com >
Co-authored-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
Co-authored-by: Gauvain <68083474+Gauvino@users.noreply.github.com >
2025-11-11 08:53:23 +01:00
Fredrik Burmester
0dadfd3d90
fix: improve carousel behavior and settings option ( #1166 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-07 15:14:35 +01:00
Zach Ross-Clyne
f7e0667416
feat: Adding custom endpoint option for sections ( #1118 )
...
Co-authored-by: lostb1t <coding-mosses0z@icloud.com >
2025-10-09 01:41:59 +02:00
Lance Chant
1eba074ebd
chore: rework logic
...
Changed logic to use the settings component to store the changed values
rather than referencing storage directly
Deleted an unused file
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com >
2025-09-30 11:18:36 +02:00
Gauvain
2273b7be0a
feat: enhance download pause/resume with progress persistence ( #1034 )
2025-09-29 14:17:07 +02:00
Gauvain
ead37aa806
fix: resolve type issues and improve component reliability ( #1078 )
🤖 Android APK Build (Phone + TV) / 🏗️ Build Android APK (phone) (push) Has been cancelled
🤖 Android APK Build (Phone + TV) / 🏗️ Build Android APK (tv) (push) Has been cancelled
🤖 iOS IPA Build (Phone + TV) / 🏗️ 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
🕒 Handle Stale Issues / 🗑️ Cleanup Stale Issues (push) Has been cancelled
2025-09-25 22:47:49 +02:00
herrrta
1feb22854c
chore: update jellyseerr submodule ( #1059 )
🚦 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
🤖 Android APK Build (Phone + TV) / 🏗️ Build Android APK (phone) (push) Has been cancelled
🤖 Android APK Build (Phone + TV) / 🏗️ Build Android APK (tv) (push) Has been cancelled
🤖 iOS IPA Build (Phone + TV) / 🏗️ 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 / 🔍 Lint & Test (lint) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Has been cancelled
🕒 Handle Stale Issues / 🗑️ Cleanup Stale Issues (push) Has been cancelled
2025-09-17 15:38:03 +02:00
stenlan
c778956a52
fix: Jellyseerr discovery crash ( #1032 )
2025-09-03 21:41:35 +02:00
Copilot
68e3b74e49
Fix Jellyseerr TV request permission logic bug ( #1026 )
🤖 Android APK Build (Phone + TV) / 🏗️ Build Android APK (phone) (push) Has been cancelled
🤖 Android APK Build (Phone + TV) / 🏗️ Build Android APK (tv) (push) Has been cancelled
🤖 iOS IPA Build (Phone + TV) / 🏗️ 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
2025-09-03 07:05:46 +02:00
Gauvain
df0b569f2d
fix(typescript): resolve 44 TypeScript errors in core components ( #1004 )
2025-08-31 16:56:53 +02:00
Gauvain
a68d8500a6
chore: update dependencies and refactor config plugin imports ( #993 )
2025-08-29 22:06:50 +02:00
Fredrik Burmester
7b7aced881
feat: slide actions for skip, volume and brightness ( #966 )
2025-08-21 18:02:47 +02:00