Latest · v1.0.68

Release notes

Every update to POSRex — new features, fixes and improvements. Pick your language below.

v1.0.68Latest

Fixes Windows activation ("No license found")

🔑 Activation fix

  • Fixes the "No license found / license key not found" error when activating with a license key on Windows after updating to 1.0.67.
  • You can now enter your key and activate normally — no need to repurchase or contact support.
  • Your license data was never lost and the server was fine — this was a client-side bug, now fixed.
v1.0.67

Friendlier Cloud Backup messages (clear, no scary errors)

☁️ Cloud Backup error messages, rewritten for everyone

  • No more raw technical errors (e.g. "getaddrinfo ENOTFOUND").
  • Offline now shows a calm "No internet — your data is safe on this computer and will back up automatically when you reconnect."
  • Only one clear status message at a time (no more stacked red banners); raw text is tucked behind a "Technical details" toggle.

🔐 The data-protection pause, in plain words

  • When this computer has fewer records than the cloud, it explains why in plain language (Bills, Expenses, Reminders, History) with a clear next step.
  • New "I deleted this on purpose — accept & resume" button (confirmed with your Restore PIN) clears the pause WITHOUT re-adding deleted rows.
  • Automatic sync still never deletes cloud data — only your explicit confirmation does. Offline actions show a friendly note instead of an error.
  • Wrong Restore PIN now says "PIN doesn't match" instead of a confusing message.
v1.0.61

Cloud Backup CPU Hotfix

Performance and power usage

  • Cloud Backup no longer scans and syncs every 30 seconds in the background.
  • Automatic VPS cloud backup now runs once per app day after POSRex opens, then stays idle.
  • Added clear Cloud Backup startup logs so support can see when daily backup starts, skips, finishes, or fails.

Restore PIN

  • Fixed Restore PIN setup failing with "Invalid cloud server response".
  • Cloud server errors now show useful HTTP details instead of a generic invalid response.

Kept unchanged

  • Manual Sync Now and Backup Now still work.
  • eGift/WhatsApp realtime sync remains unchanged.
v1.0.60

Cloud Backup, Update Banner, and Checkout Improvements

  • Added Cloud Backup with sync status, latest snapshot details, and cloud restore support.
  • Added in-app update banner for downloading and installing new POSRex versions.
  • Checkout item deletion now uses Delete only; Backspace remains normal inside text inputs.
  • Selected checkout rows are darker blue and keyboard row highlighting works across all rows.
  • The scan product code field stays focused after checkout-table actions.
  • Complete Payment now opens with Cash selected by default.
v1.0.59

Payment Amount and Receipt Readability Improvements

POS payment screen

  • Enlarged and bolded the F8 Total Due amount so cashiers can read it quickly.
  • Widened the payment modal layout to avoid overlap with subtotal, tax, paid, and balance rows.
  • Removed BZD from payment amounts and kept the familiar $ symbol.

Transaction complete screen

  • Enlarged and bolded the Change amount so cash change is easy to see.
  • Removed BZD from completion amounts and kept $ only.
  • Adjusted layout so large change values do not collapse or disappear.

Printed receipt

  • Made the printed TOTAL amount larger and fatter on thermal receipts.
  • Kept the TOTAL value aligned with the right-side amount column so it stays inside 80mm paper.
  • Cash and Change still print normally below the total.

Settings and stability

  • Improved the Bitmap Compatibility Mode toggle so ON/OFF is clearer.
  • Fixed the Linux HWID fallback unit test so release verification is stable.
v1.0.58

Credit Receipts: Account History + Payment Slips + Signature Print Fix

📜 Account History on Every Credit-Sale Receipt

  • Every credit-account sale now prints a chronological list of charges and payments since the customer's balance was last $0 — so the customer can see at a glance what they owe and when each entry was added
  • Format: 8 May Sale $20.50 / 15 May Payment -$10.00 with running totals
  • Footer shows Total debt: $X.XX (auto-calculated, always matches the actual balance)
  • Long histories truncate to last 30 entries with + N earlier (since DD MMM) so the receipt stays a readable length
  • Renders on thermal, HTML preview, and A4 PDF

💵 Payment Receipts with Cash + Change Tracking

  • Click 'Record Payment' in Credit Manager → modal now asks for Cash Received (not just payment amount). System auto-computes Payment Applied (= min(cash, balance)) and Change Due (= cash - balance)
  • After saving, a Payment Receipt preview appears with print buttons: thermal slip + A4 PDF
  • Receipt shows full account history, total debt, cash received, payment applied, and change owed back to the customer
  • If the payment fully clears the debt: green ✓ ACCOUNT PAID IN FULL at HH:MM stamp
  • If partial: orange 'Still owes $X.XX' line
  • Big-amount sanity check: if cash > 10× balance, asks for confirmation before saving

🖨️ Thermal Signature Print Fix (Older / Chinese Printers)

  • Customer signatures previously printed in PDF but were silently dropped on some thermal printers (Deli DL-801P, Xprinter clones, etc.) that ignore the newer GS v 0 raster command
  • Added a second encoder using the universally-supported ESC * 24-dot bit-image command — works on every ESC/POS printer ever made
  • New Settings → Printer toggle: Bitmap Compatibility Mode. Turn it ON if signatures or logos are missing from your thermal receipts; the print pipeline will switch to the universal command instantly without a restart
  • Bonus fixes for all signature printing: anti-aliased edge pixels are now preserved (signatures no longer come out as broken thin outlines), oversized signatures auto-downscale instead of disappearing, and every failure path now logs a reason in DevTools console plus a --- Signature on File --- text fallback

🧪 Engineering

  • 17 new unit tests (Vitest): debt-cycle algorithm edge cases (empty / always-in-debt / pay-off-and-restart / partial payment / 30+ truncation / float precision), GS v 0 encoder, ESC * encoder
  • Total test count: 38 (up from 21 last release)
v1.0.57

License Self-Healing + HWID Stability

🔑 No More Lost License Keys

  • Brand-new HWID auto-recovery: if your license is missing after an update or reinstall, POSRex now silently asks the server 'what license belongs to this machine?' and re-activates without you typing a single character
  • The license cache is no longer deleted when an integrity check fails — even a transient network hiccup or partial write can no longer wipe your activation
  • 'Recovering your license…' status flash on the activation screen so you know it's working in the background

🖥️ Hardware ID v2 — Stops False 'Hardware Changed' Errors

  • HWID is now derived only from the OS-stable machine UUID (plus platform + arch). CPU model whitespace drift and BIOS-reported memory rounding (16 GB ↔ 15 GB) used to flip your HWID across reboots — that's gone
  • Native and JS HWID generators are now byte-identical, so the addon-loaded vs fallback path can never disagree again
  • Existing users get a one-time auto-rebind on first launch — zero clicks, server transfers the binding using your local cache as proof

🛟 Server-Side Recovery Pipeline

  • New /api/recover endpoint: hardware-bound license lookup with HMAC auth, 6/hr rate limit per IP, and PII-stripped response (license_key only — no email, no name)
  • New hwid_history table tracks every binding ever made → recovery still works after rebinds and unbinds
  • Existing licenses backfilled automatically on first server boot — recovery available from day one

🎨 macOS Installer Polish

  • DMG installer background completely redesigned — branded purple gradient, bold 'POSRex' wordmark, 'Drag to Applications' instruction with arrow, soft halos under each icon position. No more empty black window.

🧪 Engineering

  • New Vitest test suite (29 tests): HWID stability, license persistence regression, auto-recovery client/server contract
  • CI now runs the full test suite on every PR
v1.0.54

Inventory Net-Worth Dashboard + Smarter Barcode Focus

💰 Real-Time Inventory Net-Worth (Product Manager)

  • Brand new 4-card stat row at the top of Product Manager: total cost value, total sell value, projected gross profit (with margin %), and low-stock count
  • Numbers update instantly when you add, edit, or delete a product, complete a sale at the register, or void a transaction — no need to navigate away and come back
  • Soft-deleted products are excluded automatically; empty inventory shows clean $0.00 with no NaN
  • Profit color flips emerald → rose if inventory cost ever exceeds projected revenue

📦 Add-Product Modal — Continuous Scan Mode (Product Manager)

  • After saving a product, the modal stays open for the next item — and now the cursor automatically returns to the Barcode field so the gun's next scan lands in the right input every single time
  • Edit-mode untouched: clicking the pencil icon on an existing product no longer yanks focus to barcode

🔫 Quick Add Modal — Editable Barcode + Auto-Focus (POS Checkout)

  • The 'Scanned' barcode badge is now an editable input — fix typos or rescan without leaving the modal
  • When the modal pops up, the cursor lands inside the barcode field with the scanned value pre-selected, so a fresh gun scan replaces it in one keystroke

🔌 Behind the Scenes

  • New inventory-changed push channel from main process to renderer — every product / transaction mutation broadcasts so any open inventory view stays in sync
  • Aggregate query runs as a single SQL SELECT with SUM/COUNT — sub-millisecond even at 10k+ SKUs
v1.0.51

Brand-New License Activation Screen

🎨 Glass-Morph Quick-Login Button

  • Brand new tall fluffy 3D glass pill for the 'Continue as [your name]' button — multi-stop violet gradient, radial top highlight, inset rim glow, soft outer halo
  • Bot mascot perches on the top-right edge with one arm hooked over the rim — friendly, on-brand, 3D
  • Long names now truncate on one line with an ellipsis (no more two-line layout breaks)
  • Bigger, bolder text with a subtle violet text-shadow so the label reads cleanly against the gradient

📸 New Right-Side Brand Panel

  • Replaced the flat purple gradient with a real product photo background (POSRex hardware in action), tinted with the brand purple so the headline + tagline stay readable
  • Three feature highlights on the bottom (Unlock premium features / Get priority updates / Hardware-bound security) now use proper 3D icons instead of thin line drawings
  • Icons are bigger, transparent (no white square behind them), and consistently aligned with their labels
  • Animated brand orbs and subtle noise overlay preserved for depth

🔑 Top-Row Layout Cleanup

  • New 3D license-key icon replaces the old flat SVG
  • License icon and language switcher (English / 中文 / Español) now share a single flex row — icon hard-left, language pill hard-right, perfectly baseline-aligned

🛠️ Behind the Scenes

  • Release pipeline now auto-restores native modules for the build host after a Windows cross-build — fixes the 'slice is not valid mach-o file' crash on macOS dev machines after release:win
  • All new images bundled with content-hashed filenames so updates invalidate cleanly
v1.0.50

Quick Add Unknown Product at Checkout

🛒 Scan an Unknown Barcode? Add It Without Leaving the Register

  • When a cashier scans or types a barcode that isn't in your inventory, POSRex now opens a beautiful Quick Add modal instead of just showing a toast
  • The scanned barcode is locked at the top — no need to retype or re-scan it
  • Fill in Product Name and Sell Price, hit Enter, and the new product is created AND dropped straight into the cart in one step
  • All optional fields are visible by default: Category (with dropdown of your existing categories), Cost Price, Quantity, Min. Stock, GST mode (Standard / Price Includes Tax / Tax Exempt)
  • 'Custom...' option in the Category dropdown lets you create a brand-new category on the spot

⌨️ 100% Keyboard-Driven

  • Every input field saves on Enter — Name, Sell Price, Category, Cost, Quantity, Min Stock all trigger Add & Sell
  • Skip = ESC (button shows the ESC chip)
  • Add & Sell = ENTER (button shows the ENTER chip)
  • No mouse needed at any point in the flow

🔇 Goodbye Toast Spam

  • The old 'Unknown barcode: X. Add it in Products.' toast that stacked up on every Enter press is gone
  • Replaced by exactly ONE modal — re-pressing Enter on the same unknown code never opens a second modal

🌐 Tri-Language

  • Modal text and all field labels translated in English / 中文 / Español
  • Existing language switcher in Settings applies instantly

🎯 Why This Matters

  • Before: cashier had to leave POS → open Products → click Add → re-type the barcode → fill form → save → go back to POS → re-scan. 4–6 disruptive clicks per unknown SKU.
  • Now: 2 fields (Name, Price), Enter, sale continues. Customer barely notices the pause.
v1.0.49

Real-Time eGift Sync + Security Hardening

🎁 eGift Card Detail Page (POSRex)

  • Top-up / activate / disable / enable now refresh the transaction history instantly — no need to navigate back and re-open the card
  • Status badge updates in place after every operation

📲 eGift Web Portal — Real-Time Sync

  • Customer portal now updates within ~1 second after every POSRex operation (no manual refresh)
  • New 'Live' indicator on card detail pages with auto-pause when the tab is hidden
  • Server-Sent Events (SSE) push from wa-server to portal browser → sub-second balance updates
  • Background sync sidecar bridges legacy POSRex builds — every card change reaches the portal automatically
  • Card detail page auto-poll fallback (10s) in case SSE drops
  • 'Stale data' warning when the synced snapshot is more than 60 seconds old

🔍 eGift Web Portal — New Features

  • Code 128 barcode display (replaces QR code) — same format POSRex prints on paper receipts, scannable by your existing barcode reader at checkout
  • Card nickname editing (e.g. 'Mom's birthday gift')
  • One-click card number copy
  • CSV export of all card transactions
  • Read-only stale indicator + verified badge on card detail
  • Tri-language UI (EN/ZH/ES) for all new components

🔒 Security Hardening (wa-server)

  • Per-tenant HMAC-SHA256 signature on every sync request (X-Tenant-Sig)
  • Replay attack protection: nonce + timestamp ±5 minute window
  • AES-256-GCM encryption of per-tenant secrets at rest
  • PIN brute force lock: 5 failures per IP → 1 hour lockout
  • Anomaly detection: balance jumps over 10× and >$1,000 are rejected and logged
  • Per-tenant rate limit (60 req/min token bucket)
  • Card-level cryptographic integrity check — direct database tampering is detected and returns 503 instead of leaking the bogus row
  • Tenant-strict card lookup (no global fallback for portal queries)
  • Audit log of every public endpoint hit
  • Card numbers are masked in all logs and responses (3608****2471)
  • nginx /public/egift/* protected with rate limit + IP-bound throttling

🛠️ POSRex Stability

  • WhatsApp Bot configuration page now opens instantly with cached settings — no more 8-second 'Failed to load config' error when the wa-server is slow
  • WhatsApp connection: auto-migrates legacy IP-based wa_server_url settings (e.g. http://1.2.3.4:3202) to https://wa.posrex.cloud — fixes ETIMEDOUT errors
  • Background eGift sync runs every 15 seconds (was manual) and on POSRex startup
  • Sync errors are now visible in DevTools console (no more silent failures)
  • waGet HTTP timeout reduced from 8s → 4s for snappier UI mounts
  • Cookie hardening on the eGift portal (HttpOnly + Secure + SameSite=Strict + 24h TTL)

🛡️ Portal Disable Feature

  • Disabling a portal in POSRex (eGift Portal page) now blocks ALL access to the subdomain (page + API)
  • Customers see a tri-language 'Portal Unavailable' page with merchant explanation
  • Re-activating in POSRex restores the subdomain instantly

📊 License Server Admin Dashboard — 6 New Modules

  • 📈 Analytics: total licenses, eGift card stats, top stores by balance / card count
  • 🖥️ System Metrics: live VPS CPU / RAM / disk / load average
  • 📦 Docker Containers: list all running containers with state, image, and ports
  • 🚀 Releases Manager: 26+ POSRex versions on the server, with per-version EN/ZH/ES release notes (expandable rows), one-click delete (refuses to delete the current latest)
  • 🎁 eGift Tenants Browser: see every store using eGift, total balance, card count, transaction count
  • 👁 Customer Read-Only Viewer: drill down into a tenant's cards (masked numbers, balances, status, buyer/recipient names) — admin-only, no edit or delete

🔄 Auto-Update Pipeline

  • upload-release.sh now syncs release-notes.json to the VPS automatically — license server admin always sees the latest notes
v1.0.47

Version 1.0.47

F5 Clear Cart Modal Redesign

  • F5 now only opens the confirm dialog — never modifies the cart
  • Enter inside the dialog confirms and clears all cart items
  • ESC cancels the dialog without removing anything
  • Removed the 'Remove Selected Item' button — use arrow keys + Backspace instead
  • Removed F9 from the clear dialog (F9 is reserved for On Account credit modal)

Helpful Localized Hint

  • Added a hint inside the clear dialog explaining how to delete a single item
  • 'Use ↑ ↓ arrow keys to select the product and press Backspace to remove it'
  • Translated in English, Chinese, and Spanish

License Server

  • Increased license activation timestamp window from 5 to 30 minutes
  • More tolerant to clients with slightly off system clocks
  • Fixes 'Request expired' errors during license activation
v1.0.45

Version 1.0.45

F5 Clear Cart Bug Fixes

  • Fixed F5 accidentally clearing all cart items when the modal opened
  • F5 now only opens the action dialog — cart stays intact
  • Fixed F9 opening the wrong modal when clear dialog was open
  • Enter key inside clear dialog now correctly removes only the selected item

Clear Cart Action Flow

  • F5 = Open action dialog
  • F5 or Enter (in dialog) = Remove selected item
  • F9 (in dialog) = Clear all cart items
  • ESC = Cancel
  • F9 (no dialog) = Open On Account credit customer modal
v1.0.44

Version 1.0.44

Credit Receipt Enhancements

  • Credit receipts now include customer phone, SSN, and guarantor phone
  • Full Payment Agreement Acknowledgment with 3% late penalty clause on all formats
  • Customer signature auto-printed on thermal, HTML, and A4 PDF receipts
  • Added horizontal separator lines in credit receipts for better readability
  • Fixed F9 On Account checkout missing credit customer data on receipt
  • Both credit checkout flows now require signature on file before sale

Credit Manager

  • Added total outstanding balance display in red at top of customer list
  • Shows number of active debtors and total amount owed

F5 Keyboard Shortcut Redesign

  • F5 now opens an action dialog instead of clearing cart immediately
  • F5 or Enter = Remove selected item
  • F9 = Clear all items from cart
  • ESC = Cancel

Receipt Completion Modal

  • Simplified compact layout — removed item list to save screen space
  • Shows total, payment method, change, and item count only

Bug Fixes

  • Fixed missing credit customer signature on thermal printer output
  • Fixed credit agreement text not appearing on simple mode receipts
v1.0.43

Version 1.0.43

Credit Account Receipts

  • Credit receipts now show *** CREDIT ACCOUNT *** header with customer name
  • Added Payment Agreement Acknowledgment with 3% late penalty clause (legally binding under Belize law)
  • Customer signature auto-printed on credit receipts (thermal, PDF, and A4 preview)
  • Signature saved once during customer registration — no need to sign at every checkout
  • All 3 receipt formats updated: ESC/POS thermal, HTML small receipt, A4 PDF

Bug Fixes

  • Fixed F5 (Clear Cart) keyboard shortcut — no longer clears cart immediately, now properly shows confirmation dialog first
  • F5 press again inside dialog confirms the clear action
v1.0.42

Version 1.0.42

Security & Infrastructure

  • All server connections now use secure HTTPS via Cloudflare-protected subdomains
  • Server IP address is no longer exposed — all traffic routed through Cloudflare proxy
  • Added DDoS protection and SSL encryption for all service endpoints
  • Firewall hardened — direct port access blocked, services only reachable through secure subdomains

WhatsApp Server

  • Improved WhatsApp server connection stability and security
  • Bot responses now use secure URLs for ticket tracking
  • Enhanced multi-tenant isolation for WhatsApp messaging

System Improvements

  • Auto-update system now uses secure HTTPS update channel
  • License verification upgraded to encrypted Cloudflare-proxied endpoint
  • Improved connection reliability with automatic SSL certificate management
v1.0.38

Version 1.0.38

Receipt Improvements

  • T/N tax indicator aligned in its own column
  • Fixed Epson printer not printing in full receipt mode
  • Logo support added to full receipt
  • Previews now use actual print code

Open Price Items

  • Products with $0 price prompt for price at sale
  • Each entry gets its own cart line

Category Management

  • Manage Categories modal: add, rename, delete
  • Dropdown + custom input in Add Product
  • Scrollable category tabs

Export/Import

  • CSV export includes price_includes_tax
  • Full backup includes product_categories
v1.0.11

Version 1.0.11

  • Bug fixes and improvements
v1.0.10

Version 1.0.10

  • Fixed duplicate update modal — update notification now appears only once instead of twice
  • Added release notes display to the in-app update modal so you can always see what changed
  • Update modal now respects Skip This Version and Enter POS choices across the full session
v1.0.9

Version 1.0.9

  • Fixed ESC/POS receipt printer blank output — receipts now print correctly
  • Added character codepage selector in Printer Settings (PC437, PC850, CP1252, PC858, GBK)
  • Added Deli E801P Chinese printer support with GBK encoding
  • Fixed purchase order modal size (wider and taller layout)
  • Fixed quantity input in purchase orders (defaults to 0, backspace works correctly)
  • Fixed credit overdue charges SQL error (HAVING clause on non-aggregate query)
  • Updated sidebar to show real app icon and live version number
v1.0.8

Version 1.0.8

  • Bug fixes and improvements
v1.0.7

Version 1.0.7

  • Bug fixes and improvements
v1.0.6

Version 1.0.6

  • Bug fixes and improvements
v1.0.5

Bugs Improvements

v1.0.4

Fixed some bugs

v1.0.3

Version 1.0.3

  • Bug fixes and improvements
v1.0.2

Fix Mobile web server that scan product bar code not working

v1.0.1

Version 1.0.1

  • Bug fixes and improvements
v1.0.0

Initial Release

  • Full POS system with inventory management
  • License-based activation with offline support
  • Multi-language support (English, 中文, Español)
  • Receipt printing and reporting