Skip to main content
Aikeedo 5.0 removed several features and the interfaces that went with them. A plugin written for 4.x keeps installing, but it can fatal at boot if it resolves a class that no longer exists, which marks it as failed.
Test your plugin against 5.0 before your customers update. A plugin that references a removed class breaks on the first request after the update.

Removed interfaces and classes

TitleServiceInterface is gone

Ai\Domain\Title\TitleServiceInterface and the per-provider TitleGeneratorService classes were removed.
Use the title service, which reads the globally configured model for you:
For a one-shot completion that isn’t a title, resolve a text completion service instead:

The per-plan titler model is gone

PlanConfig::$titler no longer exists. The title model is a single global setting under Settings → Features → Utilities, and the title service reads it. Remove any plan configuration or UI your plugin had for it.

Removed features

Renamed capabilities

The generate_image plan tool became generate_media, which now covers images, video, voice-over and transcription. Update any plan configuration your plugin reads or writes, and any capability check keyed on the old name.

Translations

Every bundled plugin is translated in 5.0. If your plugin ships user-facing strings, wrap them in the gettext functions and ship catalogs, or your plugin will be the only untranslated part of the interface.
See Localization.

Migration checklist

1

Search for removed references

2

Update the code

Replace title generation with Titler, completions with TextCompletionServiceInterface, and generate_image with generate_media.
3

Test against 5.0

Install the plugin on a 5.0 installation with DEBUG=true, activate it, exercise every page and endpoint, and check var/log for errors.
4

Add translations

Extract and translate your strings, and include locale/ in the archive.
5

Release

Raise version, set extra.compatibility to ">=5.0.0", and tell customers to update the plugin together with Aikeedo.
The plugin boots on 5.0 with no entries in var/plugin-health.json.