Legend:
- βοΈ Feature Flag = Controlled by Statsig feature gate (requires enablement)
- βοΈ Entity Config = Configured per entity in Entity Configuration settings
- βοΈ Configuration = Other configuration (loyalty program, payment method, etc.)
- βοΈ Request Parameter = Controlled via API request parameter
-
Multiple Credit Card Payments - The system now supports authorizing and then capturing multiple credit card payments in a single transaction (#1458)
- βοΈ Feature Flag: Statsig gate
auth-then-capture(must be enabled per entity)
- βοΈ Feature Flag: Statsig gate
-
Payment Method Rounding - Added support for rounding adjustments on payment methods. Customers can now configure rounding settings, and rounding amounts appear on receipts and PDFs (#1450, #1457, #1459, #1463)
- βοΈ Configuration: Set per payment method on EntitySalesChannelPaymentMethod (currently only supported for CASH payment methods)
-
Refund Rounding Support - Rounding adjustments are now properly handled during refunds (#1466)
-
Easier Customer Linking at Checkout - Cashiers can now more easily link customers to their loyalty account during checkout. Customer name is no longer required, and the system tracks who signed up the customer (#1487)
-
Loyalty Redemption Item Filtering - Loyalty program redemptions can now be filtered to specific items (#1473)
- βοΈ Configuration: Set
itemFilterIdon LoyaltyRedemptionOffer to restrict which items can be redeemed
- βοΈ Configuration: Set
-
Points Notifications Configuration - Added configuration options for loyalty points notifications (#1498)
- βοΈ Configuration: Set on LoyaltyProgram via
config.pointsNotification(includesnotifyCashierPointsThresholdandnotifyCashierPointsMessage)
- βοΈ Configuration: Set on LoyaltyProgram via
-
Terminal Loyalty Improvements - Better text display on terminal when looking up customers or signing them up for loyalty
-
Barcode Export Endpoint - New endpoint to export all barcodes for entity items, including item name, pricing, quantity, and department (#1510)
-
Sellable Field in Items Export - Items export now includes a "sellable" field (#export)
-
Metabase Dashboards - Added several new Metabase reports:
- Sales by customer report (#1433)
- Loyalty sign-ups by employee
- Job dashboards (#1467)
- "All My Store" dashboard
- Barcode propagation in reports (#1453)
-
Cohort-Level User Management - New view for managing users at the cohort level (#1497)
-
Add Users to Entity Only - New flag to add users only to an entity without additional setup (#1482)
-
Default Permissions - Added default permission sets for easier user setup (#1474)
-
Case Size on PO PDFs - Entity-level configuration to show case size on purchase order PDFs (#1494)
- βοΈ Entity Config:
INCLUDE_CASE_SIZE_IN_PO_PDF
- βοΈ Entity Config:
-
Show Existing PO Items - Option to display only items already added to a purchase order (#1423)
- βοΈ Request Parameter: Passed when fetching PO candidate items
-
PO PDF Without Contacts - Purchase order PDFs can now be generated even when no contacts exist (#1451)
-
Pack Size Required - Pack size is now required for cohort items (#1444)
-
Audit Log Cohort ID - Audit logs now include cohort ID for better tracking (#1506, #1512)
-
Audit Reason Search - Can now search audit logs by reason (#1513)
- Time Punch Sync - Added time punch synchronization functionality (#1511)
-
Intercom JWT Authentication - Added JWT authentication support for Intercom integration (#1499)
-
Stripe Set Reader API Migration - Migrated to the stable Stripe Set Reader API (#1414)
-
Zapier Entity Creation - Zapier can now create entities (#1424)
- Terminal Lookup Fix - Fixed issues with customer lookup on terminal devices
- Customer Sign-Up from Lookup - Fixed customer sign-up flow when initiated from a lookup
- Cancelled Lookup Handling - System now properly handles cancelled customer lookups (#1491)
- Customer API Argument Order - Fixed argument ordering in customer API calls
- List Customers Nullability - Fixed nullability mismatch in listCustomers endpoint
- Auto-Create Customer on Lookup - Customers are now automatically created when looked up
- Stripe Webhook Fix - Fixed issues with Stripe webhook processing
- Gift Card Deferred Payment - Temporarily added deferred payment method flow to payment summary for gift cards (#1442)
- Entity Item Stock Writing - Fixed issue where stock was being written incorrectly for non-inventory items (#1481)
- Barcode Matching - Barcode matching is now exact for better performance (#1431)
- Invoice Completion Query - Fixed timeout issues with invoice completion by moving to a single query (#1493)
- Invoice Counted Query Timeout - Fixed query timeout when getting counted invoices (#1476)
- ACH Override for Auto-Collection - ACH override is now properly ignored for automatic collection invoices (#1460)
- Invoice Item Pricing - Fixed invoice pricing page issues (#1464)
- Transaction Listener Loop - Fixed issue where changing transactional type on item service caused transaction listener to run repeatedly
- Casbin Query Performance - Fixed authorization query taking longer due to inner loop (#1488)
- Item History Query - Optimized and added caching to item history queries (#1475)
- Audit Log Query Speed - Improved audit log query performance (#1455)
- Sales Report Timeout - Increased timeout on total sales report (#1432)
- Department Summary Guard - Added protection when there are no closings and isOpen is false (#1480)
- Min Price Validation - Added pre-persist validation for minimum price (#1477)
- Rounding in Transactions - Made roundingAdjustment optional in persist transaction (#1472)
- Transaction Closing Speed - Significantly improved speed of closing transactions (#1446)
- Inventory Completion Timeout - Increased timeout for inventory completion and improved threading (#1478)
- Authentication Query Caching - Added caching for frequently used authentication queries (#1492)
- Audit Log Timeout - Increased timeout to 8 seconds to account for cold cache (#1479)
- Redemption Offer Performance - Improved loyalty redemption offer query performance
- Audit Reasons - Added audit reason tracking for:
- Appending entity users (#1484)
- Undoing invoices (#1452)
- Audit Reason Enforcement - Audit reasons are now enforced on endpoints in dev environment (#1470)
- Time Punch User Query - Made user selection more selective for time punch queries (#1471)
- Employee Table Removal - Removed dependency on employee table for clock-ins (#1438)
- No Emojis in Campaigns - Campaign message body no longer allows emojis to prevent delivery issues (#1445)
- Websocket Code Removal - Removed all websocket-related code and dependencies (#1448, websocket removal commits)
- Events Model Deletion - Deleted all events model and operations (#1448)
- Health Check Adjustments - Adjusted health check timeouts for deployment stability
- Local Development Speed - Improved speed of local development environment
- OpenSpec Added - Added OpenSpec for better API specification management (#1469)
- RDS S3 Import - Added S3 extension and support for data loading (#1436)
- Logging Improvements - Now includes errored GET requests in logs (#1437)
- Stripe Configuration - Added payment processor to update Stripe config (#1449)
- Firebase API Key - Firebase API key added to environment (#1435)
- Entity Creation IAM - Added entity create to IAM policy (#1434)
- Zapier Permissions - Fixed Zapier permissions and fee information updates (#1461)
Items marked with π© FEATURE FLAG are controlled by feature flags and may not be visible to all customers. Check Statsig/PostHog to verify if a feature is enabled for a specific customer.
- Loyalty Points Redemption on Items - Customers can now redeem loyalty points directly on specific items during checkout
- π© FEATURE FLAG: Link Customer During Payment - Staff can now link a customer to their loyalty account during the payment flow
- Flag:
show_customer_link_on_payment_step(default: true)
- Flag:
- Less Friction on Points - Simplified the loyalty points experience to reduce checkout delays
- Loyalty Customer Sign-Up Dashboard - New Metabase dashboard showing loyalty sign-ups by employee
- π© FEATURE FLAG: Campaigns Tab - Campaigns tab in loyalty dashboard
- Flag:
campaigns_tab(default: true)
- Flag:
- Payment Method Rounding - Configure rounding rules per payment method (e.g., round cash to nearest $0.05)
- Rounding Configuration UI - Users can now set rounding preferences with helpful examples
- Rounding on Receipts & PDFs - Rounding adjustments now appear on printed receipts and PDF invoices
- Rounding in Transaction View - Tips and rounding adjustments now visible on transaction detail pages
- π© FEATURE FLAG: Bulk Label Printing - Print labels for multiple items at once from item search
- Flag:
label_printer_enabled(default: false) - Affects: Item detail page, item search, invoice page, quick item edit, create item
- Flag:
- Bulk Shelf Talker Creation - Create shelf talkers for multiple items in one action from item search
- Metabase Reports Integration - New embedded Metabase reporting with guest embedding support
- Job Dashboards - Added job-related dashboards with navigation after data upload
- Better Report Filtering - Improved filtering options across reports
- Updated Total Reports - Refreshed total reports with improved data
- π© FEATURE FLAG: New Audit Log - Improved audit log with better performance
- Flag:
audit_log_gin_changes_filters(default: false)
- Flag:
- π© FEATURE FLAG: Offline Audit - Local audit logging capability
- Flag:
offline_audit_enabled
- Flag:
- Show Existing PO Items - New user setting to display items already on existing purchase orders
- Case Size on PO PDFs - Purchase order PDFs can now include case size information (configurable)
- Unsaved Changes Warning - Confirmation modal now appears when leaving a purchase order page with unsaved changes
- Mark Items Unsellable via Import - Bulk mark items as unsellable and delete through import
- Item Data Enhancements - Added extra item data fields for better tracking
- π© FEATURE FLAG: Undo Invoice - Can now see and undo invoices directly from item history
- Flag:
invoice-undo(default: false)
- Flag:
- π© FEATURE FLAG: Upload Invoice - Upload invoice functionality
- Flag:
invoice-upload(default: false)
- Flag:
- π© FEATURE FLAG: New Inventory Log - Improved inventory log view
- Flag:
new_inventory_log
- Flag:
- Full Payload View - Audit log now shows complete payload details for troubleshooting
- Renamed "Store" to "Affected Store" - Clearer labeling in audit log
- Faster Queries - Audit log loads significantly faster
- Date Picker with Quick Select - Easier date range selection with preset options
- Bottle POS Support - Added support for Bottle POS data integration
- Intercom Integration - Added Intercom chat support for in-app help
- Automated Data Loading - New automated data loading capabilities
- π© FEATURE FLAG: Stripe Notifications Banner - Shows important Stripe account notifications and requirements
- Flag:
stripe_notification_banner_enabled
- Flag:
- Customer Lookup Flag - Fixed issue where customer lookup wasn't working correctly
- Multiple Payments Calculations - Fixed decimal precision issues when splitting payments across multiple methods
- Gift Card Modal - Fixed issues with the gift card payment modal
- Barcode Scanning - Attempted fix for barcode scanning reliability issues
- Custom Cash Entry - Fixed interaction issues when entering custom cash amounts and change due visibility
- Max Button on Multi-Pay - Fixed the "Max" button not working correctly on multiple payments screen
- Credit Card Disabled in Multi-Pay - Fixed issue where credit card was incorrectly disabled in multiple payments without merchant setup
- House Account Payment UI - Fixed display of customer linking options on house account payments
- House Account/Gift Card Reporting - Fixed reporting accuracy for house account and gift card transactions
- Gift Card Removed from Payment Summary - Gift cards no longer incorrectly appear in payment summaries on detailed totals report
- Store Payment Methods Section - Fixed display issues in store payment methods configuration
- Invoice Receiving Blocked - Fixed issue where invoice receiving was blocked when child item cost exceeded price
- Child Item Type - Ensured child items are correctly set as non-inventory type
- Invoice Line Items Shuffled - Fixed bug where invoice line items would shuffle after clicking a cell
- Prefill Costs on Conversion - Unit and case costs now correctly prefill when converting from item list
- Redemption Config Item Filter - Fixed filtering for redemption configuration items
- Background Price Calculation - Fixed background pricing calculations
- Clone Item Display - Clone item now shows 50 items and filters by size correctly
- Entity Item Tag - Fixed entity item tag to use correct entity item type
- Item Toast Spam - Fixed issue causing repeated toast notifications for items
- Vendor Validation - Added blocking validation when vendor is selected but required info is missing
- Department Merge Resets Selection - Fixed selection resetting after department merge
- Cash Drop UI - Fixed squished UI on cash drop screen
- Payout Modal - Fixed squished payout modal display
- Pay Modal Height - Fixed payment modal height issues
- Select Width - Fixed constrained width on select dropdowns
- Manual Punch Modal - Fixed focus issues on manual punch modal (migrated from Chakra to Radix)
- Browser Back Button in Inventory - Fixed back button behavior in inventory pages
- Error Page Navigation - Added navigation bar to error pages so users aren't stuck
- Audit Log No User - Gracefully handles pages where no user is present
- PGlite Initialization - Gracefully handles failed local database initialization
- Migration ID Collisions - Added separators to prevent migration ID collisions
- List Cohorts Query - Fixed cohort query to properly handle array inputs
- Migration Default Values - Fixed migrations to include proper default values
- π© Statsig Feature Flags - Fixed issue where feature flags returned false after user context changes
β οΈ NOTE: This fix was REVERTED - Feature flags may still have issues- Temporary workaround: Some flags hardcoded to
truefor specific customers
- Tax Rounding on Department Fees - Fixed tax rounding calculations for department fees
- Refund Rounding - Fixed rounding handling for refunds
- Function Keys - Fixed issue where function keys were being incorrectly captured
- Cancel Pending Transactions - Disabled cancel button for pending transactions without external ID
- Import Tax Rate - Fixed tax rate import to correctly divide by 100
- Continued migration from Chakra UI to Radix UI + Tailwind CSS
- Improved select component styling (removed automatic "Search" placeholder)
- Better quantity hotkey button sizing for different screen sizes
- Right-aligned submit buttons and standardized modal widths
- Hotkey Performance - Improved sale hotkeys by removing case-insensitive matching
- Audit Log Speed - Significantly faster audit log queries
- Sales Channel Configuration - Shows "configuration required" status more clearly
- Onboarding Delivery Channels - Ensured correct configuration for main delivery channels
- π© Entity Timezone Feature Gate REMOVED - Entity timezone is now always enabled (no longer behind flag)
- Delete All Vendors - Added enhancement to delete all vendors at once
- Merge Confirmations - Added confirmation dialogs before merging items, vendors, or departments
- Department Merge Multi-Select - Improved department merge with multi-select form
- Re-sync Local Database - Re-synced all local database schemas
- Clock-Ins - Removed dependency on employee table for clock-ins
- Role Names - Standardized role name usage across the application
- Updated various dependencies (qs, glob, mdast-util-to-hast, js-yaml, storybook)
- Added Meticulous testing integration
- Configured GitHub Copilot instructions
- Added Statsig environment variable to gamma environment
- Version bump
| Feature | Flag Name | Default | Notes |
|---|---|---|---|
| Link Customer on Payment | show_customer_link_on_payment_step |
true | Shows customer link option during payment |
| Campaigns Tab | campaigns_tab |
true | Shows campaigns in loyalty dashboard |
| Label Printer | label_printer_enabled |
false | Enables bulk label printing |
| New Audit Log | audit_log_gin_changes_filters |
false | Improved audit log with GIN indexes |
| Offline Audit | offline_audit_enabled |
- | Local audit logging |
| Undo Invoice | invoice-undo |
false | Allow undoing invoices |
| Upload Invoice | invoice-upload |
false | Allow invoice uploads |
| New Inventory Log | new_inventory_log |
- | Improved inventory log view |
| Stripe Notifications | stripe_notification_banner_enabled |
- | Shows Stripe account alerts |
| Auto Customer Lookup | (via checkGate) | - | Auto lookup customer on first scan |
- Feature flags may not work consistently - There's a known issue where Statsig flags return
falseafter user context changes - Temporary workaround deployed - Some flags are hardcoded to
truefor specific customer (Curtis) - If a customer reports a feature not working that should be enabled, check:
- Is the flag enabled in Statsig/PostHog?
- Has the user logged out and back in?
- Try clearing browser cache
- Loyalty Points - New redemption features may require customer education
- Rounding - New rounding features affect receipts and reports - ensure customers understand their configured settings
- Multiple Payments - Fixed decimal precision - verify with customers using split payments
- Local Database (PGlite) - Improved error handling, but watch for initialization issues on older devices
- Feature not showing up: Check if it's behind a feature flag (see table above)
- Loyalty points not applying: Check if item is eligible for point redemption
- Rounding looks wrong: Check entity configuration for rounding settings
- Audit log is slow: Should be fixed, but clear browser cache if issues persist
- Barcode scanner not working: Check WebHID permissions in browser settings
- Invoice undo not available: Feature flag
invoice-undomust be enabled