Build TV Requests under Settings #32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fm/tv-slice7-requests"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Outcome
Build household Requests under Settings and repair the measured design-review blockers against the locked prototype. Ready for scoped re-review; not a release or TV-install request.
AI-assisted (fork-internal)
Verified/pushed head:
924c90a9e0c9f7cca76def0196314fa30c3bab4f. Mergedorigin/mainbefore final validation; the merged Libraries tree remains integrated. No worker-side merge or PR-status mutation.Refs: approved Wolfskin TV spec, sections 3.5–3.6, 6.11–6.12, 7.6, 8–10 and
screens/requests.json; locked Opus prototype.Readiness geometry repair (B8)
Only the readiness item layout changed: the 26px glyph bottom aligns to the text baseline, with no flex gap. Removed the unused
readinessItemGaptoken and regenerated Kotlin/CSS/hash artifacts; documented the natural wrapping. No shared Type, Glyph, focus/state, data or tests changed.Firstmate decision: preserve intrinsic Roboto wrapping, two native lines rather than three reference lines. No forced Request / Download / Library+Playback grouping, font change or per-row compensation. The later baselines, shorter focused row and following-card shift are explicitly accepted font-caused differences.
Current-head B8 evidence archive · Reference / before / after 4× detail. Glyph boxes use exclusive right/bottom bounds; text distances below start at the rightmost painted pixel.
924c90a9[left,top,right,bottom)[1322,475,1341,489)[1322,475,1341,489)— exact1341 → 1346; 6px1341 → 1346; 6px[515,537), baseline 538 (second line)[471,493), baseline 494 (first line, approved wrap)1342 → 1346; 5px1557 → 1561; 5px — same item geometry, different line positionThe review's nominal reference row was 332..602; the same-method table above scans x1690 with min RGB≥235, retaining full-fill edge pixels. Its measured reference bottom is 603, native 559. Both measurement definitions are stated rather than silently comparing different edges. The 43px shorter filled row explains the upward shift of following cards and the higher whole-frame diff, not a new stroke/font-size change. Request baseline 494 and both glyph-to-text distances match exactly.
Isolation: st-081/082/083/084/085/088/111 each have 0 changed pixels versus independently reviewed
b8d5d8a1, after the full final capture run. B1–B7 remain fixed; B6 remains Justin-approved 3 open.Verified B1–B7 repairs
The prior evidence at
439eea3fis historical. The independently verified B1–B7 measurements atb8d5d8a1, originals, before/after crops, reports and logs are in the prior repair evidence archive. Each crop has reference, before and after panels; 4× nearest-neighbour enlargement preserves native pixels..rr .rboutranks.crow img). The TMDB pill and tomato/popcorn circles are deliberately present, not classified as a source bug. Native background RGB37,37,50; reference JPEG samples span RGB37..40,35..38,48..49. Original SVGs retained; native-size contained PNGs and hashes verified. Native crops.C.muted, retaining the approved existing letter-colour parameter. The initial is no longer RGB5,5,7; st-081 lightest red-channel letter sample is RGB79,88,94 versus reference RGB81,89,100. Nav/picker defaults remain dark. Native crops.No global font/weight adjustment or per-row compensation was used. Full numeric RGB traces, correlation anchors and glyph bounds are included; a 1px local poster-registration ambiguity is visible in the Die My Love reference measurements. These are measured residuals, not a pixel-equality claim.
Implemented behaviour
Approved specification decisions
Ratings timing: frozen page and spec 6.12 / screen contract take precedence over the conflicting no-dwell sentence in 7.8. Uncached focus waits 350ms, moving away cancels, cached title ratings show immediately; sign-out suppresses visibility.
Font fidelity: retain platform Roboto; browser system-ui resolved to DejaVu Sans. Heading ink width is 239px reference / 194px native, ink height 43 / 42px. Source 600/650 retains the merged shell’s explicit Bold 700 mapping; 800 is unchanged. No font bundle or size/weight fudge. Host wrapping/ellipsis parity is not claimed; affected frames are identified below. This structural difference is not explained away as rasterisation.
Exit-check capture pairs
Every half is 1920×1080 at density 2.0, rendered by existing Robolectric SDK34/Roborazzi. Prototype left, current-head Compose right. All eight final pairs were inspected. Mean error uses RGB channels 0–255; >12 means max channel difference exceeds 12; sheet band is x≥1120. Prototype-only example pills are omitted by contract. Button focus scale is approved 1.05 rather than frozen 1.06. RGB565 photo decoding, JPEG quantisation and platform shadow kernels remain additional pixel-level differences.
Key, data and regression proof
Commands and results
python3 wolfskin-design/generate_tokens.py --checksha256sum -c request-marks.sha256in design modulemake test— one final B8 runmake apk-debug— one final B8 runThe table reports ONE final
make testand ONEmake apk-debugat the exact B8 head above. Prior delivery and B1–B7 gate logs remain historical evidence in the earlier archive. Maven 429 workaround used only this checkout’s approved temporary untracked Gradle init hook; removed after validation. No shared daemon, wrapper, Dockerfile or volume definition changed. Existing MPV stub/decoder limits remain: compile proof, not playback certification.Upstream files touched
None under
app/src/main. No upstream hook, destination, preference, player or manifest changed in this slice. Work remains inapp/src/wolfskin, debug assets, fork tests,:wolfskin-designand feature documentationdocker/README.md.LibraryImages.requestaccepts optional slot dimensions/model input so Requests reuses the existing image policy; previous callers retain defaults. This review repair adds only scoped Coming-in line boxes/tokens, local rendering fixes, regenerated marks and the corresponding documentation.Not done / deployment boundary
request-title/{type}/{tmdb}; title-return focus is proved, not a real title page.Cross-family design review (Claude Sonnet): CHANGES REQUESTED on head
439eea3ff8b3b148844cea5fcef029e3e176d05a.Spec fidelity, architecture and hygiene pass (nine-key path replays real shell keys, ratings dwell test fails without the dwell, Shared reads "by Shared", hold guard and back ladder correct, no upstream
app/src/mainfile touched, no test removed). Design parity fails: measured at native resolution against the locked frames, these are not font-caused.Blocking:
Non-blocking: no test covers items arriving after the sheet is opened (code handles it); second rating-mark set duplicates the library's; stage-to-ratings margin reuses the readiness glyph token.
Full report with numbers, file:line references and the measuring method:
/root/.treehouse/firstmate-7bab20/2/firstmate/data/review-wolfskin-32/report.md.Scoped re-review of head
b8d5d8a12438343c459bbf6b61df098c61c3ef2a: CHANGES REQUESTED (one new blocking deviation)Reviewer: Claude Sonnet (cross-family). Judged by my own native-resolution (1920x1080) measurement of the refreshed pairs against the locked frames; no Gradle run. Full report:
data/review-wolfskin-32-r2/report.mdin the firstmate home.Verified fixed
Blocking (new, not font-caused): B8 readiness item geometry (st-086)
In the locked prototype
.crow .tx span{display:block}outranks.ready4 span{inline-flex; gap:8px}, so the readiness glyph is an inline 26 px svg on the text baseline with no gap. Locked: glyph right edge to text first ink 5-6 px, glyph raised on the baseline. Native: 12-13 px gap, glyph centred. First readiness line baseline 494 vs 492, pitch 1 px short per line (third line 581 vs 577), focused row 3 px shorter (332-602 vs 331-598). Title/facts/stage above it are identical. Same class as the rating-chip bleed. I missed it in round 1 (I wrote that readiness mapping and colours match; the geometry does not).Fix: render each readiness item as a block line with an inline baseline-aligned 26 px glyph and no gap (pitch about 43.5 px), then re-measure with the numbers above.
Scope and hygiene: delta is 9 files, 86+/26-, all inside the Requests sheet,
WolfskinTokens.Requests, oneSettingsListargument and docs; no shared Type tokens/components touched; merged captures st-001/002/010/021/022 pixel-identical; st-091 changes only the avatar initial, toward the locked frame. No test deleted or weakened, nine-press path and 350 ms gate test unchanged, no public API removed. Token drift and mark checksums pass. Lane's 620 tests and four APK smokes not re-run.Non-blocking: no test for the first-read arrival focus entry (carried), sheet content about 1 px high, facts line has no maxLines, no regression test for the new geometry.