WCPOS – Point of Sale (POS) plugin for WooCommerce

Changelog

1.8.14 – 2026/02/19

  • Hardened DB migration locking β€” upgrade now uses the WordPress core upgrader lock (WP_Upgrading) with an atomic acquisition check and a shutdown fallback, preventing concurrent migrations on high-traffic sites (#540)
  • Fixed offline gateway ignoring POS checkout status β€” orders placed with the Cash or Card gateway while offline now respect the configured POS checkout status instead of defaulting to “processing” (#544)
  • Fixed i18n locale fallback and caching β€” translation lookups no longer retry locales that returned a definitive 404, reducing unnecessary network requests on every page load (#543)
  • Fixed settings page clipping on some WordPress themes β€” the left side of the settings panel was being cut off on sites where #wpcontent has extra padding (#545)
  • Reduced extensions catalog cache TTL β€” the extension directory now refreshes every hour instead of daily, so newly published extensions appear faster (#546)
  • Allowed php-jwt advisory on PHP 7.4 β€” resolved a PHP Scoper install failure caused by a security advisory that only affects newer PHP versions (#541)

1.8.13 – 2026/02/17

  • Fixed root cause of duplicate product metadata β€” POS order processing no longer clones product objects in the stock/coupon path, preventing repeated meta rows from being re-saved on each stock update (#537)
  • Added a safer duplicate-meta repair migration β€” a new one-time cleanup removes only exact duplicate (post_id, meta_key, meta_value) rows for POS-touched products/variations, reducing API payload size and memory pressure without deleting distinct meta values (#537)
  • Expanded regression coverage for discount and stock edge cases β€” added tests for coupon recalculation behavior, variation pricing paths, and stock-reduction lifecycle to prevent regressions (#537)
  • Reduced diagnostic log noise β€” high-volume top-meta-key context is now opt-in so normal logs stay readable while deep diagnostics remain available when needed (#537)

1.8.12 – 2026/02/13

  • One-time cleanup of duplicate metadata β€” a migration automatically removes thousands of junk meta rows that accumulated on POS-touched products and orders, resolving memory exhaustion and slow API responses on affected stores (#532)
  • Reduced redundant order saves in payment gateways β€” Card and Cash gateways no longer call $order->save() before payment_complete() / update_status(), which already save internally (#532)

1.8.11 – 2026/02/13

  • Fixed critical memory exhaustion on large stores β€” API responses were re-reading all metadata from the database on every request, causing extreme memory usage on stores with large catalogs (#519)
  • Fixed O(nΒ²) loop in order tax calculation β€” variable shadowing caused quadratic iteration over line item meta (#519)
  • New meta data monitoring β€” REST API responses now detect resources with excessive metadata and fall back to a safe response mode, preventing out-of-memory crashes (#521)
  • Security hardening β€” masked auth tokens in test endpoint, added directory protection for temp receipt templates (#519)
  • Updated all JS and PHP dependencies to latest stable versions (#521, #526)
  • Pro: Redesigned Edit Store page with modern React/Tailwind UI
  • Pro: Fixed SQL injection vulnerability in analytics and store authorization bypass

1.8.9 – 2026/02/11

  • Completely rebuilt settings page β€” new modern architecture with Vite, TanStack Router, headless UI components, zustand state management, and responsive layout with grouped sidebar navigation (#495, #498, #505)
  • New Extensions directory β€” browse, discover, and manage extensions directly from POS settings, with Pro integration hooks, GitHub links, and new-extension badges (#497, #500, #510)
  • New Logs page β€” view, filter, and paginate log entries from file and database sources with expandable details and unread counts (#504, #511)
  • Redesigned email settings β€” granular per-email toggles replace the old on/off switch, with new cashier notification options (#502, #508)
  • Fixed POS prices persisting to product database β€” price modifications made at the POS no longer overwrite the stored product price (#509)
  • Fixed coupon calculations ignoring tax β€” coupon subtotal filters are now tax-aware, preventing incorrect discount amounts (#507)
  • Fixed security plugin conflicts β€” CSP headers are now stripped on POS pages so Content-Security-Policy rules from security plugins no longer break the interface (#503)
  • Fixed WordPress 6.7+ compatibility β€” deferred translation calls in the Activator to avoid the “too early” notice (#498)

1.8.8 – 2026/02/06

  • Completely rebuilt translation system β€” switched to i18next with proper plural handling and regional locale fallback, loaded on-demand from jsDelivr and decoupled from plugin version updates (#37, #75, #76, #438, #439, #474)
  • Fixed conflict with REST API caching plugins β€” POS requests could break entirely when a REST API caching plugin was active, this is now resolved (#421)
  • Fixed expired JWT overriding valid authentication β€” an expired token could silently override a valid cookie session, locking users out unnecessarily (#472)
  • POS discounts no longer wiped by coupons β€” applying a coupon to an order with POS-discounted items no longer resets those discounts back to the original price (#464)
  • Fixed misc products showing $0 on receipts β€” miscellaneous products now display the correct price on receipts and order emails (#436)
  • Fixed checkout-to-receipt navigation β€” no more crashes or lost order links when completing a sale (#77)
  • Fixed token refresh on 403 errors β€” sessions that appeared “stuck” requiring a re-login should now refresh automatically (#74)
  • Fixed store switching issues β€” switching between stores no longer causes errors or blank screens (da8c05d)
  • Fixed missing data in received template β€” the order received page was missing link data, now restored (#476)
  • Tightened permission checks β€” capability checks now properly match what’s configured on the Access settings page (#467)
  • Improved performance during large syncs β€” the UI stays responsive while syncing large product catalogs (8657e1f)
  • Fixed web hydration in standalone mode β€” the web app loads correctly when accessed directly without the desktop wrapper (#19)

Plugin Website
Visit website

Author
kilbot
Version:
1.8.14
Last Updated
February 18, 2026
Active Installs
6000
Requires
WordPress 5.6
Tested Up To
WordPress 6.9.1
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.