Commit 82f863a
Feel-better polish + hatch tuner + bird crown + Path Finder cards (#60)
* refactor(polish): feel-better pass across History / Profile / Path Finder, plus bird palette + legend icons + rail borders
Apply the 16 principles of the make-interfaces-feel-better skill across
the three sheets and their shared chrome. Token-first cascade so
follow-on surfaces inherit.
- styles.css `@theme`: new shadow tokens (--shadow-sheet-popover /
-dialog / -tile / -active-rail), --press-scale token, .image-outline
utility, global :where(h1-h4) text-balance + :where(p,li) text-pretty,
rename @Keyframes trajectoryMenuIn → sheet-popover-in
- ui/sheet.tsx, ui/drawer.tsx: PageCloseButton + Drawer close size-9/8
→ size-10 hit area + press-scale; transition-[transform,opacity]
collapse (principle #14); SheetNavButton gets press-scale 0.97
- ui/button.tsx: JSDoc note on `sm` variant hit area
- HistorySheet + CalendarPane + DayDetailCard: ViewModeDropdown press
+ popover shadow token + enter animation; chevron/today/term/retry
buttons bumped to min-h-10 / size-10 with press-scale
- ProfileSheet: avatar + claim thumbnails get .image-outline; AccountMenu
+ ShareDialog + Tldr/Personality hero get shadow tokens + popover
enter animation; ShareDialog buttons bumped to min-h-10 + press-scale;
toggle pseudo hit-area extender; press-scale on TimelineQuote +
BigFiveCards + Tldr chips; drop unused Button import
- TrajectorySheet: rename keyframe callsites to sheet-popover-in; nudge
pathway-tabs outer radius to rounded-[18px] (exact concentric)
- ChoicesPageView: tabular-nums on counts; press-scale + before:-inset
pseudo-extender on pattern + force chips
Bird:
- Kira.js: bring Masked Bower into the palette system. Adds
palette.body + palette.tie to the masked species spec; refactors the
GLB recolor block to read from the palette. setSpecies() now routes
ALL species ids through the MaskedBower GLB, tinted from the chosen
species's palette (back/accent → body/tie), so picking any egg color
hatches the same GLB shape in the matching colorway. Re-applies tints
in _buildMaskedAsync's resolve handler since the GLB scene is
module-cached.
Calendar legend: replace dot/square markers with lucide icons
(Smile / NotebookPen / Camera / CalendarDays).
SideRail buttons: subtle dark borders for hover (black/8) + active
(black/10) — the prior white-on-cream borders were invisible. Active
state now uses --shadow-active-rail token; tooltip pill uses
--shadow-sheet-popover + faint border + specific transition list.
`pnpm check` clean. `pnpm test` shows only pre-existing failures
identical to main.
* feat(hatch): visual tuner + bird crown restore + calendar cell icons + Path Finder cards
Bird (Kira.js): keep V_Crest* crown visible across all colorways
(removed PR #55's MB_Crest hide block + dropped PR #57's mohawk
tuft + cap-sleeve calls); reparent MB_Crest meshes under MB_Head
via Object3D.attach() so the crown follows head tilt + wave; add
MB_HeadOrange to the palette tint map so the head matches the
body color.
Hatch tuner: new src/lib/student-space/hatch-tuner.ts store
mirroring camera-tuner pattern (DEFAULT_HATCH_PRESET +
patch/reset/useHatchPreset). EggHatcher reads bird Y positions,
scale, camera FOV + distance from the store at scene init; new
HATCH_TUNER_REPLAY_EVENT bumps a replayKey so the canvas remounts
with fresh values. New HatchTuneHud component with sliders +
embedded EggCanvas preview + Replay/Copy/Reset, gated to dev via
the Cmd+K palette and mounted globally in __root.tsx. Tuned
defaults: birdStartY -0.7, birdRevealY -0.4, birdScale 0.39,
cameraFov 28, cameraDistance 6.4.
EggCanvas polish: container h-48 w-40 → h-80 w-56, shell halves
transition transparent and fade out during the WAVE phase so the
bird stands alone before the next screen, name-step input
restyled to match the swatch-card hover/focus treatment
(max-w-[18rem], --shadow-sheet-tile default + lift to
--shadow-sheet-popover on hover/focus). buildBird routes ALL
egg colors through the GLB clone tinted from the species palette
(procedural builder archived in place as defensive fallback).
CalendarPane: cell markers swapped from colored dots / squares /
glyph-dot to Smile / Camera|NotebookPen / CalendarDays icons
matching the legend; per-mood color preserved via inline style;
photo precedence over reflection preserved; selected-cell
inversion preserved.
TrajectorySheet (Path Finder): SearchingBody pathway tabs
converted from a single tablist + tabpanel into a stacked
<ol> of self-contained cards (number badge + title + prompt +
EvidenceDisclosure + MSF link inside each card); hover lift via
--shadow-sheet-tile → --shadow-sheet-popover; selection state
(activeIndex / selectedIndex) removed.
Misc: firstChatActions.feel copy "Tell me how I feel now" →
"Capture my how i feel now"; KiraSpeciesPalette type extended
with optional body+tie GLB tints.
`pnpm check` clean. `pnpm test` shows only pre-existing failures
identical to main (same 10 failures, +17 new tests from rebased
PRs all passing).
---------
Co-authored-by: Reza Ilmi <reza.ilmi@gt.tech.gov.sg>1 parent 70cc00b commit 82f863a
20 files changed
Lines changed: 1157 additions & 207 deletions
File tree
- docs/plans
- src
- components
- student-space
- onboarding
- sheets
- ui
- engine/student-space/Game/View
- Onboarding
- lib/student-space
- routes
Lines changed: 397 additions & 0 deletions
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
298 | 298 | | |
299 | 299 | | |
300 | 300 | | |
301 | | - | |
| 301 | + | |
302 | 302 | | |
303 | 303 | | |
304 | 304 | | |
| |||
415 | 415 | | |
416 | 416 | | |
417 | 417 | | |
418 | | - | |
| 418 | + | |
419 | 419 | | |
420 | 420 | | |
421 | 421 | | |
| |||
514 | 514 | | |
515 | 515 | | |
516 | 516 | | |
517 | | - | |
| 517 | + | |
518 | 518 | | |
519 | 519 | | |
520 | 520 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
68 | 69 | | |
69 | 70 | | |
70 | 71 | | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
71 | 83 | | |
72 | 84 | | |
73 | 85 | | |
| |||
86 | 98 | | |
87 | 99 | | |
88 | 100 | | |
| 101 | + | |
89 | 102 | | |
90 | 103 | | |
91 | 104 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
167 | 167 | | |
168 | 168 | | |
169 | 169 | | |
170 | | - | |
171 | | - | |
| 170 | + | |
| 171 | + | |
172 | 172 | | |
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
178 | | - | |
| 178 | + | |
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
| |||
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
58 | 64 | | |
59 | 65 | | |
60 | 66 | | |
| |||
74 | 80 | | |
75 | 81 | | |
76 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
77 | 90 | | |
78 | 91 | | |
79 | 92 | | |
| |||
121 | 134 | | |
122 | 135 | | |
123 | 136 | | |
| 137 | + | |
124 | 138 | | |
125 | 139 | | |
126 | 140 | | |
| |||
147 | 161 | | |
148 | 162 | | |
149 | 163 | | |
150 | | - | |
151 | | - | |
152 | | - | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
153 | 168 | | |
154 | | - | |
| 169 | + | |
155 | 170 | | |
156 | 171 | | |
157 | 172 | | |
158 | 173 | | |
159 | | - | |
| 174 | + | |
160 | 175 | | |
161 | 176 | | |
162 | 177 | | |
| |||
178 | 193 | | |
179 | 194 | | |
180 | 195 | | |
| 196 | + | |
181 | 197 | | |
182 | 198 | | |
183 | 199 | | |
| |||
204 | 220 | | |
205 | 221 | | |
206 | 222 | | |
207 | | - | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
208 | 229 | | |
209 | 230 | | |
210 | 231 | | |
| |||
234 | 255 | | |
235 | 256 | | |
236 | 257 | | |
| 258 | + | |
237 | 259 | | |
238 | 260 | | |
239 | 261 | | |
| |||
267 | 289 | | |
268 | 290 | | |
269 | 291 | | |
270 | | - | |
271 | | - | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
272 | 296 | | |
273 | 297 | | |
274 | 298 | | |
| |||
285 | 309 | | |
286 | 310 | | |
287 | 311 | | |
288 | | - | |
| 312 | + | |
289 | 313 | | |
290 | 314 | | |
291 | 315 | | |
| |||
337 | 361 | | |
338 | 362 | | |
339 | 363 | | |
340 | | - | |
341 | | - | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
342 | 372 | | |
343 | 373 | | |
344 | 374 | | |
| |||
361 | 391 | | |
362 | 392 | | |
363 | 393 | | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
364 | 398 | | |
365 | 399 | | |
366 | 400 | | |
| |||
451 | 485 | | |
452 | 486 | | |
453 | 487 | | |
454 | | - | |
455 | | - | |
456 | | - | |
457 | | - | |
458 | | - | |
459 | | - | |
460 | | - | |
461 | | - | |
462 | | - | |
463 | | - | |
464 | | - | |
465 | | - | |
466 | | - | |
467 | | - | |
468 | | - | |
469 | | - | |
470 | | - | |
471 | | - | |
472 | | - | |
473 | | - | |
474 | | - | |
475 | | - | |
476 | | - | |
477 | | - | |
478 | | - | |
479 | | - | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | | - | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
489 | 521 | | |
490 | | - | |
491 | | - | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
497 | 554 | | |
498 | 555 | | |
499 | 556 | | |
| |||
679 | 736 | | |
680 | 737 | | |
681 | 738 | | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
682 | 746 | | |
683 | 747 | | |
684 | 748 | | |
| |||
748 | 812 | | |
749 | 813 | | |
750 | 814 | | |
751 | | - | |
| 815 | + | |
752 | 816 | | |
753 | 817 | | |
754 | 818 | | |
| |||
0 commit comments