jellyflood/RELEASE-ALPHA1.md

108 lines
5.0 KiB
Markdown

# 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