- Add REST API response signing using HMAC-SHA256
- Add SHA256 hash validation for version file uploads
- Add ResponseSigner class for automatic API response signing
- Add file_hash column to database schema
- Remove external URL support from version uploads
- Update translations with all fuzzy strings resolved
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Conducted comprehensive security and best practices review
- Fixed VersionManager null format handling for attachment updates
- Improved input sanitization in AdminController for page context checks
- Updated README.md with complete feature documentation
- Updated CHANGELOG.md with 0.1.0 release notes
- Updated translations (.pot, .po, .mo files) to version 0.1.0
- Bumped version to 0.1.0 in plugin header and constant
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Corrected session history to reflect actual v0.0.11 release:
- Created date column added to license overview
- Removed references to AnalyticsController (was deleted due to issues)
- Added release package details and SHA256 checksum
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Keep existing Reports > Licenses dashboard which works correctly.
Version 0.0.11 now only includes the Created column in license overview.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Store the AnalyticsController instance as a class property
to prevent it from being garbage collected before WordPress
can call the registered callbacks.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Catch all Twig errors (not just LoaderError) to ensure
fallback to PHP rendering works properly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed capability from manage_woocommerce to manage_options
to ensure admin users can access the page.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Created date column to admin license overview
- Add License Statistics page under WooCommerce menu
- Add REST API endpoints for analytics data with time-series support
- WooCommerce Analytics integration via submenu page
New files:
- src/Admin/AnalyticsController.php
- templates/admin/statistics.html.twig
REST API endpoints:
- GET /wc-licensed-product/v1/analytics/stats
- GET /wc-licensed-product/v1/analytics/products
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Document inline editing features for licenses
- Document live search and copy license key functionality
- Document AJAX handlers and new LicenseManager methods
- Record release v0.0.10 details with checksums
- Note known bug about version uploads
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add inline editing for status, expiry date, and domain fields
- Add copy-to-clipboard button for license keys
- Add AJAX handlers for inline editing with nonce verification
- Update LicenseManager with updateLicenseExpiry method
- Add new translations for inline editing strings (de_CH)
- Compile updated German translations to .mo file
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This ensures template changes are detected even when WP_DEBUG is false,
avoiding stale cache issues.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Twig template already had search/filter functionality but the PHP
fallback template (used when Twig fails) was missing it. This ensures
search and filters work regardless of which template is rendered.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add AJAX handler for real-time license search
- Create admin-licenses.js with debounced search and keyboard navigation
- Display search results with highlighted matches
- Support navigation with arrow keys and Enter to select
- Add CSS for dropdown results styling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Frontend CSS now inherits theme design settings automatically:
- Colors: --wp--preset--color--base, --wp--preset--color--contrast, etc.
- Typography: --wp--preset--font-family--body, --wp--preset--font-size--*
- Spacing: --wp--preset--spacing--20/30/40
All values have sensible fallbacks for non-block themes.
Status badges use color-mix() to blend with theme colors.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Register licenses query var with WooCommerce via woocommerce_get_query_vars
- Register endpoint in Installer before flushing rewrite rules
- Existing installations need to re-save permalinks
The endpoint was not being recognized because WooCommerce's My Account
requires both add_rewrite_endpoint() and query var registration.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add license meta box on WooCommerce order edit pages
- Add editable order domain field with AJAX inline editing
- Add editable license domains directly from order page
- Add licenses table showing all licenses for an order
- Support both classic orders and HPOS
New files:
- src/Admin/OrderLicenseController.php
- assets/js/order-licenses.js
New method: LicenseManager::getLicensesByOrder()
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Set known bugs to "None currently known"
- Added documentation for version upload fix (attachment_id handling)
- Session history updated with all bug fixes from pre-v0.0.10
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix VersionManager::createVersion() to handle null attachment_id properly
- Add product type validation in AJAX version handler
- Add database error logging for debugging
- Improve meta box visibility logic for licensed products
- Add known bug note to CLAUDE.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add WooCommerce Checkout Blocks support for domain field
- Create CheckoutBlocksIntegration for block-based checkout
- Create StoreApiExtension for Store API domain handling
- Add checkout-blocks.js for frontend domain field in blocks
- Fix LicenseManager product type check in generateLicense()
- Add multiple order status hooks for reliable license generation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Document available API client examples in docs/client-examples/
- List all 5 supported languages with links to files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add API client examples for PHP, Python, JavaScript, curl, and C#
- Create comprehensive REST API documentation in docs/client-examples/
- All examples include rate limit handling (HTTP 429)
- Examples cover validate, status, and activate endpoints
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove Current Version field from product license settings
- Derive current version from latest product version in database
- Refactor email system to use WooCommerce email notification classes
- Add LicenseExpirationEmail WC_Email class for expiration warnings
- Add customizable email templates (HTML and plain text)
- Update settings to link to WooCommerce email configuration
- Update translations for new email-related strings
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed all instances of "lizenziert" to "lizensiert" for correct
German spelling of "licensed" as a participle adjective.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Updated POT template with all new strings from v0.0.4-0.0.7:
- Settings page strings
- Bulk actions and search/filter strings
- CSV import/export strings
- License transfer (customer) strings
- Email expiration warning strings
- Dashboard strings
- Updated German (de_CH) translation with all new strings
- Compiled MO binary file
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove completed v0.0.2 items from roadmap
- Add v0.0.3 roadmap items
- Document v0.0.2 session in Session History
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add product version management:
- ProductVersion model and VersionManager class
- VersionAdminController with meta box on product edit page
- AJAX-based version CRUD (add, delete, toggle status)
- JavaScript for version management UI
Add email notifications:
- LicenseEmailController for order emails
- License keys included in order completed emails
- Support for both HTML and plain text emails
Add REST API rate limiting:
- 30 requests per minute per IP
- Cloudflare and proxy-aware IP detection
- HTTP 429 response with Retry-After header
Other changes:
- Bump version to 0.0.2
- Update CHANGELOG.md
- Add version status styles to admin.css
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Declare compatibility with:
- HPOS (High-Performance Order Storage / custom_order_tables)
- Cart/Checkout blocks
This fixes the WooCommerce admin warning about incompatible plugins.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove completed version 0.0.1 from Temporary Roadmap
- Add Session History section at end of file for AI session documentation
- Document v0.0.1 implementation details and architecture decisions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>