Changed all router.dismissCoordinator() calls to router.popLast() in video player: - Overlay.swift: Back button when confirming close - VideoPlayer.swift: Auto-exit when video ends - LoadingView.swift: Cancel button during loading dismissCoordinator() only works with .fullScreen/.modal presentations. Since we changed video player to .push navigation, we need popLast() instead. This fixes ESC/menu button not working during video playback. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
---|---|---|
.github | ||
Documentation | ||
PreferencesView | ||
Resources | ||
Scripts/Translations | ||
Shared | ||
Translations | ||
fastlane | ||
jellypig tvOS | ||
jellypig.xcodeproj | ||
.gitignore | ||
.swiftformat | ||
Cartfile | ||
ChromeCastFramework.json | ||
Gemfile | ||
LICENSE.md | ||
README.md | ||
swiftgen.yml |
README.md
Swiftfin is a modern video client for the Jellyfin media server. Made using Swift to maximize direct play with the power of VLC and look native on all classes of Apple devices.
⚡️ Download
🛠️ TestFlight
Use the TestFlight version to test new features and bug fixes before being published to the App Store. We are grateful for your time and resources for reporting new bugs.
[!NOTE] Only iOS has a TestFlight version. See this discussion for tvOS updates.
⚙️ Development
Thank you for your interest in Swiftfin! Please check out the Contribution Guidelines to get started.
🎬 Player Differences
Swiftfin offers both Native (AVKit) and Swiftfin (VLCKit) players to provide the best compatibility across Apple devices. To learn more about the capabilities and differences between these players, visit our Player Differences documentation.
📚 Translations
Don't see Swiftfin in your language?
Check out our Weblate instance to help translate Swiftfin and other Jellyfin projects.