← All tests

NIX-OS-69.2 — Kitchen Display route + state machine PROD

2026-04-24 on prod (get-coffee.nixtech.app). Second sub-phase of NIX-OS-69. The visible kitchen surface: a public route at /cafe/kitchen/[shopId]?t={secret} with three columns (New / Preparing / Ready), 5s polling, optimistic Start / Ready / Served buttons, GET + POST API endpoints with secret + cross-shop scope guards, and a clickable POS TopBar ChefHat pill that opens the display in a new window with the shop's lazy-created kitchen_display_secret.

11/11 prod checks green. Bad / wrong secret → 404. Page server-renders the initial order list. GET endpoint returns FIFO active orders. Full state machine via real UI clicks: Start (new→preparing with started_at stamped), Ready (preparing→ready with ready_at), Served (ready→served and the card drops off the board). Backwards transition refused with 409. POS TopBar /cafe/pos still 200. No 5xx during the entire flow.
Next: NIX-OS-70 Personalize Customer Display. Branding fields on cafe.tenant_config (logo, primary color, idle promo), admin at /cafe/settings/display, Customer Display idle screen honors them.
96/96 stable regression tests green — no regressions from this push.
test-nix-os-69-2-prod.mjs — NIX-OS-69.2 Kitchen Display route + state machine (new)11/11
test-phase1-prod.mjs — SSO smoke + route auth11/11
test-phase2-sso-outdoor-prod.mjs — Outdoor SSO bridge6/6
test-phase2-cafe-multishop-prod.mjs — Cafe multi-shop6/6
test-m1-prod.mjs — Dashboard/Orders/Reports shop scoping10/10
test-r1-1-cashiers-prod.mjs — R1.1 cashier PIN admin9/9
test-r1-4-drafts-prod.mjs — R1.4 crash-recoverable drafts9/9
test-r1-9-daily-report-prod.mjs — NIX-OS-72 Daily Sale Report11/11
test-r1-10-cash-movements-prod.mjs — NIX-OS-71 Cash In/Out12/12
test-r1-11-telegram-events-prod.mjs — NIX-OS-73 Telegram Events11/11
test-nix-os-69-1-prod.mjs — NIX-OS-69.1 (transient flake on shift-open)see below
69.1 transient flake: First retry was 9/10 with one stale-testid failure (fixed: 69.2 promoted pos-kitchen-indicator to pos-open-kitchen-btn when a secret exists; 69.1 test now accepts both). Second run (after Worker stress) timed out on the pos-preshift-screen wait — the same shift-open flake we hit on the original 69.1 Gate 2 run. r1-10 retry on the same Worker passed 12/12, so prod is healthy. Not a 69.2 regression. The 69.1 dispatcher wiring + schema assertions all still pass.

00What shipped

01End-to-end — full state machine via UI clicks✓ new → preparing → ready → served

Kitchen Display initial state on prod
01 — Initial render. Two seeded orders, columns populated correctly, SSR-from-secret works.
Kitchen Display after Start click
02 — After Start click. Card moved from New to Preparing column. started_at stamped in DB.
Kitchen Display after Ready click
03 — After Ready click. Card moved from Preparing to Ready column. ready_at stamped.
Kitchen Display after Served click
04 — After Served click. Card dropped off the board. served_at stamped. Other order untouched.

02Test runner — all 11 prod checks✓ 11/11 passed

Loading…