New Features * #3529730 Add support for string_long field type in content suggestions * #3529802 Don't hardcode 'value' key for textual field translation * #3528684 Add processor and field widget assist plugin system to AI Content Suggestions * #3523336 Add AI Content Suggestions on 'Add Block' and custom 'Taxonomy Term' pages * #3533603 Add discoverability of requests for AI Test module * #3532873 Create alt text automator field widget * #3531028 Make vector databases abstracted and installable for recipes - Part 2 * #3533738 Enhance description of entity reference properties with example format * #3531134 Create Base Class for OpenAI based clients * #3506391 Alter PreGenerateResponseEvent response * #3507459 "Access Denied" shown when no VDB provider is available * #3496915 Missing documentation for loadModelsForm() * #3533133 Improve AiApiExplorer Table Content Display for Better UX * #3535399 Stricter unserialize() * #3535381 Create an automator that can rewrite image filenames * #3519692 Create tools (function calls) plugin finder/browser * #3534640 Add Field Widget Action for llm_link Automator on link_default widget * #3534653 Field Widget Action for llm_number Automator on number widget (integer, float fields) * #3535627 Make it possible for AI Test to catch requests and store as test files * #3534727 Add support for groups in the widget dropdown * #3509235 Add AI Prompt management functionality within AI core * #3531717 Add text extractor plugins for image, file, text_with_summary and link field types * #3534675 Field Widget Action for llm_summary Automator on text_textarea_with_summary widget Tasks * #3525311 Fix gitlab CI FFI issue * #3525289 Add CI job that builds the CKEditor JS in Gitlab CI * #3525289 Add CI job that builds the CKEditor JS in Gitlab CI * #3479913 Move the external moderation module into AI Core * #3529835 Add amazee.ai as an AI provider * #3530220 Document the AI Automator Types * #3512100 Create AI DataTypeConverter for complex data types * #3512100 Create AI DataTypeConverter for complex data types * #3530603 Separate Gin theme-specific styles into dedicated CSS file * #3529313 Add `getStructuredOutput()` method to ExecutableFunctionCallInterface for returning parsed output * #3528674 Raise minimum version to 10.4 * #3532517 Remove AiDataTypeConverterPluginManager from Base class and load via trait * #3533075 AI Content Suggestion: Change the message when no provider is available * #3533917 Fix the AI Search documentation link in README.md * #3533890 Create "Try out the AI module" documentation pages * #3535312 Tests are breaking due to phpcs updates * #3535822 Document AI Test replay possibilities * #3535847 Remove provider and vdb provider stubs * #3479913 Move the external moderation module into AI Core * #3535961 Set maxEmbeddingsInput and embeddingsVectorSize in EmbeddingsTraint and use in with default values in OpenAiBasedProviderClientBase * #3535963 Use $this->pluginDefinition['provider'] for getConfig and getApiDefinition * #3535044 Add basic documentation for Field Widget Action with automators * #3534990 Add basic documentation for Field Widget Action submodule * #3536117 Add link to ECA field widget action in documentation Bugs * #3526710 [Error] The Prompt is unsafe: The prompt was flagged by the moderation model. It is stopping the Search API indexation * #3528431 Only show agent assistant form, if AI Agents 1.1.x+ is available * #3528446 AI Automators CKEditor plugin is broken * #3527899 sourceEditing plugin no longer gets enabled automatically in 1.1.x * #3528404 AI Translate: controller override not triggered if installed via recipe * #3531593 ai_content_suggestions no label on suggestions button when the configured label is an empty string * #3504908 WSOD when saving an assistant with an invalid model * #3532682 Spelling error in API Explorer - Chat Generation Explorer * #3532220 Change the messenger on Automators to interface * #3525900 Access check is making page to be uncacheable * #3532936 The ajaxGenerate() of Translate.php does not handle taxonomy terms * #3529089 Undefined array key "tone_prompt" in Drupal\ai_content_suggestions\Plugin\AiContentSuggestions\Tone->saveSettingsForm() * #3512540 Remove previously implemented ContextAwarePluginInterface from FunctionCall(Interface/Base) in AI module * #3518498 AI search indexing expects entities to be always bundles * #3517604 Fix duplicate deep chat intro message after clearing history on front-end themes * #3533935 Forwarding of documentation doesn't work * #3532535 sourceEditing plugin no longer gets enabled automatically in 1.1.x - followup * #3533339 AI Automators with CKEditor does always require selection * #3534670 Typo in Default Information Tools example code * #3511090 PHP Error: Null check needed in RuleBase::getProvider() when no default provider is configured * #3534436 AI search tests should check if CommonMarkConverter is present * #3534827 When Field Widget worker is selected, Direct also fires (?) * #3535810 Fix phpunit tests for Max Version Support Requests * #3530912 Add Docker Model Runner provider to AI providers list in documentation Contributors: scott_euser, gxleano, marcus_johansson, breidert, kevinquillen, mrdalesmith, prashant.c, annmarysruthy, arthur_lorenz, dan2k3k4, matthews, svendecabooter, sarvjeetsingh, anjaliprasannan, valthebald, apmsooner, leo pitt, davidlfg, michaellander, andrewbelcher, narendrar, arisha, emacoti, efpapado, a.dmitriiev, akhil babu, bisonbleu, kristen pol, prabha1997, sundflux, arkener, rajab natshah, jan kellermann, emma horrell, rszrama, g.rocchini, doxigo, adwivedi008, ankitsingh0188, shalini_jha, sayyedhali, lukasfischer, yautja_cetanu, jurgenhaas, lussoluca, sijumpk, arwillame