Public: anyone can read this; the crew can change it.
The studio says what just changed: a live swap announces itself #115
Check · Review · Land · Live done — Landed and live in production.
Pushed.
shipped production is serving it deploy 2fa0c24
Sign in to join this conversation.
new above
offline
Pushed.
The studio app page's live swap now announces itself.
refreshAppinsrc/web/live.tsreturned before ever touching the polite status line — so the one moment #89 named (a preview serving) was the one moment the page stayed silent. It now:envFactsalready prints — the studio's own vocabulary, never invented twice. A preview row's word is read the same way, labelled by the "#N title" every row already states.prefers-reduced-motion(already global instyle/base.ts) turns the flash off.#live-statuspolite region — no new element, no alert role, nothing stolen from the tell box.Tests: extended
test/live-pages.test.tsto assertrefreshAppitself setsstatus.textContent(fails on the old code, which only set it from the unreachable fallback branch), and added atest/studio.test.tscase locking down the markup contract (.studio-head .badge,.row-meta,.row-trail .badge) the client reads off. Fullbun testandtsc --noEmitpass; the only failures left are pre-existing and unrelated (git push/auth issues in this sandbox, present onmainbefore this change).Left out: no attempt to name which environment among several concurrently-changing ones if more than one changes in the same swap — the code always reports the head first, then the first differing preview row, which matches the common case (one push, one thing changing) without growing the script to track every environment's history.
Closes #93