From 6cd90ad6c06986f03428588cfbdf6aedc63abbb9 Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Fri, 31 Jul 2026 19:30:40 -0400 Subject: [PATCH] docs(yazi-remake): mark task 07 blocked, file task 04 blocker for player/search panes The verification gate found that Task 04's core deliverable was never implemented: Player and Search pages are not routed through , so Player renders a single full-width column and Search's three columns sit at equal thirds (31/32/31) instead of the target 1:3:3 ratio (~14/43/43). - Mark task 07 status BLOCKED with a pointer to the blocker evidence - Add 07-blocker-task-04-player-search.md documenting the missing implementation, evidence (player/search harness frames), failing exit criteria, and a fix plan for the task 04 do-over --- .../07-blocker-task-04-player-search.md | 98 +++++++++++++++++++ tasks/yazi-remake/07-verify-remake.md | 1 + 2 files changed, 99 insertions(+) create mode 100644 tasks/yazi-remake/07-blocker-task-04-player-search.md diff --git a/tasks/yazi-remake/07-blocker-task-04-player-search.md b/tasks/yazi-remake/07-blocker-task-04-player-search.md new file mode 100644 index 0000000..83faf17 --- /dev/null +++ b/tasks/yazi-remake/07-blocker-task-04-player-search.md @@ -0,0 +1,98 @@ +# 07-blocker — Task 04 (Search + Player) never converted to YaziPaneRow + +meta: + id: yazi-remake-07-blocker + feature: yazi-remake + priority: P0 + blocks: [yazi-remake-07] + blocked_by: [yazi-remake-04] + tags: [blocker, verification, tasks-required] + +## Problem + +Task 04 (`04-fit-search-and-player-panes.md`) is marked complete, but its +core deliverable was never implemented: + +> - `src/pages/Player/PlayerPage.tsx` — rendered through `` +> - `src/pages/Search/SearchPage.tsx` — rendered through `` + +`grep -rn "YaziPaneRow" src/pages/Search src/pages/Player` → **0 files**. + +## Evidence (from task 07 harness walk-through, 100×30) + +### Player ❌ + +`src/pages/Player/PlayerPage.tsx` renders a single full-width +`` (now-playing transport + controls). No parent pane, no preview +pane. Frame `.harness/player-current.txt`: + +``` +│ Now Playing 0:00 / 0:00 (0%) │ +... +│ │ │[Prev]│ │[Play]│ │[Next]│ Vol 70% Speed 1x ... │ │ +``` + +Expected (task 04 + feature exit criteria): `blank | transport | notes` at +1/7 : 3/7 : 3/7. + +### Search ⚠️ ratio wrong + +`src/pages/Search/SearchPage.tsx` renders three custom `` columns but **omits `flexBasis={0}`**, so Yoga distributes +space by natural content width (the input box is `width={28}`). Measured +column widths at 100 cols: **31 / 32 / 31** (equal thirds), NOT the target +**~14 / 43 / 43** (1:3:3). + +`` exists precisely to set `flexBasis={0}` per column and force +the exact 1:3:3 ratio regardless of content (see its header comment). Routing +Search through it fixes the ratio for free. + +## Why not patched in task 07 + +Task 07 is explicitly the verification gate. Its notes: + +> - This is the gate for the whole feature — do not mark done if any criterion +> fails; open a blocker task instead +> - If the harness reveals a visual regression (e.g. parent collapses, ratios +> off), file it against the responsible task (02 or 03) rather than +> patching here + +This is a missing implementation in task 04, not a regression in 02/03, so the +responsible task is 04. Patches belong there. + +## Failing exit criteria + +- "All tabs render three stable columns at 1/7 : 3/7 : 3/7" — Player fails + (not 3 columns); Search fails (wrong ratio). +- "`5` → Player: blank|transport|notes at 1:3:3" — fails. +- "`4` → Search: query|results|detail at 1:3:3" — 3 columns yes, ratio wrong. + +## Fix plan (task 04 do-over) + +1. `src/pages/Player/PlayerPage.tsx` — wrap the existing transport JSX in a + ``. + Parent should fall through to the primitive's muted `—` placeholder (it + already keeps its 1/7 slot when blank). Preview = episode description / + waveform (currently inline under "Now Playing"). Keep `PlayerPaneCount=1` + (the visible columns are a render concern; only current=0 is focusable). +2. `src/pages/Search/SearchPage.tsx` — replace the three custom `` columns with a single ``. Keep the + `inputFocused` effect so the Shell yields keys to the native `` + when the query pane is focused — note `inputFocused` is a Search-owned + signal; YaziPaneRow's `focused` prop only drives the accent ring + scroll + focus, which for Search can stay on the current (results) column. +3. Remove the now-dead custom ratio code from both files after the swap. +4. Re-run: `grep -rn YaziPaneRow src/pages/Search src/pages/Player` → 2 files; + `bun run build`; `bun test`; harness walk-through: Player shows 3 cols, + Search cols measure ~14/43/43. + +## Verification gates (re-run task 07 after fix) + +- `bun run build` → "Build complete" +- `bun test` → 0 fail +- harness: + - Player frame has 3 bordered columns (parent `—`, current transport, + preview notes/placeholder) at 1:3:3 + - Search frame columns measure ~14/43/43 diff --git a/tasks/yazi-remake/07-verify-remake.md b/tasks/yazi-remake/07-verify-remake.md index 838bc86..b1fdcac 100644 --- a/tasks/yazi-remake/07-verify-remake.md +++ b/tasks/yazi-remake/07-verify-remake.md @@ -6,6 +6,7 @@ meta: priority: P1 depends_on: [yazi-remake-03, yazi-remake-04, yazi-remake-05, yazi-remake-06] tags: [verification, tests-required] + status: BLOCKED # see .harness/verification-07.md + tasks/yazi-remake/07-blocker-task-04-player-search.md objective: