Session 36: Design system Phase E — remaining screens + dashboard Bloomberg lines (1853 tests)
VYNDR 2.0 conversion, Phase E. Frontend-only; zero backend changes. - lib/slateAdapter.js: parseAmericanOdds, detectBestLines, mapScheduleToGameCards (best/worst line detection — the Bloomberg pattern). - Reskinned the LEGACY GameCard's game-lines grid with best/worst highlighting + SportBadge, keeping inline grading intact (a wholesale swap to the display-only vyndr/GameCard would have deleted the slate's grading interaction). - compare/invite/help/about: RouteStubs -> real design-system pages. - login reskinned (scanlines, system voice, new Wordmark); pricing + ClaimMeter. Honest scope: the full GameCard swap needs inline grading ported into the new component first; profile/settings/blog/game-detail reskins are light/deferred. 18 new tests. Backend 1839 -> 1853, 144 suites, zero regressions. Web build clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+67
-2
@@ -4,8 +4,73 @@
|
||||
2026-06-16
|
||||
|
||||
## Current Phase
|
||||
SHIP BUILD v35.0 — VYNDR 2.0 design system, Phase D: core screens — Grade Result
|
||||
Card, Slate GameCard, Scan, Terminal, Landing claim meter (Session 35)
|
||||
SHIP BUILD v36.0 — VYNDR 2.0 design system, Phase E: remaining screens —
|
||||
dashboard Bloomberg lines, compare/invite/help/about, login/pricing (Session 36)
|
||||
|
||||
## Session 36 (2026-06-16) — SHIPPED
|
||||
|
||||
Phase E of the VYNDR 2.0 conversion + Session 35's #1 deferred item (the
|
||||
dashboard line upgrade). Frontend-only; ZERO backend changes. Backend 1839 →
|
||||
**1853 tests** (+14), 144 suites, zero regressions. Web build clean (exit 0).
|
||||
|
||||
### E.1 — Dashboard GameCard (Session 35's #1 deferred) — DELIVERED via reskin
|
||||
- KEY DECISION: the live Slate's legacy `GameCard` carries **inline per-prop
|
||||
grading** (PlayerCard/PropRow → onGrade/gradedProps). The Session-35
|
||||
display-only `vyndr/GameCard` has no grading, so a wholesale swap would
|
||||
DELETE the slate's core interaction. Instead, **reskinned the legacy GameCard's
|
||||
game-lines grid** with the Bloomberg best/worst pattern + SportBadge +
|
||||
SectionHead, keeping grading 100% intact — the #1 visual win without the
|
||||
regression.
|
||||
- `web/src/lib/slateAdapter.js` (CommonJS, unit-tested): `parseAmericanOdds`
|
||||
(American → decimal payout), `detectBestLines(books)` (marks best/worst ML per
|
||||
side, only when ≥2 books disagree), `mapScheduleToGameCards(schedule,
|
||||
gamelines, streaks, grades)` (the §7 contract mapper, for the future full
|
||||
swap). GameCard now renders the lines grid via `detectBestLines`: best =
|
||||
green tint + green left border, worst = subtle red. Dropped the emoji marker
|
||||
for SportBadge.
|
||||
|
||||
### E.3 — Four stubs → real pages (zero regression risk)
|
||||
- `compare` — head-to-head: two TerminalInputs, side-by-side stat table
|
||||
(winner-highlighted), intel-surface VYNDR VERDICT. Sample data.
|
||||
- `invite` — referral: progress 0/3, mono referral link + copy button, share
|
||||
CTA. Code derived from the session email.
|
||||
- `help` — searchable FAQ: TerminalInput filter + expandable Card Q&A by
|
||||
category + support mailto.
|
||||
- `about` — brand page in system voice (glitch Wordmark, "give it back",
|
||||
Detroit signature). Server component.
|
||||
|
||||
### E.2 — Reskins (logic preserved)
|
||||
- `login` — scanlines background, new `.wm` Wordmark (beta), system voice
|
||||
("ACCESS THE SIGNAL"), Level-1 card. ALL auth logic (form, OAuth, `next`
|
||||
redirect) untouched.
|
||||
- `pricing` — mounted `ClaimMeter` under the grid; removed the now-doubled
|
||||
`paddingTop` (layout already offsets 96 since Session 34).
|
||||
- `account` is a redirect to `/profile` — left as-is (canonical surface).
|
||||
|
||||
### Files created
|
||||
- `web/src/lib/slateAdapter.js`
|
||||
- `tests/unit/vyndrPhaseE.test.js` (18 tests: adapter odds/best-line/mapping
|
||||
logic, GameCard reskin, the 4 real pages, login/pricing reskins)
|
||||
|
||||
### Files modified
|
||||
- `web/src/components/GameCard.tsx` (Bloomberg lines + SportBadge/SectionHead)
|
||||
- `web/src/app/{compare,invite,help,about,login,pricing}/page.tsx`
|
||||
- `tests/unit/vyndrAppShell.test.js` (only /notifications remains a stub)
|
||||
|
||||
### Deferred (Sessions 37+) — honest scope
|
||||
- The FULL GameCard swap (replacing legacy GameCard with vyndr/GameCard) needs
|
||||
inline grading ported into the new component first — bigger than a reskin;
|
||||
the slateAdapter + new GameCard are both ready for it. Reskinned instead this
|
||||
session to avoid deleting grading.
|
||||
- Profile/settings/blog/game-detail/responsible reskins + scan-input
|
||||
TerminalInput polish: light or deferred (tokens already mostly resolve there;
|
||||
prioritized dashboard + paid-user-visible + new pages per the impact order).
|
||||
Settings destructive-action confirmations (type-DELETE) are Phase G utility
|
||||
flows.
|
||||
|
||||
---
|
||||
|
||||
## Session 35 (2026-06-16) — SHIPPED
|
||||
|
||||
## Session 35 (2026-06-16) — SHIPPED
|
||||
|
||||
|
||||
Reference in New Issue
Block a user