PluginProbe
WCPOS – Point of Sale (POS) plugin for WooCommerce / 1.9.16
WCPOS – Point of Sale (POS) plugin for WooCommerce v1.9.16
1.10.19 1.10.18 1.10.17 1.10.16 1.10.15 1.10.13 1.10.14 1.10.12 1.10.11 1.10.10 1.10.9 1.10.8 untagged-3d9b7ccddc54df87c672 1.10.7 1.10.6 1.10.5 1.10.3 1.10.4 1.10.2 1.10.1 1.10.0 1.9.17 1.9.15 1.9.16 1.9.14 All 163 releases
woocommerce-pos / CHANGELOG.md

CHANGELOG.md in WCPOS – Point of Sale (POS) plugin for WooCommerce 1.9.16, at CHANGELOG.md

133 lines 8.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 # WCPOS 1.8.15 — Changelog Draft
2
3 > **The biggest WCPOS release ever.** Almost three months of work, ~330 substantive PRs. Highlights below.
4
5 ## Unreleased
6
7 - Added: anonymous analytics identifier (`wcpos_anon_id`) for the admin welcome screen — random UUID, no store data, deleted on uninstall, manageable via `wp wcpos anon-id rotate|delete`. Landing data contract `schema_version` bumped to 2.
8 - Added: `woocommerce_pos_consent_copy` filter so the tracking-consent prompt copy can be overridden.
9 - Added: `woocommerce_pos_get_anon_id()` accessor (used by the Pro licence-activation request).
10
11 ---
12
13 ## 🧾 Receipt Templates — Complete Rebuild
14
15 This release introduces an entirely new receipt template system. It started in early March as a "receipt data + multi-engine rendering" foundation and grew into a full template platform.
16
17 - **New Template Gallery** with starter templates for every common use case — thermal (58mm, 80mm, narrow), A4 receipts, invoices, quotes, packing slips, gift receipts, kitchen tickets, and right-to-left languages (Arabic, Hebrew, Persian, Urdu).
18 - **New Template Editor** built on CodeMirror 6 with a field picker, live preview, paper-size + engine locking, and a Sample/Order preview pill toggle.
19 - **Multi-engine rendering** — HTML, Logicless (Mustache), PHP, and Thermal engines. Each template can declare which engine it uses; the active template is resolved per-store and per-order.
20 - **Receipt Data v1 contract** — a stable, branchable data shape that custom templates can rely on: refunds, transaction IDs, line tax labels, per-row meta, fiscal/refund context, customer notes, store address composed via `WC_Countries`, structured `store.tax_ids[]`, customer tax-id labels, localized `status_label`, and a render-time `order.printed` timestamp.
21 - **Store-aware presentation** — receipts now respect store currency, locale, timezone, tax display setting, price presentation, opening hours, and site logo, instead of falling back to global WooCommerce options.
22 - **Refund-aware totals** — refunded orders keep totals positive and add Refunded/Net rows so receipts stay readable.
23 - **Discounts as first-class data** — each coupon emits its own discount row, with `discounts[].code` as the canonical reference and `discounts[].label` taking the coupon description when available.
24 - **Tax-summary guard** so templates correctly distinguish tax-inclusive vs tax-exclusive stores, and summaries use real post-discount taxable bases instead of reverse-calculating from rounded tax.
25 - **Black-and-white safe printing** — light tints actually print, dark reverse-out fills removed, thermal receipts made 42-column-safe with star-column support.
26 - **PHP gallery catalogue registry** (#1035) replaces JSON tracking for shipped templates, keeping the gallery cleaner and easier to extend.
27 - **Template-management admin redesign** — unified Templates table with sidebar filters, drag-and-drop ordering, inactive-but-visible status, and a kebab menu replacing the old card "Settings" link.
28
29 ## 🪪 Customer & Store Tax IDs (new feature)
30
31 - **Customer tax IDs** end-to-end — reader, writer, REST exposure, persistence (#850, #863).
32 - **Store Tax IDs settings UI** with dedicated REST endpoints and country defaults (#851, #859, #872, #883).
33 - **Consolidation** — Tax IDs folded into General → Customers and into the Store Details block (#860, #924, #942).
34 - **Structured `store.tax_ids[]`** exposed on receipts with a derived `tax_id` scalar for legacy templates (#853, #874, #875).
35
36 ## 📈 Tracking Consent & Analytics (new feature)
37
38 - **GDPR-friendly consent prompt** with a two-tier landing page (#787, #788, #790, #792, #801, #804).
39 - **PostHog analytics foundation** with consent gating; session recording is explicitly disabled (#795, #799).
40 - **Reusable `@wcpos/consent` package** so the same consent flow can be embedded elsewhere (#822, #824, #829).
41 - **Landing Profile service** for personalized A/B testing (#781, #784, #797).
42 - **Upgrade-funnel instrumentation** (#798).
43
44 ## ⚙️ Settings Overhaul
45
46 - **General tab redesign** with a new Callout primitive (#864).
47 - **Store Details block** extracted with a Pro override slot (#868, #877, #1015).
48 - **General settings grouped** into Products and Customers sections (#733, #740).
49 - **Snackbar improvements** — pinned to viewport, aligned to content area (#867, #878).
50
51 ## 🧱 Shared UI Package (`@wcpos/ui`)
52
53 Many components extracted into a shared workspace package and reused across settings, templates, and consent:
54
55 - Button (with ghost-destructive variant, form primitives) (#782, #783, #802)
56 - Table (#879), Combobox (#880), searchable CountrySelect (#871)
57 - FormSection / FormRow with `headerRight` and divider props (#796, #800)
58 - Toggle hardened for hosts without Tailwind preflight (#841, #842, #843)
59 - Skeleton loading states (#703, #704)
60 - Filter sidebar with horizontal rule (#998)
61 - Shared `@wcpos/thermal-utils` workspace package (#730)
62
63 ## 🧩 Extensions Catalog
64
65 - **Redesigned cards** with body/footer layout, update badges, has-update flag, responsive grid, smaller buttons (#580, #778, #779, #780, #808, #809).
66 - **Auto-update field** exposed in the catalog (#566).
67 - **Extension settings and logs** now surface in POS admin (#821).
68
69 ## 📋 Sessions & Logs
70
71 - **Sessions page** redesigned as master/detail with a shared Avatar component (#826).
72 - **Logs page** redesigned with grouped-by-day view, copy boxes, and a new Chip primitive (#825).
73
74 ## 💳 Payments
75
76 - **Per-gateway order status settings** — Cash and Card gateways now have their own configurable post-checkout statuses (#564).
77 - **Refund support** added to POS Cash and Card gateways (#632).
78 - **POS payment gateway contract** — gateway catalog, bootstrap, and checkout coverage (#828, #830).
79
80 ## 🐞 Major Bug Fixes
81
82 ### POS order reliability
83 - Fixed `WC_Data_Exception` crash on misc product duplicate SKU (#573).
84 - Prevent line-item tax overrides from mutating products (#563).
85 - Cashier capabilities synced on plugin update, stripped on deactivation (#623, #768).
86 - POS capability checks added to checkout routes; cashier roles included in auth payloads (#624, #806).
87 - Cashier can now update orders with HPOS enabled (#662).
88 - New misc product meta fields handled: category, virtual, downloadable (#690).
89 - Variable-product empty sale prices filtered (#692).
90 - Optional stock restore when POS orders are deleted, with admin toggle (#701, #732).
91 - Line-item image IDs cast to integer in order responses (#756).
92 - Client-provided order creation date honored (#915).
93 - Historical store lookup works for trashed stores (#940).
94 - Receipt permission error code corrected (#1014).
95
96 ### Coupon calculations (multi-round WooCommerce interaction fixes)
97 - Strip coupon line IDs to prevent readonly errors on order update (#613).
98 - Deactivate subtotal filter before `calculate_totals()` (#674).
99 - Preserve subtotals during coupon recalculation (WC compound-tax bug) (#675, #677, #684).
100 - Use POS price directly as subtotal, remove fragile filter mechanism (#686).
101 - Clean up temporary cache entries after coupon validation (#693).
102 - Coupon include/exclude sync filters fixed (#840).
103 - Coupon REST API: shipped (#518), moved to Pro (#588), then restored as a standard controller (#766).
104
105 ### Auth & compatibility
106 - Prevent third-party JWT plugins from blocking WCPOS Bearer token auth (#744).
107 - Fix `require()` in IIFE bundle from Vite 8 CJS interop (#659, #664).
108 - Analytics tsconfig updated for TypeScript 6 (#708).
109
110 ### Memory & performance
111 - Log-spam memory exhaustion from i18n thundering herd resolved (#702).
112 - OPFS worker added for RxDB 17 storage migration (#739, #897).
113
114 ### Localization
115 - Translation write-location fallback and failure caching (#567).
116 - jsDelivr CDN trailing-slash redirect-loop fixed (#931).
117 - `TRANSLATION_VERSION` used for JS translation URLs (#707).
118 - `loadPath` interpolation conflict fixed (#729).
119 - Receipt dates and timestamps respect store timezone and locale (#666, #919, #937, #1029).
120 - Receipt gallery, template editor, Combobox, CountrySelect, and Skeleton strings all localized (#669, #681, #903, #925, #927).
121
122 ## 🔧 Behind the Scenes
123
124 - **CI/build** — root build script, simpler workflows, dynamic test matrix with RC/beta auto-detection, merge gate for bot PRs, hook-docs gh-pages deploy, release-draft idempotency, GitHub App tokens for POT and update-matrix automation, Dependabot auto-merge.
125 - **Dependencies** — Vite 8, TypeScript 6, RxDB 17, codecov-action 6, many action upgrades; pnpm supply-chain settings tightened.
126 - **Wiki** — moved to a `wcpos/wiki` submodule; deprecated `.kb/` folder removed (#759, #760).
127 - **Security**`TemplatesManager::save_raw_post_content` hardened with structural guards (#984).
128 - **Docs**`_woocommerce_pos_data` explainer, web bundle architecture KB article (#672, #753).
129
130 ---
131
132 **Stats:** 329 substantive PRs since v1.8.14, plus 60 routine translation/dependency-bot PRs folded into "Behind the Scenes".
133