# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [0.0.3] - 2026-01-21 ### Added - File attachment support for product versions (WordPress Media Library integration) - Version auto-detection from uploaded filenames (e.g., `plugin-v1.2.3.zip`) - Customer download page for purchased licenses with secure authenticated downloads - License key copy-to-clipboard functionality on account page and emails - New card-based UI for customer licenses page with download section - DownloadController for secure file delivery with hash-based URL verification ### Changed - Product versions meta box now hidden for non-licensed product types (dynamic show/hide) - Redesigned customer licenses page with modern card layout - Frontend JavaScript and CSS enhancements for better UX ### Technical Details - New class: DownloadController for secure file downloads - Database schema updated: `attachment_id` column added to versions table - ProductVersion model extended with `getEffectiveDownloadUrl()` and `getDownloadFilename()` - Secure download URLs use hash verification (license_id-version_id-hash format) ## [0.0.2] - 2026-01-21 ### Added - Product version management UI in admin (meta box on product edit page) - AJAX-based version CRUD operations (add, delete, toggle active status) - ProductVersion model and VersionManager for version data handling - Email notifications with license keys on order completion - License information included in WooCommerce order completed emails - Rate limiting for REST API endpoints (30 requests/minute per IP) - Cloudflare and proxy-aware IP detection for rate limiting - JavaScript for version management interactions ### Changed - Declared WooCommerce HPOS and cart/checkout blocks compatibility - Plugin name changed from "WC Licensed Product" to "WooCommerce Licensed Product" ### Technical Details - New classes: ProductVersion, VersionManager, VersionAdminController, LicenseEmailController - Rate limiting uses WordPress transients for request counting - HTTP 429 response with Retry-After header when rate limited ## [0.0.1] - 2026-01-21 ### Added - Initial plugin structure with WordPress Plugin API integration - New WooCommerce product type "Licensed Product" for selling software licenses - License key generation with format XXXX-XXXX-XXXX-XXXX on order completion - Domain-based license validation (licenses bound to specific domains) - REST API endpoints for license management: - `POST /wp-json/wc-licensed-product/v1/validate` - Validate license for domain - `POST /wp-json/wc-licensed-product/v1/status` - Check license status - `POST /wp-json/wc-licensed-product/v1/activate` - Activate license on domain - `POST /wp-json/wc-licensed-product/v1/deactivate` - Deactivate license - Checkout domain field for licensed products - Customer account page "Licenses" to view purchased licenses - Admin interface for license management (WooCommerce > Licenses) - License settings per product: - Maximum activations per license - License validity period (days or lifetime) - Optional binding to major software version - Current version tracking - Custom database tables for licenses and product versions - Twig template engine integration for views - Full internationalization support (i18n) - German (Switzerland, formal) translation (de_CH) - WooCommerce HPOS compatibility - Responsive frontend license table ### Technical - PHP 8.3+ required - WooCommerce 10.0+ required - PSR-4 autoloading via Composer - Twig 3.0 template engine - WordPress REST API integration - Custom WooCommerce product type extending WC_Product [Unreleased]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.3...HEAD [0.0.3]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.2...v0.0.3 [0.0.2]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/compare/v0.0.1...v0.0.2 [0.0.1]: https://src.bundespruefstelle.ch/magdev/wc-licensed-product/releases/tag/v0.0.1