From e4003786841ac619d50830c8bd4b0d576087fa29 Mon Sep 17 00:00:00 2001 From: Uruk Date: Fri, 22 May 2026 10:07:19 +0200 Subject: [PATCH] docs(casting): mark UX player sub-project done in handoff --- .../chromecast-refactor-handoff.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/docs/superpowers/chromecast-refactor-handoff.md b/docs/superpowers/chromecast-refactor-handoff.md index f5ab724d5..bb4f4cdd8 100644 --- a/docs/superpowers/chromecast-refactor-handoff.md +++ b/docs/superpowers/chromecast-refactor-handoff.md @@ -10,9 +10,10 @@ resumed in a later session. Specs and plans for each sub-project live in ## 1. Summary -The Chromecast casting code (PR #1402) was refactored in four sub-projects plus one -prep task. All four are **implemented, type-checked, and unit-tested**; the branch is -86 commits ahead of `develop`, **46 commits unpushed** to `origin/refactor-chromecast`. +The Chromecast casting code (PR #1402) was refactored across five sub-projects, a +prep task, and small cleanups. All sub-projects are **implemented, type-checked, and +unit-tested**; the branch has dozens of commits unpushed to +`origin/refactor-chromecast` (run `git log origin/refactor-chromecast..HEAD`). | Sub-project | What | Status | |---|---|---| @@ -21,6 +22,8 @@ prep task. All four are **implemented, type-checked, and unit-tested**; the bran | **B** — Track switching | `CastSelection` source-of-truth via customData, audio/subtitle/quality/version switching, multi-version | ✅ done, **verified on hardware** | | **C** — Player split | `casting-player.tsx` 1428→574 lines: 6 components + 4 hooks | ✅ done, **needs manual re-test** | | **D** — Session & remote control | Correct PlayMethod, conditional episode buttons, `loadEpisode` race fix, app-wide Jellyfin remote control | ✅ done, **needs manual test** | +| **UX player** — Trickplay & mini-player | Trickplay bubble clamp via `bubbleWidth`, shared `CastTrickplayBubble`, plain-text time, mini-player stop button, `DEBUG_TOUCH_ZONES` overlay | ✅ done, **needs manual test** | +| Loose ends | Dead `liveProgress` export removed, `BitRateSheet` duplicate removed, full-width labelled stop button for movies | ✅ done | Verification gate for the whole branch: `bun run typecheck` ✅, `bun test utils/` ✅ (32 tests). Note: project-wide `bun run check` shows ~124 pre-existing CRLF errors — @@ -110,20 +113,15 @@ stop / seek / next / volume / "send message" against the cast and the native pla ## 7. Pending work (queue) -- **UX player sub-project** (not started) — 5 items the user reported: - 1. Trickplay preview window is truncated at the right screen edge / does not track - the cursor. - 2. The progress-bar touch zone is too large — it overlaps and **blocks** the - 4-button control row. (The user intends to tune the exact touch-zone size - themselves, e.g. by visualising it with a temporary coloured overlay.) - 3. The purple time label should sit directly above the progress cursor. - 4. Trickplay on the mini-player progress bar. - 5. A stop button on the mini-player. - These now live in clean post-C files (`CastPlayerProgressBar`, `CastingMiniPlayer`). +- **UX player sub-project** — ✅ done (see the UX player row in §1; spec/plan + `2026-05-22-chromecast-ux-player`). Trickplay truncation, time display, mini-player + trickplay + stop button all fixed. Remaining there: the user hand-calibrates the + slider `panHitSlop` using the `DEBUG_TOUCH_ZONES` overlay (flag in + `utils/casting/debug.ts` — flip to `true`, calibrate, flip back). - **Repo hygiene** — add `* text=auto eol=lf` to `.gitattributes` (fixes the ~124 - CRLF errors in `bun run check`); de-duplicate `BitRateSheet.tsx` vs - `BitrateSelector.tsx`; remove the unused `liveProgress` export from - `useCastPlayerProgress.ts`. + CRLF errors in `bun run check`); this is best done as a separate PR off `develop`, + since a `git add --renormalize` touches the whole tree. (The `BitRateSheet.tsx` + duplicate and the unused `liveProgress` export have already been removed.) - **Custom Cast receiver** (deferred from sub-project A) — PR #1521 builds a custom CAF receiver. Decided to defer; revisit as its own sub-project. It would own subtitle rendering/styling (ASS, custom style — issues #1452, #1543) and cleaner