You've already forked wc-licensed-product
Update CLAUDE.md with v0.6.0 session history
- Document WordPress auto-update system implementation - Add /update-check endpoint to REST API table - Add Update/ directory to project structure - Add Email/ directory to project structure - Update temporary roadmap to v0.7.0 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
84
CLAUDE.md
84
CLAUDE.md
@@ -32,7 +32,7 @@ This project is proudly **"vibe-coded"** using Claude.AI - the entire codebase w
|
|||||||
|
|
||||||
**Note for AI Assistants:** Clean this section after the specific features are done or new releases are made. Effective changes are tracked in `CHANGELOG.md`. Do not add completed versions here - document them in the Session History section at the end of this file.
|
**Note for AI Assistants:** Clean this section after the specific features are done or new releases are made. Effective changes are tracked in `CHANGELOG.md`. Do not add completed versions here - document them in the Session History section at the end of this file.
|
||||||
|
|
||||||
### Version 0.6.0
|
### Version 0.7.0
|
||||||
|
|
||||||
*No planned features yet.*
|
*No planned features yet.*
|
||||||
|
|
||||||
@@ -197,11 +197,13 @@ wc-licensed-product/
|
|||||||
├── releases/ # Release packages (version 0.1.0+)
|
├── releases/ # Release packages (version 0.1.0+)
|
||||||
├── src/
|
├── src/
|
||||||
│ ├── Admin/ # AdminController - license management UI
|
│ ├── Admin/ # AdminController - license management UI
|
||||||
│ ├── Api/ # RestApiController - license validation endpoints
|
│ ├── Api/ # RestApiController, UpdateController - REST API endpoints
|
||||||
│ ├── Checkout/ # CheckoutController - domain field at checkout
|
│ ├── Checkout/ # CheckoutController - domain field at checkout
|
||||||
|
│ ├── Email/ # WooCommerce email classes
|
||||||
│ ├── Frontend/ # AccountController - customer licenses page
|
│ ├── Frontend/ # AccountController - customer licenses page
|
||||||
│ ├── License/ # License model and LicenseManager
|
│ ├── License/ # License model and LicenseManager
|
||||||
│ └── Product/ # LicensedProduct type and LicensedProductType
|
│ ├── Product/ # LicensedProduct type and LicensedProductType
|
||||||
|
│ └── Update/ # PluginUpdateChecker - WordPress auto-update integration
|
||||||
├── templates/
|
├── templates/
|
||||||
│ ├── admin/ # Twig templates for admin views
|
│ ├── admin/ # Twig templates for admin views
|
||||||
│ └── frontend/ # Twig templates for customer views
|
│ └── frontend/ # Twig templates for customer views
|
||||||
@@ -220,10 +222,11 @@ Created on plugin activation via `Installer::createTables()`:
|
|||||||
Base: `/wp-json/wc-licensed-product/v1/`
|
Base: `/wp-json/wc-licensed-product/v1/`
|
||||||
|
|
||||||
| Endpoint | Method | Description |
|
| Endpoint | Method | Description |
|
||||||
| ----------- | ------ | ------------------------------- |
|
| --------------- | ------ | ---------------------------------- |
|
||||||
| `/validate` | POST | Validate license key for domain |
|
| `/validate` | POST | Validate license key for domain |
|
||||||
| `/status` | POST | Get license status |
|
| `/status` | POST | Get license status |
|
||||||
| `/activate` | POST | Activate license on domain |
|
| `/activate` | POST | Activate license on domain |
|
||||||
|
| `/update-check` | POST | Check for plugin updates (v0.6.0+) |
|
||||||
|
|
||||||
Full API documentation available in `openapi.json` (OpenAPI 3.1 specification).
|
Full API documentation available in `openapi.json` (OpenAPI 3.1 specification).
|
||||||
|
|
||||||
@@ -1656,3 +1659,76 @@ Fixed tab rendering bug in WooCommerce product edit page when switching to licen
|
|||||||
- Created release package: `releases/wc-licensed-product-0.5.15.zip` (862 KB)
|
- Created release package: `releases/wc-licensed-product-0.5.15.zip` (862 KB)
|
||||||
- SHA256: `47407de49bae4c649644af64e87b44b32fb30eeb2d50890ff8c4bbb741059278`
|
- SHA256: `47407de49bae4c649644af64e87b44b32fb30eeb2d50890ff8c4bbb741059278`
|
||||||
- Committed to `dev` branch
|
- Committed to `dev` branch
|
||||||
|
|
||||||
|
### 2026-01-27 - Version 0.6.0 - WordPress Auto-Update System
|
||||||
|
|
||||||
|
**Overview:**
|
||||||
|
|
||||||
|
Major feature release implementing WordPress-style automatic updates. Licensed plugins can now receive updates through WordPress's native plugin update mechanism by checking against the license server.
|
||||||
|
|
||||||
|
**New files:**
|
||||||
|
|
||||||
|
- `src/Api/UpdateController.php` - Server-side REST API endpoint for update checks
|
||||||
|
- `src/Update/PluginUpdateChecker.php` - Client-side singleton for WordPress update integration
|
||||||
|
|
||||||
|
**Implemented:**
|
||||||
|
|
||||||
|
- Server-side `/update-check` REST API endpoint serving WordPress-compatible update information
|
||||||
|
- Client-side `PluginUpdateChecker` singleton hooking into WordPress's native update system
|
||||||
|
- Hooks: `pre_set_site_transient_update_plugins`, `plugins_api`, `http_request_args`
|
||||||
|
- New "Auto-Updates" settings subtab with enable/disable toggle and check frequency
|
||||||
|
- Configurable cache TTL for update checks (1-168 hours, default: 12)
|
||||||
|
- Secure download authentication via `X-License-Key` header
|
||||||
|
- Response signing support for tamper-proof update responses
|
||||||
|
|
||||||
|
**Modified files:**
|
||||||
|
|
||||||
|
- `src/Plugin.php` - Added UpdateController and PluginUpdateChecker initialization
|
||||||
|
- `src/Admin/SettingsController.php` - Added 'auto-updates' section with settings
|
||||||
|
- `openapi.json` - Documented `/update-check` endpoint with request/response schemas
|
||||||
|
- `languages/*` - Updated translations for new strings
|
||||||
|
|
||||||
|
**Settings Controller Changes:**
|
||||||
|
|
||||||
|
- Added `'auto-updates'` to `getSections()` for sub-tab navigation
|
||||||
|
- New `getAutoUpdatesSettings()` method returning enable/frequency settings
|
||||||
|
- New static methods: `isAutoUpdateEnabled()`, `getUpdateCheckFrequency()`
|
||||||
|
|
||||||
|
**UpdateController API:**
|
||||||
|
|
||||||
|
- Endpoint: `POST /wp-json/wc-licensed-product/v1/update-check`
|
||||||
|
- Request: `license_key`, `domain`, `plugin_slug` (optional), `current_version` (optional)
|
||||||
|
- Response: `update_available`, `version`, `download_url`, `package`, `changelog`, `tested`, `requires`, `requires_php`, etc.
|
||||||
|
- License validation before serving update info
|
||||||
|
- Secure download URL generation using existing DownloadController patterns
|
||||||
|
|
||||||
|
**PluginUpdateChecker Features:**
|
||||||
|
|
||||||
|
- Singleton pattern with `getInstance()`
|
||||||
|
- Caching via WordPress transients (`wclp_update_info`)
|
||||||
|
- Automatic cache clearing on settings save
|
||||||
|
- Only activates when license server URL is configured and not self-licensing
|
||||||
|
- `forceUpdateCheck()` method for manual refresh
|
||||||
|
|
||||||
|
**Configuration:**
|
||||||
|
|
||||||
|
To disable auto-updates programmatically:
|
||||||
|
|
||||||
|
```php
|
||||||
|
define('WC_LICENSE_DISABLE_AUTO_UPDATE', true);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Technical notes:**
|
||||||
|
|
||||||
|
- Update checker only registers when `SettingsController::getPluginLicenseServerUrl()` returns a value
|
||||||
|
- Self-licensing detection prevents circular update checks (via `PluginLicenseChecker::isSelfLicensing()`)
|
||||||
|
- Download URLs include license key in `X-License-Key` header for server-side verification
|
||||||
|
- Uses Symfony HttpClient for server requests with 15s timeout
|
||||||
|
- Cache TTL configurable from 1-168 hours in settings
|
||||||
|
- OpenAPI spec updated to version 0.6.0 with full `/update-check` documentation
|
||||||
|
|
||||||
|
**Release v0.6.0:**
|
||||||
|
|
||||||
|
- Created release package: `releases/wc-licensed-product-0.6.0.zip` (1.1 MB)
|
||||||
|
- SHA256: `171c8195c586b3b20bac4a806e2d698cdaaf15966e2fd6e1670ec39dac8ab027`
|
||||||
|
- Tagged as `v0.6.0` and pushed to `main` branch
|
||||||
|
|||||||
Reference in New Issue
Block a user