Regression in 1.4x release vs 1.3.x
## Description
I was surprised to see that https://git.drupalcode.org/project/ai/-/work_items/3582743 existed in 1.3.x (1.3.3 release) but was missing from 1.4.2. This led me to wonder if it was a wider problem. I have not checked the below commit by commit, but I got Claude to write a quick script to find all commits that exist in 1.3.x that were cherry-picked to 1.x BUT were cherry-picked after 1.4.x was branched off and never brought into 1.4.x (they do all seem to exist in 1.5.x at a glance).
E.g. https://git.drupalcode.org/project/ai/-/tags/1.3.3 here is 1.3.3 release containing https://git.drupalcode.org/project/ai/-/work_items/3582743 and here is 1.x still containing it https://git.drupalcode.org/project/ai/-/blob/1.x/src/Traits/File/FileSystemTrait.php?ref_type=heads so I know it has not been reverted.
## Proposed resolution
Fix the 1.4.x branch to include at least all that was in both 1.3.x and 1.x to not regress from 1.3.x.
## Bug fixes
| Date | 1.x commit | 1.3.x source | 1.4.x source | Description |
|------|------------|--------------|--------------|-------------|
| 2026-03-27 | `ecd43489` | `b3721650` | \- | fix: #3574811 ImageAltText field widget action fails in media library add form |
| 2026-03-27 | `049f24f3` | `9b2e4a6` | `b9428cb7` | fix: #3579608 fix ai_global.js library to depend on core/drupal |
| 2026-04-01 | `f6486150` | `edcdb15` | `01bed06a` | fix: #3582605 filter-functionaljavascript-tests.sh |
| 2026-04-03 | `d78cf116` | `f6deee3c` | \- | AI explorer warning fix |
| 2026-04-09 | `0f9d44e9` | `cd3e739` | `8a9a33e8` | fix: #3582074 AssertionError: Cannot load the "key" entity with NULL ID |
| 2026-04-09 | `eb58f2cd` | `62e816f` | `d5e2a529` | fix: #3581662 Add cshs widget support to ClassificationOptionsSelect |
| 2026-04-09 | `2f06a664` | `e9c1a96` | `8328754b` | Issue #3579480 Fixed the warning of strict |
| 2026-04-09 | `ca0557ab` | `0dcf867` | `8c733a24` | Resolve #3573429 "Processing automators does..." |
| 2026-04-13 | `447dc212` | `28c609c3` | \- | Issue #3582743 Set temp directory for encoderProvider |
| 2026-04-13 | `4d498d37` | `0c9d51f` | `6376a15d` | Resolve #3584344 "The handleapiexception signature" |
| 2026-04-28 | `c3f76a35` | `39ba0fb` | `20c8ac18` | fix: #3580767 use UTF-8 safe string functions |
## Features / improvements
| Date | 1.x commit | 1.3.x source | 1.4.x source | Description |
|------|------------|--------------|--------------|-------------|
| 2026-03-27 | `0c7ffb39` | `4fe844a` | `4c7a9b96` | ci: Issue #3578789 Update and alphasort cspell entries |
| 2026-04-01 | `e2420067` | `8c672e1` | `cfbd4ad7` | Resolve #3577469 "Add possibility to..." |
| 2026-04-08 | `b3c10732` | `43ab7ac` | `07f9bf7e` | Issue #3583705 Use form state user input and not the input variable in valueCallback |
| 2026-04-08 | `fc92dc1e` | `fd33c28` | `3507d731` | Resolve #3583725 "Move the fjs" |
| 2026-04-09 | `d0867d5c` | `a37a226` | `14c54282` | feat: #3574611 Forms are broken when automators or FWA are not configurable |
| 2026-04-09 | `f35a0003` | `f730626` | `bb4e3bdf` | feat: #3579079 Restrict Topic guardrail silently bypassed due to case-sensitive topic matching |
| 2026-04-09 | `10fe1d4a` | `449a333` | `28431572` | Resolve #3574519 "Fix the tag release" |
| 2026-04-13 | `8e100828` | `5088ba6` | `53b8d6e7` | feat: #3578417 AI Automators uninstall leaves ai_automator_status field |
| 2026-04-13 | `dde9d33d` | `a5c955e` | `2e0445ba` | Issue #3584421 Add support for per-instance context definition overrides on function call plugins |
| 2026-04-13 | `4d498d37` | `0c9d51f` | `6376a15d` | Resolve #3584344 "The handleapiexception signature" |
| 2026-04-28 | `4c0a2892` | `cd7cc88b` | \- | Issue #3582739 Add type conversion |
| 2026-05-12 | `ed1b74a8` | `217130ab` | \- | Issue #3580690 Implement processOutput() in RegexpGuardrail |
| 2026-06-04 | `eac948ca` | `c5a40a5f` | \- | task: #3586455 Agent loop responses bypass responseInterceptor; deduplicate step-message wrapping |
## Documentation
| Date | 1.x commit | 1.3.x source | 1.4.x source | Description |
|------|------------|--------------|--------------|-------------|
| 2026-02-18 | `4ca5b2dd` | `e83f2f` | `b1359bed` | Issue #3572378 Fix markdown documentation for communicating releases |
| 2026-03-31 | `340895ea` | `92fe0ae` | `6f485e16` | Issue #3582367 Add documentation for the Guardrails system |
| 2026-04-02 | `47a8b552` | `de34876` | `930bb734` | Issue #3570159 Fix 404 in Documentation for Submodules \> AI Logging |
| 2026-04-07 | `193bd5d7` | `dce42a1` | `7a38f467` | Issue #3582359 Fix broken links, dead nav entries, duplicate YAML |
| 2026-04-08 | `32dbd364` | `6216aef` | `b4dec157` | Issue #3582361 Add documentation for the Tools Library form element |
| 2026-04-08 | `5222412f` | `5263b32` | `eaac0fbf` | Resolve #3545551 "Put documentation through" |
| 2026-04-09 | `5238f45a` | `8faf42` | `5aadb834` | Issue #3582364 Add documentation for the Text Chunker service |
| 2026-04-09 | `a78c4066` | `bc723f3` | `9582e470` | Issue #3582363 Add documentation for the Tokenizer service |
| 2026-04-09 | `0ce6a238` | `f763aec` | `dca46a10` | Issue #3582366 Add documentation for PromptJsonDecoder |
| 2026-05-12 | `a1405e30` | `551970db` | \- | ai-3578472 Document how update |
| 2026-04-13 | `8a833890` | `effff50` | `d40b7004` | Resolve #3584415 "Update fullpatchtest docs" |
<!--/label ~"aiTranslate"-->
issue