Design for sub-project D: correct PlayMethod reporting, conditional
episode buttons, loadEpisode race fix, and app-wide Jellyfin remote
control (Playstate/GeneralCommand) routed via a PlaybackController.
Per review: filter quality tiers by both ceilings; correct the shared
BITRATES file reference to BitrateSelector.tsx.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Per review: the cast quality selector reuses the app-wide BITRATES
constant (expanded to the Jellyfin Android TV ladder) instead of a
cast-specific list, filtered by device capability.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Design for sub-project B: a single CastSelection source of truth carried
in cast customData (approach A3), fixing audio/subtitle/quality desync,
plus a real multi-version selector.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Per review: break enableH265ForChromecast outright instead of carrying
migration code. Users reconfigure; chromecastProfile defaults to auto.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Design for sub-project A of the Chromecast refactor: per-device capability
detection, profile builder replacing the two static profiles, unified cast
load, and load-path bug fixes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>