Found while giving Roasty's palette a home (#424). The colours match the design 1:1, but the faces in roasty_faces.dart and the wrong badge in roasty_particles.dart draw fewer marks than the mascot component, prototype/roasty.jsx:
- Cheeks. The design blushes every face. The app leaves them off the wrong face (opacity 0.3), the card face (0.5), the sleep face (0.35) and the awake face (0.4) — and the module face wears the idle face's 0.45 where the design gives it 0.55.
- Lesson face. The design draws a filled open mouth with a tongue; the app reuses the correct face's stroked smile, so the two moments look alike.
- Module face. The design adds a tongue under the open mouth; the app draws the mouth alone.
- Wrong badge. The design draws the badge group at opacity 0.85; the app draws it opaque.
Also found, and fixed here
One helper generated a regular five-pointed star for its two callers, and the design draws neither of them that way: the module face's eyes are a hand-drawn star whose inner points sit at two different radii and which hangs lower than it reaches, and the sparkles are four-pointed twinkles at three sizes rather than one five-pointed star at one size. Both now come from the design's own paths.
Acceptance criteria
Left open
The design has nine mascot states and the app has eight — the points wink is undrawn. Whether the app has a moment that should use it is a product call, so it is #518 rather than part of this.
Found while giving Roasty's palette a home (#424). The colours match the design 1:1, but the faces in
roasty_faces.dartand the wrong badge inroasty_particles.dartdraw fewer marks than the mascot component,prototype/roasty.jsx:Also found, and fixed here
One helper generated a regular five-pointed star for its two callers, and the design draws neither of them that way: the module face's eyes are a hand-drawn star whose inner points sit at two different radii and which hangs lower than it reaches, and the sparkles are four-pointed twinkles at three sizes rather than one five-pointed star at one size. Both now come from the design's own paths.
Acceptance criteria
roasty.jsxdraws for it, at the design's alphas —roasty_faces_test.dartreads the source and compares every cheek pair, mouth and tonguesaveLayer, so the badge composites before it fades rather than fading mark by markflutter analyze, metrics gate, tests clean — run onmainmerged in, with the suite at 2577Left open
The design has nine mascot states and the app has eight — the
pointswink is undrawn. Whether the app has a moment that should use it is a product call, so it is #518 rather than part of this.