← All tests

NIX-OS-70 — Personalize Customer Display PROD

2026-04-24 on prod (get-coffee.nixtech.app). Tenant-configurable branding for the secondary customer screen — logo URL, primary color, promo text, promo image. Admin form at /cafe/settings/display with live preview; public Customer Display idle screen renders the saved branding. URL-field MVP (R2/S3 upload deferred).

10/10 prod checks green. Schema confirmed. SSO login, admin form renders form + live preview side by side, typing in fields updates the preview immediately, Save action persists to cafe.tenant_config (DB ground-truth match on all 4 fields), public /cafe/display/[sessionId] idle screen renders the saved logo (<img>), promo text card, promo image, and primary-color gradient. validateBranding bad-hex rejection surfaces a clear error in the UI. No 5xx during the flow. Cleanup restores original branding.
Next: NIX-OS-68 Polish bucket. Render/knex divergence audit, NIX Cash Chrome extension sunset note, plus anything Narong flags during QA.
98/98 stable regression tests green. No regressions from this push.
test-nix-os-70-prod.mjs — NIX-OS-70 Personalize Customer Display (new)10/10
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-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 (after 1 retry)
test-nix-os-69-1-prod.mjs — NIX-OS-69.1 Kitchen foundation10/10
test-nix-os-69-2-prod.mjs — NIX-OS-69.2 Kitchen Display11/11 (after 1 retry)
test-r1-1-cashiers-prod.mjs — R1.1 cashier admin (transient)8/9
test-r1-4-drafts-prod.mjs — R1.4 drafts (transient — Odoo 429)5/9
r1-1 + r1-4 transient flakes: Both retried once per protocol. r1-1 holds at 8/9 across both runs — failure is "row not showing Inactive chip after deactivate", a UI polling/display race that's pre-existing (NIX-OS-70 doesn't touch cashier admin). r1-4 hits Odoo HTTP 429: Too Many Requests — Odoo backend is rate-limited from the parallel test traffic across all the suites today. r1-9 / r1-10 / r1-11 / 69.1 / 69.2 all pass against the same Odoo, so the integration is fine; r1-4 just gets unlucky on Odoo's rate window. Neither is a 70 regression.

00What shipped

01End-to-end — admin save → public display✓ live on prod

Display settings empty state
01 — Initial admin state. Form empty, preview showing default theme.
Display settings with branding typed
02 — After typing. Live preview reflects every field as the operator types.
Customer Display idle screen with branding
03 — Public Customer Display idle screen. Branding flows from admin save → DB → public render.

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

Loading…