{"id":303915,"date":"2026-04-30T07:53:08","date_gmt":"2026-04-30T07:53:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-provider-for-opencode-zen\/"},"modified":"2026-08-10T06:05:56","modified_gmt":"2026-08-10T06:05:56","slug":"alamin-ai-provider-for-opencode-zen","status":"publish","type":"plugin","link":"https:\/\/bal.wordpress.org\/plugins\/alamin-ai-provider-for-opencode-zen\/","author":20002658,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.0","stable_tag":"1.5.0","tested":"7.0.4","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"AI Provider for OpenCode Zen","header_author":"Al Amin Ahamed","header_description":"OpenCode Zen AI provider for the WordPress AI Client. Not affiliated with OpenCode Zen.","assets_banners_color":"505050","last_updated":"2026-08-10 06:05:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/mralaminahamed\/ai-provider-for-opencode-zen","header_author_uri":"https:\/\/alaminahamed.com","rating":0,"author_block_rating":0,"active_installs":30,"downloads":1339,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"mralaminahamed","date":"2026-05-21 14:03:46"},"1.1.0":{"tag":"1.1.0","author":"mralaminahamed","date":"2026-05-21 14:45:33"},"1.2.0":{"tag":"1.2.0","author":"mralaminahamed","date":"2026-05-21 18:06:58"},"1.2.1":{"tag":"1.2.1","author":"mralaminahamed","date":"2026-05-21 18:07:14"},"1.3.0":{"tag":"1.3.0","author":"mralaminahamed","date":"2026-06-16 03:10:42"},"1.3.1":{"tag":"1.3.1","author":"mralaminahamed","date":"2026-06-16 03:18:04"},"1.4.0":{"tag":"1.4.0","author":"mralaminahamed","date":"2026-08-07 17:35:04"},"1.5.0":{"tag":"1.5.0","author":"mralaminahamed","date":"2026-08-10 06:05:56"}},"upgrade_notice":{"1.5.0":"<p>Settings now actually apply to requests \u2014 temperature, max tokens, top_p and the penalties were stored and never read. The model list no longer needs an API key and is synced to the live catalogue of 61 models; two models that OpenCode Zen does not serve have been removed. Internal PHP namespace and class names changed; no database changes and no settings to redo.<\/p>","1.4.0":"<p>Expands the fallback model list to 54 current models, adds a connection-status indicator, and pre-selects a default model. Fixes a possible AI Client TypeError. No database changes required.<\/p>","1.3.1":"<p>Fixes live model list not loading when API key is set via Settings &gt; Connectors. Adds Claude Fable 5 and Claude Opus 4.8 to the fallback list. No database changes required.<\/p>","1.3.0":"<p>Adds Top P, Presence Penalty, and Frequency Penalty settings. No database changes required. Requires WordPress 7.0 or higher.<\/p>","1.2.1":"<p>Fixes connector showing &quot;Connected&quot; before an API key is entered. No database changes required.<\/p>","1.2.0":"<p>Fixes a false &quot;no valid connector&quot; warning on the AI admin page. No database changes required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3519300,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3519300,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3519300,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3519300,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3519300,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner.svg":{"filename":"banner.svg","revision":3519300,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3640031,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/options-connectors.php\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"alamin-ai-provider-for-opencode-zen\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.2.0","1.2.1","1.3.0","1.3.1","1.4.0","1.5.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[5739,25308,226124,261513,227698],"plugin_category":[],"plugin_contributors":[221130],"plugin_business_model":[],"class_list":["post-303915","plugin","type-plugin","status-publish","hentry","plugin_tags-artificial-intelligence","plugin_tags-connector","plugin_tags-llm","plugin_tags-opencode","plugin_tags-text-generation","plugin_contributors-mralaminahamed","plugin_committers-mralaminahamed"],"banners":{"banner":"https:\/\/ps.w.org\/alamin-ai-provider-for-opencode-zen\/assets\/banner-772x250.png?rev=3519300","banner_2x":"https:\/\/ps.w.org\/alamin-ai-provider-for-opencode-zen\/assets\/banner-1544x500.png?rev=3519300","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/alamin-ai-provider-for-opencode-zen\/assets\/icon.svg?rev=3519300","icon":"https:\/\/ps.w.org\/alamin-ai-provider-for-opencode-zen\/assets\/icon.svg?rev=3519300","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin is an AI connector for <a href=\"https:\/\/opencode.ai\">OpenCode Zen<\/a>. It registers OpenCode Zen with the WordPress AI Client, so every AI-enabled plugin on your site can reach 61 large language models through one API key \u2014 GPT, Claude, Gemini, Grok, Qwen, DeepSeek, MiniMax, Kimi and more, with no separate account per vendor.<\/p>\n\n<p>This plugin is an independent, third-party integration and is not affiliated with, endorsed by, or sponsored by OpenCode Zen.<\/p>\n\n<h4>Why OpenCode Zen?<\/h4>\n\n<p>OpenCode Zen is an <strong>AI model aggregator<\/strong> \u2014 one API key gives you access to 61 frontier models from OpenAI, Anthropic, Google, and others. Instead of managing separate API keys and billing accounts for each AI provider, you connect once to OpenCode Zen and switch between models freely.<\/p>\n\n<p>This makes it ideal for WordPress sites that want to experiment with different AI models, compare output quality, or use specialised models (e.g. a coding model for code-related tasks and a creative model for content).<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>61 models from one API key<\/strong> \u2014 GPT 5.x, Claude, Gemini 3.x, Qwen, MiniMax, Kimi, Grok, DeepSeek, and more<\/li>\n<li><strong>Automatic model discovery<\/strong> \u2014 live model list fetched from the OpenCode Zen API and cached hourly; falls back to a hardcoded list when offline<\/li>\n<li><strong>Full parameter control<\/strong> \u2014 temperature, max tokens, top P, presence penalty, frequency penalty, stop sequences, system instruction, and function declarations<\/li>\n<li><strong>Chat history<\/strong> \u2014 multi-turn conversations, not just single prompts<\/li>\n<li><strong>Settings page<\/strong> \u2014 configure default model and generation parameters without touching code<\/li>\n<li><strong>API key via Connectors<\/strong> \u2014 enter your key once in <strong>Settings &gt; Connectors<\/strong>; all AI-enabled plugins share it automatically<\/li>\n<li><strong>Environment variable support<\/strong> \u2014 <code>OPENCODE_ZEN_API_KEY<\/code> for server-level configuration, bypassing the database entirely<\/li>\n<li><strong>OpenAI-compatible API<\/strong> \u2014 built on the same protocol as OpenAI, so any model that works with the OpenAI provider works here<\/li>\n<li><strong>No vendor lock-in<\/strong> \u2014 switch between GPT, Claude, and Gemini without changing plugin or configuration<\/li>\n<\/ul>\n\n<h4>What Can You Do With AI in WordPress?<\/h4>\n\n<p>Once this provider is configured, any WordPress plugin or theme that integrates with the WordPress AI Client can use it:<\/p>\n\n<ul>\n<li><strong>Block editor (Gutenberg)<\/strong> \u2014 AI writing assistance, rephrasing, summarising, and expanding content<\/li>\n<li><strong>WooCommerce<\/strong> \u2014 AI-generated product descriptions, SEO meta titles, and customer review summaries<\/li>\n<li><strong>SEO plugins<\/strong> \u2014 generate meta descriptions, focus keyphrases, and Open Graph content<\/li>\n<li><strong>Customer support<\/strong> \u2014 power AI chatbots and FAQ auto-responses<\/li>\n<li><strong>Translation and localisation<\/strong> \u2014 translate and adapt content for different markets<\/li>\n<li><strong>Code generation<\/strong> \u2014 use a coding-specialised model (GPT 5.3 Codex, Grok Build) directly in the editor<\/li>\n<li><strong>Image alt text<\/strong> \u2014 generate accessible alt attributes for media library images<\/li>\n<\/ul>\n\n<h4>Supported Models<\/h4>\n\n<p>The live model list is fetched directly from the OpenCode Zen API, so you always see the latest models \u2014 no API key needed to read the catalogue. If the API is ever unavailable, a built-in fallback list of 61 models keeps everything working. Families include:<\/p>\n\n<ul>\n<li><strong>GPT 5.x<\/strong> \u2014 Sol, Terra, Luna, plus Pro, Mini, Nano, and Codex variants<\/li>\n<li><strong>Claude<\/strong> \u2014 Fable 5, Opus 4.x, Sonnet 5 \/ 4.x, Haiku 4.5<\/li>\n<li><strong>Gemini 3.x<\/strong> \u2014 Flash, Flash Lite, and Pro<\/li>\n<li><strong>More<\/strong> \u2014 Grok, Qwen, DeepSeek, MiniMax, GLM, Kimi, and free-tier models<\/li>\n<\/ul>\n\n<p>See the <a href=\"https:\/\/github.com\/mralaminahamed\/ai-provider-for-opencode-zen\/blob\/trunk\/docs\/MODELS.md\">full model catalogue<\/a> for every model ID.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>PHP 7.4 or higher<\/li>\n<li>WordPress 7.0 or higher<\/li>\n<li>An <a href=\"https:\/\/opencode.ai\">OpenCode Zen<\/a> account and API key<\/li>\n<\/ul>\n\n<h4>How the WordPress AI Provider System Works<\/h4>\n\n<p>WordPress 7.0 introduced a built-in AI Client SDK. Plugins and themes call a standard API (e.g. \"generate text from this prompt\") without knowing which AI provider is active. Provider plugins like this one register themselves with WordPress and handle the actual API calls.<\/p>\n\n<p>This means:<\/p>\n\n<ol>\n<li>Install this plugin \u2192 OpenCode Zen is registered as an AI provider<\/li>\n<li>Enter your API key in <strong>Settings &gt; Connectors<\/strong><\/li>\n<li>Every AI-enabled plugin on your site can now use OpenCode Zen automatically<\/li>\n<\/ol>\n\n<p>You can also install multiple provider plugins and switch between them from the Connectors screen \u2014 no re-configuration of individual plugins needed.<\/p>\n\n<h4>Settings<\/h4>\n\n<p>Go to <strong>Settings &gt; OpenCode Zen<\/strong> to configure:<\/p>\n\n<ul>\n<li><strong>Default Model<\/strong> \u2014 the model used when no explicit model is requested by a plugin<\/li>\n<li><strong>Temperature<\/strong> \u2014 controls output randomness (0.0\u20132.0, default 0.7)<\/li>\n<li><strong>Max Tokens<\/strong> \u2014 maximum tokens in the response (1\u2013200,000, default 4096)<\/li>\n<li><strong>Top P<\/strong> \u2014 nucleus sampling threshold (0.0\u20131.0, default 1.0)<\/li>\n<li><strong>Presence Penalty<\/strong> \u2014 penalises repeated topics (-2.0\u20132.0, default 0.0)<\/li>\n<li><strong>Frequency Penalty<\/strong> \u2014 penalises repeated tokens (-2.0\u20132.0, default 0.0)<\/li>\n<\/ul>\n\n<h4>For Developers<\/h4>\n\n<p>This plugin follows the official WordPress AI Provider pattern and works with any plugin built on the WordPress AI Client SDK. It registers the <code>opencode-zen<\/code> provider and supports the standard generation options (temperature, max tokens, top P, presence\/frequency penalties, stop sequences, system instruction, and function declarations).<\/p>\n\n<p>The source code is on GitHub \u2014 bug reports and pull requests are welcome:<\/p>\n\n<ul>\n<li>Repository: <a href=\"https:\/\/github.com\/mralaminahamed\/ai-provider-for-opencode-zen\">github.com\/mralaminahamed\/ai-provider-for-opencode-zen<\/a><\/li>\n<li>Report a bug or request a feature: <a href=\"https:\/\/github.com\/mralaminahamed\/ai-provider-for-opencode-zen\/issues\/new\">open a new issue<\/a><\/li>\n<li>Contribute code: <a href=\"https:\/\/github.com\/mralaminahamed\/ai-provider-for-opencode-zen\/pulls\">submit a pull request<\/a><\/li>\n<\/ul>\n\n<p>Developer documentation:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/mralaminahamed\/ai-provider-for-opencode-zen\/blob\/trunk\/docs\/USAGE.md\">Usage and code examples<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/mralaminahamed\/ai-provider-for-opencode-zen\/blob\/trunk\/docs\/ARCHITECTURE.md\">Architecture and API key resolution<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/mralaminahamed\/ai-provider-for-opencode-zen\/blob\/trunk\/docs\/DEVELOPMENT.md\">Development and contributing<\/a><\/li>\n<\/ul>\n\n<h4>More from us<\/h4>\n\n<p>Other free plugins by the same author, all on WordPress.org.<\/p>\n\n<p><strong>Another provider for the same AI Client<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/alamin-ai-provider-for-minimax\/\">AI Provider for MiniMax<\/a> - MiniMax M2 and M3 models for text generation, for the WordPress AI Client.<\/li>\n<\/ul>\n\n<p><strong>For any site<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/swift-menu-duplicator\/\">Swift Menu Duplicator<\/a> - Duplicate menus in one click, snapshot revisions, export and import, WP-CLI and REST.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/author-profile-blocks\/\">Author Profile Blocks<\/a> - Author and team profiles as Gutenberg blocks \u2014 grid, carousel, list and single.<\/li>\n<\/ul>\n\n<p><strong>For a WooCommerce store<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/storeseeder\/\">StoreSeeder<\/a> - Realistic test data for WooCommerce and Fluent Cart \u2014 a whole shop from a recipe, with one-click cleanup.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/storesheet\/\">StoreSheet<\/a> - Sync WooCommerce products, orders and coupons to a Google spreadsheet, one way and in the background.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the <strong>OpenCode Zen API<\/strong> (<code>https:\/\/opencode.ai\/zen\/v1<\/code>) to:<\/p>\n\n<ol>\n<li>Retrieve the list of available AI models (cached for 1 hour via WordPress transients)<\/li>\n<li>Send text generation requests using your configured model<\/li>\n<\/ol>\n\n<p><strong>Service:<\/strong> OpenCode Zen\n<strong>API endpoint:<\/strong> <code>https:\/\/opencode.ai\/zen\/v1<\/code>\n<strong>When data is sent:<\/strong> When generating AI text or refreshing the model list\n<strong>Data sent:<\/strong> Your API key (via Authorization header) and the text prompt\/conversation\n<strong>Provider site:<\/strong> <a href=\"https:\/\/opencode.ai\/\">opencode.ai<\/a> \u2014 refer to the OpenCode Zen website for their current Terms of Service and Privacy Policy.<\/p>\n\n<p>No data is sent to the OpenCode Zen API until you enter an API key and a WordPress feature triggers a text generation request.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/alamin-ai-provider-for-opencode-zen\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Settings &gt; Connectors<\/strong> and enter your OpenCode Zen API key.<\/li>\n<li>Go to <strong>Settings &gt; OpenCode Zen<\/strong> to choose a default model and tune generation parameters.<\/li>\n<li>Install any AI-enabled plugin (e.g. the <a href=\"https:\/\/wordpress.org\/plugins\/ai\/\">AI Experiments<\/a> plugin) to start using AI features.<\/li>\n<\/ol>\n\n<h4>Getting Your API Key<\/h4>\n\n<ol>\n<li>Sign up at <a href=\"https:\/\/opencode.ai\">opencode.ai<\/a><\/li>\n<li>Go to <a href=\"https:\/\/opencode.ai\/zen\/settings\/api-keys\">opencode.ai\/zen\/settings\/api-keys<\/a><\/li>\n<li>Create a new API key and copy it<\/li>\n<li>Paste it into <strong>Settings &gt; Connectors<\/strong> in your WordPress admin<\/li>\n<\/ol>\n\n<h4>WP-CLI Installation<\/h4>\n\n<pre><code>wp plugin install alamin-ai-provider-for-opencode-zen --activate\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20opencode%20zen%3F\"><h3>What is OpenCode Zen?<\/h3><\/dt>\n<dd><p>OpenCode Zen is an AI platform that acts as a gateway to multiple AI providers. Instead of needing separate API keys for OpenAI (GPT), Anthropic (Claude), and Google (Gemini), you get access to all of them through a single OpenCode Zen API key. Learn more at <a href=\"https:\/\/opencode.ai\">opencode.ai<\/a>.<\/p><\/dd>\n<dt id=\"where%20do%20i%20enter%20my%20api%20key%3F\"><h3>Where do I enter my API key?<\/h3><\/dt>\n<dd><p>Go to <strong>Settings &gt; Connectors<\/strong> in your WordPress admin and enter your OpenCode Zen API key there. All AI-enabled plugins on your site will automatically use it. Alternatively, set the <code>OPENCODE_ZEN_API_KEY<\/code> environment variable on your server.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20install%20a%20separate%20ai%20client%20plugin%3F\"><h3>Do I need to install a separate AI Client plugin?<\/h3><\/dt>\n<dd><p>No. WordPress 7.0 and higher include the AI Client SDK natively \u2014 no additional plugin is required.<\/p><\/dd>\n<dt id=\"which%20model%20should%20i%20choose%20as%20the%20default%3F\"><h3>Which model should I choose as the default?<\/h3><\/dt>\n<dd><p>It depends on your use case:<\/p>\n\n<ul>\n<li><strong>Content writing<\/strong> \u2014 Claude Sonnet 4.6 or GPT 5.4 for natural, fluent prose<\/li>\n<li><strong>Coding tasks<\/strong> \u2014 GPT 5.3 Codex or Grok Build 0.1 for code generation and review<\/li>\n<li><strong>Speed\/cost balance<\/strong> \u2014 GPT 5.4 Mini or Gemini 3 Flash for quick, low-cost tasks<\/li>\n<li><strong>Research\/analysis<\/strong> \u2014 Claude Opus 4.x or GPT 5.5 Pro for depth and accuracy<\/li>\n<\/ul><\/dd>\n<dt id=\"what%20happens%20if%20the%20opencode%20zen%20api%20is%20unreachable%3F\"><h3>What happens if the OpenCode Zen API is unreachable?<\/h3><\/dt>\n<dd><p>The plugin falls back to a hardcoded list of 61 models so the AI Client continues to function and AI-enabled plugins stay operational.<\/p><\/dd>\n<dt id=\"can%20i%20use%20multiple%20ai%20provider%20plugins%20at%20the%20same%20time%3F\"><h3>Can I use multiple AI provider plugins at the same time?<\/h3><\/dt>\n<dd><p>Yes. WordPress lets you install multiple provider plugins. You can switch the active provider from <strong>Settings &gt; Connectors<\/strong> at any time without reconfiguring any plugin.<\/p><\/dd>\n<dt id=\"is%20my%20api%20key%20stored%20securely%3F\"><h3>Is my API key stored securely?<\/h3><\/dt>\n<dd><p>Your API key is stored in the WordPress options table, which is protected by your database credentials. For higher security, set the <code>OPENCODE_ZEN_API_KEY<\/code> environment variable on your server \u2014 this keeps the key entirely out of the database.<\/p><\/dd>\n<dt id=\"how%20does%20billing%20work%3F\"><h3>How does billing work?<\/h3><\/dt>\n<dd><p>Billing is handled entirely by OpenCode Zen. Your usage is billed according to <a href=\"https:\/\/opencode.ai\">OpenCode Zen's pricing<\/a> based on tokens consumed per model. WordPress and this plugin do not charge anything.<\/p><\/dd>\n<dt id=\"what%20generation%20parameters%20does%20this%20provider%20support%3F\"><h3>What generation parameters does this provider support?<\/h3><\/dt>\n<dd><p>Temperature, max tokens, top P, presence penalty, frequency penalty, stop sequences, system instruction, and function declarations \u2014 the full set of options supported by the WordPress AI Client SDK.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20for%20woocommerce%20product%20descriptions%3F\"><h3>Can I use this for WooCommerce product descriptions?<\/h3><\/dt>\n<dd><p>Yes, if you have a WooCommerce plugin that integrates with the WordPress AI Client. Once this provider is active and your API key is set, any AI-enabled WooCommerce plugin can generate product descriptions, SEO meta, and more using any of the 61 models.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20gutenberg%20block%20editor%3F\"><h3>Does this work with the Gutenberg block editor?<\/h3><\/dt>\n<dd><p>Yes. Any Gutenberg plugin or block that uses the WordPress AI Client will automatically use this provider once configured.<\/p><\/dd>\n<dt id=\"do%20you%20have%20a%20developer%20api%3F\"><h3>Do you have a developer API?<\/h3><\/dt>\n<dd><p>This plugin implements the standard WordPress AI Client provider interface. Developers building plugins or themes on top of the WordPress AI Client do not need to do anything special \u2014 if this provider is active, it will be available automatically.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.0 - 2026-08-09<\/h4>\n\n<p><strong>Added<\/strong>\n- <strong>Settings are now applied to requests.<\/strong> Temperature, max tokens, top_p and the penalties had been stored since 1.0.0 and never read \u2014 nothing outside the settings class touched <code>opencode_zen_settings<\/code>, so saving the form changed a database row and nothing else. A caller's own value still wins; the saved values fill in what was left unset.\n- <code>opencode_zen_generate_text_params<\/code> filter, which receives the model id \u2014 useful because Zen fronts several vendors and they do not all accept the same parameters.<\/p>\n\n<ul>\n<li><strong>Custom options.<\/strong> Arbitrary passthrough parameters, which the AI Client's base class already merged into the request body but which no caller could reach, because the option was not declared. It matters more here than for a single-vendor provider: Zen fronts eight vendors, and a parameter only one of them understands has nowhere else to go.<\/li>\n<li><strong>Chat history<\/strong> \u2014 the models are now declared as supporting multi-turn conversations, not just single prompts. They always could (the endpoint takes a <code>messages<\/code> array and the AI Client already sends one), but the capability was never declared and the AI Client routes on the declaration, so conversation requests were going to other providers. Every official WordPress AI provider declares this.<\/li>\n<\/ul>\n\n<p><strong>Changed<\/strong>\n- <strong>PHP namespace is now <code>OpenCodeZen\\OpenCodeZenAiProvider\\<\/code><\/strong> (was <code>AlAminAhamed\\OpenCodeZenAiProvider\\<\/code>).\n- <strong>Class names dropped their <code>OpenCodeZen<\/code> prefix<\/strong>, which the namespace already carries: <code>OpenCodeZenProvider<\/code> is <code>Provider<\/code>, <code>OpenCodeZenSettings<\/code> is <code>Settings<\/code>, <code>OpenCodeZenModelMetadataDirectory<\/code> is <code>ModelMetadataDirectory<\/code>, <code>OpenCodeZenTextGenerationModel<\/code> is <code>TextGenerationModel<\/code>, and <code>OpenCodeZenProviderAvailability<\/code> is <code>ProviderAvailability<\/code>.\n- <strong>The model list no longer requires an API key.<\/strong> OpenCode Zen serves its catalogue publicly, and this plugin was returning early without a key \u2014 so a site saw the built-in fallback list at exactly the moment it was first being configured. The key is still sent when there is one.\n- Synced the built-in fallback list to the live catalogue: <strong>61 models<\/strong>, adding Claude Opus 5, Claude Sonnet 4, Kimi K3, Ling 3.0 Flash Free, Ling 3.0 Tiny Free and LongCat 2.0 Free.<\/p>\n\n<ul>\n<li><strong>Restructured the bootstrap.<\/strong> The plugin file is now an entry point \u2014 constants, autoloader, boot \u2014 and all wiring moved into an <code>AI_Provider_For_OpenCode_Zen<\/code> singleton in <code>class-ai-provider-for-opencode-zen.php<\/code>, so every hook the plugin registers is visible in one file. Matches the layout used across this author's other plugins.<\/li>\n<li>Added <code>OPENCODE_ZEN_VERSION<\/code>, <code>OPENCODE_ZEN_URL<\/code> and <code>OPENCODE_ZEN_PATH<\/code> constants; only <code>OPENCODE_ZEN_PLUGIN_FILE<\/code> existed before.<\/li>\n<\/ul>\n\n<p>Both renames are internal. No hook, option, setting or model id changes, and nothing a site has configured is affected \u2014 but any code referencing these classes directly needs updating.<\/p>\n\n<p><strong>Fixed<\/strong>\n- Removed <code>qwen3.7-max<\/code> and <code>qwen3.7-plus<\/code>, which were offered in the model list and are not served by OpenCode Zen. Selecting either produced a failed generation rather than an invalid-setting warning.\n- The model directory no longer calls WordPress functions when running outside WordPress, which the class is documented to support.<\/p>\n\n<h4>1.4.0 - 2026-07-21<\/h4>\n\n<p><strong>Added<\/strong>\n- Connection status on the settings page \u2014 shows whether an OpenCode Zen API key is configured, with a link to the Connectors screen.\n- \"Connectors\" quick link on the Plugins screen, next to Settings.<\/p>\n\n<p><strong>Changed<\/strong>\n- Synced the built-in fallback model list to the current OpenCode Zen catalogue \u2014 now 54 models (added GPT 5.6 Sol\/Terra\/Luna, Claude Sonnet 5, Grok 4.5, DeepSeek V4 Pro\/Flash, MiniMax M3, GLM 5.2\/5, Kimi K2.7 Code, and free-tier models; removed the retired Claude 3.5 Haiku and Nemotron 3 Super Free).\n- A default model (GPT 5.5) is now pre-selected out of the box instead of an empty choice.<\/p>\n\n<p><strong>Fixed<\/strong>\n- Autoloader collision with WordPress core's bundled AI Client that could cause a TypeError on AI requests \u2014 the plugin no longer ships a conflicting copy of php-ai-client (WordPress core provides it at runtime).<\/p>\n\n<h4>1.3.1 - 2026-06-16<\/h4>\n\n<p><strong>Fixed<\/strong>\n- API key stored via Settings &gt; Connectors (<code>connectors_ai_opencode_zen_api_key<\/code>) now correctly used for live model list fetching \u2014 previously fell back to the hardcoded model list even when the Connectors key was set.\n- Settings <code>get_settings()<\/code> now returns all 6 default fields when the saved option is corrupt or missing; previously returned only <code>temperature<\/code> and <code>max_tokens<\/code>.<\/p>\n\n<p><strong>Changed<\/strong>\n- Added Claude Fable 5 and Claude Opus 4.8 to the fallback model list (42+ models total).<\/p>\n\n<h4>1.3.0 - 2026-06-16<\/h4>\n\n<p><strong>Added<\/strong>\n- Top P, Presence Penalty, and Frequency Penalty settings fields on the admin settings page.\n- Full SupportedOptions coverage: temperature, top P, presence penalty, frequency penalty, stop sequences, system instruction, function declarations, and max tokens.<\/p>\n\n<p><strong>Changed<\/strong>\n- Extracted all admin HTML markup to <code>templates\/admin\/<\/code> for cleaner separation of logic and presentation.\n- Renamed plugin class directory from <code>src\/<\/code> to <code>includes\/<\/code> per WordPress plugin conventions.\n- Removed AI Client SDK from Composer production dependencies \u2014 WordPress 7.0+ provides it natively at runtime.\n- Updated <code>Requires at least<\/code> to 7.0.<\/p>\n\n<h4>1.2.1 - 2026-05-01<\/h4>\n\n<p><strong>Fixed<\/strong>\n- Connector showing as \"Connected\" before any API key is entered \u2014 provider availability now correctly checks for a configured API key.<\/p>\n\n<h4>1.2.0 - 2026-04-01<\/h4>\n\n<p><strong>Added<\/strong>\n- Provider logo displayed on the WordPress Connectors page alongside Anthropic, Google, and OpenAI.\n- Expanded test suite from 37 to 48 tests covering all model families, provider logo path, and settings edge cases.<\/p>\n\n<p><strong>Fixed<\/strong>\n- False \"no valid connector\" warning on the AI admin page when API key is set via the Connectors page.<\/p>\n\n<h4>1.1.0 - 2026-03-01<\/h4>\n\n<p><strong>Added<\/strong>\n- Updated fallback model list from 4 stale models to 40+ current models (GPT 5.x, Claude 4.x, Gemini 3.x, Qwen, MiniMax, GLM, Kimi, Grok, and free-tier models).\n- Domain Path header field to plugin file.<\/p>\n\n<p><strong>Changed<\/strong>\n- Improved plugin file header field ordering per WordPress.org standard.\n- Added file-level PHPDoc block to plugin bootstrap file.<\/p>\n\n<h4>1.0.0 - 2026-01-01<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>OpenCode Zen provider registration with WordPress AI Client.<\/li>\n<li>Dynamic model discovery with transient caching and fallback list.<\/li>\n<li>Settings page for default model configuration.<\/li>\n<li>Support for <code>OPENCODE_ZEN_API_KEY<\/code> environment variable.<\/li>\n<\/ul>","raw_excerpt":"AI connector for OpenCode Zen. One API key adds 61 LLMs for text generation \u2014 GPT 5, Claude, Gemini 3 and more \u2014 to the WordPress AI Client.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/303915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=303915"}],"author":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mralaminahamed"}],"wp:attachment":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=303915"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=303915"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=303915"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=303915"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=303915"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=303915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}