Changelog

Latest features, fixes, and improvements. Update via Composer or download the ZIP file.
Download v3.13.0

v3.13.0

🐞 Bug Fixes

  • No generation into content you can't edit: While someone else is editing a page, or you lack permission to update it, the view button and the Copilot section are disabled instead of starting a run.

🔄 Updated Default Models

ProviderModelOldNew
OpenAICompletiongpt-5.4-nanogpt-5.6-luna
AnthropicCompletionclaude-haiku-4-5claude-sonnet-5
GoogleGenerationgemini-3.1-pro-previewgemini-3.8-flash
GoogleCompletiongemini-3.5-flashgemini-3.5-flash-lite

v3.12.0

🚀 Features

  • Request timeout for PHP runs: A new per-provider timeout option bounds every request the Client class makes, defaulting to 120 seconds. A stalled connection used to block the script indefinitely.

🐞 Bug Fixes

  • Bounded retry delay: When an OpenAI-family provider asks for a pause with Retry-After, the retry now waits at most one minute instead of however long it asked. See the OpenAI provider reference.
  • Structured responses without content: An OpenAI-family response with no content made Client::generateObject() fail with an error that slipped past a ProviderException handler. It now throws a ProviderException, like any other provider failure.

v3.11.0

🚀 Features

  • Config validation for skills and prompt templates: With Kirby's debug option on, a malformed skills or promptTemplates entry – and two skills sharing an id – now throw instead of failing silently. See the exceptions reference.

🐞 Bug Fixes

  • Failed generations report the failure: A run that fails now shows the provider's message instead of the success notification, and leaves the incomplete result unsaved.
  • Inline suggestions follow your typing: Only your own keystrokes start an inline suggestion – text from a generation run, an undo, or a redo no longer does. A provider that just failed is left alone for half a minute, and a superseded request stays cancelable.
  • Skills in programmatic prompts: Skill mentions resolve in every generation run, not just after the prompt dialog has been opened. See the skills documentation.
  • Unresolved mentions: An unknown skill ID or an unreadable page reference now names itself in a browser console warning instead of vanishing silently.

v3.10.0

🚀 Features

  • Kirby queries in the view button: userPrompt and systemPrompt now resolve Kirby queries for the view button, not just for the section. A prompt like {{ page.customPrompt.value }} follows the content instead of reaching the model verbatim.

🐞 Bug Fixes

  • Unresolvable page references: A page reference that no longer resolves is skipped instead of failing the whole generation.

v3.9.0

🚀 Features

  • Expanded reasoningEffort options: New provider-default, minimal, and xhigh levels join the existing none / low / medium / high. Configure the effort once – it works across all reasoning-capable OpenAI, Google, Anthropic, and Mistral models. See the Global Configuration documentation.

🔄 Updated Default Models

ProviderModelOldNew
OpenAIGenerationgpt-5.4gpt-5.6-terra
AnthropicGenerationclaude-sonnet-4-6claude-sonnet-5
GoogleCompletiongemini-3-flash-previewgemini-3.5-flash

v3.8.0

Copilot's AI engine is now a first-class PHP API. Drive structured-output generation from CLI commands, model methods, or any custom workflow – the same provider stack that powers the Panel.

🚀 Features

  • PHP classes: Generate text and structured JSON from any PHP context – no Panel required. See the PHP classes documentation.
  • Client::generateObject(): Generate JSON objects conforming to a JSON Schema across all supported providers with a single API. See the client reference.
  • ProviderException: Every upstream provider failure surfaces as one dedicated exception class. See the exceptions documentation.

v3.7.0

Kirby Panel
Write a tagline for the documentary festival's 2027 edition. @skill://brand-voice @skill://
Replace

🚀 Features

  • Skills: Define reusable prompt instructions – tone, style, or house rules – in your Kirby config. Editors add them to a prompt with an @skill://id mention from the new typeahead dropdown. See the skills documentation and the skills config reference.

v3.6.0

🚀 Features

  • Chat Completions mode for OpenAI-compatible gateways: Set providers.openai.api to chat for endpoints that don't expose the Responses API. This unlocks Cloudflare AI Gateway's Unified API – route Gemini, Claude, and more through a single endpoint via the OpenAI SDK shape. See the global configuration documentation.

🔒 Security

  • Proxy target allowlist: The proxy now restricts upstream requests to known AI provider hosts plus any configured baseUrl. Prevents authenticated Panel users from redirecting traffic to attacker-controlled hosts.
  • Scoped API key forwarding: API keys are now only injected into authentication headers. Prevents a Panel user from exfiltrating the key via other forwarded headers.

🐞 Bug Fixes

  • Proxy error handling: Upstream provider errors and network failures now surface to the Panel with proper status codes and messages instead of a silent empty stream.

🔄 Updated Default Models

ProviderModelOldNew
OpenAICompletiongpt-5-nanogpt-5.4-nano

v3.5.0

Kirby Panel
New in Kirby Copilot v3.5! Reference other pages in your prompt: @page://notes/across-the-universe • Page content is included as context for the AI. • Great for reusing blocks setups or page structures. • Works with UUIDs, too. Also, placeholders like {title} now get syntax highlighting!
Preview

New in Kirby Copilot v3.5! Reference other pages in your prompt: @page://notes/across-the-universe • Page content is included as context for the AI. • Great for reusing blocks setups or page structures. • Works with UUIDs, too. Also, placeholders like Our Studio now get syntax highlighting!

🚀 Features

  • Page references: Reference other Kirby pages in your prompt with @page://page-id to include their content as context for the AI. Insert pages via the toolbar dropdown or type the syntax manually. See the page references documentation for details.
  • Syntax highlighting: The prompt editor now highlights {placeholder} tokens and @page:// references with distinct colors for better readability.

🐞 Bug Fixes

  • Custom field types no longer block generation: A custom field type that extends a standard one, such as 'extends' => 'text', stopped generation with an "Unsupported field type" error. Copilot now generates content for it, and skips a field type it cannot fill instead of failing. (#8)

🔄 Updated Default Models

ProviderModelOldNew
GoogleGenerationgemini-3-pro-previewgemini-3.1-pro-preview

v3.4.0

🚀 Features

  • Block descriptions: Custom block blueprints now support an optional description key that is passed to the AI schema, giving the model richer context about each block's purpose. See the Blocks & Layouts documentation.
  • Nested blocks support: A custom block with its own type: blocks field – blocks within blocks – now gets content for its nested blocks too, one level deep. See the Blocks & Layouts documentation.

v3.3.0

🚀 Features

  • System view license management: View your license key, activation status, and version compatibility directly in the Kirby Panel system view, and activate a new license from there.

🐞 Bug Fixes

  • Inline Suggestions trigger: Suggestions will now reliably appear only when the writer field is in focus.

v3.2.0

🚀 Features

  • Config-defined prompt templates: Predefine prompt templates in the Kirby config that appear for all Panel users. Templates support multilingual labels and prompts via language arrays. Config templates are read-only and displayed alongside user-created templates. See the Prompt Templates documentation.
return [
    'johannschopplich.copilot' => [
        'promptTemplates' => [
            [
                'label' => 'Apply House Style',
                'prompt' => 'Format the text according to our editorial style: artist names in bold, album titles in italics, use curly quotation marks.'
            ]
        ]
    ]
];

v3.1.0

🚀 Features

  • Dynamic API key resolution: The apiKey option now accepts a closure, so the key can depend on the current user or other context at runtime. See the Global Configuration documentation.
  • Localized prompt templates: Default prompt templates are now available in English, German, French, and Dutch. Templates are automatically selected based on the Panel user's language setting.

v3.0.0

Kirby Copilot v3 is a free upgrade for all users with a valid license key for v2.

🔒 Security

  • Server-side API proxy: All AI provider requests now route through a server-side proxy instead of direct client-side requests. Your API keys are no longer exposed in browser network requests, protecting them from Panel users.

🚀 Features

Kirby Panel

Luise Frey photographs rooms

  • Inline suggestions: Writer fields show a suggested continuation as ghost text after a brief pause in typing, or on Cmd + , / Ctrl + ,. Press Tab to accept it or Escape to dismiss it. Suggestions run on a separate, faster model, set per provider as completionModel. See the Inline Suggestions documentation.
  • Global reasoningEffort: One option controls how deeply every reasoning-capable model (GPT-5, Gemini 3, Claude 4) reasons during generation. See the Global Configuration documentation.
  • Writer mark formatting preservation: Replacing selected text now preserves all formatting (bold, italic, links, etc.). Generation supports all Kirby writer built-in marks.
  • Prompt preview: Expand the Preview section in the prompt dialog to see field placeholders replaced with their actual values before sending.
  • Prompt templates: Save frequently used prompts as templates. Five built-in templates included (Fix Grammar, Make Concise, Simplify, Extend, Summarize). See the Prompt Dialog documentation.
  • Enhanced prompt history: Access recent prompts via dropdown menu with arrow key navigation.

🚨 Breaking Changes

  • Temperature removal: The temperature option has been removed. Modern reasoning models (GPT-5, Gemini 3, Claude 4) manage creativity internally. Use reasoningEffort instead.

v2.9.0

🚀 Features

  • Native PDF parsing: PDF files are now sent directly to the AI provider, allowing models to understand document structure, formatting, and content natively. For files larger than 50 MB, the plugin automatically falls back to text extraction. See the Processing PDF Files documentation.
  • Insert field placeholder: A new button in the prompt dialog lists the fields of the current page, file, or site and inserts a {fieldName} placeholder at the cursor. See the Field Placeholders documentation.
Kirby Panel
Summarize "{title}" in a meta description (max 155 characters). Include the main benefit and end with a subtle call-to-action. No quotes. This is the page: {content}
Preview

Summarize "Our Studio" in a meta description (max 155 characters). Include the main benefit and end with a subtle call-to-action. No quotes. This is the page: [ { "content": { "level": "h1", "text": "A studio for editorial design and slow websites" }, "type": "heading" }, { "content": { "text": "We are six people in a former print shop in Leipzig. We build identities, books and the websites that carry them. …" }, "type": "text" } ]


v2.8.0

🚀 Features

  • Custom user prompts: Define a userPrompt on a writer or textarea field to pre-fill its Copilot dialog with instructions for that field. Works with nested fields in blocks and layouts.

v2.7.0

🚀 Features

  • Reasoning effort support: Support reasoningEffort for OpenAI GPT-5 and GPT-5 Mini, replacing temperature for these models.
  • Customizable view button props: Configure the Copilot view button in your blueprints, overriding the global defaults. Set its label, theme, and logLevel, pre-fill the dialog with a userPrompt, or steer the output with a systemPrompt that editors never see.

For example, the view button with theme: blue-icon:

Kirby Panel

Our Studio

v2.6.0

🚀 Features

  • Block type exclusions: The new excludedBlocks global option lets you prevent specific block types from being generated by Copilot. This is useful when you have custom blocks that require manual content (e.g., embed blocks, form blocks) or blocks that should only be added by editors intentionally.
site/config/config.php
return [
    'johannschopplich.copilot' => [
        'excludedBlocks' => ['embed', 'form', 'code']
    ]
];

v2.5.0

🚀 Features

Kirby Panel

Our Studio

  • Panel view button: New Panel view button to open the prompt dialog anywhere. You can select multiple fields and generate their content with a single prompt.
  • Object and entries fields: Support object and entries fields for content generation.

v2.4.0

🚀 Features

  • Structure-aware blocks generation: Supports every project's block configuration and generates content based on your unique block definitions. See the Blocks & Layouts documentation.
  • Layout fields: Content generation for layout fields.
  • Google Gemini: Added Google Gemini models as supported AI provider.
Kirby Panel

Luise Frey: Rooms of Silence

Layout ×

No rows yet
Describe the page to Copilot, and it builds the rows from our blocks.
Generate a landing page for "{title}". Use 1/1 and 1/2 columns.
Preview

Generate a landing page for "Luise Frey: Rooms of Silence". Use 1/1 and 1/2 columns.

v2.3.0

🚀 Features

  • Kirby 5 license status integration: The plugin now displays its license status on the Panel's system page, alongside Kirby's own license, following Kirby 5's plugin license management conventions.

v2.2.0

🚀 Features

  • Anthropic image input: Enable image input for prompts when using an Anthropic model.
  • Per-site prompt history: Prompt history is stored per hostname in the browser's local storage.
  • API error handling: Pass all API errors to the Panel user interface for better error handling.

v2.1.0

🚀 Features

  • Prompt history navigation: Use the arrow keys (↑/↓) in the Copilot dialog to step through your earlier prompts. See prompt history.
  • Markdown formatting in writer fields: Generated content now supports bold, italic, and code Markdown formatting when using writer fields. The AI output is automatically converted to the writer field's rich text format.

v2.0.0

Kirby Copilot v2 is a major release with full support for Kirby 5 and requires a new license key. If you already have a license, you receive either a free upgrade to v2 or a 50% discount on your new license. Head over to the Kirby Tools Hub to get your discount or read more in the license compatibility guide.

🚨 Breaking Changes

  • Global system prompt: New global system prompt to cover text generation for all fields. No need to manually configure prompts for response formatting anymore.

🚀 Features

  • Toolbar buttons: New toolbar buttons for writer and textarea fields.
  • Kirby 5: Full compatibility with Kirby 5 including the new Panel architecture.

v1.8.0

🚀 Features

v1.7.0

🚀 Features

  • Panel license activation: Activate and manage your license directly in the Kirby Panel without manual file editing. Click the activation link in the Copilot section to enter your license details. Visit the Kirby Tools Hub to purchase or manage licenses.
  • Packagist distribution: The plugin is now available via Packagist, simplifying Composer-based installations. The private Composer repository has been deprecated.

v1.6.0

🚨 Breaking Changes

  • OpenAI model configuration: The OpenAI provider takes only the model name.

v1.5.0

🚀 Features

  • Dynamic prompts with Kirby queries: The userPrompt and systemPrompt section properties now resolve Kirby queries, so {{ page.title }} puts the page title into the prompt.

v1.4.0

🚀 Features

  • Automatic file context: files: auto on a file model copilot section to automatically use the current file (image or PDF) as context source.
  • Debug logging: logLevel section property to debug system and user prompts.
  • Custom API base URL: Provider option baseUrl to define the base URL of a custom Mistral API instance.

v1.3.0

🚀 Features

  • PDF context support: Add PDF files as context for AI prompts. Text content is extracted from each PDF and appended to the prompt, enabling AI generation based on document content. Configure PDF files using the files section property.

🐞 Bug Fixes

  • Hosting compatibility: Some hosts serve .mjs files with the wrong MIME type, so the browser refused to load Copilot's AI library and generation failed. The plugin now ships its scripts as .js.

v1.2.0

🏎 Performance

  • Reduced bundle size: A smaller initial Panel bundle loads the Panel faster.

v1.1.0

Official Release

This version marks the official public release of Kirby Copilot. The plugin is now available for purchase and production use.

🚀 Features

  • Mistral AI support: Use Mistral AI models as an alternative to OpenAI. Configure the mistral provider in your global configuration with your API key.
  • Image context: Add images as context for AI prompts to generate content based on visual input. Configure image files using the files section property.

🐞 Bug Fixes

  • Image format restrictions: The file picker offered every image type, including ones vision-capable models reject. It now accepts only PNG, JPEG, WEBP, and GIF, though the models do not support animated GIFs.

v1.0.0

Initial Release

Kirby Copilot v1.0 brings AI-powered content generation directly to the Kirby Panel. Generate text content from prompts using OpenAI's GPT models.

🚀 Features

  • Panel section: Add the Copilot section to any page blueprint to enable AI content generation. The section provides a prompt input field and generates content for your configured blueprint fields.
  • OpenAI integration: Generate content using OpenAI GPT models. Configure your API key and preferred model in the global configuration.
  • Customizable prompts: Define user prompts and system prompts to tailor AI responses for specific content types.
  • Field targeting: Configure which field the generated content should populate using the field section property.

For setup instructions, see the Installation guide.