POS Release Notes

Version 3.11.003 Latest

Released September 15, 2026
Rollback build
Thank you for using Bodega AI! We are committed to continuously improving your experience. If you have any questions or feedback, please reach out to our support team.

Version 3.11.002

Released September 15, 2026

Enhancements

Card/EBT Handling

A declined PAX sale with an auth code is no longer sent as paid.
EBT Food now computes tax reduction and EBT portion on discounted item totals.
Manual EBT: The entered partial amount is retained on the collect popup while the payment is confirmed.

Lottery Payouts

The backend can now create the LOTTERY_PAYOUT payment for cash/card sales; POS only names it in the payment method.
Lottery payout confirmation/success popups now correctly display "Lottery Payout" instead of "Cash Refund."
Tender lottery payouts as a LOTTERY_PAYOUT payment leg instead of a card refund.

Scanning Improvements

The cleaned barcode (no CR/LF) is passed to the regular lookup to enhance scale fallback classification.
The scale fallback now re-classifies missed UPCs instead of relying on scan-time state and matches 12-digit UPC-A scans against the EAN-13 padded classification.
The full barcode is looked up as a regular item before being treated as a scale label.

Catalog Management

Catalog Management is gated on the `catalog_management_enabled` flag.

User Interface

The search spinner is aligned to the top to prevent it from being covered by the keyboard and is shown as soon as the user types.

Bug Fixes

Fixed UAT build issues by importing `BarcodeFormatIdentifier/BarcodeType` from the default package in MainScreen.
Addressed a NumberFormatException on non-numeric price strings.
Resolved issues with the recovery journal, ensuring it is dropped when a full single-tender sale reaches its confirmation screen.
Fixed a problem where a restored journal that is already fully paid is discarded.
Removed a never-restored journal once a new sale starts to ensure clear() can delete it.
Ensured that a fully paid cart is not journaled, preventing a finalized sale from being restored.
Tolerated null fields in CommonQuestion from the API to avoid NPE on question tap.
Fixed the secondary-UPC match issue and logged search failures.

Performance Improvements

Enabled SQLite Write-Ahead Logging (WAL) and run UPC catalog lookup off the main thread to prevent ANR during scans.
Split large Compose functions into smaller composables for better performance and maintainability.
Build error email attachments (DB zip) are now handled off the main thread.

Payment and Receipt Handling

Open the cash drawer on the cash payment itself, and on mixed payments only when cash is involved.
Scoped each Print Each Payment receipt to the card of its payment and printed only the clicked payment's card details from the transaction detail.
Printed a payment line and details block for each card in a multi-card sale, and ensured the card details are printed on the last receipt of a multi-payment sale.
Recorded the cash tender when a manual card payment closes the sale and printed a receipt for every tender of a multi-payment sale.

Miscellaneous

Auto-disable XPrinter post-print beep at login; settings UI has been dropped.
The heartbeat is set to every 3 seconds by default, honoring server frequency to stay under the API throttle limit.
The beep toggle for XPrinter models is shown only when the specific model is attached.
These updates aim to enhance user experience, improve performance, and ensure smoother transaction handling within the BodegaAi POS application.
Thank you for using Bodega AI! We are committed to continuously improving your experience. If you have any questions or feedback, please reach out to our support team.

Version 3.11.001 Beta

Released September 15, 2026
Rollback build
Thank you for using Bodega AI! We are committed to continuously improving your experience. If you have any questions or feedback, please reach out to our support team.

Version 3.11.000 Beta

Released September 10, 2026

Release Notes for BodegaAi POS Application

New Features and Enhancements

Catalog Management: The catalog management feature is now gated by the `catalog_management_enabled` flag (BOD-1589).
Receipt Printer Beep Toggle: A new toggle for the receipt printer beep is available on the CC Terminal and Receipt Printer tab (BOD-1660).

XPrinter Integration

The application now reads beep-capable XPrinter models from the `xprinter_types` global setting.
The beep toggle is displayed only when the specific XPrinter (VID 8137, PID 8214) is attached.
The post-print beep for XPrinter is auto-disabled at login, and the settings UI for this feature has been removed.

Search Enhancements

The search spinner now aligns to the top to prevent it from being covered by the keyboard (BOD-1616).
The spinner appears as soon as the user starts typing.
Short product searches are now supported without causing the POS to hang (BOD-1616).

Performance Improvements

Heartbeat Frequency: The default heartbeat interval is set to every 3 seconds, with server frequency honored to stay under the API throttle limit of 2.5 seconds.
SQLite WAL Mode: Enabled Write-Ahead Logging (WAL) for SQLite to improve performance during UPC catalog lookups, which now run off the main thread to prevent application not responding (ANR) issues.
Background Processing: Build error email attachments (DB zip) are now processed off the main thread.

Bug Fixes

Number Format Handling: Fixed a `NumberFormatException` that occurred with non-numeric price strings.
Null Field Tolerance: The application now tolerates null fields in `CommonQuestion` from the API, preventing null pointer exceptions on question taps.

Cart and Payment Handling

The application will no longer journal a fully paid cart, ensuring that finalized sales are never restored.
A restored journal that is already fully paid will be discarded.
The application now opens the cash drawer on every cash tender of a multi-payment sale and only when cash is involved in mixed payments.

Receipt Printing

The receipt type for transactions on hold is now labeled as "Held."
The print button on a partial payment success popup has been hidden.
Each payment's card details are printed on the corresponding transaction detail, and a single receipt is generated for the whole sale with an option to print each payment.

User Experience Improvements

Quantity Input: Users can now manually type the quantity in the edit cart item popup, and the clear button from the quantity field has been removed to reject zero entries.
Sound Settings: The application respects the `sound_enabled` store setting in the `playSound()` function.

Code Quality Improvements

Function Refactoring: Large Compose functions have been split into smaller composables for better maintainability.
Unit Testing: Added unit tests to cover card matching for each payment row.

Miscellaneous

Recovery Journal Management: The application now drops the recovery journal when a full single-tender sale reaches its confirmation screen (BOD-1671).
Pack Size Handling: The pack size is preserved when rebuilding a StoreItem from a cart item, ensuring that re-scans of pack items charge the full pack bottle deposit (BOD-1653).
Manual EBT Handling: The entered partial amount on the collect popup is retained while the payment is confirmed.
These updates aim to enhance the overall performance, user experience, and reliability of the BodegaAi POS application.
Thank you for using Bodega AI! We are committed to continuously improving your experience. If you have any questions or feedback, please reach out to our support team.

Version 3.10.098 Beta

Released September 8, 2026

New Features and Enhancements

Split / Multiple Payments:

A single sale can now be split across several tenders — for example cash + card, multiple cards, or card + house account.
Each partial payment is recorded as its own tender, and the transaction's payment method is labeled with the combined methods used (e.g. "Cash + Card"), or as "Multiple" when more than two methods are involved.
The final receipt shows one payment line per tender with the amount taken on each. A sale split between multiple cards prints a separate line and card-details block for each card.
A new "Print Each Payment" button on the payment-success popup lets cashiers print an individual receipt per tender, while a single receipt still covers the whole sale.
The cash drawer now opens on every cash tender of a split sale, not just once.
Card/EBT card data from each partial payment is carried onto the final transaction.

Wholesale (Tax-Exempt) Customers:

Customers can now be marked as wholesale accounts, capturing their business name, tax ID (EIN/SSN), and resale certificate number and expiration date.
Sales to a wholesale customer are automatically treated as tax-exempt, and the customer's configured discount is applied to the subtotal.
Wholesale status and tax exemption live on the customer record — there is no cashier-side control to toggle them at the register.
Company name, tax ID type (EIN/SSN), and resale certificate fields are captured in the customer popup.
Receipts for wholesale sales print a dedicated "WHOLESALE - TAX EXEMPT SALE" block showing Sold To, Resale Cert, and Cert Expires, with the tax line shown as "Exempt."
Refunds and voids of wholesale sales inherit the buyer and the tax-exempt context of the original sale.
Changes to a customer's wholesale status or discount are written to a customer audit log.

Cash Drawer Management:

The cash drawer now opens directly on cash payments, enhancing usability.
For mixed payments, the drawer will only open if cash is involved.
The cash drawer will open for every cash tender in a multi-payment sale, ensuring seamless transactions.

Receipt Printing Improvements:

Each payment receipt is now scoped to the specific card used for that payment.
Only the clicked payment's card details will be printed from the transaction detail.
For transactions on hold, receipts will now indicate "Held" as the receipt type.
A single receipt will be printed for the entire sale, with an option to print each payment on success popups.
Payment lines and details will be printed for each card in a multi-card sale, ensuring clarity in transactions.

User Interface Enhancements:

The search spinner has been aligned to the top to prevent it from being obscured by the keyboard.
The search spinner will now appear immediately when the user begins typing.
Users can now manually type quantities in the edit cart item popup, providing greater flexibility.

Bug Fixes

Debugging and Logging:

Non-error debug logs related to network timing, DNS cache, and catalog fetch have been removed for cleaner logs.

Payment Processing:

Add multi payments flow.
The system now honors the drawer setting for card refunds and voids.
The cash tender will be recorded when a manual card payment closes the sale.

User Experience:

The clear button has been removed from the quantity field, and entries of zero are now rejected.
The print button on the partial payment success popup has been hidden to reduce confusion.

Technical Improvements

Unit Testing:

Card matching for each payment row has been covered with unit tests to ensure reliability.

Performance Enhancements:

Short product searches have been optimized to prevent the POS from hanging.
The sound_enabled store setting is now respected in the playSound() function.
Fixed secondary-UPC matching issues and logged search failures for better troubleshooting.
These updates aim to enhance the overall performance and user experience of the BodegaAi POS application.
Thank you for using Bodega AI! We are committed to continuously improving your experience. If you have any questions or feedback, please reach out to our support team.