Skip to content

Instantly share code, notes, and snippets.

@jay-babu
Created February 4, 2026 17:10
Show Gist options
  • Select an option

  • Save jay-babu/943073eff7537d0877177a86400d3feb to your computer and use it in GitHub Desktop.

Select an option

Save jay-babu/943073eff7537d0877177a86400d3feb to your computer and use it in GitHub Desktop.

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

New Features

Payments & Transactions

  • 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)
  • 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)

Loyalty Program

  • 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 itemFilterId on LoyaltyRedemptionOffer to restrict which items can be redeemed
  • Points Notifications Configuration - Added configuration options for loyalty points notifications (#1498)

    • βš™οΈ Configuration: Set on LoyaltyProgram via config.pointsNotification (includes notifyCashierPointsThreshold and notifyCashierPointsMessage)
  • Terminal Loyalty Improvements - Better text display on terminal when looking up customers or signing them up for loyalty

Reporting & Exports

  • 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)

User Management

  • 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)

Purchase Orders

  • 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
  • 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)

Items & Inventory

  • 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 & Attendance

  • Time Punch Sync - Added time punch synchronization functionality (#1511)

Integrations

  • 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)


Bug Fixes

Loyalty & Customers

  • 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

Payments

  • 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)

Inventory

  • 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)

Invoices

  • 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)

Performance & Stability

  • 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)

Other Fixes

  • 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)

Improvements

Performance

  • 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

User Experience

  • 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 & Attendance

  • 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)

Campaigns

  • No Emojis in Campaigns - Campaign message body no longer allows emojis to prevent delivery issues (#1445)

Infrastructure & Maintenance

  • 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)

Configuration Changes

  • 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)

🚩 Feature Flag Legend

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.


New Features

Loyalty Program Enhancements

  • 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)
  • 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)

Payment & Rounding

  • 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

Label Printing & Shelf Talkers

  • 🚩 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
  • Bulk Shelf Talker Creation - Create shelf talkers for multiple items in one action from item search

Reporting & Analytics

  • 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)
  • 🚩 FEATURE FLAG: Offline Audit - Local audit logging capability
    • Flag: offline_audit_enabled

Purchase Orders

  • 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

Inventory & Items

  • 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)
  • 🚩 FEATURE FLAG: Upload Invoice - Upload invoice functionality
    • Flag: invoice-upload (default: false)
  • 🚩 FEATURE FLAG: New Inventory Log - Improved inventory log view
    • Flag: new_inventory_log

Audit Log Improvements

  • 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

Other Features

  • 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

Bug Fixes

Sales & Checkout

  • 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 Accounts & Gift Cards

  • 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

Inventory & Invoices

  • 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

Pricing & Promotions

  • Redemption Config Item Filter - Fixed filtering for redemption configuration items
  • Background Price Calculation - Fixed background pricing calculations

Item Management

  • 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

User Interface

  • 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)

Navigation & Pages

  • 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

Database & Offline

  • 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

Feature Flag Fixes

  • 🚩 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 true for specific customers

Other Fixes

  • 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

Improvements

UI Modernization

  • 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

Performance

  • Hotkey Performance - Improved sale hotkeys by removing case-insensitive matching
  • Audit Log Speed - Significantly faster audit log queries

Configuration

  • 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)

Data Management

  • 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

Administration

  • Clock-Ins - Removed dependency on employee table for clock-ins
  • Role Names - Standardized role name usage across the application

Technical Updates

  • 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 Summary

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

Notes for Support

⚠️ Known Issues with Feature Flags

  • Feature flags may not work consistently - There's a known issue where Statsig flags return false after user context changes
  • Temporary workaround deployed - Some flags are hardcoded to true for specific customer (Curtis)
  • If a customer reports a feature not working that should be enabled, check:
    1. Is the flag enabled in Statsig/PostHog?
    2. Has the user logged out and back in?
    3. Try clearing browser cache

Key Areas to Watch

  1. Loyalty Points - New redemption features may require customer education
  2. Rounding - New rounding features affect receipts and reports - ensure customers understand their configured settings
  3. Multiple Payments - Fixed decimal precision - verify with customers using split payments
  4. Local Database (PGlite) - Improved error handling, but watch for initialization issues on older devices

Common Support Scenarios

  • 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-undo must be enabled
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment