Files
archy/docs/v4v-native-player-20261006.md
T

89 lines
5.5 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.
## Resumed dashboard deployment — 6 October
The previously completed full dashboard suite passed 1,307 tests in 165 files;
the production build passed. Both logs survived the session interruption, and the
UI source remains unchanged from that build. The resulting dashboard was deployed
to the dev node with index SHA-256
`a03f3e7a366613f82dd9fe014dc04301f223b9896f6684bf2ee5aa06aa59b2de`.
Served bytes match; backend, session key and app container identities/start times
were preserved. A rollback archive/script was saved in the node support directory.
Post-deployment browser checks are in progress. This is dashboard deployment only;
Yaya and the new private V4V app image still require deployment/acceptance.
Post-deployment dev browser retry passed all four delayed-loading cases: session
and overlay at390/1440px, retaining the original frame and deferring the companion
prompt. The first attempt timed out on navigation during shared build I/O pressure;
its failure log is retained. This verifies launcher regression behaviour on the
served candidate, not live V4V queue controls or Yaya playback. Logs:
`/tmp/archy-native-player-dev-browser{,-retry}.log`.
Resumed Yaya dashboard deployment passed using the same qualified UI archive as dev. Served index SHA256 is `a03f3e7a366613f82dd9fe014dc04301f223b9896f6684bf2ee5aa06aa59b2de`; backend binary, node session key and all app container identities/start times were unchanged. Evidence: `/tmp/archy-native-player-yaya-deploy.log`. Rollback: `/var/lib/archipelago/support/native-player-ui-20261006T232200Z-3529899/rollback.sh`. The private native-login app image is being staged separately; this dashboard deployment alone does not establish real app/companion playback acceptance.
## Full live Browse and playback requalification
After the generic installed-app entry-path fix was deployed, the actual Yaya
managed V4V app passed at 390px and 1440px. The iframe initially opens `/browse`
and authentication returns to Browse. Each fresh browser session made one
approved native Nostr authentication signature and received login HTTP 200.
The app used its documented four-second intro boot fallback; the harness now
accepts either its visible intro controls or that explicit fallback state,
without increasing timeouts. The initial unconditional intro-control failure is
retained at `/tmp/archy-v4v-native-browse-final-390.log`.
Both complete checks played existing bundled songs, closed into the native bar,
confirmed continuing audio, operated pause/play/previous/next/shuffle against
the app's queue, and reopened the same iframe without losing playback. Artwork
was decoded with nonzero natural dimensions, visibly covered the bar, and the
controls stayed within it. Actual screenshots were inspected at both widths;
the mobile bar does not overlap bottom navigation. Playback was muted; no payment
or relay publication occurred. Physical companion acceptance remains open.
Evidence: `/tmp/archy-v4v-native-browse-final-390-recheck.log`,
`/tmp/archy-v4v-native-browse-final-1440.log`, and private screenshots
`/tmp/archy-v4v-live-player-{390,1440}.png`.