fix: improve Home, AirPlay handoffs and actor biographies - #33
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. 📝 WalkthroughWalkthroughJellyfin Home refresh scheduling and request construction changed. iOS episode cards now show runtime status. tvOS backgrounds and biography presentation changed. MPV playback and audio-session handling changed, with associated tests and documentation. ChangesJellyfin Home refresh
Episode runtime status
tvOS navigation canvas
tvOS biography panel
MPV audio and session handling
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~45 minutes Change: Bug fix Merge Risk: 🟡 Moderate · up to A tvOS audio-renderer restart can hang playback, and rapid player replacement can deactivate audio before earlier teardown finishes. Fix these playback paths before merging. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 9.52% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 21 functions across 25 files. (4 skipped: 4 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
|
Remove the session-ownership diagnostic logging added during AirPlay investigation, preserving the audio fix and regression coverage.
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to GitHub limitations.
🟠 Major · Make stop(ao) safe on p->queue. · 0001-avfoundation-resume-after-audio-eof.patch:446-447
patches/mpv/0001-avfoundation-resume-after-audio-eof.patch:446-447
🩺 Stability & Availability | 🟠 Major | ⚡ Quick winMake
stop(ao)safe onp->queue.
restart_blockruns onp->queue. The boundstop(ao)implementation unconditionally callsdispatch_sync(p->queue, ...). This dispatch targets the queue that is already executingrestart_block, so playback deadlocks beforestart(ao)runs. Execute the stop block inline when the current queue isp->queue, and dispatch synchronously only from other queues.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository: blurbery/vivid/.coderabbit.yaml
Review profile: ASSERTIVE
Plan: Advanced
Run ID: a5cae297-05a0-4680-8c58-485b355dfc5e
📒 Files selected for processing (23)
.github/workflows/mpv-audio-driver.ymldocs/app-design.mddocs/cores/player-engine.mdiosApp/iosApp/ContentView.swiftiosApp/iosApp/Playback/MPV/MpvPlayerCore.swiftiosApp/iosApp/Playback/MPV/MpvPlayerCoreBase.swiftiosApp/iosApp/Playback/MPV/VividMPVPlayer.swiftiosApp/iosApp/Screens/Auth/TVLoginView.swiftiosApp/iosApp/Screens/Auth/TVServerSetupView.swiftiosApp/iosApp/Screens/Browse/BrowseView.swiftiosApp/iosApp/Screens/Collections/CollectionsView.swiftiosApp/iosApp/Screens/Detail/ItemDetailView.swiftiosApp/iosApp/Screens/People/PersonDetailView.swiftiosApp/iosApp/Screens/Personal/FavoritesView.swiftiosApp/iosApp/Screens/Personal/WatchlistView.swiftiosApp/iosApp/Screens/Settings/SettingsBackdrop.swiftiosApp/iosApp/tvOS/Components/VividStartupView.swiftiosApp/iosApp/tvOS/Navigation/TVMainTabView.swiftiosApp/iosApp/tvOS/Profiles/TVSavedAccountViews.swiftiosApp/iosApp/tvOS/Screens/Detail/TVExpandableSynopsis.swiftpatches/mpv/0001-avfoundation-resume-after-audio-eof.patchscripts/tests/compressed-audio-recovery-tests.pyscripts/tests/mpv-track-tests.py
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.
|
The outside-diff Verified against the reconstructed pinned source with Vivid’s patch applied. Four focused checks executed the actual The separate cross-player teardown finding was reproduced and fixed in 5814e0c, with a regression test covering both completion orders. |
This fixes missing Home episode indicators, delayed Jellyfin Home updates, lost tvOS gradients and an audio-session race between episodes. Actor biographies on Apple TV also open in the same Liquid Glass panel as movie and series descriptions.
Validation
At
5814e0c, whitespace and iOS/tvOS Swift syntax checks passed. Focused checks passed for 40 native transport decisions, 24 renderer replacement cases, 4 native session ownership cases, 15 track mappings and 10 app teardown cases. The cross-player regression failed before the shared teardown-group fix and passes for both completion orders. The native patch applies to the pinned source; four queue checks also passed for PCM and compressed stops called on and off the audio queue.Playback testing before the final shared teardown-group change covered several episodes, movies and an automatic next-episode transition without reproducing the reported problems. That supports the tested playback behaviour, but does not prove every intermittent startup pause is eliminated. The final shared teardown-group change has not been tested on a device, and the biography panel has not yet been visually tested.
The iOS/tvOS regression run passed both the iOS tests and tvOS build. The tvOS native-driver build passed; native source is unchanged since that build. The native library and app must be rebuilt together to include the audio ownership fix and logging cleanup. Extended episode chaining and iOS device audio behaviour remain unverified.
Design and documentation
The episode capsule, tvOS gradient and clickable biography panel implement the requested design changes. Relevant Home, Jellyfin, design and player-engine documentation reflects the final behaviour and native-library requirements.
AI disclosure
Implemented these changes with Codex as a tool.