Changelog
What's new in the Eventini POS app
Eventini POS: built for the line, not the office.
Every release ships real features from real operator feedback. Tap to Pay, split payments, kitchen tickets, and more — shipped in 3 weeks from first commit.
59
Builds shipped
v3.2
Current version
180
Days since v1.0
Releases
Every version of the Eventini POS app, from initial launch to the latest build.
v3.6.29
CurrentAugust 2, 2026
Fix the Expo launch crash, replacing build 208.
- Fiesta restock: the booth can ask, not just be told.
v3.6.28
August 2, 2026
Face ID degrades to PIN instead of failing on every open.
- Review round: three of my own regressions, plus the hangs I missed.
v3.6.27
August 2, 2026
Catch the button that does nothing, and the frames that don't draw.
- Crash alerts you can switch off without a deploy.
- Crashlytics alerts land in #pos-report.
- Crashlytics — the half of crash reporting we could never write ourselves.
v3.6.26
August 1, 2026
Release-gate fixes: merged checks billed light, NetWatch cried wolf.
- A failed offline PI must not kill a sale that could have gone online.
- Functions: drop the warm instance that was buying nothing.
v3.6.25
July 30, 2026
Restore the Settings screen, and make the print-queue fix actually retry.
- Stop the setup wizard auto-opening on configured shops; guard cart + shake.
v3.6.24
July 28, 2026
Fix(print): route kitchen tickets to the kitchen printer, not receipt.
- Always require a staff PIN on iPhone.
- Receipt auto-print, tighter slips, word-safe printing, Fiesta defaults.
- Fix(pos): send the CURRENT provider in x-provider-id, not a stale cached one.
v3.6.23
July 28, 2026
Fiesta: instant cash, sleeker receipt prompt, no first-paint flash.
- Pause: a snooze now survives, and can always un-pause itself.
- Tini Table host stand mode for the iPad.
- Cash settlements: show each provider's own rate, not the org baseline.
v3.6.22
July 26, 2026
3.6.22 (201): reader phone entry on cash + split, honest busy message.
- Ticket view dropped typed item notes.
v3.6.21
July 26, 2026
IPhone checkout: pin the tender row, and give Tap to Pay a way out.
- Widen non-actionable decline filter: catch card_not_supported + invalid-expiry shapes.
- Silence false capture-failed criticals: classify server refusals + stale-prewarm guard.
v3.6.20
July 25, 2026
3.6.20 (199): tender row spans the footer; alert banner stops truncating.
- Order detail: correct a wrong customer phone; fit the tender row on phone.
- Mirror cash_discount into the local order cache too.
- Cash orders from another register showed net of the service fee.
v3.6.19
July 24, 2026
Printer setup: "Shared?" prompt on Epson LAN add + shared badge.
- Printer: shared LAN Epson connects over ePOS-Print HTTP, not the native socket.
- Printer: remember the printer on CONNECT, not only on disconnect.
- Printer setup: don't hide the remembered printer behind an auto-scan.
v3.6.18
July 24, 2026
3.6.18 (197): storefront toggle actually works, and opens YOUR store.
- Fiesta Mode: close the gaps — escape hatch, online ordering, real read-only.
- Fiesta Mode: lock the register down to a festival stall.
- Fiesta Mode behind an admin PIN, and two Settings/Orders UI fixes.
v3.6.17
July 24, 2026
Gift card: the shrink guard must use the same exact-cents basis.
- Gift card: charge the cents owed, not the next whole dollar.
v3.6.16
July 23, 2026
Optional reader phone: selection-then-phone, not the flaky skip-button form.
- Order ding is device-scoped, not a 6-iPad chorus.
- Reader phone renders reliably + "Transaction Complete" after receipt pick.
- Phone prompt: with a smart reader, re-prompt on the reader, never the iPad.
v3.6.15
July 20, 2026
Stop deleting live orders on limit-window eviction; unlatch reader reconnect.
v3.6.14
July 19, 2026
Watchdog: name the code that blocked, and stop calling a closed app a freeze.
- Cache the display formatters too — finish the fix 70ab015 only half-made.
- Freeze watchdog: decide what IS a freeze on the device, with evidence.
- Fix the mount-time order recovery fetch, which has never actually run.
v3.6.13
July 19, 2026
Fix regressions an adversarial review found in 70ab015's reader hardening.
- Bound the order queue semantically, not numerically; report at-ceiling.
- Tap to Pay: keep the iPhone reader warm so charges stop hitting Apple's "preparing" step.
- Freeze alerting: gate on business impact, not stall length; bound /orders reads.
v3.6.12
July 18, 2026
Reader-setup redesign + AOD API-primary rail (iPad side) + order-detail notes.
- Location single-source-of-truth: the pill IS the location — doc, money, org fee, routing.
- Reports: paginate order fetch so wide ranges don't freeze the UI.
- Rewards: iPad-hosted preflight when no smart reader is connected.
v3.6.11
July 16, 2026
Epson USB discovery: run the USB pass FIRST (wrapper start() no-ops mid-scan).
- Phase D /orders stall fix: batch snapshot updates, defer print fan-outs, defer search filter.
- Phase C timeout sweep: no bare network await can hang the POS.
- Phase B weak-Wi-Fi UX: shared net feedback util + optimistic writes.
v3.6.10
July 16, 2026
Instant modifier sheet: sync open + bulk prewarm; fix header pill overlap.
- AOD: stop routing charges at a reader in handheld mode + remote "switch back to docking".
v3.6.9
July 16, 2026
Fix UI freeze on Wi-Fi → cellular: auto printer connects hard-gate on LAN reachability (build 188).
- Printing reliability overhaul + AOD money correctness + zero-touch AOD provisioning.
- Fastfile: point submit_only at 3.6.8/186 for App Store review (manual release).
v3.6.8
July 15, 2026
3.6.8 (build 186): menu editor — instant modifier edits, no freeze on shared groups, auto A→Z sort.
- POS iPad: suppress redundant post-approval success check on the overlay.
- POS iPad: fix charge-overlay Skip/Cancel lockup + drop redundant approve check.
- POS iPad: printer 'checking' pending state (cross-session).
v3.6.7
July 15, 2026
POS iPad: cross-session work batch (2026-07-15).
- Fastfile: point submit_only at 3.6.5/183, manual release.
v3.6.5
July 14, 2026
3.6.5 (build 183): gift-card scanner symbology fix rides along.
- Gift-card scanner: decode every symbology, not just code128/39/ean13.
- 3.6.5 (build 182): offline-enablement fallback + receipt server-name fix.
v3.6.4
July 14, 2026
3.6.4/181 — printer self-heal, AOD parity, receipt payment labels, Star LAN + Epson USB.
v3.6.3
July 13, 2026
3.6.3 (build 180): charge the auto-gratuity on every card rail; one source of truth for the fee.
v3.6.2
July 13, 2026
3.6.2 (build 179): fix the service-fee load-order race.
- Fee: the Eventini service fee was decided by a load-order race.
v3.6.1
July 13, 2026
3.6.1 (build 178): gift card money fix, location lockdown, battery fix.
- Transaction mode: the pill IS the device's location. No unbound devices.
- Close the last two all-locations trapdoors in transaction mode (dohp).
- Yarn.lock: pick up babel-plugin-transform-remove-console.
v3.6.0
July 13, 2026
3.6.0 (build 176): iPhone register overhaul, Tap to Pay nudge, reporting cleanup.
- POS: strip decorative colour from Gift Cards / Transactions / Location History.
- POS: reporting-surface pass — draggable sheets, one icon colour, dashboard link.
- Banking: two-line order rows on phone instead of a crushed 5-column table.
v3.5.99
July 13, 2026
POS: simplify the splash — soft surface, mark only.
- POS: skeletons in place of spinners wherever content is loading.
- POS: restore sleeker sheet icons, rebuild Hardware on SideSheet, theme Locations screen.
- Hardware sheet to 3 rows; More sheet icons out; sheets actually slide up.
v3.5.98
July 12, 2026
Release 3.5.98 (build 174): M2 pre-collect deadlines + degraded-Wi-Fi offline routing + self-serve error sheets.
- Header pill: amber "Slow Wi-Fi" indicator next to the hardware status dots.
- M2 charges barely need Wi-Fi: degraded-network offline routing + prewarmed SDK retrieve.
- Dashboard redesign session work: SlideOver theme, Banking auth fix, netinfo shim.
v3.5.97
July 10, 2026
3.5.97 (build 173): checkout redesign, hardware status sheet, AOD overlay, SSID display.
- SmsService: GSM-7 fold on every outbound text (dōhp → dohp).
- Submit_only → 3.5.96/172 (submitted to App Store review, manual release).
v3.5.96
July 7, 2026
Release 3.5.96 (build 172): M2 freeze + Charge no-op fixes; ship_manual lane.
- Event-driven congestion capture from orders (plan L2, flag-gated).
- Charge no-op fix on stale reader + stamp per-order network RTT.
v3.5.95
July 7, 2026
Fix M2 reader freeze on card charge + graceful-background health marker.
- Rollups: sharded counters (flag off) + sq cent-map stamping for live-day org reads.
v3.5.94
July 6, 2026
Release 3.5.94 (170).
v3.5.93
July 5, 2026
Release 3.5.93 (169): receipt-copies semantics fix + canceled-PI reader race.
- POS: fix the canceled-PI reader race (SapSap 2026-07-03 $19.68 alert).
- POS: manual Print Receipt always prints + phone-prompt fixes (required = no reader Skip, one skip is final).
v3.5.92
July 2, 2026
POS printer: fix Star TSP143IIIBI 24/7 stale-bond (Connected but won't print) — build 168.
- Duplicate-charge hardening: tab-close + refund idempotency (2026-07-02 audit).
- Offline fix — review follow-ups (fixes to 85bf081).
- Offline double-charge fix: a stored offline charge can never read as 'declined'.
v3.5.90
July 1, 2026
IOS 3.5.90 (165): kiosk marks items sold-out (available:false) at stock 0 — drop off kiosk + online.
v3.5.89
July 1, 2026
IOS 3.5.89 (164): Force-offline tells you when a reader can't store offline (no silent online charge).
- Kiosk: exit to the dashboard HUB (/(main)/home), not the bare dashboard screen.
- Kiosk: full book name/author, swipeable staff picks, QR-pay idle grace + test rails.
- IOS NetWatch: report device GPS location for the fleet map.
v3.5.88
June 29, 2026
Release 3.5.88 (build 163): V660p receipts + reader-UI, Fast-mode guardrail, NetWatch.
- NetWatch: scale the Firestore write strategy for 200→700 devices.
- NetWatch: wire festival device-health monitor (collectors + bootstrap).
- POS diagnostics: kill Slack spam, lock critical-only policy + NetWatch alert endpoint.
v3.5.87
June 28, 2026
Release 3.5.87 (build 162): false-decline retry fix + Bluetooth printer wake-on-cold-start.
- POS payments: attempt-epoch idempotency key to fix false declines on retry (Isas/Dōh'P).
- POS printer: wake-retry the Star print path + verify on cold-start (SapSap stale-bond fix).
- Feat(pos-tabs): combined open-tabs total + group identical items on a tab.
v3.5.86
June 27, 2026
Release 3.5.86 (build 161): Tap to Pay launch pre-warm (persistence).
v3.5.85
June 26, 2026
Release 3.5.85 (build 160): in-person duplicate-charge fix.
- POS: consolidate customer prompts + make 'don't ask for phone' a true master switch.
- POS Tap-to-Pay: fix in-person double-charge (stable idempotency key).
- Fix POS order-screen freeze: throttle accessory reconnect scans off the UI thread.
v3.5.84
June 26, 2026
POS 3.5.84/159: reader total-confirmation toggle (default off) + silence diagnostic Slack spam.
v3.5.83
June 25, 2026
POS reports: fix receipt footing + reconcile Day Report to dashboard (3.5.83/158).
- Fastlane: point upload_ipa/submit_only at 3.5.82/157 + fix gym export auth-key collision.
- Ship 3.5.82 (157): KDS online-orders alert fix, Bluetooth printer alert spam fix, kiosk payment audit trail.
- Fastlane: point submit_only at 3.5.81/156 with MANUAL release.
v3.5.81
June 25, 2026
Ship 3.5.81 (156): kiosk Cancel button + one-tap kitchen-ticket reprint.
v3.5.80
June 25, 2026
POS: auto-retry collectPaymentMethod 'SDK is busy' error (cancel + settle + re-collect).
- Fix(rollups): exclude is_tab tab prep tickets from rollups + V2 txns.
- Fastlane: add upload_ipa lane + sync submit_only to 3.5.79/154.
v3.5.78
June 22, 2026
Fix(pos): M2/Tap-to-Pay freeze + category-required phone prompt + SMS cost.
v3.5.77
June 21, 2026
Fix(pos): Fast-Tickets kitchen slip prints real order # + printer diagnostics logging.
- Fix(pos): auto-complete online orders on KDS bump + order-level note → KDS.
- Fix(pos): Tap to Pay reconnect-per-transaction + cart qty steppers + service-fee accept prompt.
v3.5.76
June 20, 2026
Feat(reports): add Square Sales Summary to iPad + category/series/payment engines (build 151).
- Fix(reports): drop stray await in report-preview useMemo (broke prod JS bundle).
- Feat(pos): wire businessDayStartHour into settingsStore (live sync).
- Fix(pos): web-identical reporting engines + money transparency + bump 3.5.76/150.
v3.5.75
June 17, 2026
Fix(pos): cancel→re-ring crash, online orders on KDS, Expo whole-ticket + bump 3.5.75/149.
- Release: bump native iOS version to 3.5.74/148 (was only bumped in app.json).
- Build: make npm install succeed for the SapSap ship line.
- Fix(s710): iPad fallback when reader phone collectInputs stalls (cash + card).
v3.5.74
June 16, 2026
Fix(receipt): print order_label (ticket #) next to order number on all 6 print sites.
v3.5.73
June 15, 2026
Fix(orders): never strand a captured charge as a phantom + bump 3.5.73/147.
- Submit_only: target build 146 for App Store review + strip markup from 3.5.72 notes.
v3.5.72
June 14, 2026
Perf(functions): monthly rollups for long-period dashboard reads (3M/YTD/1Y/ALL).
- POS printers: one-tap reconnect after Disconnect + safe Bonjour LAN discovery (flag-off) (#4).
- Perf(functions): warm instances + roster caching on hot dashboard reads.
- Rollups: include org/event commission (org_fee) in Eventini pre-tax income.
v3.5.71
June 13, 2026
POS: durable printer crash logs (Firestore) + instrument full Epson scan path.
- POS: killswitch Epson LAN discovery (ePOS2 TCP sweep segfault on Start Scanning).
v3.5.70
June 13, 2026
Charge: dismiss keyboard before opening the payment picker (dōhp double-tap).
- POS: collect customer phone on iPad for M2 / Tap-to-Pay (no reader screen).
v3.5.69
June 12, 2026
POS: content-gated phone prompt + per-category setting + half-up cash rounding default.
- POS: fix empty menu items after force-quit/reopen.
- POS: re-credit gift cards on refund.
- Persist cashier-typed receipt phone onto the order (dōhp report).
v3.5.68
June 12, 2026
Killswitch Star LAN discovery (native segfault in searchPrinter TCP) + headless cloud-signing, 3.5.68/141.
- Default Instant In-Person Orders (autoCompleteInPersonOrders) to OFF.
- Fastfile: point ASC API key at the present AuthKey_AM26RJL23G.p8 (3S3K4W5DAA file is gone) + beta lane changelog to 3.5.67.
v3.5.67
June 12, 2026
Fix printer connect/disconnect crash (unguarded checkStatus @finally) + crash forensics, 3.5.67/140.
v3.5.66
June 12, 2026
Fix double-subtracted service fee on cash orders in detail views.
- Cash tab closes labeled correctly + final chokepoint for child-ticket leak.
- Tab ledger: one line per tab — hide kitchen-ticket children, block phantom refunds.
- S710 tab close: tip AFTER tap, exactly like a normal sale.
v3.5.65
June 11, 2026
Expo KDS: register bar items skip the pipeline + bump 3.5.65/138.
- Manual-tab card close: tip prompt parity + child-ticket sweep + honest Add-to-Tab label.
- Add-to-tab: optimistic UI reset + loud precondition alerts + breadcrumbs.
- Expo KDS: per-device 'Food only' filter (hide bar/drink items).
v3.5.64
June 11, 2026
Instant post-payment terminal: skip auto-dismissing receipt sheet, no cash success overlay, parallel placeOrder reads.
- Gift-card flow fixes + refund $0/tax + enhanced-modifier hidden flavors.
- Harden modal choreography against invisible touch blockers (audit follow-up).
- Physical gift cards: sell via cart (swipe/scan/type), no tip, discountable.
v3.5.63
June 9, 2026
Declare ITSAppUsesNonExemptEncryption=false (skip export-compliance step).
- Fix manual-card freeze + 3.5.63/136 (App Store submit).
- Allow manual / cash tabs (no card pre-auth required).
- KDS refire/routing fixes + per-location customer-facing naming.
v3.5.62
June 8, 2026
Fix wedged Charge button (silent no-op) + charge-flow tracing (3.5.62/135).
v3.5.61
June 7, 2026
Fix Bluetooth printer crash on app reopen + KDS 86 button (3.5.61/134).
v3.5.60
June 6, 2026
Reader speed: kill reconnect-storm stalls + pre-create PI on Charge (3.5.60/133).
- Pre-create PaymentIntent on Charge tap to cut reader lag.
v3.5.59
June 6, 2026
Ship 3.5.59: multi-location KDS, KDS redesign, SMS reliability + refire texts.
v3.5.58
June 5, 2026
POS: fast-ticket cash→card switch, banking dashboard port, Star scan crash fix, reader speed test.
- POS AI: period comparison, itemized+discount reports, location-by-id, charts.
- POS: device-name registry → friendly "completed by ___ on ___" in reports.
- POS: stamp completion attribution (completed_by staff + device) on tickets.
v3.5.57
June 4, 2026
AI support: live data, multi-language, feedback + report date-range times.
- Special pricing: $-off discount mode + fail-closed time windows.
- Fix(pos): duplicate-order idempotency + place telemetry; AI support assistant; Star BT crash patch.
v3.5.56
June 1, 2026
V3.5.56 (build 129): boot/navigation perf overhaul + instant cash tickets.
- Admin impersonation is READ-ONLY — stop write-storms + phantom Main.
v3.5.55
May 30, 2026
V3.5.55 (build 128): printer reliability + checkout fixes.
- LocationMigration: server-read guards + fail-closed so phantom Main can't re-mint.
v3.5.54
May 30, 2026
Release: POS 3.5.54 (build 122) — new icon, perf, reader recents, payout sheet, Fast Tickets.
v3.5.53
May 30, 2026
Release: bump POS to 3.5.53 (build 121) for App Store submission.
- IPad: banking return self-heal + cross-agent iOS config & perf scripts.
v3.5.52
May 29, 2026
Perf(pos): pre-warm menu store on dashboard mount + branded splash.
- Perf(pos): coalesce duplicate orders + refunds Firestore reads at dashboard mount.
- Fix(pos): cold-boot POS-entry latency + persistent low-stock dismissal.
- Fix(pos): cold-boot menu re-read storm + stale-scope coalesce.
v3.5.28
May 28, 2026
Stability and maintenance work.
v3.5.27
May 28, 2026
Fix(pos): payment overlay yields to guard sheets (large-tip / dup-charge / payment-error).
- Ipad: bump build to 118 (3.5.27) for reader-pairing hardening test build.
v3.5.26
May 28, 2026
Auth: add jaden@eventini.io internal admin demo login.
- Perf phase 0.5: real-data baseline + fix seed anonymizer.
- Perf phase 6: targeted limits + listOrgs response cache.
v3.5.25
May 27, 2026
V3.5.25 (build 115): pop-up event feedback fixes + customer name fallback.
v3.5.24
May 26, 2026
V3.5.24 (build 114): live agent support flow + custom time frames + labor dashboard.
- Fastlane: ship lane points at v3.5.23 + RELEASE_NOTES_3_5_23.
v3.5.23
May 26, 2026
V3.5.23 (build 113): perf + UX overhaul — POS exit speed, cashier reports, fee rename, payment-flow modals.
- Money flow rebuild: Sales / Banking / Deposits now tie out.
- Items-loss fix: route every push-bar items rewrite through a Firestore tx.
v3.5.22
May 20, 2026
V3.5.22 (build 112): App Review fix — neutralize location permission button.
v3.5.21
May 20, 2026
V3.5.21 (build 111): ship prep — auto-release on Apple approval.
- Large-tip review: reject re-prompts the reader instead of zeroing.
- Large-tip safety check — cashier approval on S710 fat-thumbs.
- Cat reorder: preserve tile mode through reorder round-trip.
v3.5.20
May 20, 2026
Transaction-mode: full revert of payment overlay regressions.
v3.5.19
May 20, 2026
V3.5.19 (build 109): full ship.
- Kds: All Day rollup includes queued pre-orders too.
- Kds: queued indicator as inline amber chip, not a generic toolbar button.
- Kds: queued-orders header count + button + sheet.
v3.5.18
May 20, 2026
V3.5.18 (build 108): KDS recall/refire/reprint stops stripping modifiers.
v3.5.17
May 19, 2026
Pos: kitchenreceipt fires BOTH kitchen + receipt printers.
- Pos: add 'Kitchen Receipt' print-station option.
- Pos: stop the location backfill minting a phantom "Main".
v3.5.16
May 18, 2026
Pos: v3.5.16 — Nexus what's-new modal, reliable session recap, release prep.
- Pos: "Read the full notice" link in the MPF acknowledgment modal.
- Pos: marketplace-facilitator sales-tax acknowledgment modal.
- Pos: Spanish dictionary — dashboard + full settings coverage.
v3.5.15
May 15, 2026
Pos: in-progress printer + queue + confirm-action work.
- Pos: Order Screen font-size setting for cashier cart tickets.
- Pos: Fast Cash setting + fix stale-reader frozen "waiting for card".
v3.5.14
May 15, 2026
Pos: cash drawer totals, event-complete wrap-up, admin provider switcher (v3.5.14).
- Auth: refresh staff PIN from Firestore before rejecting unlock attempt.
- Fastlane: ship lane deliver needs skip_binary_upload (+ skip_screenshots).
v3.5.13
build 103May 14, 2026
Multi-location push notifications, Cash Tip Reconciliation across every report, multi-iPad Stripe reader sharing with handoff, S710 auto-reconnect, Call-In order type, and invoice deposits + multi-installment auto-charge. Plus cash-freeze fixes and KDS modifier-group coloring.
- Push notifications now scope to each iPad's set location — only the iPad bound to Wicker Park wakes for Wicker Park orders. Powered offline iPads still queue and receive notifications for their last-set location.
- Cash Tip Reconciliation — at session close, record cash tips per staff plus an Unattributed bucket. Saves to a single source-of-truth doc per session and surfaces on POS Reports, the marketplace POS Dashboard (Overview / Sales / Tips tabs), and a new "Cash to remit" widget on the organization dashboard.
- Multi-iPad reader sharing — pairing the same Stripe S710 / S700 / WisePOS to two iPads now coordinates. A green / amber / red status pill shows who has the reader, with a one-tap "Take Over" hand-off and a 60-second grace period so a card mid-tap doesn't get yanked. Switching an iPad to KDS role automatically releases the reader for its peer.
- Call-In Orders — opt-in order type for phone-in pickups (Settings → Sales & Orders → Order Settings). Skips the payment screen, prints a receipt stamped UNPAID with PAY ON ARRIVAL, and surfaces a red UNPAID chip on every KDS and the transaction list so the kitchen knows to collect on arrival.
- Invoices now support deposits and multi-installment auto-charge schedules. Customer's card saves on the deposit charge (off-session), a daily cron auto-charges follow-ups on their resolved due dates, and the cancel sheet pre-fills the refundable-paid sum from policy.
- Auto-complete on bump (per-station Push Bar toggle) — when ON for a prep station, bumping the last actionable item on a ticket runs the full cashier-complete pipeline: customer SMS, ticket-time metric, status flip on every KDS.
- KDS modifier-group color picker (Settings → Hardware → KDS Display → Modifier colors) — map a group name like NO or ALLERGIES to a color from an 8-swatch palette so high-stakes lines jump off the ticket.
- Stripe S710 reader now auto-reconnects after a Wi-Fi drop, exposes battery + charging telemetry on the device doc, and shows a live green / amber / red status pill on the register screen with a tap-through to setup when offline.
- Reports / Banking / Dashboard / Org-admin views fold cash tips into the existing Tips card and add a "Cash to remit" line — same Firestore source as the iPad, no parallel computation.
- Per-modifier-group color on KDS station view and the order-detail sheet, with the existing "2× Ranch" rollup preserved.
- Cash rounding moved from Settings → Hardware to Settings → Sales & Orders → Cash Handling, with a new "Round Up & Down" half-up toggle alongside the existing "Round Up" mode (mutually exclusive).
- Push Bar toggle backfill — flipping Push Bar mid-shift now restamps the day's in-flight orders so previously-orphaned tickets snap into the right view immediately, with a toast confirming the restamp count.
- POS Online Ordering tab writes storefront settings per-location when a location pill is active, so multi-location providers can give each storefront its own hours / settings without overwriting the provider baseline.
- Rewards "free item" picker now supports categories AND/OR specific items — a coffee shop can drop "any latte" into a punch-card reward without enumerating every size + syrup combo.
- Punch-card visits limited to one per 24 hours per customer (visible disclaimers in admin + storefront). Dollars-mode rewards still accrue per dollar with no cooldown.
- Special Pricing fields on Edit Item — Price ($) no longer kicks the cursor out mid-keystroke; Start / End fields are now native time pickers instead of free-text.
- Modifier picker — qty stepper (+) now counts toward "Choose N-N" group validation, and saved items rehydrate the stepper to its saved qty instead of resetting to 1.
- Cash, Open Tab, and Card + Tip flows no longer freeze the "Confirming Order" overlay forever when the Firestore write fails. The cashier gets a toast (or, for card-after-tip, an Alert with the PaymentIntent id so they can refund or record manually) and can retry without force-quitting.
- Reports → Net Sales no longer attributes historical refunds to "Today" — refunds now cross-reference against the visible (timeframe + location) order set on every code path. Previously the All-Locations breakdown was leaking the full 500-doc lifetime refund pool into the current window.
- POS Orders screen sound + display are now location-aware on the cashier iPad. Setting the pill to Mama silences haptic, chime, and the order listener for Papa orders, matching how the KDS multi view has worked all along.
- Single-payment invoices now actually work at the pay step — /api/invoice/pay and /api/invoice/status were referenced by the customer pay page but never existed on the marketplace repo. Both endpoints now exist (status is read-only; webhook is the single writer).
- Multi-location dashboard pill now defaults to "All locations" with two or more locations, and clicking "All locations" stays on All Locations instead of reverting to the default. Selection persists across refreshes via the URL (?location=, ?tab=) with a per-provider localStorage fallback.
- Piña's Mexican Eats — one-off migration divided out 5.6% baked-in sales tax across 33 menu items and 28 modifier-option prices so tax is now correctly added at checkout instead of double-charged (was tax-on-tax-inclusive). Modifier groups reordered to Meat → Tortilla → Toppings → No.
v3.5.12
build 102May 13, 2026
Faster cold start, cancel works on every payment overlay, modifier-qty steppers, receipt screen leading with the iPad picker, KDS pagination + no more "..." cut-offs, and the storefront location pill always visible with a pickup-location confirm at checkout.
- Splash screen comes down ~1–3 seconds sooner on every launch.
- Cancel works on every payment overlay (initializing, waiting, processing, etc.).
- Optional + buttons let you ring up multiples of the same modifier (2× Ranch).
- Receipt screen leads with the iPad picker; no more duplicate "waiting for customer" spinner.
- Managers now see Transactions, Refunds, and Online Ordering (still no Reports / Banking).
- KDS tickets show full content — no more "..." cut-offs — and big tickets paginate.
- Storefront always shows the location pill; checkout asks customers to confirm the pickup location.
v3.5.11
build 101May 9, 2026
Bar Mode card flow charges in one tap — pre-auth, tip prompt, and receipt all run automatically with no separate Open Tab step. Cleaner Gift Card sheet, single back button in Settings, and Tabs panel keeps just Open and Closed views.
- Bar Mode card flow charges in one tap — pre-auth, tip prompt, and receipt all run automatically without a separate Open Tab step.
- Cleaner Gift Card sheet, single back button in Settings, and the Tabs panel keeps just Open and Closed views.
- Manager-only surfaces (Transactions, Online Ordering, Integrations) are now hidden from cashier and cook accounts.
v3.5.9
build 97May 8, 2026
Tab improvements end-to-end — searchable / sortable open tabs, Apply Discount on a tab, Bar Mode hardware setting that streamlines the reader-side flow, and automatic gift-card re-credit on refunds.
- Tab improvements — searchable, sortable, filterable open tabs list with a redesigned compact layout. Tab detail opens as a full screen with a three-dot actions menu (Nightly Close, Apply Discount, Delete Tab).
- Apply Discount on a tab — pick from saved presets (Employee, Friends & Family, etc.) or any custom %, manager-PIN gated, shown as a line item with a long-press to remove.
- Bar Mode — hardware setting that streamlines the reader-side flow for high-volume bars: tap → tip → receipt prompt on the reader. Skips the rewards lookup and iPad receipt picker entirely.
- Gift card refunds — refunds now re-credit the gift-card portion automatically, with the card portion still going to Stripe.
- Reliability fixes across tab open / close, discount math, and modal dismissal.
v3.5.8
build 96May 7, 2026
Gift cards end-to-end — issue at the register, scan QR to redeem, deliver by email or text, and customers see a live-updating balance page. New Gift Cards Report. Comps and discounts now break out separately in every sales report.
- Gift card issuance from the Gift Cards keypad — Cash / Card / Comp picker matching the regular Payment Method sheet. Cash flow drops the drawer; Comp issues a free card without taking payment.
- Gift card delivery — required Email or SMS pick on every issuance. SMS uses ClickSend through the marketplace; email uses Resend. Both link to a public e-gift-card page.
- Live e-gift-card landing page at eventini.io/gc/{code} — balance auto-updates the moment the POS deducts (Firestore onSnapshot), with a "Live" pulse pill, scale-pulse on change, and a grayscale state when fully redeemed.
- QR scanner on the iPad gift-card redeem sheet — fullscreen camera with bracket-frame overlay, torch toggle, sub-100ms detection, scan beep + haptic + screen flash, then auto-fills the code and validates.
- New Gift Cards Report (Reports tab on iPad + /pos-gift-cards on the dashboard) — outstanding-liability hero, period sales / redemption stats, lifetime totals, redemption rate, per-card detail with provider + status filters, CSV export.
- Comp button on Payment Method that drops a 100% discount with one tap. Custom $-off discount input alongside the existing percent presets.
- Storefront BOGO support end-to-end — schema, dashboard editor, and storefront cart auto-apply.
- Sales / Daily / Weekly / Monthly / Custom / All-Tx reports now break out: Gift Cards Sold (issuance count + face value), Gift Card Redemptions (re-labeled — was misleadingly "Gift Card Sales"), Gift Card $ Redeemed, Comped Orders, Discounted Orders.
- CSV exports get a new Comp column so accountants can filter comped orders out of revenue when reconciling.
- POS Audit page on the dashboard now surfaces three new event types — ORDER_COMPED (amber), GIFT_CARD_ISSUED, GIFT_CARD_REDEEMED (purple) — so a manager filtering for comps in the audit feed sees a flat list.
- POS Dashboard (/pos-dash) gets a 4-up stat row for Gift Cards Sold / Redemptions / Comped Orders / Discounts that mirrors the iPad sales report line items.
- Order placement auto-tags is_comp on any order whose discount drove total to $0, so existing comp-by-discount flows are tagged retroactively without a UI change.
- Camera permission strings rewritten to App-Store-ready format with a one-page review-notes doc covering each permission's why / where / data-handling.
- Gift card SMS + email delivery now actually sends. iPad calls were going to the Render fallback server (which doesn't host the gift-card routes) and silently 404'ing without surfacing the error.
- Gift card delivery sheet no longer pretends success on a failed send — the modal stays open with the error reason so the cashier can switch delivery method or fix the address / phone.
- Public-read Firestore rule on GiftCards/{code} so the unauthenticated landing page can subscribe without permission errors.
v3.5.7
build 95May 6, 2026
In-house delivery polish — runner-slip-on-Complete, online delivery on the KDS, and cross-device printing so refires, kitchen reprints, customer receipts, and delivery slips fire from any iPad.
- Online delivery orders appear on every prep KDS, route to the correct prep printers, and trigger the same delivery confirmation text customers get from in-person orders.
- Cross-device printing — refires, kitchen reprints, customer receipt prints, and delivery slips fire from any iPad and land on whichever iPad has the printer paired.
- Optional QR code on customer receipts that links to your storefront URL — opt in via Settings → Hardware → Receipts.
- Operating Hours "Same every day" toggle now applies edits to all seven days immediately.
- Auto-complete on expo bump runs the full cashier completion: customer notifications, customer record update, and cross-device delivery slip print.
- Order detail now shows the order type (Delivery / Carry-Out / Dine-In) and the delivery fee as its own line item.
- Reports and transactions dashboard break out delivery revenue and delivery fees collected, including in the downloadable sales report PDF and CSV export.
- Tab close polish: the tip prompt now shows the actual remaining charge, and tabs with a customer email or phone get a receipt sent automatically once paid.
- Multi-station kitchen tickets show a DELIVERY label on every prep ticket; the destination address block prints only on the final runner slip.
- Completing an order whose record was deleted on another device no longer red-banners.
- Location settings (no-cash delivery, sub-zones, delivery fee, tip toggle) now persist on save.
v3.5.6
build 94May 5, 2026
Fee accounting and order reporting accuracy improvements; reliability and performance tightening.
- Per-method net-revenue formula now uses the same revenue helper the dashboard + Banking page use — Cash / Card / Gift Card numbers add up to Net Sales exactly.
- Reports breakdown card and CSV export agree line-for-line on every number.
- Card sales no longer go negative on long windows when refunds exceed current-period card revenue.
v3.5.5
build 93May 4, 2026
Per-location tip-prompt toggle, multi-printer category fan-out, runner-slip-on-Complete for delivery orders, refund-aware reports, plus a print-queue fix so back-to-back delivery completions never lose a slip.
- Show Tip Option (per-location toggle in Settings → Locations). Off skips the iPad tip screen, the S710 / S700 reader tip prompt, and Tap-to-Pay-on-iPhone tip selection — payments charge at $0 tip with no UI break. Useful for fast-counter or no-tip-policy storefronts.
- Multi-printer category fan-out — pencil-edit a printer station to pick exactly which categories print there. A category can route to several printers at once (Kitchen + Expo + Receipt) so the expediter sees the full ticket while the line cook only sees food.
- Delivery Receipts copy stepper in Settings → Print Copies — independent of regular customer receipts so a delivery-heavy shop can print a slip per bag without doubling dine-in receipts.
- Phone-only Current Order sheet now has a tight Dine-In / Carry-Out / Delivery selector at the top so the cashier can pick destination without backing out of the cart.
- Cashier-side Complete on a delivery order prints the runner slip (address, unit, instructions, big bold PAID/UNPAID banner) at the receipt printer. Place-time print removed so the same order doesn't print twice.
- Reports dashboard surfaces a Refunds line between Gross Sales and Net Sales when refunds are present, so the math reconciles visually.
- Menu Performance + Rush Hours: Today / Week / Month / 3 Months / Year / All toggle. Both reports are now refund-aware — partial refunds reduce per-item and per-hour revenue proportionally; fully-refunded orders drop out of the order count.
- Settings → Hardware → pencil edit on a printer now opens a unified editor (rename + category routing) instead of just renaming.
- Receipt formatter cleanup — duplicate ===/--- divider stacks removed across customer receipts and kitchen tickets; each ticket prints with a clean single strip.
- Order card header on phone wraps cleanly instead of clipping the right edge — Delivery pill, order number, customer name, UNPAID badge, and push-bar status all stay visible on iPhone widths.
- Print queue now re-drains after the in-flight pass finishes. Completing two delivery orders in a row used to leave the second slip stuck in the queue until the next print event woke it.
- Phone Charge → Delivery: tapping Charge with Delivery selected now correctly opens the Delivery Details sheet instead of failing silently. Was an iOS modal-stacking race when the cart sheet hadn't finished dismissing.
- Hardware → Printers pencil no longer surfaces a "new NativeEventEmitter requires non-null argument" red box — the printer SDK loader is hardened against missing native modules and the noisy LogBox warning is suppressed app-wide.
- Pencil-icon Edit on a printer no longer throws a TypeError on Hermes — the redundant dynamic import that triggered it was replaced with the statically-imported Alert.
v3.5.4
build 92May 3, 2026
In-house delivery end-to-end — configure delivery per location, customer pays online or pays the driver, and a live tracker mirrors progress through the kitchen pipeline. Plus USB Star printer support, multi-station KDS polish, and refund-deduction fixes across every report.
- In-house delivery flow — toggle delivery per location, set the restaurant address and delivery radius, and customize the customer-facing tracker so each stage maps to a station in your kitchen pipeline.
- Customers can pay online with card, send a pay-later link, or pay the driver in cash. The pay portal lives inside the marketplace experience with inline card entry, gift cards, promo codes, and rewards.
- Live order tracker shows real progress through the kitchen with a segmented progress bar and a download-receipt button after payment.
- Print Copies setting — duplicate kitchen, bar, or receipt tickets per station for kitchens that want a copy for the line plus a copy for expo. Range 1-5 per station.
- Star USB receipt printers are now supported via an iPad USB-C hub or dock, alongside Bluetooth and LAN printers.
- Multi-station KDS (Push Bar) polish — per-item Complete on Expo for items it owns, single-tap "Send to cashier", and a category-scoped Expo so the expediter only sees what they're responsible for.
- Receipts: delivery orders print a customer receipt at the cashier station with a bold paid/unpaid banner and full delivery details so the runner has every detail on paper.
- Faster transaction-list refresh after a refund — the list updates immediately when the cashier navigates back instead of waiting for the next polling cycle.
- Reporting math fixes — refunds now consistently deduct from net revenue across the dashboard, transactions, sales reports, and daily reports. Refunds itemize line-by-line with the order number on the daily report.
- Refund cap simplified to the order's gross — small-ticket refunds were getting under-counted when the cap subtracted service + org fees from the eligible refund amount.
- Delivery extras (address, payment method, instructions) were being silently dropped from placeOrder because only order_type was being spread from the extras object.
v3.5.3
build 91May 2, 2026
Catering inbox + storefront catering tab, role-based permissions overhaul (owner-only financials, cashier scoping), banking ACH cash-settlements, and a unified bottom-sheet pattern across post-checkout flows.
- Catering — when a menu has a Catering category, the storefront grows a Catering tab so customers can place event orders alongside regular ordering. Catering checkouts route to a dedicated Catering inbox on the iPad with event-day context (date, time, guest count, service type) instead of mixing into the regular orders queue.
- Catering visibility across reports — Order History, Sales Report, Reports dashboard, Banking, and the home dashboard all surface "of which X catering / $Y" so the operator can see event work without splitting the math. Cancelled or refunded catering still shows in Order History (audit trail) while staying out of Net Revenue.
- Role-based permissions — managers and cashiers see a tailored app. Reports, Banking, Payouts, and Online Ordering are owner-only; non-owners with manage_storefront can still operate the storefront. Bottom-nav tabs and the More menu hide entries staff can't reach. Revenue is masked on the dashboard for non-owners with an owner-gated reveal.
- Staff invite from /pos/dashboard now sends both an email AND an SMS with the iPad welcome link. The "Other" role is rename-able with a per-permission checklist so custom roles get exactly the access the owner grants.
- Banking — new ACH cash-settlements section under Payouts; the cash-settlement-link flow restyled to match the rest of Banking.
- Tap to Pay opened to all roles — cashiers can now run Tap to Pay sales directly without manager assistance.
- Receipt + post-checkout sheets rewritten on a unified bottom-sheet pattern — explicit dismiss only (no accidental swipe-down or backdrop-tap closures), and the iPad page-sheet gray bleed is gone. The Phone Number screen always shows a Skip button even when phone is required.
- Math Breakdown modal redesigned — every Net Sales / Banking / Reports number is tappable and opens a clean financial-statement explainer with sub-formulas where relevant.
- Sign-out fix — switching accounts on a shared iPad no longer resurrects the previous staff member after a force-quit. Location switching is now scoped to a staff member's assigned locations.
- Org cash-settlement market_rate display fix — was showing 1000% on some orgs.
- Location pill resolves to a specific location instead of a stale "All locations" label after a sign-out / sign-in cycle.
v3.5.2
build 90April 30, 2026
Cash-discount-on-cards bug squashed, online-orders timezone fix, deep tab UX work, the Order Strip ticker, customizable SMS templates, and per-location storefront independence.
- Order Strip — new thin ticker pinned to the bottom of the POS chrome on every screen except orders / KDS / refires / modals / employee / auth. Each tile shows order number and wait time, color-coded by age. Tap to mark complete, long-press to open detail.
- Settings → Notifications → Messaging Templates — customize the SMS body for Order Confirmed, Order Ready, Tab Food Ready, and Receipt. Live token chips show what's substituted (order number, provider name, etc.). Defaults restorable per-template.
- Tabs — per-item delete + −1 decrement. Long-press an item on an open tab to delete the line; if quantity > 1, a "−1" button decrements in place. Persists to Firestore.
- Phone-on-tab-additions — when adding new items to an open tab, an optional phone field is shown. If filled, that customer is texted when their kitchen ticket is bumped complete (independent of the tab's main customer phone).
- Storefront — per-location online-ordering toggle, hours, and items. Turning off online ordering at one location no longer shuts the whole storefront down; that location is filtered out and the rest keep taking orders.
- Storefront — public storefront now displays provider description, social links (Instagram, TikTok, Facebook, Twitter), and external links above the menu.
- Cash payment sheet — only the Cancel button dismisses. Tapping the dimmed background no longer closes the sheet mid-flow.
- Notifications — tapping a new-order push on an idle iPad now deep-links straight to the orders screen (no clock-in detour when PIN-on-app-open is off). Foreground new-order pushes silently no-op so the cashier doesn't have to dismiss a modal Alert.
- Cash Discount no longer prints on credit-card or manual-card receipts. POS write paths are now gated to cash + split payments, with a server-side guard ignoring any phantom cash-discount on non-cash methods. Read-only backfill script ready for historical rows.
- Online orders missing from the sales report — late-evening orders were being filtered against UTC day-boundaries and falling onto the next day. Dashboard refires + tips endpoints now bucket day boundaries in the provider's timezone.
- Tabs — deleting a tab now clears the cart, the active charge sheet, and the reader display. No more lingering items requiring an app restart.
- Tabs — Manual Card on a tab now picks up the tab's actual total (was sending $0 because the empty new-items cart was being read instead).
- Tabs — close path retries the Firestore write up to 3 times so the row never gets stuck "open" after a captured charge.
- Manual Card — wrapped in try/finally so the modal always closes and the loading state always resets, even on an unexpected error after charge approval.
v3.5.1
build 89April 28, 2026
Push Bar — the multi-station KDS workflow restaurants have been asking for. Plus refire-from-Expo, High-Volume Mode, Bank Deposit Reconciliation, and per-location hardware bindings.
- Push Bar — sequential multi-station KDS workflow for restaurants. Each iPad picks its role (Cashier / Prep KDS / Expo) and orders flow station-to-station: chef hits Continue, the item lands on the next station with a green "just arrived" cue, expo aggregates the full order before handing off to the cashier. Per-item routing means the Pizza KDS only sees pizzas, the Bar KDS only sees drinks. Real-time sync — no refresh needed.
- Refire from Expo + Cashier — kitchen messed up an item? Tap Refire on the order screen, pick a reason (Under-cooked / Wrong item / Customer complaint / etc.), and the item resets to its first station with a red "REFIRE" banner. Re-printed kitchen ticket calls out the reason in giant letters.
- High-Volume Mode — restaurant rush toggle. Long-press the green "HV" pill on the cashier orders header (or flip in Settings → Push Bar). When on, the expediter's bump finalizes the order and texts the customer automatically — no cashier-confirm step. Per-location sticky.
- Bank Deposit Reconciliation — new card on the Banking screen explains the gap between Provider Net Revenue and the actual Stripe deposit: Net Revenue → minus Cash kept in drawer → Card sales credited → minus Stripe processing fees → Expected bank deposit.
- Refire Frequency report — Reports → Quick Actions surfaces top items refired (with the most-recent reason inline) and refire reason distribution. Worth a glance every shift to spot recipe / pour-out problems.
- Hardware quick-status sheet — More → Hardware on the cashier screen surfaces printer / card reader / internet / bluetooth status at a glance, with deep links to the full pairing flows.
- Cross-location hardware auto-swap — printer pairings now scope per-location. Move an iPad to a different storefront via Settings → Device, and the receipt / kitchen / bar bindings swap automatically. Stripe Terminal also resets so the next charge discovers against the new location's terminal.
- Tips per-staff allocation — float allocation matches the web report exactly (no more pennies lost on small tips split among multiple staff).
- Reports / Banking refund accuracy — refunds are now scoped to orders within the timeframe (a refund processed today on yesterday's order won't crater today's net), ghost refunds without a Stripe ID are skipped (no real money moved → no impact on reported numbers), tab-inflated order counts fixed, CSV Payment Breakdown reconciles to Net Sales exactly, and every screen shows an explicit date range.
v3.5.0
build 88April 25, 2026
Restaurant Mode — full sit-down service flow alongside the existing food-truck experience, with Stay/Send/Pay cart actions, multi-printer routing per station, and bar tabs with a $1 pre-authorization.
- Restaurant Mode — per-location toggle (Settings → Locations) flips the cashier UI between counter and table service. Cart adds Stay / Send / Pay buttons (fire kitchen tickets without settling, fire and settle, or settle without firing). Categories carry a configurable Print Station (Kitchen / Bar / custom Patio Bar / etc.) and station-aware ticket headers print "BAR" or "KITCHEN" based on the items.
- Multi-printer routing — pair a printer per station from Settings → Hardware. Bar items route to the bar printer, food to the kitchen, drink-only orders never tie up the kitchen line. LAN/Ethernet Epson + Star discovery added alongside Bluetooth, with multi-pass scan and manual MAC/IP fallbacks.
- Bar tabs with $1 pre-authorization — open a tab, customer taps card once for a $1 hold, tab is auto-named after the cardholder's last name. At close, "Charge" prompts tip directly on the reader, increments the auth, and captures — no second tap. New "Close Tab" button captures with a configurable auto-tip percentage (default 20%).
- Order Actions sheet — three-dot menu on the cart bottom row consolidates dining option, tab name, customer info, discount, tax-exempt, split checks, no-sale (open drawer), and reprint kitchen ticket.
- Open tabs visible on Transactions — tabs no longer hide from the transactions list. Open tabs appear with a yellow "Open" pill and a "Pre-auth ····XXXX" badge when the card is on file; tapping opens the edit-tab modal so the cashier can audit / charge / close. Still excluded from revenue rollups until they close.
- Heartbeat now falls through receipt → kitchen → bar so a same-printer-on-multiple-stations setup never flashes "disconnected".
- Cashier UX polish — toast-stack remount fixed (every toast no longer re-renders the entire app tree), "invalid date" on reprint receipts replaced with the current time, paymentStatus overlays cleared cleanly between flows.
- Tab close uses skipTipBuffer so the reader shows the exact tab amount instead of amount + 30%/$2 floor headroom.
- Reports + dashboard reconciliation — single source-of-truth refund-cap inside computeProviderNetRevenue ensures the home dashboard hero, the reports breakdown, and the exported sales-report CSV all produce the same Net Sales number.
- Hardware pairing — duplicate-station pairing now writes the SecureStore slot for the target station BEFORE connecting, so pairing the same physical printer to bar + kitchen + receipt actually persists across launches. Same-MAC printers can be disambiguated via a port-name fallback when the macAddress field is null on iOS BLE.
v3.3.5
build 71April 16, 2026
Cash flow parity with card on the iPad, receipts attribute the on-clock staff (not the PIN'd cashier), gift card org-fee verified, plus a major fix on the organization dashboard so multi-org providers stop seeing each other's revenue.
- Cash transactions now show the same center modal the card flow uses while the customer enters their phone on the smart reader — cashier sees "Customer is entering their phone number on the reader" with Skip / Complete buttons so they can bypass if the customer declines.
- Multi-organization switcher in the organization dashboard header — providers who belong to more than one org can flip between them with a single tap, and the choice persists across refreshes via localStorage.
- Receipts and reports now attribute orders to the staff member who is actually CLOCKED IN at the order's location, not the manager / owner who happened to PIN into the terminal. Multi-staff terminals finally credit the right server.
- Gift card org-fee handling verified end-to-end — the org fee runs once on the gift card purchase, and any gift-card-paid portion of a future order is excluded from the org-fee base so providers aren't double-charged.
- Organization dashboard cross-org bleed — a provider with two locations bound to two different orgs was showing identical revenue / order counts on both org dashboards. Performance API + main dashboard + Providers tab + Earnings tab + KDS Live Tickets now all filter orders by the location's organization_id, so each org only sees what was rung up at locations that joined IT.
- Org dashboard order cache is now keyed by orgId so switching orgs no longer serves the previous org's filtered results from cache.
v3.3.4
build 69April 16, 2026
Auto-rewards before every charge, transactional rewards routing through Render, kitchen newest-first sort, receipt server attribution, and a cleaner POS header that scrolls instead of clipping.
- Rewards is now part of every charge — Cashier taps Charge → picks Cash / Card / Split → reader immediately asks the customer for their phone, shows their rewards / free-item picker, then auto-continues to actual payment. No separate Rewards button to remember.
- iPad shows a center modal during the rewards preflight ("Customer is checking rewards on the reader") with Skip Rewards and Continue to Payment buttons that cancel the active reader prompt.
- Rewards calls (lookup, redeem, earn) now route through Render (eventini-fallback) first with Vercel as fallback — locks the transactional path to a backend that doesn't silently roll back deploys.
- Receipts and kitchen tickets now stamp the actual clocked-in staff name on the order at placeOrder time so historical receipts always show the correct server, even if the device is shared or the cashier later clocks out.
- Kitchen line + ticket views switched to newest-first sort — fresh orders land at the top regardless of source (in-person, online, scheduled). Online orders no longer leapfrog in-person orders that were rung up first.
- Tablet POS header tab strip wrapped in a horizontal ScrollView — Reader / Printer / Drawer pills no longer get clipped past the right edge on smaller iPads.
- Item-card initials fall back gracefully — "Veggie/Vegan (V)" now shows VV instead of "V("; tokens that don't start with a letter / digit are dropped from the placeholder.
- Reader "Thank You" screen auto-dismisses after 3 seconds so the customer isn't stuck staring at an OK button waiting for the next person to tap it.
- Receipt server name was sometimes empty or wrong because the receipt modal passed an empty string instead of the order's staff. Order now carries its own staff_name field.
- Online orders showing in the wrong order vs. in-person orders — fixed by switching to a single descending sort across all sources instead of source-grouped concatenation.
v3.3.3
build 66April 15, 2026
Smart-reader rewards, inventory tracking with cross-device alerts, auto clock-out warnings, linked modifiers, searchable settings, Cook role, payouts editor, tax-exempt payments, and dynamic auto-complete timing.
- Rewards on the smart reader — customer enters phone on the terminal, picks a free item inline, and the iPad auto-applies the reward at $0 with a tagged reward-claim line
- Multi-account picker for rewards — phones linked to several Eventini accounts surface a tappable list with name / email / points / visits
- Tax Exempt option on the payment screen — sales tax zeros for the transaction; the tax CSV now breaks out exempt sales vs. taxable sales with a dedicated summary row + daily columns
- Inventory / stock tracking — 3-bar signal-strength indicator (red / yellow / green) on every item, long-press stepper to adjust, tap-to-edit numeric keypad, auto-disable at zero, slide-up stock sheet with quick adjust and threshold tweak
- Reusable alert-banner primitive drives storefront-offline, low-stock, and long-shift alerts with Resolve + Dismiss actions and per-device dismissed-by state — cross-device via Firestore
- Auto clock-out warnings — cross-device banner fires when a staff member has been clocked in longer than 12 hours so a manager can confirm or clock them out
- Linked modifiers — advanced item edit section ties menu items to modifier groups by name with confidence % recommendations and a searchable picker
- Modifier on/off cross-item sync by name — flipping a modifier off in one item's sheet updates the same modifier across every item that uses it
- Staff roles — Cook and Other added to manage-staff; Other lets the provider type a custom title (e.g. "Prep", "Runner") that flows through to reports
- Banking — Payout Schedule editor wired to the Stripe Connect API (daily / weekly / monthly with delay days), Payouts preview card on Banking with a dedicated /payouts screen (Scheduled + History groups, "View on Stripe" deep link)
- Settings search — fuzzy subsequence + substring scoring, breadcrumb path (Settings › Section › Label), matched segments bolded, top 3 results
- Free-item rewards config — searchable picker (chips) in Rewards card to pin the free reward to a specific set of menu items, with "any item" fallback when empty
- Auto-complete orders dynamic timing — cashier-set minutes on the settings card are now honored when auto-completing orders
- Online Ordering toggle sync — flipping Online Ordering on the POS storefront card now correctly drives the same state the dashboard reads, no more split-brain between POS mode and dashboard
- Concurrent order safety — orders now queue through a persistent retry queue with exponential backoff, surviving app restarts and draining on boot so back-to-back taps never lose an order mid-flight
- Kitchen ticket sort — oldest active orders on the left so new orders append to the right instead of shoving the cashier's view
- Rewards redemption deferred until placeOrder succeeds — canceled transactions no longer drain the customer's streak or points
- Pending in-cart redemptions adjust the displayed balance live — claiming twice in a row shows the count drop each time, and the Apply button honors the adjusted balance
- Per-location rewards config merged over provider baseline — visits required, reward type, and allowed free items respect the pill location
- Canceling the rewards sheet on the iPad also cancels the reader's active prompt so the terminal doesn't sit on a stale screen
- Cart + printed receipt flag reward-claim lines — iPad shows a subtle "Free" label with the original price struck through; printed receipts mark the line as (REWARD) with a "Reward redeemed" sub-line
- Apple Sign In / Google Sign In now routes reviewers and partner accounts to the Partner Login screen cleanly when their Apple ID isn't tied to an Eventini provider account (fixes App Store review rejection 2.1(a))
- Rewards phone lookup matches every stored phone format (E.164, 10-digit, "(555) 123-4567", dashed) across both users.phoneNumber and users.phone fields so duplicate-format rows are found
- Reader "Your Rewards" screen renders reliably after phone entry — adds at least one button so Stripe Terminal doesn't silently auto-skip an empty selection form
- Modifier sheet stale-closure bug — adding an item via the auto-expand modifier sheet now commits the selected groupOptions / variant / modifier ids instead of the captured-at-open-time values
- Stock indicator and price on menu cards now share the same baseline so the $-column isn't offset from the availability bars
v3.3.2
build 65April 14, 2026
Multi-location symmetry — the top pill now drives attribution for every write, and settings plus storefront config (tax, hours, rewards, gift cards) now honor per-location overrides.
- Location pill drives attribution — orders, tabs, time entries, sessions, invoices, and the audit log all stamp whichever storefront the pill shows instead of only the device binding
- Per-location settings overrides — tax rate, service fee, tip defaults, business info, receipt header / footer, and cash rounding can be set per storefront and fall back to the provider baseline
- Per-location storefront config — operating hours, prep time, pickup mode, minimum order, status, cover image, gift cards, rewards, and customer notes all honor per-location overrides
- Settings reload automatically when the pill changes — flipping storefronts swaps tax rate, receipt header, hours, and rewards live with no restart
- Location pill is always tappable, even when the device is not yet bound to a location
- Banking Locked tab redesigned as an inline placeholder — swiping between tabs no longer flashes the PIN modal across other pages
- Back to Dashboard button in Banking Locked properly swaps to the dashboard tab via the pager (previously a dead no-op)
- Security policy (PIN gates, cashier-access lock, lock-screen timeout) and device hardware (printer, cash drawer, sound) stay provider-wide so org policy is enforced consistently
- Cash orders placed while the pill was set to a different location now show up in the Kitchen and Transactions views under the pill location instead of disappearing into the device binding
- Cover image updates from a specific storefront no longer overwrite the provider main listing image — cloud-function sync only fires when the pill is on All locations or matches the device binding
v3.3.0
build 63April 14, 2026
Cash change confirmation, restricted cashier access with manager-PIN gates, persistent clock-in, kitchen ticket stability, and resynced reports with corrected Gross / Net formulas.
- Change Given Back banner — after a cash payment the full-screen confirmation pins the change amount until the cashier taps Yes, so it never disappears mid-handoff
- Restrict Cashier Access toggle in Settings → Security — gates Banking, Reports, and Invoices behind a manager / owner PIN and masks sensitive dashboard numbers for cashiers
- Labor / Tips Report (renamed from Tips Report) — per-staff hours, shifts, and break minutes now live on the same screen as the tip breakdown
- Clock-in persistence — staff stay clocked in across POS session exits; only a physical Clock Out ends a shift
- Kitchen ticket row — oldest active orders on the left so new orders append to the right instead of shoving the cashier's current view
- Charge button now shows the pre-tax amount on the big black button so cashiers can quote the subtotal at the counter
- Gross Sales formula tightened to a straight sum of cash + card collected ("money in the drawer + money through the terminal")
- Net Sales formula made explicit: gross − refunds − taxes − org fees − tips (no more hidden fees in the net line)
- Reports 1D / 1W / 1M / 3M / 6M / 1Y toggles now drive both the hero revenue / order count and the breakdown card from the same data source — top and bottom can't drift apart anymore
- Labor / Tips Report tip totals now match the Sales report row exactly — fully-refunded orders no longer leak into the tip aggregate
- Exiting the POS session no longer silently clocks out every active employee
v3.2.0
build 59April 13, 2026
Multi-location support, smart-reader receipt selection, WisePOS E auto-heal, phone-number search, and split-payment reliability fixes.
- Multi-location support — providers can now run one Eventini account across multiple storefronts with per-iPad device binding
- Per-location order, time entry, and audit attribution so revenue and reports always scope correctly
- Locations CRUD in Settings with eager-creation of Stripe Terminal locations on add
- LocationSwitcher bottom sheet with separate Viewing scope (any role) and This Device reassignment (manager PIN required)
- Per-location menu item availability — opt-in card on each item to limit visibility to specific storefronts
- Staff "Assigned Locations" — restrict cashiers to specific storefronts, owners always have all
- Reports CSV gains a Location column; Dashboard, Transactions, and Sparklines filter by viewing location
- Smart-reader receipt selection on S700 / S710 / WisePOS E — "How would you like your receipt?" runs on the reader screen with sms / email / print / none
- Require Customer Phone setting — when on, the smart-reader phone prompt is mandatory with no Skip
- Phone-number search across kitchen Done section, POS sidebar Transactions, and the main Transactions screen
- Message customers from completed orders with pickup-reminder templates ("ready and waiting whenever you can grab it")
- WisePOS E auto-heal — pre-charge liveness probe that detects silent reader disconnects plus server-side unstick of in-flight operations
- Reader-offline monitor cron posts Slack alerts when a reader has been offline ≥ 10 min while the storefront is actively selling
- POS terminal location chip on both phone header and tablet tab strip; tap to swap location or jump to settings
- Storefront Offline banner respects safe area on iPad and slides in/out smoothly with the native driver
- LocationSwitcher sheet ported to the modern BottomSheet pattern (drag-handle, content-sized, dismiss-on-drag)
- Internet readers now self-heal overnight disconnects via heartbeat and foreground-resume reconnect
- Slack reader alerts now resolve the storefront business name instead of showing a raw provider ID
- Split cash + card on a $20 order with a service fee: modal showed "card: $10" but actually charged $10.60 — both now use the fee-inclusive total
- Cash modal Confirm button on non-tab orders no longer blocked at partial amounts — relabels to "Pay Partial → Card" so customers handing over partial cash don't get double-charged
- Payment modal dismiss mid-collection now cancels the in-flight reader operation, fixing the "Operation in progress wasn't completed before starting new operation" error on the next charge
- PIN-screen error copy for staff restricted to other locations now says "You're not assigned to <Location>" instead of a generic "Incorrect PIN"
v3.1.2
build 58April 10, 2026
Storefront offline banner, manager-PIN revenue blur, customer phone capture in the receipt modal, Reports breakdown expansion, and cash-flow UX polish.
- Pinned red Storefront Offline banner across every main screen with a one-tap Reopen button
- Manager-PIN-gated revenue blur on the Dashboard hero card — reveals for 60 s, then auto-re-blurs
- Customer phone capture step at the start of the receipt modal for cash and Bluetooth reader flows
- Customer Paid breakdown in the transaction detail modal — splits Paid in Cash / Paid by Card / Gift Card / Customer Paid total
- Three new opt-in Sales & Orders toggles: Enhanced Modifiers (centered card over dimmed backdrop), One-Tap Add (auto-commit variant items with no add-ons), and Auto-Complete Orders (3-min default)
- Reports breakdown expanded with on-screen Gross Sales, Net Sales, Tips Collected, and Invoice Revenue rows
- Cash payment UX — quick-bill row ($20 / $40 / $50 / $60 / $80 / $100 / Exact) no longer blocked by the keypad; tapping any quick-bill dismisses it
- Pinned Cash Received + Change Due banner through every step of the receipt modal
- Modifier groups now auto-open the option-form sheet after creation — saves the cashier the "now add options" tap
- BottomSheet keyboard avoidance — the "Additional Price" modifier input is no longer hidden by the on-screen keyboard
- Sidebar customer name and order label reset cleanly between orders — no ghost text lingering after focus
- Eager-mount every main tab to eliminate the one-frame "page drop" on fast cashier swipes
- Removed stacking LayoutAnimation calls across the menu item editor and Apply-to-Other-Items modal — no more visible flashes
- Reports timeframe filter was only updating the hero stat — the breakdown card stayed on all-time numbers. Every row now respects the 1D / 1W / 1M toggle
- Clock-out no longer prompts "clock in" when the menu was edited mid-shift by another staffer — orders screen refreshes clock data on focus
- SMS Receipt option in the delivery step now shows for every flow where a phone was captured (previously smart-reader-only)
v3.0.0
build 51April 5, 2026
Render-primary payment architecture with automatic Vercel fallback, category reordering, and tip UX improvements.
- Render-primary / Vercel-fallback payment architecture for maximum uptime
- Category drag-to-reorder in menu management
- Custom tip input on Stripe S710 card reader
- Print button on kitchen order queue with online order auto-print
- Bluetooth device status indicators with connection hints
- Repositioned "No Tip" option for better UX on reader screen
- Online order auto-print to kitchen display on arrival
- Storefront slug-based URLs instead of raw provider IDs
- Fixed orgStripeAccountId leaking Firestore ref into Stripe metadata
- Fixed card capture flow on Bluetooth readers
- Fixed online ordering save failing with undefined Firestore values
- Fixed stale reader connection state after reconnect
v2.9.0
build 50April 4, 2026
Reader setup improvements, cloud functions enhancements, and tap-to-pay refinements.
- Reader setup improvements for faster terminal pairing
- Cloud function enhancements for payment processing
- Tap-to-pay flow refinements
- Order store updates for better state management
v2.8.0
build 47April 4, 2026
Custom tip on S710 reader, repositioned No Tip option, and tab tag fixes.
- Custom tip amount input on Stripe S710 card reader
- Repositioned "No Tip" option for better discoverability
- Fixed tab tag display on open tabs
v2.7.0
build 46April 2, 2026
Version bump with updated changelog and MFi review notes for App Store submission.
- Updated App Store changelog and MFi review documentation
- Version references updated across the app
v2.6.0
April 2, 2026
Bluetooth device status indicators, connection hints, and card capture fixes.
- Bluetooth device status indicators showing connection state
- "Check Bluetooth" hints when readers are disconnected
- Fixed card capture flow on Bluetooth-connected readers
- Fixed online ordering save failing with undefined Firestore values
- Fixed stale reader connection state and added payment diagnostics
v2.5.0
April 1, 2026
Performance overhaul with PIN lock and clock-in persistence fixes.
- Optional PIN lock for terminal security
- Category grid layout for faster item selection
- Tip-after-payment flow for card-present transactions
- Cash denomination pills for quick change calculation
- Performance overhaul for faster screen transitions
- Managers can now submit vendor absences (was owner-only)
- Fixed PIN lock and clock-in persistence across app restarts
- Fixed incomplete Stripe transactions in all tip flows
v2.3.0
March 31, 2026
Customer notes for online orders, push notifications, and reusable modifier groups.
- Customer notes on online orders with push notification delivery
- Firebase Cloud Messaging setup for real-time order alerts
- Reusable modifier groups: copy from library when creating new items
- POS edit mode: toggle items on/off, tap to edit inline
- Skip clock screen if staff already logged in
- Compact stat cards on mobile with smaller icons and labels
- Pickup time shown on all order view modes (list, grid, ticket)
- Order cards show real source, customer name, and pickup time
- Items always show edit and visibility toggle without long-press
- Fixed gift card tab payments not accounting for prior partial payments
- Fixed split payments on tabs with partial cash and multi-method close
- Fixed menu item card iPad layout and added unsaved changes warning
v2.2.0
March 31, 2026
Earnings clamped to zero on refunds, vendor absence scheduling, and storefront snooze controls.
- Vendor absence scheduling with custom messages
- Snooze controls for temporarily pausing online orders
- App version checking with update prompts
- Refunds no longer cause negative balances on dashboard, reports, transactions, or banking screens
- Improved status hero card display on storefront
- Modifier group form improvements
v2.0.0
build 22March 29, 2026
Multi-brand printer support, kitchen tickets, split payments, tabs, pre-ordering, and staff management.
- Multi-brand thermal printer support (Star Micronics, Epson) with kitchen ticket formatting
- Split payments: partial cash, multi-method, and tab-based checkout
- Tabs: open a tab, add items, close with any payment method
- Pre-ordering with scheduled pickup windows
- PIN-based staff login with clock in/out and break tracking
- Tablet split-view POS layout with drag-to-reorder menu items
- Ticket view for orders with timing indicators
- Refund flow with PIN verification and audit logging
- Tablet receipt sheet with formatted output
- Inline modifier editing on item creation
- Responsive scaling for all screen sizes
- Stripe deep link return for seamless Connect onboarding
- Fixed leave org persistence leaking organization_id across sessions
- Fixed duplicate tip screen appearing after payment
- Fixed org link: setDoc+merge so join works even if config doc is missing
v1.5.0
build 11March 26, 2026
Tablet split-view POS, drag-to-reorder, inline modifiers, and refund support.
- Tablet split-view POS with simultaneous menu and cart
- Drag-to-reorder for menu items and categories
- Inline modifier editing during item creation
- Refund processing with receipt tracking
- Google Sign-In and Apple Sign-In support
- Fastlane setup for automated TestFlight uploads
- Responsive scaling for tablet and phone layouts
- Menu editor overhaul with better category management
- Ticket time tracking for kitchen display
v1.3.0
build 5March 25, 2026
Tips report, live payment flow, fee display, and duplicate transfer prevention.
- Tips report with breakdown by payment method
- Live payment flow with real-time status updates
- Processing fee display on transaction details
- Payment splits between provider and organization
- Org payout tracking in admin dashboard
- Fixed duplicate Stripe Connect transfers on retry
- Fixed revenue display rounding errors
- Fixed crash on empty order submission
- Added detailed privacy strings for App Store review (camera, photos)
v1.0.0
March 16, 2026
Initial release of the Eventini POS app with Tap to Pay on iPhone, Stripe Terminal, and organization fee splits.
- Point-of-sale terminal for on-site event transactions
- Tap to Pay on iPhone via Stripe Terminal Apple entitlement
- Stripe card reader integration for traditional payment processing
- Cash payments with automatic change calculation
- Organization system with fee splits and service fee restructuring
- Organization join flow for vendors
- Firestore-first menu with variants, modifiers, and categories
- Online ordering configuration sync to storefront
- Haptic feedback across all interactive elements
- Card processing fee display on transactions
- Tips collected before charge with preset percentages
Pipeline
Upcoming integrations, payroll features, and third-party tools on our roadmap.
Payroll Software Integration
In ProgressAutomated payroll processing for organization vendors with direct deposit, tax withholding, and W-2/1099 generation.
QuickBooks & Xero Sync
PlannedTwo-way sync between Eventini earnings and your accounting software. Automatic invoice creation and reconciliation.
Square POS Integration
PlannedConnect existing Square terminals to Eventini for unified reporting across all your point-of-sale hardware.
Automated Tax Filing
ExploringEnd-of-year tax document generation and filing assistance for providers and organizations.
Multi-Location Organization Support
PlannedManage multiple food parks or event venues under a single organization with location-level reporting.
Third-Party Delivery Integration
ExploringConnect DoorDash Drive, Uber Direct, or local couriers for delivery fulfillment on online orders.
Have a Feature Request?
We build based on what operators actually need on the ground. Let us know what would make Eventini POS better for you.
