2026-05-14 Gate 2 on Supabase prod. Second slice of the POS Section Rework arc (Narong spec item 8): the landing card UI rework SHIPPED. /cafe/pos's RegisterCard redesigned to the 4-slot adaptive layout that consumes Slice 1's session-scoped metrics, with a Continue Selling / Open Register CTA mirroring the Odoo dashboard. soldToday/bankToday renamed to sold/bank across the data layer. No migration.
/cafe/pos renders the same new cards through the buildStarterLanding path — no 5xx.sold/bank) still renders its register cards — /api/manager-live returns 200 with all 5 configs.94324b9 — 7 files, +126/−76, no migration.
✓ get-coffee — SSO login ✓ get-coffee — /cafe/pos renders the new 4-slot cards (no 5xx) ✓ get-coffee — every card's CTA pairs with its session state ✓ get-coffee — closed-latest registers show the snapshot card + Open Register CTA ✓ get-coffee — manager-live drawer still renders (soldToday→sold rename consumer) ✓ lumiere-coffee — SSO login ✓ lumiere-coffee (Starter) — /cafe/pos renders the new cards (no 5xx) State↔CTA pairing asserted per card: Open / Opening… / Closing… → "Continue Selling"; Closed / No sessions yet → "Open Register".
| test-phase1-prod.mjs — route/SSO smoke | 11/11 |
| test-phase2-sso-outdoor-prod.mjs | 6/6 |
| test-phase2-cafe-multishop-prod.mjs | 6/6 |
| test-m1-prod.mjs — shop scoping | 10/10 |
| test-r7-prod.mjs — dashboard + manager-live drawer | 14/14 |
| test-r8-prod.mjs — auth/security | 4/4 |
| test-r1-2-landing-prod.mjs — POS landing | 8/8 |
"Cash opening" / "Sold today" columns — updated to the new 4-slot card
structure (Opening/Closing · Cash Balance · Bank Balance · Sold + CTA), 8/8 on re-run.
phase1 flaked on the SSO hop (URL landed on / not
/cafe/dashboard) — green on solo retry; a known cold-start flake, not in Slice 2's
blast radius (no routing/middleware/dashboard touched).
nix-cafe (7 files, no migration):
app/(authed)/pos/pos-landing.tsx RegisterCard redesigned (4-slot adaptive
+ CTA); LandingConfig renamed + closedAt
app/(authed)/pos/loading.tsx skeleton updated to the 2x2 card shape
components/manager-live-control.tsx soldToday/bankToday → sold/bank
lib/db/pos_configs.ts MirrorPosConfigSummary rename + closedAt
lib/db/manager_live.ts cardFor rename + closedAt
lib/db/starter_landing.ts buildStarterLanding rename + closedAt
lib/odoo/queries.ts PosConfigSummary rename + closedAt
Slice 1 ✅ session-scoped summary data layer
Slice 2 ✅ landing card UI rework ← this
Slice 3 — master-detail "Point of Sale" submenu shell (Dashboard /
Registers / Sessions / Orders)
Slice 4 — Sessions history page
Slice 5 — Registers + Orders relocation under POS
The manager-live drawer card keeps its compact 3-cell design — it's R7's
surface, out of Slice 2's scope; it only took the field rename. Reworking
it (or un-muting its now-real closed-session stats) is a possible
follow-up.