Skip to content

fix: the predict card matches its design - #587

Merged
maximsan merged 5 commits into
mainfrom
fix/predict-card-matches-its-design
Sep 11, 2026
Merged

maximsan merged 5 commits into
mainfrom
fix/predict-card-matches-its-design

Conversation

@maximsan

@maximsan maximsan commented Sep 10, 2026 •

Copy link
Copy Markdown
Owner

Why

An audit of #510 and #523 found both correct. Every mood-following mark on Roasty reads the mood the design gives it, the palette guard pins the rest, and the predict card hands its guess to Roasty exactly as the design calls the feedback block. What the audit also found is the predict card around that block, ported before #523 and never compared to the design since:

  • The app drew a LESSON 1 eyebrow; the design says "the label is the lesson number, which the top bar and the Path already carry" and opens the card on its title, on the display rung.
  • The paragraph and the question read at the body size; the design sets both on the lead, at its own leading.
  • The design heads the guess with a mono First guess line, which the app never drew.
  • The tiles sat one token apart; the design sets gap: 11px.
  • The button said Continue; the design says Make a guess until a guess is taken, then Find out.

And the button on every card. The design lays each card out as a stretching column with a spacer before the button, so the way on sits at the foot of the screen and a taller card scrolls with the button after it. The app's shell put the button straight after the content, on every kind. The lesson screen and the mini-game player now scroll the card through a host that gives it the viewport's height, and the shell spreads its two halves into it, with the design's paddingTop: 32 above the button.

And Roasty's card face. The design shows two things once the guess is taken: a wide, still halo behind him, and a tight glow in the mood's warn colour breathing around his body, drop-shadow(0 0 12px var(--warn)) at its peak every 1.6 seconds. The app had one halo that blinked and no glow on the body. The halo now holds, and the shimmer is the bean's outline blurred in warn under the body's own transform, so it hugs him through the sway.

And the top bar's bookmark. The design's bookmark style is settled as ring: on a top bar the save control is a 32 ring on a 1px solid var(--rule) border, muted ink, with the mark at 16, turning accent once saved. The app drew the bare mark in full ink. The lesson, the term page and Term of the Day now pass the ring; the term page's back control was already ringed, so its two ends finally match, as the design's note on that page says they should.

Watch for

  • The card shell gains one optional field, the wording of its Continue, defaulting to Continue. Its rule is untouched: the way on is still gated on the card latching, and only the predict card passes a label.
  • The two labels live in AppLabels, because the simulator smoke walk waits for a live Continue on every card and the first lesson opens on a predict card. The walk now takes Continue or Find out as the way on, from the same constants.
  • Five register entries carry the design's marginTop: 18, margin: '30px 0 0', lineHeight: 1.55, lineHeight: 1.5 and gap: 11px; the register test holds them against the prototype.

Not here

Two spacings that reach every card kind, filed as #594 and listed on #365: the verdict block's marginTop = 22, which nine hosts set at 16 each, and the gap above the button, which the design sets at 30 on predict and decision and 26 on recall where the shell keeps 32.

Checks

The simulator smoke walk, which gates main only, ran locally with CI's own recipe and passed with the Dart tests executing: the cold launch walks the first lesson through its predict card on the new gate.

@maximsan
maximsan merged commit 2b5edd3 into main Sep 11, 2026
7 checks passed
@maximsan
maximsan deleted the fix/predict-card-matches-its-design branch September 11, 2026 14:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant