← All tests

NIX-OS-70 — Personalize Customer Display LOCAL

Tenant-configurable branding for the secondary screen. URL-field MVP (operator hosts logo + promo image elsewhere). Admin form at /cafe/settings/display with live preview; /cafe/display/[sessionId] idle screen renders the tenant's logo, primary-color gradient, promo text, and promo image.

6/6 local Gate 1 checks passed. Migration adds 4 nullable columns on cafe.tenant_config (display_logo_url, display_primary_color, display_promo_text, display_promo_image_url). validateBranding normalizes good input (trim + uppercase hex) and rejects 8 malformed cases (bad hex, missing hash, extra digit, javascript:, data:, ftp:, oversize promo, oversize URL). Authed admin route + R1.7 display route + POS routes all intact.
DAO save round-trip deferred to Gate 2. No local tenant has a cafe.tenant_config row to update (UPDATE on a missing row is a no-op so the round-trip wouldn't prove much locally). Prod get-coffee has a real config — Gate 2 saves real branding through the action and reads it back via the public /cafe/display page.

00What's new

01Migration — cafe.tenant_config schema✓ 4 columns added

Loading…

02validateBranding — pure logic✓ 8 bad cases caught

Loading…

03Test runner — all checks✓ 6/6 passed

Loading…