Repository navigation
Kaleta 3.0.0
Kaleta 3.0 opens up. Developers can write add-ons, visitors can book appointments, and sites move in from Ghost, Blogger, Joomla, Drupal and Webflow.
It is a major version because it reverses three decisions recorded under "Not planned". Every 2.x site updates to it as usual: nothing is removed, and every MCP tool, builder element and design token keeps working.
Add-ons and the extension API
- Developers write add-ons. An add-on is a folder in
extensions/<slug>/with a manifest and a class. It hooks into Kaleta through a stable, versioned API:- events, such as an enquiry received or a page published;
- filters for the page head, the footer and the whole page;
- text tokens
{{ext.<slug>.<name>}}; - administration pages;
- tools for Claude, which go through the connection's access, the guardrails and session undo like Kaleta's own tools;
- background jobs;
- their own settings.
- Add-ons (Administration) lists what is in
extensions/, says why an add-on cannot run, and switches add-ons on after the administrator confirms they trust the code. - An add-on that fails while loading is switched off at once and its error is shown.
'addons' => falsein config.php is a safe mode. Add-ons never run in the public demo. - Kaleta never uploads or downloads code itself.
- The API is a recorded contract (
tools/contracts/extension-api.json, API version 1) that holds through 3.x. - The guide for developers is
docs/EXTENSIONS.md, and an example add-on is indocs/examples/extensions/hello/.
Online booking of appointments
- Bookings (Content) holds services (length, buffer, price text), the people who provide them with their weekly hours and days off, and the bookings themselves.
- People without their own hours use the site's opening hours, and the site's closed days apply to everyone.
- The new Booking element lets a visitor pick a service, a person or anyone, a day in a month calendar and a free time, then leave name, e-mail and phone. It also works without JavaScript.
- The free times respect:
- lunch breaks and days off;
- existing bookings with their buffers;
- a minimum lead time and a booking horizon;
- daylight-saving days.
- The same slot cannot be booked twice: the check runs again inside a locked transaction.
- E-mails:
- a confirmation with a cancel link and a calendar file;
- a notification to the person and the site;
- a reminder before the appointment;
- a cancellation notice.
- No payments.
- Bookings follow the enquiry retention (deleted or anonymised) and are part of personal data requests.
- Claude:
list_bookings(every read is logged),booking_availability,save_booking_service,save_booking_staff,cancel_booking.
Moving in from other systems
Import and export → From another system has a common importer:
- It reads the export.
- It shows a preview with counts, sample titles and warnings.
- It asks what becomes news, pages, categories and tags, and which authors map to which users.
- It imports in batches, downloads the images and creates redirects from the old addresses. The redirects also fix the site's own links.
A second import adds nothing new.
- Ghost: the JSON export, including Lexical content.
- Blogger: the Atom backup. Labels become tags; comments are skipped.
- Joomla and Drupal: read through the site's own API (Joomla Web Services, Drupal JSON:API). An access token you type is used only for the fetch and is never stored.
- Webflow: the CSV export of a CMS collection. Static pages come through the URL importer.
- WordPress keeps its own importer.
Also in 3.0
Tabs in the administration are pills at every width: they wrap on a wide screen and scroll in one row on a phone.
Updating
Update from Settings → Backups and updates. It works from every earlier release. The update adds the booking tables.
Add-ons need nothing until you put one into extensions/.