Phones get flat glass: no live blur, no baked layer

The touch fallback from 0.3.8 (a real backdrop-filter over the live
scene) was the wrong trade: every pane re-blurs on every frame while
the bubbles animate, and phones choke - input lag, "buttons take ages
to respond". Touch devices now drop both the bake (which mispaints
there) and the live blur: the panes keep the thin Ask-pill tint over
the sharp scene, and the hand-rolled activity fills keep their own
tints - transparent glass at zero per-frame cost. Desktop keeps the
baked blur.

tests/mobile-test.mjs pins the flat contract (no baked layer, no
backdrop-filter on a card) with a touch context: 124/124.
Contrast 0 findings, axe clean, chat 101/101, regression 44/44, i18n
13/13, native 33/33. Version 0.3.9, SW -> freezmo-v68.
This commit is contained in:
Martin Dvořák 2026-10-13 15:57:46 +00:00
commit 2b78dcf0d1
5 changed files with 29 additions and 17 deletions

View file

@ -295,13 +295,13 @@ const AXE = axeSource();
await page.waitForTimeout(1000);
const glass = await page.evaluate(() => {
const coarsish = matchMedia("(pointer: coarse)").matches || matchMedia("(max-width: 639px)").matches;
const el = document.querySelector(".segmented");
const el = document.querySelector(".card");
const cs = getComputedStyle(el);
return { coarsish, backdrop: cs.backdropFilter, image: cs.backgroundImage };
});
check(
"theme: touch glass blurs the live backdrop (no baked layer)",
glass.coarsish && glass.backdrop.includes("blur") && glass.image === "none",
"theme: touch glass is flat (no bake, no per-frame blur)",
glass.coarsish && glass.backdrop === "none" && glass.image === "none",
JSON.stringify(glass),
);
await context.close();