Sea Select: keep the sky btn lit on a revisited felt (+ clean felt-swap); slow the glow-handoff ease-out — TDD

Symmetry (user-spec): Sky Select leaves the burger sea btn lit while the sky
felt is up; Sea Select now mirrors it — openSea disables ONLY id_text_btn, no
longer id_sky_btn, so a revisited Sea Select keeps the completed sky one click
away. An adversarial pass flagged that the two felts are equal-z (z-index:5)
siblings and neither open path drops the other's open-class, so leaving the sky
btn lit and clicking it from inside the sea felt would DOUBLE-OPEN (sea paints
over sky → confusing no-op) — the same latent stack already reachable in the
sky->sea direction on a both-complete reload. Fixed in BOTH directions: openSea
now closes the sky felt first + openSky closes the sea felt first (each exposes
its close on window: closeSeaFelt / closeSkyFelt), so clicking the other phase's
lit btn performs a clean SWAP. The text-btn disable/restore chain stays correct
across the swap (closeSky restores text, openSea re-disables + recaches it).

Glow: the glow-handoff pulse ease-OUT now runs ~2.8s (was ~1.4s) — moved the
cycle to 3.2s with the bright peak at 12.5%, keeping the ease-IN swell at ~0.4s
(user asked for a longer linger).

[[feedback-felt-aperture-fill-covers-felt]] [[feedback-inline-partial-script-defer-for-later-partial]]

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-06-08 00:57:24 -04:00
parent 82f4af9bcc
commit 945d110171
4 changed files with 53 additions and 10 deletions

View File

@@ -184,6 +184,13 @@
}
function openSky() {
// Clean SWAP, not a double-open: if the sea felt is up (its lit sky btn was
// just clicked) close it first. Both felts are z-5 siblings that otherwise
// stack; neither open path drops the other's open-class on its own. Mirrored
// by openSea closing the sky felt (user-spec 2026-06-08).
if (document.documentElement.classList.contains('sea-open') && window.closeSeaFelt) {
window.closeSeaFelt();
}
document.documentElement.classList.add('sky-open');
_disableTextBtn();
// Re-sync the room gear to the sky NVM pane (room-views.js owns the gear
@@ -624,6 +631,9 @@
// Exposed so the burger fan's #id_sky_btn (active once the sky is saved) can
// reopen the saved wheel. burger-btn.js calls window.openSkyFelt().
window.openSkyFelt = openSky;
// Exposed so openSea can close the sky felt for a clean felt-swap when a user
// clicks the lit sky btn from inside the sea felt (user-spec 2026-06-08).
window.closeSkyFelt = closeSky;
// ── Restore persisted form data + prime a saved (confirmed) wheel ───────────
// Pre-save the wheel draw is deferred to openSky (form shows alone). Once the