Aero button glass + homework report control; reduced-motion sheet glitch

Buttons: the recipe's thin veils let btn-secondary/btn-ghost/glass-pill
blend into the grass and sky - they now carry a stronger pale-glass veil
(the Ask-pill look) over the blurred scene, ghosts plus a rim and
full-contrast text. Homework make/check results gained the same red "!"
report control as the feeds and the guide (a synthetic short-answer
activity maps into the report flow; pinned in phase3).

Reduced motion: the manual toggle only fed framer's MotionConfig, which
strips transform animations - while components branched on the OS-only
useReducedMotion - so translucent sheets still spring-faded their opacity
in over the page (the "ugly visual glitch with the settings panel"). All
16 components now read useAppReducedMotion() (OS or toggle), and the
settings sheet/scrim and the library's phone sheet go instant. Verified
frame by frame: opacity 1.00 from the first frame.

Contrast 0 findings, axe clean; mobile 126/126, chat 102/102, providers
20/20, wizard 95/95, phase3 31/31, bubbles 34/34, i18n 13/13, native
33/33. Version 0.5.4, SW -> freezmo-v76.
This commit is contained in:
Martin Dvořák 2026-10-14 09:19:54 +00:00
commit 7da308fa1e
26 changed files with 155 additions and 22 deletions

View file

@ -1423,6 +1423,24 @@ Things I chose while building, with the reasoning:
the chrome's edges) — a flat pane floating 40px inside the scene read as "cut off next to the
sidebar".
86. **Reduced motion no longer ghosts the sheets.** The in-app toggle fed framer through
`MotionConfig reducedMotion="always"`, which only strips *transform* animations — while every
component branched on the OS-only `useReducedMotion`. So a translucent sheet still spring-faded
its opacity in over the page, showing the page through it for ~300 ms ("ugly visual glitch with
the settings panel when reduced motion is on"). All 16 components now read
`useAppReducedMotion()` (the OS preference *or* the toggle), and the settings sheet + scrim and
the library's phone sheet go instant under reduced motion. Verified frame by frame: opacity
1.00 from the very first frame.
85. **Aero's buttons read as buttons, and homework results can be reported.** Two reports from one
screenshot. The recipe's thin veils let secondary/ghost buttons blend into the grass and sky
("why are there buttons which dont have any background"): `btn-secondary`, `btn-ghost` and
`glass-pill` now carry a stronger pale-glass veil (the "Ask pill" look) over the blurred scene,
with ghosts also getting a rim and full-contrast text. And the homework make/check results had
no report control — both now carry the same red "!" as the study feeds and the guide, mapping
the result into the existing report flow through a synthetic short-answer activity (the report
keeps only the flattened question/type/id), pinned in phase3's result-flow checks.
84. **"Available" means proven, not just listed.** With a cloud Ollama key the picker marked every
model from /api/tags as *available* — but a free plan can list models it cannot run, so the
badge promised more than the account could keep. A tag listing now proves availability only on