Verify transport geometry, playback states and themed icons across both engines
This commit is contained in:
74
plans/transport-icons.md
Normal file
74
plans/transport-icons.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# Transport icon reconciliation
|
||||
|
||||
Branch `codex/transport-icons` starts at completed integration commit `0a5b113`.
|
||||
|
||||
The previous shell mixed filled inline SVGs (main/stage/fullscreen) with Unicode
|
||||
play/pause/previous/next glyphs (mini, service, remote, gesture feedback, queue and
|
||||
playlist actions). All rendered transport glyphs now use shared currentColor SVG
|
||||
symbols defined in the already-eager `download-actions.js`; no new runtime file,
|
||||
loader or worker change is required. The core/playback/queue bodies remain guarded
|
||||
by their existing byte hashes. `updatePlayBtn` now has a behavioural state/handler
|
||||
regression test instead of an obsolete byte-identity assertion.
|
||||
|
||||
| Location | Change |
|
||||
|---|---|
|
||||
| `frontend/download-actions.js:40` | Shared drawing/state or markup |
|
||||
| `frontend/download-actions.css:13` | Shared drawing/state or markup |
|
||||
| `frontend/index.html:212` | Shared drawing/state or markup |
|
||||
| `frontend/app.js:3089` | Shared drawing/state or markup |
|
||||
| `frontend/fullscreen-orientation.js:112` | Shared drawing/state or markup |
|
||||
| `frontend/car-mode.js:13` | Shared drawing/state or markup |
|
||||
| `frontend/remote-client.js:424` | Shared drawing/state or markup |
|
||||
| `frontend/lyrics-window.js:27` | Shared drawing/state or markup |
|
||||
| `frontend/views-core.js:225` | Shared drawing/state or markup |
|
||||
| `frontend/shell-core.js:157` | Shared drawing/state or markup |
|
||||
| `frontend/share-external.js:189` | Shared drawing/state or markup |
|
||||
| `frontend/admin.html:388` | Shared drawing/state or markup |
|
||||
| `frontend/glass-controls.js:10` | Shared drawing/state or markup |
|
||||
| `frontend/stats-view.js:52` | Shared drawing/state or markup |
|
||||
| `frontend/watch-party-client.js:350` | Shared drawing/state or markup |
|
||||
|
||||
Inventory: main deck previous/play/next/back10/forward10; stage back10/play/forward10;
|
||||
mini play; service previous/play/next; remote previous/play/next and paired-screen
|
||||
play; fullscreen HUD; gesture feedback; Car previous/play/back15/next; floating
|
||||
lyrics play/next; homepage playlist play badges; Queue/sidebar/bottom-navigation
|
||||
play symbols; Play all/queue/in-full, bookmark jump and Add-to-queue actions;
|
||||
external-player launch links; admin editor play/pause and Play-here actions;
|
||||
track-play statistics, party now-playing and empty-state/brand symbols. Speed's
|
||||
old fast-forward glyph also uses the shared set. Glass's legacy decoder accepts
|
||||
old input strings but emits shared SVG references; it never restores a transport
|
||||
Unicode icon from the new markup.
|
||||
|
||||
F7 uses round filled shapes and a large circular play button. Classic keeps its
|
||||
existing surfaces with clean line drawings. Glass uses thin strokes and translucent
|
||||
surfaces. Bento uses rounded tiles. Labels, IDs and event handlers remain intact;
|
||||
visible transport targets have at least 44px dimensions. Car retains its readable
|
||||
high-contrast surface and text labels. Floating lyrics clones symbol definitions
|
||||
into its separate document and observes playback/layout/theme changes.
|
||||
|
||||
Presenter has no transport controls. F7's Up-next sheet uses clickable track rows,
|
||||
not old transport glyphs. Lock-screen controls are rendered by the OS through
|
||||
unchanged MediaSession action handlers; website SVG/CSS cannot theme those buttons.
|
||||
|
||||
A screenshot/bounding-box check caught a Chromium SVG-reference quirk: ancestor
|
||||
layout selectors changed styles in referenced groups without switching cloned
|
||||
geometry (F7 previous remained x=5 instead of x=4). Variant selection now lives on
|
||||
visible `<use>` elements; the harness checks the rendered bounds, not just styles.
|
||||
|
||||
Final verification:
|
||||
|
||||
```text
|
||||
node --test frontend/*.test.js: 246 pass, 0 fail
|
||||
bun test asset-manifest.test.js static-delivery.test.js: 21 pass, 0 fail
|
||||
node perf/ui-geometry.mjs: 384 cases; 0 failed checks
|
||||
node perf/ui-icons.mjs: 24 engine/layout/theme cases passed
|
||||
```
|
||||
|
||||
Both engines passed transport state/geometry checks and the original download-icon
|
||||
checks. All sources are free of rendered legacy transport glyphs. The only remaining
|
||||
Unicode transport strings are the legacy decoder input mapping. Evidence is in
|
||||
`perf/results/transport-icons-2026-10-09.json`; 48 transport preview/remote screenshots
|
||||
were saved and the four dark-layout previews were visually inspected. Screenshots are local
|
||||
and ignored in `plans/transport-shots/` and `plans/ui-shots/`. Real iPhone checks:
|
||||
Car/fullscreen readability and native lock-screen controls; document PiP is browser
|
||||
feature-dependent and was not verified on a real phone.
|
||||
Reference in New Issue
Block a user