Aero music: start without a tap on the player

"It should play by default when the Frutiger theme loads in." The embed URL
now carries auto_play=true as a second try alongside the immediate play()
call, and when the browser still refuses (a reload carries no gesture), the
retry rides the next pointerdown/keydown anywhere OUTSIDE the player - the
first tap on anything starts the music. A 700ms throttle keeps a flurry of
taps from skipping through the set, taps on the player's own controls are
left to their handlers (no blip on the x), and an explicit pause or dismiss
is respected: no later gesture undoes it. Looking at the player (expanding
the circle) starts a still-pending soundtrack too.

aero-music-test simulates the refusal (__scAllowPlay) and pins all three
paths: one attempt anyway, the next tap starts it, an explicit pause stays.
28 checks. Version 0.7.1, SW v93.
This commit is contained in:
Martin Dvořák 2026-10-16 05:28:12 +00:00
commit 1ad199fb56
5 changed files with 118 additions and 12 deletions

View file

@ -1501,14 +1501,17 @@ Things I chose while building, with the reasoning:
while Aero is on and the listener has not turned it off — light/dark request nothing from
soundcloud.com, and a suite check pins that; the off choice persists (`freezmo.aero-music.v1`)
while re-selecting Aero in Settings is fresh consent (`applyTheme` clears the flag); volume
starts at 45; playback pauses rather than resumes after a reload (browsers require a gesture,
so the circle comes up paused and one tap starts it); the iframe is 1px and inert, only the
audio engine; the control clears the phone tab bar, lifts above the chat composer and the
starts at 45; the iframe is 1px and inert, only the audio engine; the control clears the phone tab bar, lifts above the chat composer and the
wizard bar, steps aside under immersive overlays and while the cookie notice shares the
corner, and the credit area collapses back to the circle without stopping the music. The
cookie policy gained the one third-party-embed paragraph it was owed (soundcloud.com may set
its own cookies; Freezmo still sets none). `tests/aero-music-test.mjs` stubs the widget API
and pins all of it (21 checks).
and pins all of it (28 checks). **Follow-up:** it must not need a tap on the player at all. The
embed URL now carries `auto_play=true` as a second try, and when the browser still refuses
(a reload has no gesture) the retry rides the next `pointerdown`/`keydown` anywhere *outside*
the player — so the first tap on anything starts the music, with a 700ms throttle so a flurry
of taps cannot skip through the set. An explicit pause or the × is respected: no later gesture
undoes it. The suite simulates the refusal (`__scAllowPlay`) and pins all three paths.
100. **The review breakdown carries each deck's own total.** The follow-up to 99: "bro its not
possible, I only have 2 decks" — the screenshot showed three deck cards (one clipped at the