← Back to gallery

U6 — Product visibility flip + per-value popover PROD

2026-05-26 Gate 2 ship. Two fixes from Narong's same-day Telegram review. (U6.1) "Hide from POS" → "Show on POS" with new products defaulting to hidden so admins can stage drafts. (U6.2) Per-value popover for editing attribute-value extra prices (Iced +$0.50) — works uniformly across both modifier and SKU-splitting attributes.

Summary

Status
17/17 prod · 51/51 regression · 68/68 total · awaiting Gate 2 approval
Commits
nix-outdoor-sales-backend 2ec7047 · nix-cafe 7192fa3
Files
1 new migration · 5 nix-cafe files modified · ~280 LOC net
Migration
One-line ALTER on cafe.product_template.is_hidden — column DEFAULT flips from false to true. Existing rows untouched (preserve current visibility per scoping decision). Applied to prod Supabase via node migrate.js.
Source
Narong's Telegram 2026-05-26 19:21–19:34. Two distinct asks bundled into one Gate cycle.

U6.1 — Visibility flip + default change

U6.2 — Per-value popover for attribute extras

Files shipped

17/17 prod checks

Prod: cafe.product_template.is_hidden DEFAULT = true (migration landed)
DAO probe: createTemplate on prod returns isHidden=true
Set up: create test attribute + 2 values via DAO probe
Login to lumiere-coffee
/cafe/products renders + new-product button visible
Open New Product modal + create test product
U6.1: 'Show on POS' label present + checkbox unchecked (default hidden)
U6.1: DB confirms is_hidden=true on the new product
U6.1: tick 'Show on POS' + Save → DB flips is_hidden=false
Attach test attribute line to the new template (DAO probe)
U6.2: reload page + value chips render (Hot, Iced)
U6.2: click ✎ on the Iced chip → popover opens (data-value-id binds correctly)
U6.2: fill +$0.50 + Save → popover auto-closes
U6.2: DB confirms priceExtraUsd = 0.50 on the Iced value
U6.2: chip rendering — Iced shows '+$0.50' suffix after reload; Hot has no extra node
Cleanup: delete test template + attribute via DAO
No 5xx HTTP responses during the suite

Screenshots

Regression sweep 51/51

51/51 regression checks green — no regressions from this push.
test-phase1-prod.mjs11/11
test-phase2-sso-outdoor-prod.mjs6/6
test-m1-prod.mjs10/10
test-r7-prod.mjs14/14
test-r8-prod.mjs4/4
test-phase2-cafe-multishop-prod.mjs (solo)6/6

narongix chain ran sequentially (shared get-coffee creds). phase2-cafe-multishop ran solo per feedback_phase2_cafe_multishop_solo_retry — first-attempt green (7th validation of the rule).

Decisions locked (from scope)

Scope notes / followups