@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 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.2.0');
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
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jezweb/jezpress-cli",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "CLI and MCP server for managing JezPress plugins on the update server",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",