Repository navigation
Kaleta 2.2.0
Kaleta 2.2 makes Claude the default way to run a site – and puts you in charge of what it may do. Every connection is full access, drafts only or read only; the change log shows what Claude changed and through which connection; and Claude follows the instructions you write for it.
What a connection may do
When you connect Claude – on the consent screen, or when you create a token under My account – you choose:
- Everything your account may do: build, edit and publish, never beyond your role.
- Drafts only: Claude builds pages, writes news drafts and prepares look changes. You publish them. It cannot change settings, redirects or anything else on the live site.
- Read only: Claude reads pages, settings, the audit and the change log, and suggests changes.
How it works:
- A limited connection only sees the tools it may use, and it never has the publishing permission.
- Publishing through it is refused before anything is saved.
- My account shows the access of every connected app and token.
- Existing connections keep full access, so nothing changes until you reconnect with less.
Who changed what
- The change log marks every change Claude made with the name of its connection.
- It can show only Claude's changes or only people's.
- Claude reads it too, with the new
list_changestool – "what changed this week?" now has an answer.
Instructions for Claude
Extensions → Claude connection → Instructions for Claude takes what Claude should keep to: how you address customers, words to use or avoid, house rules.
- Every connection gets them when it connects.
- They are also available to Claude as the resource
kaleta://instructions.
Claude also offers ready-made tasks (in the Claude app under +):
- build a page;
- run the site audit and fix what is safe;
- translate a page;
- write a news item;
- a weekly review of the site.
Claude from the first minute
- The Claude connection is on in new installations. Existing sites keep their choice of extensions.
- First steps on the Dashboard now include Connect Claude.
- Sites in a subfolder can connect the Claude app through OAuth: they serve
/.well-known/openid-configurationunder the site. - The MCP protocol version is negotiated: 2025-06-18, 2025-03-26 and 2024-11-05.
More settings over the connection
Besides the site name and company details, update_settings now takes:
- extensions and language versions;
- the cookie bar;
- SEO switches (indexing, schema.org, llms.txt, IndexNow, AI crawlers, robots.txt rules, verification codes);
- analytics codes;
- the code in
<head>; - the security contact;
- the instructions for Claude.
Claude cannot switch its own connection off.
Fixes
- Publishing permission for builds: publishing through
save_build,edit_buildandbuild_from_htmlneeds the publishing permission. Before, a custom role with access to Pages but without publishing could publish a build over the connection. - First steps in every language: the privacy-policy step recognises the page in German, Polish, French, Spanish, Italian and Slovak too.
- Settings keep hidden fields: a settings field the form does not show keeps its value when the tab is saved.
- No skipped data migrations: each data migration now runs once by name, whatever the database version says. A site updating from 1.x straight to 2.2 still converts its old pop-up elements.
For contributors
Mcp\Cataloghas a fourth access kind, draft: tools whose effect is a draft.Catalog::allows()decides per connection.- Data migrations run by name (
data_migrations,Migration::pending()), so a PHP migration no longer has to be the highest number of its release.Migration::DATAlists them, and a unit test keeps the list in step with the files. Auth::useConnection()carries the connection's name and access.canPublish()is false for limited connections.- New pieces:
Mcp\Prompts(resources and prompts);- migration 0035 (
ka_api_tokeny.access,ka_oauth_kody.access,ka_protokol.via, the extensions of existing sites written down).
- The recorded MCP contract gains
list_changes.
Updating
Update from Settings → Backups and updates. It works from every earlier release; tested from 1.2, 1.4.1, 1.9, 2.0 and 2.1.