4.4 KiB
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:
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.