Commit Graph

155 Commits

Author SHA1 Message Date
27c9a22739 Add v0.2.1 release package
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 17:16:44 +01:00
fc2fe70576 v0.2.1: Change SHA256 input to file upload field
- Replace SHA256 text input with file upload field for checksum files
- Add readChecksumFile() JavaScript function using FileReader API
- Support .sha256 and .txt checksum file formats
- Add Promise-based async handling for file reading
- Add localized error messages for checksum file validation
- Update translations (de_CH) with new strings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.2.1
2026-01-22 17:13:27 +01:00
f5a1e55710 Add v0.2.0 release package
- wc-licensed-product-0.2.0.zip (486 KB)
- SHA256: 20d90f61721b4579cb979cd19b0262f3286c3510dcb0345fe5e8da2703e3836f

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 16:59:56 +01:00
4aecba3272 Merge branch 'dev' v0.2.0 2026-01-22 16:57:58 +01:00
23bbc24c5f Release v0.2.0 - Security and integrity features
- 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>
2026-01-22 16:57:54 +01:00
8420734f37 Update CLAUDE.md with v0.1.0 session history
- Removed completed 0.1.0 roadmap items
- Added comprehensive session history for v0.1.0 release
- Documented code review findings and bug fixes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 12:00:01 +01:00
968cd6a18f Merge branch 'dev' for v0.1.0 release v0.1.0 2026-01-22 11:57:16 +01:00
5256f88815 Prepare v0.1.0 release - code review and documentation updates
- 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>
2026-01-22 11:57:05 +01:00
d0c0756412 Update CLAUDE.md with v0.0.11 session history
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>
2026-01-22 00:26:46 +01:00
6770ec5201 Clean up translations, remove unused strings
Removed strings from deleted AnalyticsController.
Compiled German translation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.0.11
2026-01-22 00:21:18 +01:00
6f1ea3c6fa Remove License Statistics page due to issues
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>
2026-01-22 00:10:32 +01:00
10453360ad Revert to manage_woocommerce capability 2026-01-22 00:08:26 +01:00
8ada21afb0 Register hooks in constructor like AdminController 2026-01-22 00:07:27 +01:00
27dc1b67c5 Fix AnalyticsController being garbage collected
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>
2026-01-22 00:06:28 +01:00
a73b7cc550 Debug: simple test page 2026-01-22 00:05:06 +01:00
89c5a40f56 Add error output for debugging statistics page 2026-01-22 00:03:41 +01:00
79b9c2cefd Use PHP rendering for statistics page
Skip Twig template and use direct PHP rendering for
better stability and debugging.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 00:02:53 +01:00
f8b88e4c98 Fix statistics page error handling
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>
2026-01-22 00:02:17 +01:00
1008617623 Fix License Statistics page permission issue
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>
2026-01-22 00:00:59 +01:00
45531f86d6 Implement version 0.0.11 features
- 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>
2026-01-21 23:50:57 +01:00
ff9b27e811 added claude settings.json 2026-01-21 23:27:23 +01:00
a59631aec3 Add releases directory to .gitignore
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 23:25:41 +01:00
0e3b57482e Update CLAUDE.md with v0.0.10 session history
- 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>
2026-01-21 23:24:47 +01:00
b3cf3e114b Update CHANGELOG and add v0.0.10 release package
- Updated CHANGELOG with all v0.0.10 features
- Added release package with checksums

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 23:23:16 +01:00
024733bb31 Add inline editing for licenses and copy license key button
- 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>
v0.0.10
2026-01-21 23:13:07 +01:00
e88423e882 Enable Twig auto_reload to always check for template changes
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>
2026-01-21 22:59:53 +01:00
7343cfb87a Add search and filter form to PHP fallback template
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>
2026-01-21 22:55:49 +01:00
bfb24f078d Add live search to admin licenses overview
- 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>
2026-01-21 22:52:51 +01:00
fa639dfbaa Fix Settings link tab parameter (licensed_product, not licensed_products)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 22:48:35 +01:00
c679a933d3 Add Settings link to plugin action links in Plugins list
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 22:46:07 +01:00
76cc943dc7 Revert "Update frontend CSS to match Twenty Twenty-Five theme"
This reverts commit 1ad29120e9.
2026-01-21 22:38:54 +01:00
1660c185dd Use WordPress Global Styles CSS custom properties
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>
2026-01-21 22:36:18 +01:00
1ad29120e9 Update frontend CSS to match Twenty Twenty-Five theme
- Use CSS custom properties matching theme.json design tokens
- Apply theme color palette (base, contrast, accent colors)
- Use Fira Code monospace font for code elements
- Apply pill-shaped badges and buttons matching theme style
- Add subtle hover effects and transitions
- Improve responsive design breakpoints
- Add backdrop blur to modal overlay

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 22:29:30 +01:00
0e554d4139 Fix licenses endpoint 404 error in customer account
- 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>
2026-01-21 22:24:43 +01:00
f22ae95d6e Implement version 0.0.10 features
- 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>
2026-01-21 22:18:27 +01:00
c4b1df8a22 Update CLAUDE.md: clear known bugs, document version upload fix
- 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>
2026-01-21 22:08:20 +01:00
08aa7dae35 Fix version upload handling and add better error logging
- 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>
2026-01-21 22:02:51 +01:00
319dfe357a Fix license generation and checkout domain field bugs
- 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>
2026-01-21 21:58:54 +01:00
182dabebed Add client examples reference to README.md
- 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>
2026-01-21 21:26:10 +01:00
d3830e24b9 Implement version 0.0.9 features
- 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>
2026-01-21 21:23:21 +01:00
6378063180 Refactor email to use WooCommerce transactional email system
- Remove legacy email template files
- Use WooCommerce's email-header.php and email-footer.php templates
- Render email content inline for consistent WooCommerce styling
- Remove template location filter from LicenseEmailController

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:16:04 +01:00
c6726703e4 Implement version 0.0.8 features
- 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>
2026-01-21 20:55:28 +01:00
50388c2019 Fix German translation: lizenziert -> lizensiert
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>
2026-01-21 20:41:44 +01:00
008b45b2c2 Update translations for v0.0.7
- 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>
2026-01-21 20:38:49 +01:00
49a0699963 Implement versions 0.0.4-0.0.7 features
v0.0.4:
- Add WooCommerce settings tab for default license settings
- Per-product settings override global defaults

v0.0.5:
- Add bulk license operations (activate, deactivate, revoke, extend, delete)
- Add license renewal/extension and lifetime functionality
- Add quick action buttons per license row

v0.0.6:
- Add license dashboard with statistics and analytics
- Add license transfer functionality (admin)
- Add CSV export for licenses
- Add OpenAPI 3.1 specification
- Remove /deactivate API endpoint

v0.0.7:
- Move license dashboard to WooCommerce Reports section
- Add license search and filtering in admin
- Add customer-facing license transfer with AJAX modal
- Add email notifications for license expiration warnings
- Add bulk import licenses from CSV
- Update README with comprehensive documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 20:32:35 +01:00
78e43b9aea Implement version 0.0.3 features
- Add file attachment support for product versions (Media Library)
- Add version auto-detection from uploaded filenames
- Implement secure customer downloads with hash verification
- Add license key copy-to-clipboard functionality
- Redesign customer licenses page with card-based UI
- Fix product versions meta box visibility for non-licensed types
- Add DownloadController for secure file delivery
- Update CLAUDE.md roadmap and session history

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 19:46:50 +01:00
41e5f8d467 Update CLAUDE.md: clean roadmap after v0.0.2 completion
- 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>
2026-01-21 19:22:20 +01:00
dec4bd609b Implement version 0.0.2 features
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>
2026-01-21 19:15:19 +01:00
82c18633a1 Add WooCommerce feature compatibility declarations
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>
2026-01-21 19:07:43 +01:00
3b23800f0f Rename plugin to WooCommerce Licensed Product
Update plugin display name for better clarity in WordPress admin.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 19:03:50 +01:00