WP eCommerce Core Plugin - Changelog
[8.2.0] - 2026-03-20 — Shop Managers & Roles, Variant Management & ionCube
Added
- Shop Managers & Roles System — WordPress native role/capability access control. 17 capabilities across 6 groups. 4 predefined roles (Head Manager, Sales Manager, Content Manager, Product Manager). Custom role creation with capability matrix. Full admin page with managers list, role assignment, capability matrix
- ionCube encoding active — 6 plugin licensing files ionCube-encoded in production builds
- Variant Re-generation Management — Smart merge vs Replace All, Delete All button, bulk DELETE endpoint
- Admin sees disabled variants — context=edit param on getProductVariants() API
Updated
- Database documentation — Complete rewrite: 14 → 51 tables
Fixed
- Disabled variants in API — Filters via isEnabled() by default, admin uses context=edit
[8.1.0] - 2026-03-19 — Product Admin UX Improvements
Added
- Duplicate Product — New REST endpoint
POST /ec/v1/products/{id}/duplicate. Creates a copy as draft with unique SKU and slug. Copies all fields, categories, images, attributes. Duplicate icon button in product list row actions with quantity popup (1/2/3/5/10/20 copies) - Category Filter — Products list toolbar includes "All Categories" dropdown filter. Loads from
/ec/v1/categoriesAPI. Backendcategory_idparameter already supported - Inline Status Toggle — Product status badge is now clickable with dropdown. Change between Active/Draft/Archived directly from the product list without opening the editor
- Variant Drag-and-Drop Reorder — Product variants can now be reordered via drag-and-drop (@dnd-kit/sortable). Drag handle on each variant card. Order persists automatically via new
POST /products/{id}/variants/reorderendpoint. Newsort_orderDB column (migration 060)
Updated
- build-dist.php v1.3.0 — Version auto-detection from source files (style.css / wp-ec.php). Version argument now optional. Explicit version validated against source — build fails on mismatch
- Component Version Tracking —
component-registry.jsonnow hascomponent_versionfield.build-components.phpandupload-components.phpauto-read version from registry (CLI--versionoverrides)
Fixed
- Attribute Terms Delete/Update — Frontend was sending DELETE/PUT to
/attributes/{attribute_id}/terms/{term_id}but backend route is/attributes/terms/{id}. Fixed path inAttributesManager.js— term deletion and editing now work correctly - Variant
enabledtoggle had no effect — Disabled variants were still visible and purchasable on frontend. API now filters out disabled variants from product response - Variant
sale_type=percentwrong price — Frontend showed rawsale_priceinstead of calculated effective price. Now API returnseffective_priceandis_on_salecomputed fields. Price range calculation also fixed - Out-of-stock variants now greyed out — Frontend
VariantSelectormarks out-of-stock attribute options as disabled with "(Out of Stock)" suffix - Product Update redirected to list — "Update Product" now stays on the product form instead of navigating back to list. "Discard" renamed to "Discard / Exit". New "View" button opens product on frontend
[8.0.0] - 2026-03-15 — Pay-from-Day-1 Licensing, Server-Side Component Delivery & Code Protection
Breaking Changes
- Licensing Model: Pay from Day 1 — Removed 14-day trial system entirely. All features require an active license (Starter or higher). 30-day money-back guarantee replaces trial
- FEATURE_MANIFEST restructured —
core_ecommerce,products,basic_paymentsmoved from free tostartertier.erp_invoicingmoved fromstartertobusinesstier - FREE_PRODUCT_LIMIT removed — Without license: 0 products. With license: unlimited
Added
- IntegrityVerifier — Runtime file tamper detection via SHA256 + Ed25519 signed manifest with severity escalation
- Distributed Sentinels (10) — Anti-nulling license verification across 8 files using different methods
- Server-Signed Feature Manifest — Ed25519-signed manifest from Hub, fetched via twicedaily cron, cached 24h
- ComponentInstaller — Server-side component delivery: download, verify, extract, track. Bulk install on activation
- Component Update System — Cron-based update detection, admin notices, AJAX handlers for single/bulk updates
- Component Integrity Verification — Installed files checked against stored SHA256 hashes in twicedaily cron
- Skeleton Architecture — Skeleton mode when core DDD layers are missing. Only licensing + infrastructure run
- Auto-Reinstall After Upgrade — Fullscreen popup auto-downloads components when licensed user upgrades
Updated
- PaymentGatewayManager — Dynamic loading for 8 premium gateways (file_exists + dynamic instantiation)
- CourierApiController — Dynamic courier loading with COURIER_MAP registry
- MarketplaceFeedService — Dynamic feed generator loading with FEED_GENERATORS registry
- LicenseGate — Removed all trial logic, "License Required" messaging
- LicenseManager — "No License" badge, feature table checks
is_licensedflag explicitly - ERP license page — Requires Business tier (was Starter)
- Bootstrap — Skeleton/full mode split with
isCoreInstalled()detection - AdminController — Menu locked to License page only when unlicensed
- License Activation Progress UI — Fullscreen modal with per-component download progress
Fixed
- Migration idempotency (15 files) — Migrations 003-058 now check
information_schemabefore ADD COLUMN/INDEX/CONSTRAINT. Prevents errors on re-activation - FK type mismatches (migrations 052-057) — Column types aligned to
bigint(20)to match referenced PKs - Sentinel
getCurrentTier()bug — Fixed togetEffectiveTier() - Duplicate License menu — Eliminated duplicate entries between AdminController and LicenseManager
- LicenseFingerprint NULL insert —
set_option(key, null)→delete_option()for NOT NULL column
[7.12.0] - 2026-03-12 — Search Optimization & Bug Reporter Enhancements
Updated
- Bug Reporter Widget — "My Issues" filter — Widget now shows only issues reported by the current WP user (filtered by email). Added Bug Tracker account creation link.
- Bug Reporter Widget — Project selector — When connected to a multi-project API key, widget shows a project dropdown so users can choose which product their report concerns.
- Search API — Multi-word matching — Search endpoint now supports multi-word queries with AND logic ("red shirt" finds products with both words). Cumulative relevance scoring replaces single-tier CASE.
- Search API — N+1 fix — Category names for search results loaded in single batch query instead of one query per product.
[7.11.0] - 2026-03-11 — Review Hooks & Checkout Cleanup
Added
- Review hooks — Added
wpec_review_createdandwpec_review_approvedhooks toReviewsApiControllerfor extensibility (Points & Rewards, notifications, etc.)
Updated
- Legacy coupon endpoints removed — Removed unused
POST /cart/couponsandDELETE /cart/coupons/{code}routes + stub methods fromCartApiControllerandCartService. All coupon operations useCouponApiControllerexclusively. - Checkout
sanitizeAddress()whitelist — Addedvat_numberfield so VAT numbers persist through checkout → order flow.
[7.10.0] - 2026-03-10 — Fingerprint Verification, Fulfillment Emails & Dynamic Currency
Added
- License Fingerprint Verification — Ed25519 signed fingerprint file (
.wpec-license.dat) for triple-verification (license_key + domain + fingerprint). Prevents file cloning across domains. Filesystem storage with DB fallback for managed hosting. - Fulfillment Status Emails — Automatic customer emails for shipped and delivered fulfillment statuses. New templates
order_shippedandorder_deliveredwith Greek defaults. Triggered bywpec_order_fulfillment_status_changedhook. - ACS Courier Integration (partially complete — awaiting real API key) — REST API client, voucher CRUD, label printing (thermal/laser), tracking, pickup list management, price calculation, address validation. Admin UI with credentials, test connection, print format. Shipping method
acs_courierwith table rate + surcharges.
Updated
- Dynamic currency/locale infrastructure —
AdminControllerpasses fullcurrencyconfig viawpecAdminlocalized data.erp-app.phppasses same via__ERP_CONFIG__. AdminformatUtils.jsrewritten to read from settings instead of hardcoded EUR/el-GR. Newerp/src/utils/format.jsshared utility for ERP SPA.
Fixed
- License badge priority — Trial badge showing instead of licensed tier badge
- Welcome email stub —
onCustomerCreated()now sends actual welcome email usingnew_accounttemplate - Email resend endpoint — Resend now uses full order data for all email types
- Hardcoded currency/tax values (PHP) — Replaced
€/EUR/24tax rate with dynamic values in 10+ files - Hardcoded currency values (JS/React) — Replaced
€/EURin 17 Admin/ERP React files withgetCurrencySymbol()/formatCurrency() - Hardcoded 'GR' country codes — Replaced with dynamic
store_countryin 8 files
Full Version History
For the complete changelog including all previous versions, contact our support team.