2026-04-22 on prod. Third cycle of R1 (NIX-OS-67 Phase 3 POS): new fullscreen route
/cafe/pos/register/[configId] opens in its own tab from the landing. Three-phase state
machine (Locked → PreShift → Open), nix_active_cashier JWT cookie separate
from the outer web session, new server actions unlockRegister /
openShift / lockRegister / closeShift, NIX
cafe.sessions rows mirror Odoo pos.session.
cafe.sessions row with state=open, beginning_cash=100.00,
opened_by_pin_id set. Zero 5xx.
openShiftAction rejected unmapped registers. Get-coffee has 1 shop but 0 rows in
cafe.shop_pos_configs. Added OR-fallback: if the user has exactly one accessible
shop we use it automatically — same spirit as M1's shop-filter fallback. Commit
02b2847.
| test-r1-3-lockable-prod.mjs | 13/13 |
| test-phase1-prod.mjs | 11/11 |
| test-m1-prod.mjs | 10/10 |
| test-phase2-sso-outdoor-prod.mjs | 6/6 |
| test-phase2-cafe-multishop-prod.mjs | 6/6 |