One loading screen everywhere (the deck wizard's)

The deck wizard had the good one — app icon, rotating stage message as the
headline, progress bar, stage checklist, tip, Cancel — while homework showed
a spinner with a title and route loads a pulsing icon with a smaller line.
All of them now render components/LoadingState:

- the wizard passes its vision/generation stages and keeps its deck tips;
- homework passes the same shape with homework wording (no tips: they are
  deck-specific);
- route screens (review/stats/exam loading boundaries + the link overlay)
  pass a single message, no stages or progress.

Cancel stays a 44px touch target, the icon animation respects
prefers-reduced-motion, and the unused homework.loading.title string is
gone from both languages.

Suites: freeze-loading 6/6, review 18/18, wizard 88/88, mobile 105/105,
regression 38/38, native 31/31, phase-2 62/62, phase-3 30/30, i18n 13/13.
README: decision 60. SW -> freezmo-v47.
This commit is contained in:
Martin Dvořák 2026-10-12 18:43:53 +00:00
commit 2d4d4ee776
7 changed files with 187 additions and 129 deletions

View file

@ -1361,6 +1361,16 @@ Things I chose while building, with the reasoning:
phase-1 suite (43 checks, including the real route mapping against a stub Ollama returning a
monthly-limit body, a two-device sync round-trip, and the generation guards below).
60. **There is exactly one loading screen.** The deck wizard had the good one — the app icon, the
rotating stage message as the headline, the progress bar, the stage checklist, a tip and
Cancel — while the homework flows showed a spinner with a title and the route loads a pulsing
icon with a smaller line. All three now render `components/LoadingState`: the wizard passes its
vision/generation stages (and keeps its deck tips), the homework passes the same shape with
homework wording (no tips — the tips are deck-specific), and the route screens pass a single
message with no stages or progress. Cancel stays a 44px touch target and the icon animation
respects `prefers-reduced-motion`. Verified by the freeze-loading, review, wizard and mobile
suites.
59. **Adding a deck or a homework syncs itself.** Sync used to be push-on-demand only: a deck
frozen on the laptop sat in `dirty` until someone opened Settings and pressed Sync now. The two
stores whose writes mean "the user just made something" (`lib/storage`, `lib/homework`) now