v1.5.6 — Enterprise-grade transaction hardening + printer format fix
Data integrity
- Every multi-statement mutation (order creation, order item add/cancel/restore, order status, bill generate/payment/discount, addon group create/delete) now runs inside an atomic SQLite transaction via a new
withTxn()helper. No more partial writes if the process dies mid-flight. - Startup now runs
PRAGMA integrity_check+PRAGMA foreign_key_checkand logs any violations. - Self-healing auto-repair for a pre-fix
bills.payment_detailscorruption where payment JSON was stored as{A},{A}instead of[A]. Idempotent, only fixes rows whose math still balances. - Added
busy_timeout=5000andsynchronous=NORMALpragmas — concurrent KDS writes no longer throwSQLITE_BUSY. - On final payment, lingering pending/preparing/ready
order_itemsare bulk-closed toservedto prevent the "completed order with stuck KDS items" split-brain.
Printer
- Fixed column alignment bug in all three receipt templates (compact, classic, detailed) where product name wasn't padded to its column width, producing mangled output like
Cheeseburger2 5% ₹540.00. Now reads cleanly on both 58mm and 80mm paper. - Refactored receipt rendering to shared
itemHeader/itemRow/addonRowhelpers.
Misc fixes
- Removed the
dropAllTables()footgun (violated AGENTS.md rule #1). - DevTools no longer opens automatically for packaged end users (gated behind
isDev). - Backup
_flo_meta.app_versionnow stores the real app version instead of the schema version. - README download filenames / latest-version synced.
- Fixed
build:allscript name in README (wasbuild:all-platforms).
Tests
npm testruns backup + printer + db-audit suites.npm run test:printer -- --livesends a real test page to your default printer.npm run test:db-auditwalks PK/FK/orphans/JSON/math sanity.npm run repair:payments -- --applyone-time repair for the legacypayment_detailsbug (auto-runs on app startup too).- Tests use Node 22.5+ built-in
node:sqliteso they run without rebuildingbetter-sqlite3against system Node.
Downloads (macOS)
| File | Arch | SHA-256 |
|---|---|---|
Flo-1.5.6.dmg |
Intel (x64) | e450268fb4723e3ec4265aaff78d435a3db660a7b848f942d5f660a13b557fec |
Flo-1.5.6-arm64.dmg |
Apple Silicon (arm64) | 27bcc7adcf757f23b52758617e31ffea8c1908d4634ae04c0e2e170080094f28 |
⚠️ These DMGs are unsigned — theCodify Apps Private Limited (BKDY677XJA)Developer ID cert wasn't in the keychain at build time. Users will see a Gatekeeper warning. To sign, re-runnpm run build:macafter importing the cert, or distribute via a separate signed channel.
Windows and Linux builds not included — build from source with
npm run build:win/npm run build:linuxon the respective platforms.