[Improvement] AI provider "Supports" list is outdated (merge Answer Composer/Improver, add Ticket Summary and Message translation) (#27581)
[Improvement] Message translation configuration page does not follow the design and the Ticket summary activation pattern (#27558)
[Improvement] Message translation: ticket view UI does not match the design (translation switch, Translate all) (#27554)
[Improvement] AI operator keeps answering a chat while a human agent is present; leave on TransferAccepted instead of in the transfer tool (#27511)
[Improvement] Skip design gallery on widget creation and apply a default (#27246)
[Improvement] Chat action panel: "Take over from AI" button to remove the AI operator without transfer/end (#26831)
[Improvement] Trim RESPONSE_PUBLIC agent projection returned to visitors via La_Rpc_User.load (#26373)
[Improvement] Implement capped mailbox picker (list + fallback) for MS OAuth shared mailbox (incoming and outgoing) (#26088)
[Improvement] Add the option to unselect the requester when changing the ticket owner (#25361)
[Fix] Message translation config entry missing under Configuration > AI because the entitlement flag is stored as 'Y' but read only as 'A' (#27543)
[Fix] CrawlerGuard empty 200 response gets cached by Varnish and served to real visitors (chat button script empty) (#27540)
[Fix] Creating a contact group with an emoji in its name fails (#27308)
[Fix] GWT Translation.addParam() puts a value into the wrong placeholder when an earlier argument contains %s (#27281)
[Fix] Downloaded call recording file has no extension, preventing local playback (#27150)
[Fix] Agent panel conversation stops rendering (and never recovers) if the AgentMessageGroupFactory code-split fragment fails to load (#26752)
[Fix] Widget loader has no dedupe/teardown: re-running the embed snippet creates a new widget + iframes each time, causing sustained request loops in SPA embeds (#26400)
[Fix] GWT Translation.addParam has no positional placeholder support, so a reordered translation silently swaps arguments (#26330)
[Fix] Lang::_replaceArgs throws an uncaught ValueError on a message containing a bare % (#26324)
[Fix] Embedded chat widget cut off by mobile dynamic address bar (#26227)
[Fix] The context variable - contains - X rule is not executed if the value has non-English language characters (#25588)
[Fix] Calls History CSV export fails for large call histories (#23419)
[Other] Refactorings and other fixes (#27477)(#27426)(#27354)