fix(web): stop the Frutiger Aero SoundCloud widget from crashing the page on teardown

This commit is contained in:
Martin Dvořák 2026-10-16 00:24:09 +02:00
commit 0fb845838c
5 changed files with 49 additions and 23 deletions

View file

@ -186,7 +186,11 @@ Themes: `web` = default frosted-glass website (sidebar + content, light/dark),
random track from the *Frutiger Aero* SoundCloud playlist (a hidden SoundCloud
iframe driven through their widget API: it picks a random index from `getSounds`
and re-randomises on every `PLAY` event so the set never plays in order; the chip
label is synced from `getCurrentSound`, not from what we asked for). The two remaining feature panels (`.web-split`) stretch
label is synced from `getCurrentSound`, not from what we asked for). That widget
API drives the iframe over `postMessage`, so every call is gated behind an
`alive()` check: React detaches the iframe *before* the effect cleanup runs, and
an unguarded `pause()` there throws `Cannot read properties of null (reading
'postMessage')`, which unmounts the whole page. The two remaining feature panels (`.web-split`) stretch
to equal height and share a fixed `16 / 10` `.fw` window (the `FeatureWindow`
component) — decorative, **asset-free CSS mock-ups** rather than screenshots:
Revival Inc. is a little necromancy game scene (night sky, moon, tombstones,