← All tasks

v0.2 Slice C — Terminal polish PROD · GATE 2

Two register-terminal pain points from Narong's v0.2 batch, both verified on prod — H5.2 with physical keyboard + paste simulation, H5.6 with end-to-end latency timing.

8/8 prod checks green · 51/51 regression green — no regressions. 2 files, no migration. Commit 31c177d.

The two items

H5.2PIN field accepts physical keyboard + paste

Verified on prod by driving the unlock with page.keyboard.type + Enter (no on-screen button clicks) AND by dispatching a synthetic ClipboardEvent("paste").

before: on-screen buttons only · keyboard / paste = nothing
after:  on-screen buttons (touch) + digits / Backspace / Enter on physical keyboard + paste (strips non-digits, clamps to 6)

H5.6Unlock action: serial → parallel

Both unlock paths (unlockRegisterAction + unlockRegisterAsUserAction) now fan their independent DAO reads through Promise.all. Measured PIN-Enter → screen-transition latency on get-coffee Pro, warm Worker:

4403 ms
PIN-Enter → preshift-screen visible, warm Worker, get-coffee Pro.
~7 DAO round-trips on the action critical path → ~4 effective. The remaining latency is dominated by router.refresh() re-running ~20 DAOs in the register page server component — that's structural rework reserved for a future slice.

Screenshots

H5.2 — after ClipboardEvent("paste") with "5678": 4 dots filled, no on-screen taps
H5.2 — after page.keyboard.type("1379"): 4 dots filled, ready to Enter

Checks — 8/8

Regression — 51/51, no regressions from this push

All prod suites green.
test-phase1-prod.mjs11/11
test-phase2-sso-outdoor-prod.mjs6/6
test-phase2-cafe-multishop-prod.mjs6/6
test-m1-prod.mjs10/10
test-r7-prod.mjs14/14
test-r8-prod.mjs4/4
+ test-v0-2-slice-c-prod.mjs8/8
Total59/59

Files changed (2, no migration)

app/(authed)/pos/_components/lock-screens.tsx · lib/actions/register.ts