@jezweb/jezpress-cli 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/dist/cli.js +31 -1
- package/dist/cli.js.map +1 -1
- package/dist/docs.d.ts +9 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +670 -0
- package/dist/docs.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,13 +59,20 @@ jezpress plugins changelog <slug> <version>
|
|
|
59
59
|
```bash
|
|
60
60
|
# Create a new plugin (you become the owner)
|
|
61
61
|
jezpress plugins create my-plugin --name "My Plugin"
|
|
62
|
+
jezpress plugins create my-plugin --name "My Plugin" -v 2.0.0 # with initial version
|
|
62
63
|
|
|
63
64
|
# Update plugin metadata
|
|
64
65
|
jezpress plugins update my-plugin --tested-wp 6.7
|
|
65
66
|
|
|
66
|
-
# Upload a new version
|
|
67
|
+
# Upload a new version (version auto-detected from plugin header)
|
|
68
|
+
jezpress plugins upload my-plugin ./dist/my-plugin.zip
|
|
69
|
+
|
|
70
|
+
# Upload with explicit version
|
|
67
71
|
jezpress plugins upload my-plugin ./dist/my-plugin.zip -v 1.2.0
|
|
68
72
|
|
|
73
|
+
# Upload and sync metadata (requires_php, requires_wp, tested_wp) from plugin headers
|
|
74
|
+
jezpress plugins upload my-plugin ./dist/my-plugin.zip --sync-metadata
|
|
75
|
+
|
|
69
76
|
# Validate plugin ZIP before uploading
|
|
70
77
|
jezpress plugins preflight my-plugin ./dist/my-plugin.zip
|
|
71
78
|
```
|
package/dist/cli.js
CHANGED
|
@@ -5,6 +5,7 @@ import { deleteToken } from './config.js';
|
|
|
5
5
|
import * as api from './client.js';
|
|
6
6
|
import { existsSync, statSync, writeFileSync } from 'node:fs';
|
|
7
7
|
import AdmZip from 'adm-zip';
|
|
8
|
+
import { PLATFORM_GUIDE, PROJECT_CLAUDE_MD } from './docs.js';
|
|
8
9
|
const program = new Command();
|
|
9
10
|
/**
|
|
10
11
|
* Extract WordPress plugin headers from a ZIP file
|
|
@@ -55,7 +56,7 @@ function extractPluginHeaders(zipPath, slug) {
|
|
|
55
56
|
program
|
|
56
57
|
.name('jezpress')
|
|
57
58
|
.description('CLI for managing JezPress plugins on the update server')
|
|
58
|
-
.version('1.
|
|
59
|
+
.version('1.3.0');
|
|
59
60
|
// ============================================================
|
|
60
61
|
// Auth Commands
|
|
61
62
|
// ============================================================
|
|
@@ -80,6 +81,35 @@ program
|
|
|
80
81
|
deleteToken();
|
|
81
82
|
console.log('Logged out successfully');
|
|
82
83
|
});
|
|
84
|
+
// ============================================================
|
|
85
|
+
// Docs Command
|
|
86
|
+
// ============================================================
|
|
87
|
+
program
|
|
88
|
+
.command('docs')
|
|
89
|
+
.description('Display JezPress platform guide for developers and Claude Code')
|
|
90
|
+
.option('--save [path]', 'Save guide to file (default: JEZPRESS.md)')
|
|
91
|
+
.option('--claude', 'Generate project-level CLAUDE.md template')
|
|
92
|
+
.action((options) => {
|
|
93
|
+
if (options.claude) {
|
|
94
|
+
const path = 'CLAUDE.md';
|
|
95
|
+
if (existsSync(path)) {
|
|
96
|
+
console.error(`File already exists: ${path}`);
|
|
97
|
+
console.log('Remove it first or use a different location.');
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
writeFileSync(path, PROJECT_CLAUDE_MD);
|
|
101
|
+
console.log(`Project CLAUDE.md saved to: ${path}`);
|
|
102
|
+
console.log('Add this to your plugin repository for Claude Code context.');
|
|
103
|
+
}
|
|
104
|
+
else if (options.save !== undefined) {
|
|
105
|
+
const path = typeof options.save === 'string' ? options.save : 'JEZPRESS.md';
|
|
106
|
+
writeFileSync(path, PLATFORM_GUIDE);
|
|
107
|
+
console.log(`Platform guide saved to: ${path}`);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log(PLATFORM_GUIDE);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
83
113
|
program
|
|
84
114
|
.command('whoami')
|
|
85
115
|
.description('Show current user info and owned plugins')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/docs.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JezPress Platform Documentation
|
|
3
|
+
*
|
|
4
|
+
* This module contains comprehensive documentation for the JezPress platform,
|
|
5
|
+
* designed to be consumed by both humans and AI assistants (Claude Code).
|
|
6
|
+
*/
|
|
7
|
+
export declare const PLATFORM_GUIDE = "# JezPress Platform Guide\n\nThis guide teaches you (and your Claude Code) how to use the JezPress plugin update system.\n\n---\n\n## Quick Reference\n\n### Services\n\n| Service | URL | Purpose |\n|---------|-----|---------|\n| Update Server | `https://updates.jezpress.com` | Plugin updates, downloads, metadata |\n| Auth Server | `https://auth.jezpress.com` | OAuth authentication |\n| Admin Dashboard | `https://admin.jezpress.com` | Web UI for plugin management |\n| MCP Server | `https://mcp.jezpress.com/mcp` | Claude Code integration |\n\n### Developer API Endpoints\n\nAll authenticated endpoints use `https://updates.jezpress.com/api/dev/`:\n\n| Endpoint | Method | Purpose |\n|----------|--------|---------|\n| `/whoami` | GET | Current user info + owned plugins |\n| `/plugins` | GET | List all plugins |\n| `/plugins` | POST | Create new plugin |\n| `/plugins/{slug}` | GET | Plugin details |\n| `/plugins/{slug}` | PATCH | Update plugin metadata |\n| `/plugins/{slug}/upload?version=X` | POST | Upload version ZIP |\n| `/plugins/{slug}/versions` | GET | List all versions |\n| `/plugins/{slug}/versions/{ver}` | PATCH | Update changelog |\n| `/plugins/{slug}/versions/{ver}` | DELETE | Delete version |\n| `/plugins/{slug}/versions/{ver}/download` | GET | Download ZIP |\n| `/plugins/{slug}/stats` | GET | Download statistics |\n| `/plugins/{slug}/transfer` | POST | Transfer ownership |\n\n### Public API (WordPress Sites Use These)\n\n| Endpoint | Method | Purpose |\n|----------|--------|---------|\n| `/api/v1/update?plugin=X&version=Y` | GET | Check for updates |\n| `/api/v1/info?plugin=X` | GET | Plugin information popup |\n| `/api/v1/download?plugin=X&version=Y` | GET | Download ZIP file |\n\n### CLI Commands\n\n```bash\n# Authentication\njezpress login # Authenticate with Jezweb Google account\njezpress logout # Remove stored token\njezpress whoami # Show current user and owned plugins\n\n# Plugin Management\njezpress plugins list # List all plugins\njezpress plugins list --mine # Only your plugins\njezpress plugins get <slug> # Get plugin details\njezpress plugins create <slug> --name \"Name\" # Create new plugin\njezpress plugins update <slug> --tested-wp 6.7 # Update metadata\n\n# Version Management\njezpress plugins upload <slug> <zip> # Upload new version (auto-detects version)\njezpress plugins upload <slug> <zip> --sync-metadata # Also sync requires_php/wp/tested\njezpress plugins preflight <slug> <zip> # Validate ZIP before upload\njezpress plugins versions <slug> # List all versions\njezpress plugins stats <slug> # Download statistics\njezpress plugins download <slug> <version> # Download version ZIP\njezpress plugins delete-version <slug> <version> -y # Delete version\njezpress plugins changelog <slug> [version] # View/set changelog\n\n# Ownership\njezpress plugins transfer <slug> <email> -y # Transfer to another @jezweb user\n```\n\n### MCP Tools (14 tools)\n\nWhen connected to `https://mcp.jezpress.com/mcp`:\n\n| Tool | Purpose |\n|------|---------|\n| `whoami` | Current user info |\n| `list_plugins` | List plugins (with `mine_only` filter) |\n| `get_plugin` | Plugin details |\n| `create_plugin` | Create new plugin |\n| `update_plugin` | Update metadata |\n| `upload_version` | Upload ZIP (base64 encoded) |\n| `preflight_check` | Validate ZIP structure |\n| `list_versions` | List versions |\n| `get_stats` | Download statistics |\n| `download_version` | Download ZIP (returns base64) |\n| `delete_version` | Delete a version |\n| `update_changelog` | Update version changelog |\n| `transfer_ownership` | Transfer to another user |\n| `get_platform_guide` | Get this documentation |\n\n---\n\n## For Existing Plugins (Step-by-Step)\n\nFollow these steps to add JezPress auto-updates to an existing WordPress plugin.\n\n### Step 1: Install the CLI\n\n```bash\nnpm install -g @jezweb/jezpress-cli\n```\n\n### Step 2: Authenticate\n\n```bash\njezpress login\n```\n\nOpens browser for Google OAuth. Requires @jezweb.net or @jezweb.com.au email.\n\n### Step 3: Register Your Plugin\n\n```bash\njezpress plugins create my-plugin --name \"My Plugin\"\n```\n\nThis creates the plugin entry. You are now the owner.\n\n### Step 4: Add the Updater Class\n\nCopy the updater class from the starter template. The class handles:\n- Checking for updates via `/api/v1/update`\n- Displaying plugin info via `/api/v1/info`\n- Downloading updates from the server\n\n**Updater Class Template:**\n\n```php\n<?php\n/**\n * JezPress Update Handler\n */\n\nif (!defined('ABSPATH')) {\n exit;\n}\n\nclass My_Plugin_Updater {\n private string $api_url = 'https://updates.jezpress.com/api/v1';\n private string $plugin_slug;\n private string $plugin_file;\n private string $version;\n private string $cache_key;\n\n public function __construct() {\n $this->plugin_slug = MY_PLUGIN_SLUG; // Your constant\n $this->plugin_file = MY_PLUGIN_BASENAME; // plugin_basename(__FILE__)\n $this->version = MY_PLUGIN_VERSION; // Your version constant\n $this->cache_key = 'my_plugin_update_check'; // Unique cache key\n }\n\n public function init(): void {\n add_filter('pre_set_site_transient_update_plugins', [$this, 'check_for_update']);\n add_filter('plugins_api', [$this, 'plugin_info'], 10, 3);\n add_action('upgrader_process_complete', [$this, 'clear_cache'], 10, 2);\n }\n\n public function check_for_update($transient) {\n if (empty($transient->checked)) {\n return $transient;\n }\n\n $cached = get_transient($this->cache_key);\n if ($cached !== false) {\n if ($cached === 'no_update') {\n return $transient;\n }\n $transient->response[$this->plugin_file] = $cached;\n return $transient;\n }\n\n $response = wp_remote_get(add_query_arg([\n 'plugin' => $this->plugin_slug,\n 'version' => $this->version,\n ], $this->api_url . '/update'), ['timeout' => 10]);\n\n if (is_wp_error($response)) {\n return $transient;\n }\n\n $data = json_decode(wp_remote_retrieve_body($response), true);\n\n if (empty($data['success']) || empty($data['update_available'])) {\n set_transient($this->cache_key, 'no_update', 12 * HOUR_IN_SECONDS);\n return $transient;\n }\n\n $plugin_data = (object) [\n 'slug' => $this->plugin_slug,\n 'plugin' => $this->plugin_file,\n 'new_version' => $data['version'],\n 'package' => $data['download_url'],\n 'url' => $data['homepage'] ?? '',\n 'requires' => $data['requires_wp'] ?? '',\n 'tested' => $data['tested_wp'] ?? '',\n 'requires_php' => $data['requires_php'] ?? '',\n ];\n\n set_transient($this->cache_key, $plugin_data, 12 * HOUR_IN_SECONDS);\n $transient->response[$this->plugin_file] = $plugin_data;\n\n return $transient;\n }\n\n public function plugin_info($result, $action, $args) {\n if ($action !== 'plugin_information' || ($args->slug ?? '') !== $this->plugin_slug) {\n return $result;\n }\n\n $response = wp_remote_get(add_query_arg([\n 'plugin' => $this->plugin_slug,\n ], $this->api_url . '/info'), ['timeout' => 10]);\n\n if (is_wp_error($response)) {\n return $result;\n }\n\n $data = json_decode(wp_remote_retrieve_body($response), true);\n\n if (empty($data['success'])) {\n return $result;\n }\n\n return (object) [\n 'name' => $data['name'],\n 'slug' => $this->plugin_slug,\n 'version' => $data['version'],\n 'author' => sprintf('<a href=\"%s\">%s</a>',\n esc_url($data['author_homepage'] ?? ''),\n esc_html($data['author'] ?? '')),\n 'homepage' => $data['homepage'] ?? '',\n 'requires' => $data['requires_wp'] ?? '',\n 'tested' => $data['tested_wp'] ?? '',\n 'requires_php' => $data['requires_php'] ?? '',\n 'last_updated' => $data['last_updated'] ?? '',\n 'sections' => $data['sections'] ?? [],\n 'banners' => $data['banners'] ?? [],\n ];\n }\n\n public function clear_cache($upgrader, $options): void {\n if ($options['action'] === 'update' && $options['type'] === 'plugin') {\n delete_transient($this->cache_key);\n }\n }\n}\n```\n\n### Step 5: Initialize the Updater\n\nIn your main plugin file:\n\n```php\n// After your constants are defined\nrequire_once MY_PLUGIN_DIR . 'includes/class-my-plugin-updater.php';\n\nadd_action('plugins_loaded', function() {\n $updater = new My_Plugin_Updater();\n $updater->init();\n});\n```\n\n### Step 6: Create the ZIP\n\n```bash\n# From PARENT directory of your plugin folder\ncd /path/to/plugins\nzip -r my-plugin.zip my-plugin -x \"*.DS_Store\" -x \"*__MACOSX*\" -x \"*.git*\"\n```\n\n### Step 7: Validate and Upload\n\n```bash\n# Validate first\njezpress plugins preflight my-plugin ./my-plugin.zip\n\n# Upload (auto-detects version from plugin header)\njezpress plugins upload my-plugin ./my-plugin.zip\n\n# Optionally sync metadata from plugin header\njezpress plugins upload my-plugin ./my-plugin.zip --sync-metadata\n```\n\n### Step 8: Verify\n\n```bash\n# Check it's registered\njezpress plugins get my-plugin\n\n# Test the public API\ncurl \"https://updates.jezpress.com/api/v1/info?plugin=my-plugin\"\n```\n\n---\n\n## For New Plugins (Step-by-Step)\n\nStart from the JezPress starter template for new plugins.\n\n### Step 1: Get the Starter Template\n\n```bash\n# Clone or download from GitHub\ngit clone https://github.com/jezweb/jezpress-starter-plugin.git\ncd jezpress-starter-plugin\n\n# Copy the template folder\ncp -r jezweb-starter my-awesome-plugin\n```\n\n### Step 2: Rename Everything\n\nThis is critical. Every reference must match your slug.\n\n**Files to rename:**\n- `jezweb-starter.php` \u2192 `my-awesome-plugin.php`\n- `includes/class-jezweb-starter-updater.php` \u2192 `includes/class-my-awesome-plugin-updater.php`\n\n**Find and replace in all PHP files:**\n\n| Find | Replace |\n|------|---------|\n| `jezweb-starter` | `my-awesome-plugin` |\n| `jezweb_starter` | `my_awesome_plugin` |\n| `JEZWEB_STARTER_` | `MY_AWESOME_PLUGIN_` |\n| `Jezweb_Starter_` | `My_Awesome_Plugin_` |\n\n### Step 3: Update Plugin Header\n\nEdit your main plugin file:\n\n```php\n<?php\n/**\n * Plugin Name: My Awesome Plugin\n * Plugin URI: https://jezweb.com.au/plugins/my-awesome-plugin\n * Description: What your plugin does.\n * Version: 1.0.0\n * Author: Jezweb\n * Author URI: https://jezweb.com.au\n * License: Proprietary\n * License URI: https://jezweb.com.au/terms\n * Text Domain: my-awesome-plugin\n * Requires at least: 6.0\n * Requires PHP: 8.0\n * Tested up to: 6.7\n */\n```\n\n### Step 4: Register and Upload\n\n```bash\njezpress login\njezpress plugins create my-awesome-plugin --name \"My Awesome Plugin\"\n\n# Create ZIP and upload\ncd /path/to/plugins\nzip -r my-awesome-plugin.zip my-awesome-plugin -x \"*.git*\"\njezpress plugins upload my-awesome-plugin ./my-awesome-plugin.zip --sync-metadata\n```\n\n### Step 5: Test Auto-Updates\n\n1. Install the plugin on a test WordPress site\n2. Increment the version in plugin header (1.0.0 \u2192 1.0.1)\n3. Create new ZIP and upload\n4. Check WordPress admin \u2192 Plugins \u2192 should show update available\n\n---\n\n## Naming Conventions (CRITICAL)\n\nEverything must match. Use lowercase-with-hyphens for the slug:\n\n| Component | Format | Example |\n|-----------|--------|---------|\n| Plugin folder | `lowercase-with-hyphens` | `my-awesome-plugin` |\n| Main PHP file | `{slug}.php` | `my-awesome-plugin.php` |\n| Constants | `UPPERCASE_WITH_UNDERSCORES` | `MY_AWESOME_PLUGIN_VERSION` |\n| Class names | `Title_Case_With_Underscores` | `My_Awesome_Plugin_Updater` |\n| Text domain | Same as slug | `my-awesome-plugin` |\n| Cache key | `{snake_case}_update_check` | `my_awesome_plugin_update_check` |\n| Function prefix | `{snake_case}_` | `my_awesome_plugin_init()` |\n\n---\n\n## ZIP Structure Requirements\n\nThe ZIP structure is critical for WordPress installation and updates:\n\n```\nmy-awesome-plugin.zip\n\u2514\u2500\u2500 my-awesome-plugin/ \u2190 Folder name MUST match slug\n \u251C\u2500\u2500 my-awesome-plugin.php \u2190 Main file MUST be {slug}.php\n \u251C\u2500\u2500 includes/\n \u2502 \u2514\u2500\u2500 class-my-awesome-plugin-updater.php\n \u251C\u2500\u2500 assets/\n \u2502 \u251C\u2500\u2500 css/\n \u2502 \u2514\u2500\u2500 js/\n \u251C\u2500\u2500 uninstall.php\n \u2514\u2500\u2500 readme.txt\n```\n\n### Common ZIP Mistakes\n\n| Mistake | Result | Fix |\n|---------|--------|-----|\n| Files at ZIP root (no folder) | Install fails | Ensure plugin folder is at root |\n| Folder name != slug | Updates don't work | Rename folder to match slug |\n| Main file != {slug}.php | Plugin won't activate | Rename to {slug}.php |\n| Double nesting (slug/slug/files) | Install fails | Check ZIP structure |\n| .git folder included | Large ZIP, security risk | Exclude with `-x \"*.git*\"` |\n\n### Creating the ZIP\n\n```bash\n# CORRECT: From parent directory\ncd /path/to/plugins\nzip -r my-plugin.zip my-plugin -x \"*.DS_Store\" -x \"*.git*\"\n\n# WRONG: From inside plugin directory\ncd my-plugin\nzip -r ../my-plugin.zip . # Creates wrong structure!\n```\n\n---\n\n## How Auto-Updates Work\n\n### Architecture\n\n```\nWordPress Site JezPress Update Server\n \u2502 \u2502\n \u251C\u2500\u2500\u2500 GET /api/v1/update \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500>\u2502\n \u2502 ?plugin=X&version=Y \u2502\n \u2502 \u2502\n \u2502<\u2500\u2500 JSON response \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 { \u2502\n \u2502 update_available: true, \u2502\n \u2502 version: \"1.2.0\", \u2502\n \u2502 download_url: \"https://...\" \u2502\n \u2502 } \u2502\n \u2502 \u2502\n \u251C\u2500\u2500\u2500 GET download_url \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500>\u2502\n \u2502 \u2502\n \u2502<\u2500\u2500 ZIP file \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n```\n\n### Update Check Flow\n\n1. WordPress periodically checks for plugin updates\n2. Your updater class hooks into `pre_set_site_transient_update_plugins`\n3. Updater queries `/api/v1/update?plugin=slug&version=current`\n4. Server compares versions, returns update info if newer available\n5. WordPress shows \"Update available\" in admin\n6. User clicks Update \u2192 WordPress downloads from `download_url`\n7. Updater clears cache after update completes\n\n### Caching\n\n- Updater caches responses for 12 hours (reduces API calls)\n- WordPress also caches update checks\n- Force check: Delete transient `{slug}_update_check`\n- Or wait 12 hours for cache to expire\n\n---\n\n## Version Update Workflow\n\nWhen releasing a new version:\n\n```bash\n# 1. Update version in plugin header AND constant\nvim my-plugin/my-plugin.php\n# Change: Version: 1.0.0 \u2192 1.1.0\n# Change: define('MY_PLUGIN_VERSION', '1.1.0');\n\n# 2. Update changelog (optional)\n# Add entry to readme.txt or your changelog\n\n# 3. Create ZIP\ncd /path/to/plugins\nzip -r my-plugin.zip my-plugin -x \"*.DS_Store\" -x \"*.git*\"\n\n# 4. Validate\njezpress plugins preflight my-plugin ./my-plugin.zip\n\n# 5. Upload\njezpress plugins upload my-plugin ./my-plugin.zip\n\n# 6. Set changelog\njezpress plugins changelog my-plugin 1.1.0 -s \"Added feature X, fixed bug Y\"\n\n# 7. Verify\njezpress plugins versions my-plugin\n```\n\n---\n\n## Troubleshooting\n\n### Updates Not Showing in WordPress\n\n1. **Cache**: WordPress caches for 12 hours\n - Delete transient: `delete_transient('{slug}_update_check');`\n - Or use a plugin like \"Force Reload\" to clear update cache\n\n2. **Slug Mismatch**: Plugin folder must match registered slug exactly\n - Check: `wp plugin list` shows correct slug?\n - The slug in updater class must match the registered slug\n\n3. **Version Format**: Use semantic versioning (X.Y.Z)\n - Bad: `1.0` or `v1.0.0`\n - Good: `1.0.0`\n\n4. **Updater Not Loaded**: Check the class is included and initialized\n - Add `error_log('Updater loaded');` to verify\n\n5. **Wrong Version Comparison**: Current version >= server version\n - Check: `jezpress plugins get {slug}` shows correct version?\n\n### Download Failing\n\n1. **Version Not Uploaded**: ZIP not uploaded for that version\n - Check: `jezpress plugins versions {slug}`\n\n2. **License Required**: If plugin has `requires_license: true`\n - Ensure site has valid license activated\n\n### Upload Failing\n\n1. **Not Owner**: Only plugin owner can upload\n - Check: `jezpress whoami`\n\n2. **Invalid ZIP**: Missing main plugin file or wrong structure\n - Run: `jezpress plugins preflight {slug} {zip}`\n\n3. **Auth Expired**: Token expired\n - Run: `jezpress login`\n\n4. **Version Already Exists**: Can't overwrite existing version\n - Delete first: `jezpress plugins delete-version {slug} {version} -y`\n\n### MCP Connection Issues\n\n1. **Domain Restriction**: Only @jezweb.net and @jezweb.com.au\n2. **Re-authenticate**: Remove and re-add the MCP server\n3. **Check URL**: Must be `https://mcp.jezpress.com/mcp`\n\n### \"View Details\" Not Working\n\n1. **Info Endpoint**: `/api/v1/info` must return data\n - Test: `curl \"https://updates.jezpress.com/api/v1/info?plugin={slug}\"`\n\n2. **Slug Match**: `$args->slug` in `plugin_info()` must match\n\n---\n\n## Authentication\n\n### CLI Token\n\n- Stored at: `~/.jezpress-token`\n- JWT signed by auth server\n- Requires @jezweb.net or @jezweb.com.au Google account\n- Expiry checked locally before API calls\n\n### API Authentication\n\nAll `/api/dev/*` endpoints require:\n```\nAuthorization: Bearer <jwt-token>\n```\n\n### Domain Restriction\n\nOnly these email domains can authenticate:\n- @jezweb.net\n- @jezweb.com.au\n\n---\n\n## Starter Template Location\n\nGitHub: `https://github.com/jezweb/jezpress-starter-plugin`\n\nThe template includes:\n- Main plugin file with JezPress integration\n- Updater class ready to customize\n- uninstall.php cleanup handler\n- Documentation (CLAUDE-GUIDE.md, JEZPRESS_MIGRATION.md)\n\n---\n\n## Getting Help\n\n- **CLI Help**: `jezpress --help` or `jezpress plugins --help`\n- **This Guide**: `jezpress docs`\n- **Admin Dashboard**: https://admin.jezpress.com\n- **MCP Tool**: Use `get_platform_guide` tool\n";
|
|
8
|
+
export declare const PROJECT_CLAUDE_MD = "# CLAUDE.md - JezPress Plugin\n\nThis plugin uses the JezPress Update Server for automatic updates.\n\n## Quick Reference\n\n| Service | URL |\n|---------|-----|\n| Update Server | `https://updates.jezpress.com` |\n| CLI | `npm install -g @jezweb/jezpress-cli` |\n| MCP Server | `https://mcp.jezpress.com/mcp` |\n\n## Commands\n\n```bash\njezpress login # Authenticate\njezpress whoami # Check current user\njezpress plugins list --mine # List your plugins\njezpress plugins get <slug> # Plugin details\njezpress plugins preflight <slug> <zip> # Validate before upload\njezpress plugins upload <slug> <zip> # Upload new version\njezpress plugins versions <slug> # List versions\n```\n\n## Version Update Workflow\n\n1. Update `Version:` in plugin header\n2. Update version constant\n3. Create ZIP: `zip -r <slug>.zip <slug> -x \"*.git*\"`\n4. Validate: `jezpress plugins preflight <slug> ./<slug>.zip`\n5. Upload: `jezpress plugins upload <slug> ./<slug>.zip`\n\n## ZIP Structure (Critical)\n\n```\n<slug>.zip\n\u2514\u2500\u2500 <slug>/ \u2190 Folder must match slug\n \u251C\u2500\u2500 <slug>.php \u2190 Main file must be slug.php\n \u2514\u2500\u2500 includes/\n \u2514\u2500\u2500 class-<slug>-updater.php\n```\n\n## Naming Conventions\n\n| Component | Format | Example |\n|-----------|--------|---------|\n| Folder | lowercase-hyphen | my-plugin |\n| Main file | {slug}.php | my-plugin.php |\n| Constants | UPPER_SNAKE | MY_PLUGIN_VERSION |\n| Classes | Title_Case | My_Plugin_Updater |\n\n## Full Documentation\n\nRun `jezpress docs` for complete platform guide.\n\nOr use MCP tool: `get_platform_guide`\n";
|
|
9
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,cAAc,kwlBA6lB1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,uqDAwD7B,CAAC"}
|
package/dist/docs.js
ADDED
|
@@ -0,0 +1,670 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JezPress Platform Documentation
|
|
3
|
+
*
|
|
4
|
+
* This module contains comprehensive documentation for the JezPress platform,
|
|
5
|
+
* designed to be consumed by both humans and AI assistants (Claude Code).
|
|
6
|
+
*/
|
|
7
|
+
export const PLATFORM_GUIDE = `# JezPress Platform Guide
|
|
8
|
+
|
|
9
|
+
This guide teaches you (and your Claude Code) how to use the JezPress plugin update system.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Quick Reference
|
|
14
|
+
|
|
15
|
+
### Services
|
|
16
|
+
|
|
17
|
+
| Service | URL | Purpose |
|
|
18
|
+
|---------|-----|---------|
|
|
19
|
+
| Update Server | \`https://updates.jezpress.com\` | Plugin updates, downloads, metadata |
|
|
20
|
+
| Auth Server | \`https://auth.jezpress.com\` | OAuth authentication |
|
|
21
|
+
| Admin Dashboard | \`https://admin.jezpress.com\` | Web UI for plugin management |
|
|
22
|
+
| MCP Server | \`https://mcp.jezpress.com/mcp\` | Claude Code integration |
|
|
23
|
+
|
|
24
|
+
### Developer API Endpoints
|
|
25
|
+
|
|
26
|
+
All authenticated endpoints use \`https://updates.jezpress.com/api/dev/\`:
|
|
27
|
+
|
|
28
|
+
| Endpoint | Method | Purpose |
|
|
29
|
+
|----------|--------|---------|
|
|
30
|
+
| \`/whoami\` | GET | Current user info + owned plugins |
|
|
31
|
+
| \`/plugins\` | GET | List all plugins |
|
|
32
|
+
| \`/plugins\` | POST | Create new plugin |
|
|
33
|
+
| \`/plugins/{slug}\` | GET | Plugin details |
|
|
34
|
+
| \`/plugins/{slug}\` | PATCH | Update plugin metadata |
|
|
35
|
+
| \`/plugins/{slug}/upload?version=X\` | POST | Upload version ZIP |
|
|
36
|
+
| \`/plugins/{slug}/versions\` | GET | List all versions |
|
|
37
|
+
| \`/plugins/{slug}/versions/{ver}\` | PATCH | Update changelog |
|
|
38
|
+
| \`/plugins/{slug}/versions/{ver}\` | DELETE | Delete version |
|
|
39
|
+
| \`/plugins/{slug}/versions/{ver}/download\` | GET | Download ZIP |
|
|
40
|
+
| \`/plugins/{slug}/stats\` | GET | Download statistics |
|
|
41
|
+
| \`/plugins/{slug}/transfer\` | POST | Transfer ownership |
|
|
42
|
+
|
|
43
|
+
### Public API (WordPress Sites Use These)
|
|
44
|
+
|
|
45
|
+
| Endpoint | Method | Purpose |
|
|
46
|
+
|----------|--------|---------|
|
|
47
|
+
| \`/api/v1/update?plugin=X&version=Y\` | GET | Check for updates |
|
|
48
|
+
| \`/api/v1/info?plugin=X\` | GET | Plugin information popup |
|
|
49
|
+
| \`/api/v1/download?plugin=X&version=Y\` | GET | Download ZIP file |
|
|
50
|
+
|
|
51
|
+
### CLI Commands
|
|
52
|
+
|
|
53
|
+
\`\`\`bash
|
|
54
|
+
# Authentication
|
|
55
|
+
jezpress login # Authenticate with Jezweb Google account
|
|
56
|
+
jezpress logout # Remove stored token
|
|
57
|
+
jezpress whoami # Show current user and owned plugins
|
|
58
|
+
|
|
59
|
+
# Plugin Management
|
|
60
|
+
jezpress plugins list # List all plugins
|
|
61
|
+
jezpress plugins list --mine # Only your plugins
|
|
62
|
+
jezpress plugins get <slug> # Get plugin details
|
|
63
|
+
jezpress plugins create <slug> --name "Name" # Create new plugin
|
|
64
|
+
jezpress plugins update <slug> --tested-wp 6.7 # Update metadata
|
|
65
|
+
|
|
66
|
+
# Version Management
|
|
67
|
+
jezpress plugins upload <slug> <zip> # Upload new version (auto-detects version)
|
|
68
|
+
jezpress plugins upload <slug> <zip> --sync-metadata # Also sync requires_php/wp/tested
|
|
69
|
+
jezpress plugins preflight <slug> <zip> # Validate ZIP before upload
|
|
70
|
+
jezpress plugins versions <slug> # List all versions
|
|
71
|
+
jezpress plugins stats <slug> # Download statistics
|
|
72
|
+
jezpress plugins download <slug> <version> # Download version ZIP
|
|
73
|
+
jezpress plugins delete-version <slug> <version> -y # Delete version
|
|
74
|
+
jezpress plugins changelog <slug> [version] # View/set changelog
|
|
75
|
+
|
|
76
|
+
# Ownership
|
|
77
|
+
jezpress plugins transfer <slug> <email> -y # Transfer to another @jezweb user
|
|
78
|
+
\`\`\`
|
|
79
|
+
|
|
80
|
+
### MCP Tools (14 tools)
|
|
81
|
+
|
|
82
|
+
When connected to \`https://mcp.jezpress.com/mcp\`:
|
|
83
|
+
|
|
84
|
+
| Tool | Purpose |
|
|
85
|
+
|------|---------|
|
|
86
|
+
| \`whoami\` | Current user info |
|
|
87
|
+
| \`list_plugins\` | List plugins (with \`mine_only\` filter) |
|
|
88
|
+
| \`get_plugin\` | Plugin details |
|
|
89
|
+
| \`create_plugin\` | Create new plugin |
|
|
90
|
+
| \`update_plugin\` | Update metadata |
|
|
91
|
+
| \`upload_version\` | Upload ZIP (base64 encoded) |
|
|
92
|
+
| \`preflight_check\` | Validate ZIP structure |
|
|
93
|
+
| \`list_versions\` | List versions |
|
|
94
|
+
| \`get_stats\` | Download statistics |
|
|
95
|
+
| \`download_version\` | Download ZIP (returns base64) |
|
|
96
|
+
| \`delete_version\` | Delete a version |
|
|
97
|
+
| \`update_changelog\` | Update version changelog |
|
|
98
|
+
| \`transfer_ownership\` | Transfer to another user |
|
|
99
|
+
| \`get_platform_guide\` | Get this documentation |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## For Existing Plugins (Step-by-Step)
|
|
104
|
+
|
|
105
|
+
Follow these steps to add JezPress auto-updates to an existing WordPress plugin.
|
|
106
|
+
|
|
107
|
+
### Step 1: Install the CLI
|
|
108
|
+
|
|
109
|
+
\`\`\`bash
|
|
110
|
+
npm install -g @jezweb/jezpress-cli
|
|
111
|
+
\`\`\`
|
|
112
|
+
|
|
113
|
+
### Step 2: Authenticate
|
|
114
|
+
|
|
115
|
+
\`\`\`bash
|
|
116
|
+
jezpress login
|
|
117
|
+
\`\`\`
|
|
118
|
+
|
|
119
|
+
Opens browser for Google OAuth. Requires @jezweb.net or @jezweb.com.au email.
|
|
120
|
+
|
|
121
|
+
### Step 3: Register Your Plugin
|
|
122
|
+
|
|
123
|
+
\`\`\`bash
|
|
124
|
+
jezpress plugins create my-plugin --name "My Plugin"
|
|
125
|
+
\`\`\`
|
|
126
|
+
|
|
127
|
+
This creates the plugin entry. You are now the owner.
|
|
128
|
+
|
|
129
|
+
### Step 4: Add the Updater Class
|
|
130
|
+
|
|
131
|
+
Copy the updater class from the starter template. The class handles:
|
|
132
|
+
- Checking for updates via \`/api/v1/update\`
|
|
133
|
+
- Displaying plugin info via \`/api/v1/info\`
|
|
134
|
+
- Downloading updates from the server
|
|
135
|
+
|
|
136
|
+
**Updater Class Template:**
|
|
137
|
+
|
|
138
|
+
\`\`\`php
|
|
139
|
+
<?php
|
|
140
|
+
/**
|
|
141
|
+
* JezPress Update Handler
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
if (!defined('ABSPATH')) {
|
|
145
|
+
exit;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
class My_Plugin_Updater {
|
|
149
|
+
private string $api_url = 'https://updates.jezpress.com/api/v1';
|
|
150
|
+
private string $plugin_slug;
|
|
151
|
+
private string $plugin_file;
|
|
152
|
+
private string $version;
|
|
153
|
+
private string $cache_key;
|
|
154
|
+
|
|
155
|
+
public function __construct() {
|
|
156
|
+
$this->plugin_slug = MY_PLUGIN_SLUG; // Your constant
|
|
157
|
+
$this->plugin_file = MY_PLUGIN_BASENAME; // plugin_basename(__FILE__)
|
|
158
|
+
$this->version = MY_PLUGIN_VERSION; // Your version constant
|
|
159
|
+
$this->cache_key = 'my_plugin_update_check'; // Unique cache key
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
public function init(): void {
|
|
163
|
+
add_filter('pre_set_site_transient_update_plugins', [$this, 'check_for_update']);
|
|
164
|
+
add_filter('plugins_api', [$this, 'plugin_info'], 10, 3);
|
|
165
|
+
add_action('upgrader_process_complete', [$this, 'clear_cache'], 10, 2);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
public function check_for_update($transient) {
|
|
169
|
+
if (empty($transient->checked)) {
|
|
170
|
+
return $transient;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
$cached = get_transient($this->cache_key);
|
|
174
|
+
if ($cached !== false) {
|
|
175
|
+
if ($cached === 'no_update') {
|
|
176
|
+
return $transient;
|
|
177
|
+
}
|
|
178
|
+
$transient->response[$this->plugin_file] = $cached;
|
|
179
|
+
return $transient;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
$response = wp_remote_get(add_query_arg([
|
|
183
|
+
'plugin' => $this->plugin_slug,
|
|
184
|
+
'version' => $this->version,
|
|
185
|
+
], $this->api_url . '/update'), ['timeout' => 10]);
|
|
186
|
+
|
|
187
|
+
if (is_wp_error($response)) {
|
|
188
|
+
return $transient;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
$data = json_decode(wp_remote_retrieve_body($response), true);
|
|
192
|
+
|
|
193
|
+
if (empty($data['success']) || empty($data['update_available'])) {
|
|
194
|
+
set_transient($this->cache_key, 'no_update', 12 * HOUR_IN_SECONDS);
|
|
195
|
+
return $transient;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
$plugin_data = (object) [
|
|
199
|
+
'slug' => $this->plugin_slug,
|
|
200
|
+
'plugin' => $this->plugin_file,
|
|
201
|
+
'new_version' => $data['version'],
|
|
202
|
+
'package' => $data['download_url'],
|
|
203
|
+
'url' => $data['homepage'] ?? '',
|
|
204
|
+
'requires' => $data['requires_wp'] ?? '',
|
|
205
|
+
'tested' => $data['tested_wp'] ?? '',
|
|
206
|
+
'requires_php' => $data['requires_php'] ?? '',
|
|
207
|
+
];
|
|
208
|
+
|
|
209
|
+
set_transient($this->cache_key, $plugin_data, 12 * HOUR_IN_SECONDS);
|
|
210
|
+
$transient->response[$this->plugin_file] = $plugin_data;
|
|
211
|
+
|
|
212
|
+
return $transient;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
public function plugin_info($result, $action, $args) {
|
|
216
|
+
if ($action !== 'plugin_information' || ($args->slug ?? '') !== $this->plugin_slug) {
|
|
217
|
+
return $result;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
$response = wp_remote_get(add_query_arg([
|
|
221
|
+
'plugin' => $this->plugin_slug,
|
|
222
|
+
], $this->api_url . '/info'), ['timeout' => 10]);
|
|
223
|
+
|
|
224
|
+
if (is_wp_error($response)) {
|
|
225
|
+
return $result;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
$data = json_decode(wp_remote_retrieve_body($response), true);
|
|
229
|
+
|
|
230
|
+
if (empty($data['success'])) {
|
|
231
|
+
return $result;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return (object) [
|
|
235
|
+
'name' => $data['name'],
|
|
236
|
+
'slug' => $this->plugin_slug,
|
|
237
|
+
'version' => $data['version'],
|
|
238
|
+
'author' => sprintf('<a href="%s">%s</a>',
|
|
239
|
+
esc_url($data['author_homepage'] ?? ''),
|
|
240
|
+
esc_html($data['author'] ?? '')),
|
|
241
|
+
'homepage' => $data['homepage'] ?? '',
|
|
242
|
+
'requires' => $data['requires_wp'] ?? '',
|
|
243
|
+
'tested' => $data['tested_wp'] ?? '',
|
|
244
|
+
'requires_php' => $data['requires_php'] ?? '',
|
|
245
|
+
'last_updated' => $data['last_updated'] ?? '',
|
|
246
|
+
'sections' => $data['sections'] ?? [],
|
|
247
|
+
'banners' => $data['banners'] ?? [],
|
|
248
|
+
];
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
public function clear_cache($upgrader, $options): void {
|
|
252
|
+
if ($options['action'] === 'update' && $options['type'] === 'plugin') {
|
|
253
|
+
delete_transient($this->cache_key);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
\`\`\`
|
|
258
|
+
|
|
259
|
+
### Step 5: Initialize the Updater
|
|
260
|
+
|
|
261
|
+
In your main plugin file:
|
|
262
|
+
|
|
263
|
+
\`\`\`php
|
|
264
|
+
// After your constants are defined
|
|
265
|
+
require_once MY_PLUGIN_DIR . 'includes/class-my-plugin-updater.php';
|
|
266
|
+
|
|
267
|
+
add_action('plugins_loaded', function() {
|
|
268
|
+
$updater = new My_Plugin_Updater();
|
|
269
|
+
$updater->init();
|
|
270
|
+
});
|
|
271
|
+
\`\`\`
|
|
272
|
+
|
|
273
|
+
### Step 6: Create the ZIP
|
|
274
|
+
|
|
275
|
+
\`\`\`bash
|
|
276
|
+
# From PARENT directory of your plugin folder
|
|
277
|
+
cd /path/to/plugins
|
|
278
|
+
zip -r my-plugin.zip my-plugin -x "*.DS_Store" -x "*__MACOSX*" -x "*.git*"
|
|
279
|
+
\`\`\`
|
|
280
|
+
|
|
281
|
+
### Step 7: Validate and Upload
|
|
282
|
+
|
|
283
|
+
\`\`\`bash
|
|
284
|
+
# Validate first
|
|
285
|
+
jezpress plugins preflight my-plugin ./my-plugin.zip
|
|
286
|
+
|
|
287
|
+
# Upload (auto-detects version from plugin header)
|
|
288
|
+
jezpress plugins upload my-plugin ./my-plugin.zip
|
|
289
|
+
|
|
290
|
+
# Optionally sync metadata from plugin header
|
|
291
|
+
jezpress plugins upload my-plugin ./my-plugin.zip --sync-metadata
|
|
292
|
+
\`\`\`
|
|
293
|
+
|
|
294
|
+
### Step 8: Verify
|
|
295
|
+
|
|
296
|
+
\`\`\`bash
|
|
297
|
+
# Check it's registered
|
|
298
|
+
jezpress plugins get my-plugin
|
|
299
|
+
|
|
300
|
+
# Test the public API
|
|
301
|
+
curl "https://updates.jezpress.com/api/v1/info?plugin=my-plugin"
|
|
302
|
+
\`\`\`
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## For New Plugins (Step-by-Step)
|
|
307
|
+
|
|
308
|
+
Start from the JezPress starter template for new plugins.
|
|
309
|
+
|
|
310
|
+
### Step 1: Get the Starter Template
|
|
311
|
+
|
|
312
|
+
\`\`\`bash
|
|
313
|
+
# Clone or download from GitHub
|
|
314
|
+
git clone https://github.com/jezweb/jezpress-starter-plugin.git
|
|
315
|
+
cd jezpress-starter-plugin
|
|
316
|
+
|
|
317
|
+
# Copy the template folder
|
|
318
|
+
cp -r jezweb-starter my-awesome-plugin
|
|
319
|
+
\`\`\`
|
|
320
|
+
|
|
321
|
+
### Step 2: Rename Everything
|
|
322
|
+
|
|
323
|
+
This is critical. Every reference must match your slug.
|
|
324
|
+
|
|
325
|
+
**Files to rename:**
|
|
326
|
+
- \`jezweb-starter.php\` → \`my-awesome-plugin.php\`
|
|
327
|
+
- \`includes/class-jezweb-starter-updater.php\` → \`includes/class-my-awesome-plugin-updater.php\`
|
|
328
|
+
|
|
329
|
+
**Find and replace in all PHP files:**
|
|
330
|
+
|
|
331
|
+
| Find | Replace |
|
|
332
|
+
|------|---------|
|
|
333
|
+
| \`jezweb-starter\` | \`my-awesome-plugin\` |
|
|
334
|
+
| \`jezweb_starter\` | \`my_awesome_plugin\` |
|
|
335
|
+
| \`JEZWEB_STARTER_\` | \`MY_AWESOME_PLUGIN_\` |
|
|
336
|
+
| \`Jezweb_Starter_\` | \`My_Awesome_Plugin_\` |
|
|
337
|
+
|
|
338
|
+
### Step 3: Update Plugin Header
|
|
339
|
+
|
|
340
|
+
Edit your main plugin file:
|
|
341
|
+
|
|
342
|
+
\`\`\`php
|
|
343
|
+
<?php
|
|
344
|
+
/**
|
|
345
|
+
* Plugin Name: My Awesome Plugin
|
|
346
|
+
* Plugin URI: https://jezweb.com.au/plugins/my-awesome-plugin
|
|
347
|
+
* Description: What your plugin does.
|
|
348
|
+
* Version: 1.0.0
|
|
349
|
+
* Author: Jezweb
|
|
350
|
+
* Author URI: https://jezweb.com.au
|
|
351
|
+
* License: Proprietary
|
|
352
|
+
* License URI: https://jezweb.com.au/terms
|
|
353
|
+
* Text Domain: my-awesome-plugin
|
|
354
|
+
* Requires at least: 6.0
|
|
355
|
+
* Requires PHP: 8.0
|
|
356
|
+
* Tested up to: 6.7
|
|
357
|
+
*/
|
|
358
|
+
\`\`\`
|
|
359
|
+
|
|
360
|
+
### Step 4: Register and Upload
|
|
361
|
+
|
|
362
|
+
\`\`\`bash
|
|
363
|
+
jezpress login
|
|
364
|
+
jezpress plugins create my-awesome-plugin --name "My Awesome Plugin"
|
|
365
|
+
|
|
366
|
+
# Create ZIP and upload
|
|
367
|
+
cd /path/to/plugins
|
|
368
|
+
zip -r my-awesome-plugin.zip my-awesome-plugin -x "*.git*"
|
|
369
|
+
jezpress plugins upload my-awesome-plugin ./my-awesome-plugin.zip --sync-metadata
|
|
370
|
+
\`\`\`
|
|
371
|
+
|
|
372
|
+
### Step 5: Test Auto-Updates
|
|
373
|
+
|
|
374
|
+
1. Install the plugin on a test WordPress site
|
|
375
|
+
2. Increment the version in plugin header (1.0.0 → 1.0.1)
|
|
376
|
+
3. Create new ZIP and upload
|
|
377
|
+
4. Check WordPress admin → Plugins → should show update available
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## Naming Conventions (CRITICAL)
|
|
382
|
+
|
|
383
|
+
Everything must match. Use lowercase-with-hyphens for the slug:
|
|
384
|
+
|
|
385
|
+
| Component | Format | Example |
|
|
386
|
+
|-----------|--------|---------|
|
|
387
|
+
| Plugin folder | \`lowercase-with-hyphens\` | \`my-awesome-plugin\` |
|
|
388
|
+
| Main PHP file | \`{slug}.php\` | \`my-awesome-plugin.php\` |
|
|
389
|
+
| Constants | \`UPPERCASE_WITH_UNDERSCORES\` | \`MY_AWESOME_PLUGIN_VERSION\` |
|
|
390
|
+
| Class names | \`Title_Case_With_Underscores\` | \`My_Awesome_Plugin_Updater\` |
|
|
391
|
+
| Text domain | Same as slug | \`my-awesome-plugin\` |
|
|
392
|
+
| Cache key | \`{snake_case}_update_check\` | \`my_awesome_plugin_update_check\` |
|
|
393
|
+
| Function prefix | \`{snake_case}_\` | \`my_awesome_plugin_init()\` |
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## ZIP Structure Requirements
|
|
398
|
+
|
|
399
|
+
The ZIP structure is critical for WordPress installation and updates:
|
|
400
|
+
|
|
401
|
+
\`\`\`
|
|
402
|
+
my-awesome-plugin.zip
|
|
403
|
+
└── my-awesome-plugin/ ← Folder name MUST match slug
|
|
404
|
+
├── my-awesome-plugin.php ← Main file MUST be {slug}.php
|
|
405
|
+
├── includes/
|
|
406
|
+
│ └── class-my-awesome-plugin-updater.php
|
|
407
|
+
├── assets/
|
|
408
|
+
│ ├── css/
|
|
409
|
+
│ └── js/
|
|
410
|
+
├── uninstall.php
|
|
411
|
+
└── readme.txt
|
|
412
|
+
\`\`\`
|
|
413
|
+
|
|
414
|
+
### Common ZIP Mistakes
|
|
415
|
+
|
|
416
|
+
| Mistake | Result | Fix |
|
|
417
|
+
|---------|--------|-----|
|
|
418
|
+
| Files at ZIP root (no folder) | Install fails | Ensure plugin folder is at root |
|
|
419
|
+
| Folder name != slug | Updates don't work | Rename folder to match slug |
|
|
420
|
+
| Main file != {slug}.php | Plugin won't activate | Rename to {slug}.php |
|
|
421
|
+
| Double nesting (slug/slug/files) | Install fails | Check ZIP structure |
|
|
422
|
+
| .git folder included | Large ZIP, security risk | Exclude with \`-x "*.git*"\` |
|
|
423
|
+
|
|
424
|
+
### Creating the ZIP
|
|
425
|
+
|
|
426
|
+
\`\`\`bash
|
|
427
|
+
# CORRECT: From parent directory
|
|
428
|
+
cd /path/to/plugins
|
|
429
|
+
zip -r my-plugin.zip my-plugin -x "*.DS_Store" -x "*.git*"
|
|
430
|
+
|
|
431
|
+
# WRONG: From inside plugin directory
|
|
432
|
+
cd my-plugin
|
|
433
|
+
zip -r ../my-plugin.zip . # Creates wrong structure!
|
|
434
|
+
\`\`\`
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## How Auto-Updates Work
|
|
439
|
+
|
|
440
|
+
### Architecture
|
|
441
|
+
|
|
442
|
+
\`\`\`
|
|
443
|
+
WordPress Site JezPress Update Server
|
|
444
|
+
│ │
|
|
445
|
+
├─── GET /api/v1/update ────────────>│
|
|
446
|
+
│ ?plugin=X&version=Y │
|
|
447
|
+
│ │
|
|
448
|
+
│<── JSON response ──────────────────┤
|
|
449
|
+
│ { │
|
|
450
|
+
│ update_available: true, │
|
|
451
|
+
│ version: "1.2.0", │
|
|
452
|
+
│ download_url: "https://..." │
|
|
453
|
+
│ } │
|
|
454
|
+
│ │
|
|
455
|
+
├─── GET download_url ──────────────>│
|
|
456
|
+
│ │
|
|
457
|
+
│<── ZIP file ───────────────────────┤
|
|
458
|
+
\`\`\`
|
|
459
|
+
|
|
460
|
+
### Update Check Flow
|
|
461
|
+
|
|
462
|
+
1. WordPress periodically checks for plugin updates
|
|
463
|
+
2. Your updater class hooks into \`pre_set_site_transient_update_plugins\`
|
|
464
|
+
3. Updater queries \`/api/v1/update?plugin=slug&version=current\`
|
|
465
|
+
4. Server compares versions, returns update info if newer available
|
|
466
|
+
5. WordPress shows "Update available" in admin
|
|
467
|
+
6. User clicks Update → WordPress downloads from \`download_url\`
|
|
468
|
+
7. Updater clears cache after update completes
|
|
469
|
+
|
|
470
|
+
### Caching
|
|
471
|
+
|
|
472
|
+
- Updater caches responses for 12 hours (reduces API calls)
|
|
473
|
+
- WordPress also caches update checks
|
|
474
|
+
- Force check: Delete transient \`{slug}_update_check\`
|
|
475
|
+
- Or wait 12 hours for cache to expire
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## Version Update Workflow
|
|
480
|
+
|
|
481
|
+
When releasing a new version:
|
|
482
|
+
|
|
483
|
+
\`\`\`bash
|
|
484
|
+
# 1. Update version in plugin header AND constant
|
|
485
|
+
vim my-plugin/my-plugin.php
|
|
486
|
+
# Change: Version: 1.0.0 → 1.1.0
|
|
487
|
+
# Change: define('MY_PLUGIN_VERSION', '1.1.0');
|
|
488
|
+
|
|
489
|
+
# 2. Update changelog (optional)
|
|
490
|
+
# Add entry to readme.txt or your changelog
|
|
491
|
+
|
|
492
|
+
# 3. Create ZIP
|
|
493
|
+
cd /path/to/plugins
|
|
494
|
+
zip -r my-plugin.zip my-plugin -x "*.DS_Store" -x "*.git*"
|
|
495
|
+
|
|
496
|
+
# 4. Validate
|
|
497
|
+
jezpress plugins preflight my-plugin ./my-plugin.zip
|
|
498
|
+
|
|
499
|
+
# 5. Upload
|
|
500
|
+
jezpress plugins upload my-plugin ./my-plugin.zip
|
|
501
|
+
|
|
502
|
+
# 6. Set changelog
|
|
503
|
+
jezpress plugins changelog my-plugin 1.1.0 -s "Added feature X, fixed bug Y"
|
|
504
|
+
|
|
505
|
+
# 7. Verify
|
|
506
|
+
jezpress plugins versions my-plugin
|
|
507
|
+
\`\`\`
|
|
508
|
+
|
|
509
|
+
---
|
|
510
|
+
|
|
511
|
+
## Troubleshooting
|
|
512
|
+
|
|
513
|
+
### Updates Not Showing in WordPress
|
|
514
|
+
|
|
515
|
+
1. **Cache**: WordPress caches for 12 hours
|
|
516
|
+
- Delete transient: \`delete_transient('{slug}_update_check');\`
|
|
517
|
+
- Or use a plugin like "Force Reload" to clear update cache
|
|
518
|
+
|
|
519
|
+
2. **Slug Mismatch**: Plugin folder must match registered slug exactly
|
|
520
|
+
- Check: \`wp plugin list\` shows correct slug?
|
|
521
|
+
- The slug in updater class must match the registered slug
|
|
522
|
+
|
|
523
|
+
3. **Version Format**: Use semantic versioning (X.Y.Z)
|
|
524
|
+
- Bad: \`1.0\` or \`v1.0.0\`
|
|
525
|
+
- Good: \`1.0.0\`
|
|
526
|
+
|
|
527
|
+
4. **Updater Not Loaded**: Check the class is included and initialized
|
|
528
|
+
- Add \`error_log('Updater loaded');\` to verify
|
|
529
|
+
|
|
530
|
+
5. **Wrong Version Comparison**: Current version >= server version
|
|
531
|
+
- Check: \`jezpress plugins get {slug}\` shows correct version?
|
|
532
|
+
|
|
533
|
+
### Download Failing
|
|
534
|
+
|
|
535
|
+
1. **Version Not Uploaded**: ZIP not uploaded for that version
|
|
536
|
+
- Check: \`jezpress plugins versions {slug}\`
|
|
537
|
+
|
|
538
|
+
2. **License Required**: If plugin has \`requires_license: true\`
|
|
539
|
+
- Ensure site has valid license activated
|
|
540
|
+
|
|
541
|
+
### Upload Failing
|
|
542
|
+
|
|
543
|
+
1. **Not Owner**: Only plugin owner can upload
|
|
544
|
+
- Check: \`jezpress whoami\`
|
|
545
|
+
|
|
546
|
+
2. **Invalid ZIP**: Missing main plugin file or wrong structure
|
|
547
|
+
- Run: \`jezpress plugins preflight {slug} {zip}\`
|
|
548
|
+
|
|
549
|
+
3. **Auth Expired**: Token expired
|
|
550
|
+
- Run: \`jezpress login\`
|
|
551
|
+
|
|
552
|
+
4. **Version Already Exists**: Can't overwrite existing version
|
|
553
|
+
- Delete first: \`jezpress plugins delete-version {slug} {version} -y\`
|
|
554
|
+
|
|
555
|
+
### MCP Connection Issues
|
|
556
|
+
|
|
557
|
+
1. **Domain Restriction**: Only @jezweb.net and @jezweb.com.au
|
|
558
|
+
2. **Re-authenticate**: Remove and re-add the MCP server
|
|
559
|
+
3. **Check URL**: Must be \`https://mcp.jezpress.com/mcp\`
|
|
560
|
+
|
|
561
|
+
### "View Details" Not Working
|
|
562
|
+
|
|
563
|
+
1. **Info Endpoint**: \`/api/v1/info\` must return data
|
|
564
|
+
- Test: \`curl "https://updates.jezpress.com/api/v1/info?plugin={slug}"\`
|
|
565
|
+
|
|
566
|
+
2. **Slug Match**: \`$args->slug\` in \`plugin_info()\` must match
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
570
|
+
## Authentication
|
|
571
|
+
|
|
572
|
+
### CLI Token
|
|
573
|
+
|
|
574
|
+
- Stored at: \`~/.jezpress-token\`
|
|
575
|
+
- JWT signed by auth server
|
|
576
|
+
- Requires @jezweb.net or @jezweb.com.au Google account
|
|
577
|
+
- Expiry checked locally before API calls
|
|
578
|
+
|
|
579
|
+
### API Authentication
|
|
580
|
+
|
|
581
|
+
All \`/api/dev/*\` endpoints require:
|
|
582
|
+
\`\`\`
|
|
583
|
+
Authorization: Bearer <jwt-token>
|
|
584
|
+
\`\`\`
|
|
585
|
+
|
|
586
|
+
### Domain Restriction
|
|
587
|
+
|
|
588
|
+
Only these email domains can authenticate:
|
|
589
|
+
- @jezweb.net
|
|
590
|
+
- @jezweb.com.au
|
|
591
|
+
|
|
592
|
+
---
|
|
593
|
+
|
|
594
|
+
## Starter Template Location
|
|
595
|
+
|
|
596
|
+
GitHub: \`https://github.com/jezweb/jezpress-starter-plugin\`
|
|
597
|
+
|
|
598
|
+
The template includes:
|
|
599
|
+
- Main plugin file with JezPress integration
|
|
600
|
+
- Updater class ready to customize
|
|
601
|
+
- uninstall.php cleanup handler
|
|
602
|
+
- Documentation (CLAUDE-GUIDE.md, JEZPRESS_MIGRATION.md)
|
|
603
|
+
|
|
604
|
+
---
|
|
605
|
+
|
|
606
|
+
## Getting Help
|
|
607
|
+
|
|
608
|
+
- **CLI Help**: \`jezpress --help\` or \`jezpress plugins --help\`
|
|
609
|
+
- **This Guide**: \`jezpress docs\`
|
|
610
|
+
- **Admin Dashboard**: https://admin.jezpress.com
|
|
611
|
+
- **MCP Tool**: Use \`get_platform_guide\` tool
|
|
612
|
+
`;
|
|
613
|
+
export const PROJECT_CLAUDE_MD = `# CLAUDE.md - JezPress Plugin
|
|
614
|
+
|
|
615
|
+
This plugin uses the JezPress Update Server for automatic updates.
|
|
616
|
+
|
|
617
|
+
## Quick Reference
|
|
618
|
+
|
|
619
|
+
| Service | URL |
|
|
620
|
+
|---------|-----|
|
|
621
|
+
| Update Server | \`https://updates.jezpress.com\` |
|
|
622
|
+
| CLI | \`npm install -g @jezweb/jezpress-cli\` |
|
|
623
|
+
| MCP Server | \`https://mcp.jezpress.com/mcp\` |
|
|
624
|
+
|
|
625
|
+
## Commands
|
|
626
|
+
|
|
627
|
+
\`\`\`bash
|
|
628
|
+
jezpress login # Authenticate
|
|
629
|
+
jezpress whoami # Check current user
|
|
630
|
+
jezpress plugins list --mine # List your plugins
|
|
631
|
+
jezpress plugins get <slug> # Plugin details
|
|
632
|
+
jezpress plugins preflight <slug> <zip> # Validate before upload
|
|
633
|
+
jezpress plugins upload <slug> <zip> # Upload new version
|
|
634
|
+
jezpress plugins versions <slug> # List versions
|
|
635
|
+
\`\`\`
|
|
636
|
+
|
|
637
|
+
## Version Update Workflow
|
|
638
|
+
|
|
639
|
+
1. Update \`Version:\` in plugin header
|
|
640
|
+
2. Update version constant
|
|
641
|
+
3. Create ZIP: \`zip -r <slug>.zip <slug> -x "*.git*"\`
|
|
642
|
+
4. Validate: \`jezpress plugins preflight <slug> ./<slug>.zip\`
|
|
643
|
+
5. Upload: \`jezpress plugins upload <slug> ./<slug>.zip\`
|
|
644
|
+
|
|
645
|
+
## ZIP Structure (Critical)
|
|
646
|
+
|
|
647
|
+
\`\`\`
|
|
648
|
+
<slug>.zip
|
|
649
|
+
└── <slug>/ ← Folder must match slug
|
|
650
|
+
├── <slug>.php ← Main file must be slug.php
|
|
651
|
+
└── includes/
|
|
652
|
+
└── class-<slug>-updater.php
|
|
653
|
+
\`\`\`
|
|
654
|
+
|
|
655
|
+
## Naming Conventions
|
|
656
|
+
|
|
657
|
+
| Component | Format | Example |
|
|
658
|
+
|-----------|--------|---------|
|
|
659
|
+
| Folder | lowercase-hyphen | my-plugin |
|
|
660
|
+
| Main file | {slug}.php | my-plugin.php |
|
|
661
|
+
| Constants | UPPER_SNAKE | MY_PLUGIN_VERSION |
|
|
662
|
+
| Classes | Title_Case | My_Plugin_Updater |
|
|
663
|
+
|
|
664
|
+
## Full Documentation
|
|
665
|
+
|
|
666
|
+
Run \`jezpress docs\` for complete platform guide.
|
|
667
|
+
|
|
668
|
+
Or use MCP tool: \`get_platform_guide\`
|
|
669
|
+
`;
|
|
670
|
+
//# sourceMappingURL=docs.js.map
|
package/dist/docs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6lB7B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDhC,CAAC"}
|