Thinner glass everywhere, chat answers as bubbles in Aero

Two asks. "Slightly more transparent": the veils drop another notch
(recipe 0.15 -> 0.12, tokens ~0.03 less, tab bar / wizard bar / gloss
likewise). "Some buttons aren't themed": the recipe now catches the
flows' hand-rolled frost by attribute selectors - the study activities'
bg-white/xx chips (multiple choice, matching, ordering, fill blank),
the exam rows that used bg-[var(--surface)] (an opaque white in Aero),
and everything on the surface tokens (chat chips, homework chips,
inputs, dropzones). Inside sheets the same shapes stay flat; the
dropzones lost their press-scale (a transform re-anchors the fixed
backdrop) and shade inward instead.

And the chat: the assistant answers are bubble-less by design and the
user bubble's thin tint washed out over the bright wallpaper, so the
longest text in the app sat straight on the photo. In Aero both roles
get a real pane now - chat-answer wraps the markdown in a bubble, the
user turn carries chat-bubble, with a stronger veil than the shared
glass for comfortable reading. Light and dark keep the bubble-less
assistant design (styled only under .aero).

Contrast: 0 below-minimum findings, 0 axe violations. Chat 101/101,
mobile 123/123, regression 44/44, i18n 13/13, native 33/33.
Version 0.3.5, SW -> freezmo-v65.
This commit is contained in:
Martin Dvořák 2026-10-13 12:43:46 +00:00
commit 5eec310e16
5 changed files with 102 additions and 25 deletions

View file

@ -1411,6 +1411,26 @@ Things I chose while building, with the reasoning:
pre-blurred wallpaper — the scene is clearly visible through the glass, and the
pixel-contrast scan still passes.
70. **Chat answers are bubbles in Aero too.** The assistant answers are deliberately bubble-less
(full-width text on the flat themes) and the user bubble's thin tint washed out over the bright
parts of the wallpaper, so the longest text in the app ended up sitting straight on the photo.
In Aero both get a real pane: `.chat-answer` wraps the markdown in a bubble (plus a
`chat-bubble` class on the user turn), with a stronger veil than the shared glass so a wall of
text still reads comfortably over the same blurred scene, and the bright rim. Light and dark
keep the bubble-less assistant design — these classes are styled only under `.aero`.
69. **The glass got thinner and reaches the whole app.** Two asks in one pass: "slightly more
transparent" and "some buttons aren't themed" while doing decks/homework. The veils drop
another notch (recipe 0.15 -> 0.12, the tokens ~0.03 less, the tab bar / wizard bar / gloss
likewise), and the recipe now catches the flows' hand-rolled frost: the study activities'
`bg-white/xx` chips (multiple-choice options, matching terms, ordering cards, fill-in-blank
chips), the exam deck rows and pickers that used `bg-[var(--surface)]` — an *opaque* white in
Aero — and everything using the surface tokens (chat action chips, homework chips, inputs,
dropzones); attribute selectors match them, so no component needed a new class. The same shapes
inside sheets stay flat (the exclusion list covers the new selectors — there the sheet itself is
the glass), and the dropzones lost their press-scale (a transform on a fixed backdrop
re-anchors it) and shade inward instead. `tests/contrast.mjs`: 0 findings.
68. **The Ask pill joins the glass, and Aero's hovers light the pane instead of moving it.** Two
leftovers from the previous pass. The Ask button (and the two phone icon pills that share its
styling) was a hand-styled `bg-[var(--surface-strong)]` pill that never picked up the frosted