diff --git a/docs/superpowers/specs/2026-05-21-chromecast-track-switching-design.md b/docs/superpowers/specs/2026-05-21-chromecast-track-switching-design.md index 69ddebdd7..e4d42e118 100644 --- a/docs/superpowers/specs/2026-05-21-chromecast-track-switching-design.md +++ b/docs/superpowers/specs/2026-05-21-chromecast-track-switching-design.md @@ -139,9 +139,14 @@ thinner and gives sub-project C (the file split) a clean unit to extract. - **Add:** `useCastSelection` for the active selection. - `availableVersions` — the item's real `currentItem.MediaSources` (id, name, bitrate, container). -- `availableQualities` — the bitrate-cap options, kept as a **separate axis** from - version; this is the real `maxStreamingBitrate` transcode cap, no longer disguised - as media sources. +- `availableQualities` — the bitrate-cap options, a **separate axis** from version; + this is the real `maxStreamingBitrate` transcode cap, no longer disguised as media + sources. It reuses the app-wide `BITRATES` constant + (`components/BitRateSheet.tsx`) — no cast-specific list — and `BITRATES` is + expanded to the fuller Jellyfin Android TV bitrate ladder so every surface (cast, + native player, downloads) gains the extra tiers. The cast menu filters `BITRATES` + to tiers within the connected device's `maxVideoBitrate` (from sub-project A's + `detectCapabilities`), so only usable tiers are shown. - `availableAudioTracks` / `availableSubtitleTracks` — derived from the **selected version's** `MediaStreams`, not always `MediaSources[0]`. - Every "selected" indicator reads from `currentSelection`. @@ -176,6 +181,11 @@ this is consistent with audio. The `pendingSelection` covers the re-buffer gap. | `hooks/useCastSelection.ts` | New — A3 selection state (truth + pending) | | `app/(auth)/casting-player.tsx` | Replace track state with `useCastSelection`; real versions + separate quality axis | | `components/chromecast/ChromecastSettingsMenu.tsx` | Separate Version / Quality sections; selected rows from `currentSelection` | +| `components/BitRateSheet.tsx` | Expand the shared `BITRATES` ladder (Jellyfin Android TV tiers) | + +The `BITRATES` expansion is a one-array change to a shared constant. It is +deliberately app-wide: the native player and downloads bitrate menus gain the same +tiers, which is the requested behaviour. ## 12. Testing