Skip to content

[EPIC] Public-support findings (4 - 29 Sep 2026) - close-out tracker #830

Open
0 of 17 issues completed
Open

Description

@carvalab

Source: WhatsApp Official Flo POS Support transcripts, 4 - 29 Sep 2026. Continuation (20 - 29 Sep) reviewed 29 Sep against the 3.11.0 (21 Sep) and 3.12.0 (29 Sep) release notes.

Already shipped - verify and close, no new work

Already open - linked, not duplicated

#279 (shift remainder; core shipped in 3.12.0 via #836), #280 (ledger, closed 26 Sep), #358 #645 (inventory and expense), #364 (tips; on 27 Sep Gutkirat scoped it after the next release, taxes and reporting make it complex), #694 (delivery limits), #478 (QR menu), #428 (attendance, from the +91 ask on 6 Sep), #703 (void and refund wording), #285 (money foundation), #361 #286 (multi-counter and devices), #717 (cashier link customer, closed 26 Sep), #639 (order UX), #696 (server app), #469 #204 (release hardening), #834 (optional kitchen delivery enforcement before billing with a KDS-disabled bypass; opened 23 Sep from the +52 thread), #370 #369 (epics and arch)

Gaps - sub-issues of this epic

Ops notes, no code issue

Multi-branch is not supported. FloCafe keeps one independent database per site, so menus, customers and reports are not shared across locations. The Tailscale setup from chat only links the devices of a single restaurant (cashier PC, kitchen screen, waiter phones on ports 3001-3004). This needs a docs note, nothing to build. PT-language group request (+55 on 22 Sep) is an ops decision, not code. RevFlo Android stays proprietary with handshake only; open vendor-reported bugs: QR scanner camera permission never requested (29 Sep, fix promised) and money mismatch vs the PC (23 Sep). 3.12.0 GitHub release published 29 Sep 15:24 UTC; +90 saw the macOS update as stuck on 29 Sep, track under #469/#204. Swiggy/Zomato aggregator order intake (+91 on 23 Sep) is a roadmap ask, nearest home #694.

Acceptance

Each sub-issue closed with the shipped version tag; #280 closed on 26 Sep (done); no duplicates of any number listed above.

Activity

  1. changed the title [-][EPIC] Public-support findings (4 - 23 Sep 2026) - close-out tracker[/-] [+][EPIC] Public-support findings (4 - 29 Sep 2026) - close-out tracker[/+] on Sep 29, 2026
  2. khaira777 commented on Oct 23, 2026

    @khaira777
    Contributor

    S1 Report export and share - status update (23 Oct, main @ 8e39053)

    Done

    Still open (verified)

    • PDF export. All three report export routes reject anything other than format must be xlsx or csv (reports.ts ~L1233, L1291, L1416). The only PDF path is the generic printToPDF IPC, and only the menu printer uses it. Suggested approach: reuse printToPDF with report HTML built from cash-close-export.ts / daily-sales-export.ts. Web mode will need a browser-print fallback.
    • WhatsApp send for the daily sales report (today only X/Z, plain text, no attachment). Optional: auto-send Z on close as a feat: add WhatsApp message templates, automated rules, and safety controls #1315 rule kind.
    • Multi-day or month range export for accountants. docs/reference/daily-sales-export.md says "one business day at a time". A per-tax-rate ledger is also missing.
  3. khaira777 commented on Oct 23, 2026

    @khaira777
    Contributor

    S2 Checkout charges - status update (23 Oct, main @ 8e39053)

    Done

    Still open (verified)

    • Switch tender / payment method after checkout (+63, 11 Sep). There is no endpoint to change the method on a recorded payment: none of the bills, orders or refunds routes does it, and there is no UPDATE payments SET anywhere. feat(orders): support expected payment method and delivery note #977 "expected payment method" is a pre-payment hint on delivery orders, not this. Needed: a manager-PIN-gated correction on main/routes/bills.ts, an audit entry, a cash-session expected-cash recompute, a block once the Z/day close is done, UI in OrderDetailPanel.tsx, and tests.
    • Waiter tip %, removable per invoice, tax untouched (+505, +52). There is no tip code at all (tip_amount, gratuity and tips return 0 hits outside i18n). Tracked by Feature: Tipping (separate tip_amount, customer-facing selection) #364 (open). Interim workaround: an optional percentage custom charge with no tax category, waivable per bill, but not attributed to a waiter.
    • (Not built, belongs with Feature: Tipping (separate tip_amount, customer-facing selection) #364) service-charge payout or distribution to staff.
  4. khaira777 commented on Oct 23, 2026

    @khaira777
    Contributor

    S3 Roles and sessions - status update (23 Oct, main @ 8e39053)

    Shift lifecycle work is done (#279 closed 20 Oct, plus #1129 in 3.13.0 and #1318 on main, unreleased). Both remainders below are still open and have no tracking issue.

    • Simultaneous owner plus cashier sessions on one device. frontend/src/store/auth.ts stores a single token/tenant in localStorage, and there is no switch-user or lock-screen flow. Separate devices can already be logged in at the same time (stateless JWTs). Per-action manager PIN overrides exist, but they are not a second session. Needed: a PIN-based quick user switch or lock-and-switch (store/auth.ts, AuthGuard/Sidebar, a PIN switch endpoint in main/routes/auth.ts). Decide how the open cash session follows the active user.
    • Waiter-as-cashier per-waiter drawers (+1-829, 21 Sep). This is blocked by design today: CREATE UNIQUE INDEX cash_sessions_one_open ... WHERE status='open' (main/db.ts ~L7013), 409 session_already_open in cash-sessions.ts, asserted in tests/cash-sessions.test.ts. Feature: Shift lifecycle management, cash drawer reconciliation, & business day close #279 lists "concurrent multi-till sessions" as left out on purpose. Needed: a product decision first, then a migration that scopes open sessions per drawer or user, drawer ownership on sessions and movements, and user-scoped getOpenSession / shift-session-gate.ts, with day-close aggregation across drawers. Related: Architecture [Needs Review]: Sortable ULID identifiers & multi-device hierarchy (main/core/ids.ts) #286.
  5. khaira777 commented on Oct 23, 2026

    @khaira777
    Contributor

    S4 Delivery and caller ID - status update (23 Oct, main @ 8e39053)

    Done

    Still open (verified)

    • Caller-ID LAN popup (Sami, 4 and 8 Sep). Searching for caller.?id|incoming.?call|telephony|sip: returns 0 hits and there is no tracking issue. Needed: pick a caller-ID source first (USB CID modem, SIP/VoIP webhook, or Android companion). Then build an ingest route on the LAN API, a phone lookup through the customers route, and a push to POS clients that opens a pre-filled delivery order.
  6. khaira777 commented on Oct 23, 2026

    @khaira777
    Contributor

    S5 Catalog helpers - status update (23 Oct, main @ 8e39053)

    Done

    • Menu printing: feat(print): add physical menu printing #949 (3.12.88-beta / 3.13.0). POST /api/printers/print-menu, main/printers/document-menu.ts, PrintMenuModal.tsx (POS topbar and products page). Tests: tests/menu-printing.test.ts, frontend/e2e/menu-printing.spec.ts.

    Still open (verified): nested category tree (+44, 21 Sep)

    • Backend already supports it: categories.parent_id with cycle validation (main/routes/categories.ts ~L111-140), and GET with ?root / ?parent_id nests one level.
    • Frontend has no parent/subcategory control. parent_id appears only in frontend/src/lib/types.ts. The category form on the products page never sends it, and POS loads a flat list. feat(pos): configurable category and item sort order #1311 (sort order) did not add hierarchy.
    • Needed: a parent selector in the category form, a tree view in category management, subcategory navigation in the POS category bar / ProductGrid.tsx, a parent column in menu CSV import/export, and grouping in menu printing. Decide max depth (API nests 1 level).
  7. khaira777 commented on Oct 23, 2026

    @khaira777
    Contributor

    S6 Backup safety - status update (23 Oct, main @ 8e39053)

    Restore-from-file, stale Drive state and menus shipped earlier. Since then: daily local backup to Documents/FloCafe/Backups (#1303, #1329, #1331) and paginated backup history (#1271). These are on main and unreleased.

    Still open (verified): downgrader flow (Bankim, 8 Sep)

    • What happens today: an older app opening a newer DB throws SchemaVersionMismatchError (main/db.ts ~L7816). main/index.ts treats it as a generic startup failure: dialog.showErrorBox('Initialization Error', ...), then the app exits. The message only says "Please update Flo Cafe to the latest version". The app takes an automatic pre-migration backup, but nothing points the user to it or offers to restore it.
    • Restoring a newer backup into an older app is rejected in direct mode (tests/backup-restore-production.test.ts).
    • Needed: a dedicated startup branch for SchemaVersionMismatchError. It should list the pre-upgrade backups (app/schema version from _flo_meta) and offer "restore pre-upgrade backup (loses newer data)" or "move newer DB aside and start fresh", plus user docs for the manual path per OS. Add a startup test next to tests/startup-failure-child.cjs. No tracking issue exists.
  8. khaira777 commented on Oct 23, 2026

    @khaira777
    Contributor

    S8 User docs and in-app help - status update (23 Oct, main @ 8e39053)

    docs/ is still developer-facing. The only operator guides are printers.md, linux.md and google-drive-setup.md, and there is no FAQ or user guide anywhere (rg FAQ over docs, README and frontend returns 0 hits).

    Done / partial

    Still open: write user-facing pages for

    • Shift and day-close lifecycle: open shift, close shift, X/Z, close day. Covered only in dev docs business-time.md and order-lifecycle.md.
    • PIN explainer: Master PIN vs Staff Approval PIN. Also unify strings: kitchenDeliveryOverridePrompt still says "Manager PIN" while refunds say "Staff Approval PIN".
    • Multi-PC LAN guide with ports 3001-3003, firewall and Tailscale. Note: no port 3004 exists in code, so confirm what users meant.
    • Per-OS data, backup and log paths plus restore steps. Docs only say app.getPath('userData'). "Send Log" is now Diagnostics "Copy for support".
    • Update channels for users: GitHub, MAS, MS Store, Snap, and their lag.
    • Open vs proprietary boundary: FloAdmin, RevFlo, blue.flowcafe.com (0 hits today).
    • FAQ, plus the multi-branch-not-supported note (0 hits).
    • Optional: translated docs. Only README translations exist, unchanged since 25 Sep.
    • S7 leftover (expenses code is done, see summary): an operator how-to for recording expenses and purchases.
  9. 6 remaining items

  10. khaira777 commented on Oct 23, 2026

    @khaira777
    Contributor

    Handoff: sub-issues created and decisions taken (23 Oct)

    Every remaining gap from the status comments above now has its own issue, linked as a sub-issue of this epic. Each one is self-contained: verified current behavior with file anchors, the decisions taken, scope, acceptance criteria and test commands.

    Ready to build (decisions made)

    Issue Item Key decisions
    #1350 Accented / non-Latin receipts (priority:high) Raster fallback on every path (core, merchant, pack, WebUSB). Stay fail-closed. A merchant-template silent row drop was found and is in scope. Fix in progress (PR to follow).
    #1334 S1 PDF export Reuse the printToPDF IPC; browser-print fallback in web mode
    #1335 S1 accountant range export from/to, capped at 93 days, plus a per-tax-rate summary sheet
    #1336 S1 WhatsApp daily sales Text summary; optional Z-on-close rule, off by default
    #1337 S2 correct payment method Owner/manager with Staff Approval PIN, only while that shift is open, same amount, audited, expected cash recalculated
    #1338 S3a PIN quick user switch Reuse the per-user PIN for all roles; only owner/manager PINs approve; the lock screen shows user tiles, so duplicate PINs work
    #1339 S3b per-user shifts Opt-in setting, off by default; money goes to the person taking the payment; day close waits for all shifts; shared drawer allowed with a docs warning
    #1340 S5 subcategories Depth 2; backend parent_id already exists, so this is mostly UI
    #1344 WhatsApp stuck at "Sending" ACK timeout leads to failed plus retry; late ACK still promotes; startup sweep
    #1348 Server App KOT routing test Good first issue

    Needs decision / discovery

    Needs repro

    #1345 theme then login, #1346 Mac WhatsApp reconnect, #1347 MAS USB printing, #1349 re-verify dark category chips and 58mm.

    Elsewhere

    • Docs (S8) moved to the docs repo: FreeOpenSourcePOS/docs.flopos.com#14 (user-facing guides live on flopos.com/documentation).
    • Tips (S2) stay in Feature: Tipping (separate tip_amount, customer-facing selection) #364. Field requirements were added there as a comment.
    • S7 is done in code. Its doc leftover is in docs.flopos.com#14, so the box can be ticked.

    Suggested order

    1. fix(print): accented/non-Latin receipts refused or silently missing rows on pack, merchant and WebUSB paths #1350 (in progress)
    2. Cut a release from main (92 unreleased commits)
    3. fix(whatsapp): messages stuck at Sending - add ACK timeout and retry #1344, feat(billing): correct the payment method on a paid bill while its shift is open #1337, feat(catalog): two-level category tree (subcategory UI) #1340, test(server-app): end-to-end multi-station KOT routing from the waiter app #1348
    4. feat(auth): PIN quick user switch with user picker (PIN for all roles, approvals stay owner/manager) #1338, then feat(cash): opt-in one cash shift per staff member #1339 (quick switch makes per-user shifts usable on a shared till)
    5. feat(reports): PDF export for X, Z and daily sales reports #1334, feat(reports): date-range daily sales export with per-tax-rate summary for accountants #1335, feat(reports): send daily sales via WhatsApp and optional auto-send of Z on day close #1336
    6. Repro issues as devices allow
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions