diff --git a/docs/v4v-native-player-20261006.md b/docs/v4v-native-player-20261006.md new file mode 100644 index 00000000..5d17ae72 --- /dev/null +++ b/docs/v4v-native-player-20261006.md @@ -0,0 +1,43 @@ +# 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. diff --git a/neode-ui/public/assets/img/v4v-login-background.png b/neode-ui/public/assets/img/v4v-login-background.png index abe9c059..bcef8db4 100644 Binary files a/neode-ui/public/assets/img/v4v-login-background.png and b/neode-ui/public/assets/img/v4v-login-background.png differ diff --git a/neode-ui/src/components/GlobalAudioPlayer.vue b/neode-ui/src/components/GlobalAudioPlayer.vue index 6ce5b864..fe26e6f3 100644 --- a/neode-ui/src/components/GlobalAudioPlayer.vue +++ b/neode-ui/src/components/GlobalAudioPlayer.vue @@ -6,9 +6,11 @@ ref="barEl" class="fixed left-0 right-0 z-40 audio-player-bar" > + +