44 lines
2.4 KiB
Markdown
44 lines
2.4 KiB
Markdown
# V4V native player and music banner follow-up
|
|||
|
|
|
||
|
|
## Source changes
|
||
|
|
|
||
|
|
- The existing native player now offers previous, next and shuffle. Each command
|
||
|
|
delegates to V4V's existing action, so V4V owns the queue and shuffle ordering.
|
||
|
|
Shuffle state and the current cover come back from the same app snapshot.
|
||
|
|
- Cover artwork sits under a dark contrast layer; malformed or credential-bearing
|
||
|
|
URLs are ignored. Remote artwork requires HTTPS. No media URL, payment token or
|
||
|
|
second audio element is handed to the dashboard.
|
||
|
|
- The app iframe remains mounted while hidden. The app panel and bottom bar have
|
||
|
|
complementary transitions, disabled for reduced-motion preferences.
|
||
|
|
- V4V's same-host default-port media handshake survives a same-app login redirect
|
||
|
|
or absent referrer. Parent window, exact origin and per-session nonce checks
|
||
|
|
remain required. Unrelated host/sibling-port referrers are rejected.
|
||
|
|
- The Sovereign Music banner uses the app's final settled cymatic field, not an
|
||
|
|
early intro frame: the original pattern, zero offset, particle lift 0.88 and
|
||
|
|
`renderFrame(0)`, matching `setSettledPattern`. The capture uses a fixed random
|
||
|
|
seed and the app's actual `cymatics.mjs`. A decorative record/play symbol and
|
||
|
|
waveform appear on the right, subdued on small screens.
|
||
|
|
|
||
|
|
## Validation
|
||
|
|
|
||
|
|
- App media protocol: 4 tests passed, including login redirect boundaries and
|
||
|
|
delegation of all three queue controls.
|
||
|
|
- Dashboard bridge/audio/catalog: 18 tests passed.
|
||
|
|
- Native player rendering: 1 test passed, including cover, authoritative shuffle,
|
||
|
|
control delegation, visibility on reopen and absence of a second audio element.
|
||
|
|
- Vue type check passed.
|
||
|
|
- Real Chromium component rendering at 390 and 1440 pixels: all six buttons
|
||
|
|
visible; previous/next/shuffle reached the controller; no horizontal overflow.
|
||
|
|
Reduced-motion rendering exercised. This is an isolated component fixture,
|
||
|
|
not live app integration acceptance.
|
||
|
|
- The operator reported that the existing bottom-bar transition is now working.
|
||
|
|
This is separate from the automated evidence above.
|
||
|
|
|
||
|
|
## Still required after deployment
|
||
|
|
|
||
|
|
On Yaya, play a real song, close the app, operate previous/next/shuffle from the
|
||
|
|
native bar, and reopen the same iframe. Verify uninterrupted audio, matching
|
||
|
|
song/cover/shuffle, and the app's actual queue. Repeat at mobile and desktop
|
||
|
|
sizes and through the new Nostr login. Verify banner visually with the signed
|
||
|
|
node-only catalog. This follow-up does not claim those live checks passed yet.
|