diff --git a/RELEASE-ALPHA1.md b/RELEASE-ALPHA1.md new file mode 100644 index 00000000..0c79a8d8 --- /dev/null +++ b/RELEASE-ALPHA1.md @@ -0,0 +1,107 @@ +# jellypig tvOS Alpha 1 Release + +**Release Date**: October 17, 2025 +**Base Version**: Swiftfin 1.3 +**Branch**: jellypig-1.3 +**License**: MPL-2.0 + +--- + +## Overview + +jellypig is a personal fork of [Jellyfin/Swiftfin](https://github.com/jellyfin/swiftfin) optimized for tvOS with specialized support for Jellyfin.Xtream plugin content. This alpha1 release represents a stable, working build that plays everything upstream Swiftfin on tvOS plays **and more**, with an elegant native UI maintained by the Swiftfin development team. + +## Key Features + +### ✅ What Works +- **Full Jellyfin Playback**: All standard Jellyfin content (movies, series, live TV) plays correctly +- **Xtream Content Support**: Properly displays and plays Xtream VOD and Series content from Jellyfin.Xtream plugin +- **Channel Navigation**: Fixed channel browsing with proper grid view for categories and content +- **Full-Screen Navigation**: All views display full-screen (no modal popups) +- **Video Playback Controls**: ESC key properly shows controls and allows exit with confirmation +- **Native UI**: Maintains the elegant, native tvOS interface from upstream Swiftfin + +### 🎯 Major Improvements Over Upstream +1. **Xtream Content Listing**: Fixed channel folder navigation to use proper Jellyfin Channel API endpoints + - Xtream VOD and Xtream Series channels now display correct, distinct content + - Channel folders display in grid view matching library behavior + +2. **tvOS Navigation Architecture**: Restructured routing to fix modal popup issues + - Channels, items, and content display full-screen using `.push` navigation + - MediaCoordinator uses `.fullScreen` to prevent navigation stack corruption + - Video player properly stops on dismiss (no background playback) + +3. **Leaner Codebase**: Removed entire iOS build and code (28,370+ deletions) + - tvOS-only focus reduces complexity + - Faster build times and easier maintenance + - Single target: `jellypig tvOS` + +## Technical Changes + +### Core Fixes +- **ItemLibraryViewModel.swift**: Implements proper channel API routing (`/Channels/{channelID}/Items`) +- **PagingLibraryView.swift**: Added `.channelFolderItem` support for grid view display +- **MainCoordinator.swift**: Restructured MediaCoordinator routing with `.fullScreen` navigation +- **ItemView.swift**: Removed `.channelFolderItem` handling (delegates to library view) + +### Project Configuration +- **Bundle ID**: `org.ashik.jellypig` +- **Project Name**: jellypig (renamed from Swiftfin) +- **Targets**: tvOS only (iOS removed) +- **CI/CD**: Updated GitHub Actions workflows for jellypig tvOS builds +- **Dependencies**: Properly configured VLCKit (TVVLCKit.xcframework v3.5.0) + +## Known Limitations + +### Acceptable Trade-offs +- **Error Dismissal**: Errors in deeply nested views (e.g., failed episode playback) dismiss all the way to Media tab instead of one level back + - This is a limitation of `.fullScreen` presentation architecture + - Prevents worse issue of returning to Home screen + +- **Video Player Back Button**: Slightly "buggy" behavior but functional + - ESC key works properly (shows controls → confirm → exit) + - Playback stops correctly on dismiss + +## Development Environment + +### Requirements +- **Platform**: macOS with Xcode 16+ +- **Build Method**: Must use Xcode GUI (Command+B) + - Command-line `xcodebuild` fails due to Swift macro issues in swift-case-paths dependency + - All other operations (git, editing) work via command line +- **Simulator**: Any tvOS 16.0+ simulator or device + +### Repository +- **Fork**: [ashikslab/jellypig](https://github.com/ashikslab/jellypig) +- **Upstream**: [jellyfin/swiftfin](https://github.com/jellyfin/swiftfin) +- **Plugin**: [ashikslab/Jellyfin.Xtream](https://github.com/ashikslab/Jellyfin.Xtream) + +## Companion Plugin + +jellypig works best with the reverted **Jellyfin.Xtream** plugin (v0.7.2.0001) which uses pure upstream logic: +- Repository: https://ashikslab.github.io/Jellyfin.Xtream/repository.json +- Download: https://github.com/ashikslab/Jellyfin.Xtream/releases/download/v0.7.2.0001/jellyfin-xtream-for-jellypig_0.7.2.1.zip + +The plugin provides standard Jellyfin Channel API endpoints for Xtream content, and jellypig handles the display and navigation correctly. + +## What's Next + +### Short Term (Until Upstream Stabilizes) +- Bug fixes as discovered +- UI adjustments and polish +- Stay on Swiftfin 1.3 base + +### Long Term +- **Major Intake**: When upstream Swiftfin releases their next stable major version, jellypig will merge those changes +- **iOS Support**: May consider re-adding iOS support with Xtream fixes as a separate project +- **Upstream Contributions**: Channel navigation fixes could potentially be contributed back to Swiftfin + +## Credits + +- **Original Project**: [Jellyfin Swiftfin](https://github.com/jellyfin/swiftfin) - MPL-2.0 License +- **Plugin**: [Kevinjil/Jellyfin.Xtream](https://github.com/Kevinjil/Jellyfin.Xtream) - GPL-3.0 License +- **jellypig Fork**: Personal modifications for Xtream content support and tvOS optimization + +--- + +**This is an alpha release**: Suitable for personal use and testing. Report issues at https://github.com/ashikslab/jellypig/issues