Releases: BrainWise-DEV/POSNext
v1.16.0
POS Next v1.16.0
Highlights
New Features
- Brands Filter — Filter items by brand in the POS item selector
- Credit Return to Wallet — Return invoices can credit refund to customer wallet
- POS-Only Pricing Rules — Promotional schemes that only apply in POS context
- 5 New Reports — Sales vs Shifts, Payments & Cash Control, Inventory Impact, Cashier Performance, Offline Sync Health
- Session Lock Screen — Configurable lock with brute-force protection and offline fallback
- QZ Tray Silent Printing — Certificate-based silent receipt printing
- Show Variants as Items — Display variants directly in item grid
- Draft Invoice Printing — Print drafts from the Drafts dialog with custom headers
- Auto-Select Quantity in UOM Dialog — Faster UOM editing
- Ignore Pricing Rule Setting — Configurable per POS Profile
- Item Group Search — Search items by group name
- Nexus POS Manager Role — Desk switching functionality
Key Fixes
- Payment Amount Preservation — ERPNext's
set_missing_values()no longer wipes cashier-entered payment amounts (#228) - Customer Credit Redemption — Pure credit POS sales now submit correctly (#218)
- Credit Source Ownership Validation — Prevents cross-customer/cross-company credit theft (#221)
- One-Use Coupon Enforcement — Usage counted across Sales Invoice and POS Invoice (#205)
- Coupon apply_on — Respects Grand Total vs Net Total configuration (#219)
- Transactional Partial Payments — Savepoint-based atomic rollback replaces compensating cancels (#216)
- Context-Aware Customer Search — Server-side filtering on name, mobile, email (#208)
- Cross-Branch Return Payment Modes — Foreign payment modes remapped correctly (#177)
- Stock Validation — Enforced across all cart entry paths (#168)
- Barcode Exact Matching — Prevents false positives from substring matching (#129)
Security
- Credit source validation prevents cross-customer manipulation
- Atomic coupon consumption with
SELECT FOR UPDATErow locking - Session lock brute-force protection with progressive lockout
Compatibility
- ERPNext v15 (tested on v15.103.1)
- Frappe v15
Full Changelog
See CHANGELOG.md for the complete list of changes.
v1.15.0
What's New in v1.15.0
Added
-
Customer Credit Balance as Payment Method — Customers can now pay using credit from returns and advance payments. New "Add to Customer Credit Balance" option in return dialog lets cashiers choose between cash refund or credit. Race condition protection with row-level locking ensures safe concurrent credit redemption.
-
Shift Duration Improvements — Timezone-safe shift timer eliminates negative duration bugs. Multi-day shifts now display properly (e.g., "2 Days 3 Hours 15 Minutes"). Timer pauses automatically when closing dialog is open, with idle warning after 1 minute.
-
Enhanced Mobile Payment UI — Physical keyboard support for payment numpad, consistent layout across payment types, and context-aware quick amounts (rounded denominations for cash, exact amounts for non-cash).
Changed
- Settings button moved to bottom of sidebar for better visual hierarchy
- Removed empty Dashboard and Reports placeholder components
- Centralized currency and locale constants across the codebase
Fixed
- Returns & Refunds — Use
net_ratefor accurate refund calculations, properly accounting for coupon and invoice-level discounts. Customers are now refunded exactly what they paid. - Monetary Calculations — Consistent
roundCurrencyusage across all dialogs. Fixed floating-point precision issues causing incorrect payment statuses. - Write-Off Feature — New write-off toggle for small remaining payment amounts
- Invoice History — Fixed pagination, integrated return dialog directly (no nested modals), added fully-returned invoice detection
- Barcode — Handle absent barcode UOM prices with proper conversion factor calculation
- ERPNext v15/v16 Compatibility — Support both GL entry methods, Query Builder for stock availability
- Shift Timer — Fixed negative duration caused by server/browser timezone mismatch
- Translations — Added Arabic, Indonesian, and Portuguese translations for all new features
Full Changelog: v1.14.0...v1.15.0
v1.14.0
What's New in v1.14.0
Added
- Frappe 16 Compatibility - Converted SQL queries to Query Builder for full Frappe 16 support
- Enhanced Barcode Support - Added POS Barcode Rules DocType for configurable barcode parsing, weighted/priced item handling
- Offline Mode Enhancements - Offline support for invoice history, batch/serial data, and variant caching
- Sales Person Management - Enhanced selection with validation and multi-select dropdown support
- Permissions & Roles - New roles for system and sales managers with proper POS Settings permissions
- Payment Improvements - Exact amount mode, optimized queries, Arabic translations, toast queue system
- Localization - Indonesian translations added, terminology updates
Changed
- Improved promotions UX with searchable dropdowns and clear all functionality
- Standardized pricing and submission functions across frontend and backend
- Enhanced code quality with shared utilities and consistent patterns
Fixed
- InvoiceCart event propagation on quantity buttons
- Returns now use ERPNext make_sales_return for proper sales_team handling
- Batch display showing actual quantities instead of hardcoded values
- Mutex protection to prevent duplicate invoice submissions
- RTL toast positioning and localization fixes
- User display handling for names with trailing spaces
DevOps
- Added stale issue/PR automation workflow
- Added comprehensive issue templates
Full Changelog: v1.13.0...v1.14.0
v1.13.0
What's New in v1.13.0
Added
-
POSNext Cashier Role & Permissions
- Created dedicated POSNext Cashier role for POS operations
- Added custom permissions for Customer, Bin, Item, and Warehouse doctypes
- Proper role-based access control for POS users
-
Offline Invoice Sync Enhancement
- Added deduplication mechanism for offline invoice synchronization
- Prevents duplicate invoice creation during sync recovery
- Defensive type checks and mutex for concurrent sync operations
-
Return Invoice Improvements
- Added item search functionality in Return Invoice Dialog
- Improved code quality and user experience for returns
-
Shift Closing Enhancement
- Return invoices now included in shift closing calculations
- More accurate end-of-day reporting
Changed
-
Offers & Promotions Optimization
- Optimized apply_offers with batch queries for better performance
- Added dynamic debounce for offer application
- Support for standalone pricing rules in apply_offers
- Validate min_qty against eligible item quantity instead of total cart
- Ensures offers fetched before processing in mobile view
- Added offline support for promotions with mixed conditions
-
Cart & Payment Improvements
- Corrected subtotal display for tax-inclusive mode
- Enhanced mobile responsiveness and dynamic sizing in PaymentDialog
- Restored Hold Order button functionality
-
Internationalization
- Fixed translation API and added missing translations
- Improved i18n coverage across the application
-
Build & Dependencies
- Updated frappe-ui imports to use proper exports
- Improved build compatibility
Fixed
-
Offers System
- Fixed min_qty validation to check eligible item quantity, not total cart
- Fixed standalone pricing rules not being applied correctly
- Fixed offers not being fetched before processing in mobile view
-
Cart Display
- Fixed subtotal display in tax-inclusive mode showing incorrect values
-
Offline Sync
- Added defensive type checks preventing sync errors
- Added mutex to prevent concurrent sync race conditions
-
UI/UX
- Fixed Hold Order button missing from cart (regression fix)
- Enhanced mobile responsiveness in PaymentDialog
Full Changelog: v1.12.0...v1.13.0
v1.12.0 - Wallet & Loyalty Program, Sales Order Support
Highlights
This release introduces the comprehensive Wallet & Loyalty Program System, Sales Order Support, and significant improvements to Customer Search and Payment Dialog UX.
Major Features
Wallet & Loyalty Program System
- Wallet functionality with loyalty points conversion
- Auto-assignment of loyalty programs for new customers
- Auto-assignment of loyalty program on sales invoice validation
- Partial payment support for wallet/loyalty points redemption
- "Enable Loyalty Program" as master switch in Wallet & Loyalty settings
- Comprehensive technical documentation for Wallet System
Sales Order Support in POS
- Sales order settings and store methods exposure
- Delivery date selection integrated into payment flow
- Dropdown menu for selecting between sales order and sales invoice
Enhanced Customer Search
- Autocomplete functionality for customer search
- Frequent customers display for quick selection
- Optimized click handler for instant response
POS Profile Management API
- Create, update, and delete POS profiles via API
- Whitelist decorators for POS profile functions
- Enforce user company association on profile creation
Improvements
Payment Dialog
- Two-column layout redesign with invoice summary
- Long-press payment with new composable
- Dynamic sizing and responsive design adjustments
- Enhanced credit balance and additional discount display
- Improved mobile UX
Localization
- Configurable language settings
- Brazilian Portuguese (pt-BR) support
- RTL-friendly SelectInput component
Warehouse & Stock
- Loading state and improved stock availability logic
- Optimized bundle availability calculation across warehouses
- Improved stock visibility and translation
Draft Invoice Features
- Print button for draft invoices
- Auto-save active cart when switching drafts
Other
- Edit customer functionality directly from cart
- Validate coupon endpoint for gift cards
- Enhanced customer selection in coupon management
- Split POS Settings into organized tabs
Bug Fixes
Offers & Promotions
- Fixed race condition causing offers applied but cart not updating
- Made offer processing more dynamic and robust
Stock Validation
- Fixed stock validation and double-add issue in ItemsSelector
- Skip stock validation for non-stock items
RTL Support
- Fixed RTL alignment and translation in ShiftOpeningDialog
- Fixed RTL overlap in OffersDialog badge positioning
- Improved RTL support in PaymentDialog
Sales Order Compatibility
- Fixed 'SalesOrder' object attribute errors (outstanding_amount, is_return, payments)
- Fixed "Value missing for Sales Order: Customer" error
- Fixed ReferenceError issues (usePOSCartStore, cartStore not defined)
- Fixed TypeError for NoneType multiplication with float
- Fixed sales order submission on checkout
Drafts
- Prevented accidental draft deletion on page load
- Fixed drafts not appearing in Invoice Management
Technical Changes
- Refactored
updateQuantityfunction for improved item removal logic - Improved UOM selection UI and cart item handling
- User company check utility moved to pos_next utilities module
- Refactored payment, user, item group, and customer group handling in POS profile
- Simplified profile creation with enhanced parameter parsing
Full Changelog: v1.11.0...v1.12.0
v1.11.0 - Multi-UOM Cart & Stock Enhancements
What's New in v1.11.0
Added
-
Multi-UOM Cart Support
- Support for adding same item with different Units of Measure (UOMs) to cart
- Each UOM line is tracked independently with its own quantity and rate
- Quantity input field in UOM selection dialog for faster item entry
-
Enhanced Stock Display
- Real-time available stock now subtracts cart quantities from displayed stock
- Stock display accounts for conversion factors when using different UOMs
- Defensive checks for stock reservation calculations
-
Stock Lookup Across Warehouses
- New stock lookup dialog for checking item availability across all warehouses
- Variant selection support in warehouse availability dialog
-
Speed Enhancements
- Clear customer search input field on click for faster customer selection
- Clear item search bar on click for faster item search
- Improved search UX for high-volume POS operations
Changed
- Subtotal Calculation - Fixed subtotal recalculation when UOM changes mid-transaction
- RTL/LTR Compatibility - Fixed contradicting RTL patterns and improved text alignment
- Invoice Display - Show actual paid amount instead of grand total in invoice confirmation
Fixed
- Pay on Account & Partial Payment - Improved handling in returns
- Cart Operations with UOM - Remove/update item works correctly for multi-UOM carts
- Customer Selection - Prevent auto-select when clearing customer search field
- Arabic Translations - Fixed truncated keys and improved consistency
Full Changelog: v1.10.0...v1.11.0
v1.10.0 - Major Localization Update
🌍 Major Update: Comprehensive Localization System
This release introduces full internationalization (i18n) support for POS Next, starting with Arabic language support. The application now supports:
- Complete Arabic translations across all POS interfaces
- RTL (Right-to-Left) layout support
- Language switching with translation caching via IndexedDB
- Dynamic translation updates without full page reload
What's New in v1.10.0
Added
- Comprehensive Localization System - Full i18n infrastructure with Arabic translations
- Sales Person selection and tracking in payment dialog
- Enhanced stock validation in cart and selection dialogs
Changed
- Enhanced RTL/LTR support for TextInput, InvoiceDetailDialog, and POSSale components
- Language Switcher moved to user menu on mobile for compact header
- Improved serial number management
- Layout and spacing improvements across multiple components
Fixed
- frappe-ui dependency version format
- POS settings autoname configuration
- Arabic translation improvements for invoices and item sorting
🙏 Special Thanks
A huge thank you to our amazing contributors for this release:
- @aperebaskine - For valuable contributions and feedback
- @goondeal - For contributions to the localization effort
Your contributions make POS Next better for everyone!
Full Changelog: v1.9.0...v1.10.0
Release v1.9.0
POSNext v1.9.0
🎉 Release Highlights
Added
-
Country Code Selector for Customer Phone Numbers
- Added country code selector with flag icons for customer phone input
- Visual country flag display for better user experience
- Support for international phone number formats
-
Invoice Detail View
- Implemented comprehensive invoice detail view with proper API endpoints
- Enhanced invoice information display and navigation
-
User Profile Management
- Added user profile image display in POS header
- Implemented reactive user data management system
- Real-time user information updates
Changed
-
Print Functionality
- Updated print endpoint to use printview for better browser compatibility
- Improved cross-browser printing experience
-
Node.js Version Update
- Updated Node.js version to 20 in CI workflow for better performance and security
Fixed
-
Warehouse Availability Check
- Added warehouse availability check for out-of-stock items
- Prevents selection of items not available in selected warehouse
-
Disabled Items Filtering
- Filter disabled items from Items Selector and search results
- Only show active items available for sale
-
Customer API
- Fixed indentation in customer API for better code readability
- Load all customers without hardcoded limit for better scalability
-
Return Invoice Dialog
- Enhanced return invoice dialog layout and status display
- Adjusted dialog sizes for better UX across different screen sizes
- Improved mobile responsiveness for return invoice dialog
-
Shift Dialog Navigation
- Navigate to POSSale when shift dialog is closed via X button
- Better user flow when dismissing shift dialog
-
User Authentication Race Condition
- Resolved race condition where user appears as Guest after login
- Fixed authentication state synchronization issues
-
Automatic Offer Validation
- Added automatic offer validation and removal when cart conditions change
- Ensures promotional offers remain valid based on current cart state
-
Login Error Messages
- Show descriptive error message when inputting wrong credentials
- Navigate to /pos when clicking cancel button of ShiftDialog
Improved
-
Return Invoice UI
- Extracted payment icon utility for better code reusability
- Improved return invoice UI consistency and styling
-
Cart UX Improvements
-
Customer Section:
- Added quick customer creation button next to search input
- Large touch-friendly button (44px+) with user-plus icon
- Improved search input with better sizing and rounded corners
- Professional customer card design with gradient avatar
-
Empty Cart Quick Actions:
- Implemented 2x3 grid with 6 action buttons
- Quick access to: View Shift, Draft Invoices, Invoice History, Return Invoice, Close Shift, Create Customer
- Icon backgrounds with subtle hover effects
- Touch-friendly sizing meeting accessibility standards
-
Cart Items Section:
- Relocated Offers & Coupon buttons to dedicated section below customer bar
- Larger buttons with improved styling and badge visibility
- Better spacing and padding throughout
-
Action Buttons:
- Checkout and Hold Order now side-by-side (50/50 width)
- Saves ~70px vertical space for more cart visibility
- Consistent sizing and rounded styling
-
Touch & Mobile Improvements:
- All buttons meet 44px+ minimum touch target
- Increased padding and better text sizes
- Consistent rounded styling and proper hover/active states
-
Removed
- POS Profile Feature Cleanup
- Removed create_pos_invoice_instead_of_sales_invoice feature from POS Profile
- Simplified POS Profile configuration
Full Changelog: v1.8.0...v1.9.0
v1.8.0 - Enhanced UX and Performance
🎉 Release v1.8.0
✨ Highlights
- User-Controlled Sorting - New interactive sort dropdown with toggle-based sorting
- Payment Dialog Improvements - Better UX with logical increment steps and improved layout
- Enhanced Offline Support - Payment methods always preloaded for reliable offline operations
- Performance & Accessibility - Optimized shift closing dialog and better screen reader support
🆕 Added
- User-Controlled Sorting UI
- Interactive sort dropdown with adjustments icon
- Toggle sorting: click to cycle between asc/desc/none
- Sort by name, quantity, item group, price, and item code
- Visual feedback with active state icons and tooltips
- Easy to extend with new sort fields
- First/Last Page Navigation
- Quick navigation buttons for both grid and list views
- Mobile-optimized with « and » icons
- Disabled state when already on first/last page
🔄 Changed
- Payment Methods Preloading
- Always load at startup for offline reliability
- Removed conditional cache checks that could skip loading
- Comprehensive logging for debugging
- Better offline reliability for payment processing
🐛 Fixed
- Payment Dialog UX Improvements
- Fixed increment step from 0.01 to 5 for better user experience
- Applies to both payment entry and custom amount inputs
- More logical increments for typical payment amounts
- Payment Dialog Layout
- Fixed button alignment - all actions on same row
- Clear All on left, action buttons on right
- Improved visual consistency
- Print Format Discount Display
- Handle negative discount_amount values correctly
- Fixed Frappe print pipeline compatibility
- Added absolute value filter for correct display
- Pagination Display Logic
- Fixed All items loaded message placement
- Only shows on last page or when all items fit
- Browser Compatibility
- Fixed crypto.randomUUID error in older browsers
- RFC4122 v4 compliant fallback implementation
- Support for legacy environments
⚡ Improved
- Shift Closing Dialog Performance & Accessibility
- 70% code reduction (265 to 78 lines)
- Fixed reactivity bugs
- ARIA labels for screen readers
- Better error handling
- Item Sorting Implementation
- Refactored to data-driven approach
- O(n log n) sorting only on user action
- Easy to extend with new options
- Quantity-Based Sorting
- Optimized Timsort performance
- 1ms for 100 items, 5ms for 1000 items
- Works for bundles and regular items
- Bundle Stock Display
- Better UOM labels in tooltips
- Improved validation messages
- N/A display for non-stock items
Full Changelog: v1.7.1...v1.8.0