2026-04-29 on get-coffee. Two operator-feedback follow-ups bundled into one Gate cycle. (A) Skip-preview path on success banner — post-sale Print on the success banner now fires the print iframe directly, no preview modal. Operators just rang up the order and don't need a second confirmation. /orders per-row Print still goes through the modal (older-order reprint sanity). (B) Daily report split — aggregateNativeDailyReport returns totalLineDiscount + totalOrderDiscount separately so operators can see per-line comp/promo vs whole-ticket override. Combined totalDiscount kept for callers that want one number.
$1 line discount + paid with $0.30 order discount. DB asserted both discount_usd columns: cafe.order_lines.discount_usd=1.00, cafe.orders.discount_usd=0.30.iframe[data-testid="receipt-print-iframe-{order#}"] with NO preview modal in the DOM. Hidden mount last-order-receipt-source verified attached as the HTML source.metric-discount-line rendered "− $1 line disc"; metric-discount-order rendered "− $0.30 order disc"; old combined metric-discount testid is gone.outdoor_enterprise on exit. Tests now self-heal from any prior 'starter'-stuck state.| test-cafe-followups-prod.mjs (NEW) | 5/5 |
| test-receipt-preview-prod.mjs (rewritten — /orders modal only) | 6/6 |
| test-r2-followups3-prod.mjs | 7/7 |
| test-r2-followups2-prod.mjs (assertion updated for split) | 11/11 |
| test-r2-followups-prod.mjs (assertion updated for split) | 19/19 |
| test-nix-os-r2-4b-prod.mjs | 12/12 |
| test-nix-os-70-2-prod.mjs | 10/10 |
| test-phase1-prod.mjs | 11/11 |
nix-cafe @ 2538135:
app/(authed)/pos/starter-register-client.tsx — banner skips modal: KhmerReceipt
+ openPrintWindow imports, hidden
receipt mount, handlePrint fires
iframe print directly
lib/db/orders.ts — DailyReportPayload split:
totalLineDiscount + totalOrderDiscount
+ (combined) totalDiscount kept for
backward compat
app/(authed)/reports/daily/starter-daily-client.tsx — Avg Ticket card shows two amber
lines, each > 0 gated
tests:
test-cafe-followups-prod.mjs — NEW (this bundle, 5 checks)
test-receipt-preview-prod.mjs — banner steps removed, /orders
modal flow stays
test-r2-followups2-prod.mjs — F2 daily-report assertion updated
to use split testids
test-r2-followups-prod.mjs — round 1 daily-report assertion
updated to use metric-discount-order