LOCALAI_MODERATION_DISABLED switched off OpenAI moderation for every model (ASB-405) e8f58184
Moderation of service: openai models runs again when LOCALAI_MODERATION_DISABLED=true is set, which is the Helm default (localaiModerationDisabled: true). Since 4.8.0 that switch disabled the input check, the output check and the text-to-speech check for every OpenAI-compatible service instead of LocalAI only. LocalAI models stay unmoderated; moderationDisabled is the only global switch.
Deployments that point service: openai at a self-hosted endpoint without /v1/moderations now send moderation requests and fail on them. Use service: localai for self-hosted models, or set moderationDisabled: true.
Embeddings endpoint answers with 500 on every App Suite start without a vector store (ASB-432) 9a08a1e0
Load the Smart Search embeddings state on first use instead of at App Suite start, so users without Smart Search no longer call the embeddings endpoints
Return an empty list from GET /api/embeddings/ when no vector store is configured instead of an error
AWS Bedrock provider on the Converse API with tool calling, reasoning and egress proxy (AS-249) 51584c5fe2d62e30
Replaces the InvokeModel based claude-aws implementation and adds tool calling, extended thinking, prompt cache points and stop-button support
Moderation via Bedrock Guardrails (BEDROCK_GUARDRAIL_ID) or a Claude Haiku classifier, optionally fail-closed
Credentials from the AWS SDK default chain or a Bedrock API key; the Helm chart renders its own ServiceAccount
AI_EGRESS_PROXY_URL and AI_EGRESS_NO_PROXY now apply to Bedrock traffic
See the AWS Bedrock section of documentation/models.md and helm/ai-service/README.md.
MCP digest without side effects, attendee classification, thread and slot tools, audit for every call, module scopes (ai-service#283) 461ff8d8fdc862b8
getDailyDigestForUser no longer creates or deletes tasks and takes an optional since that returns what changed
Module scopes per API key with a configurable tier mapping (MCP_SCOPE_TIERS) and an expert mode in the AI settings; new keys default to the read tier
New getMailThread; getFreeBusy returns ranked slot candidates from the user's working hours
Every tool call writes an mcpAudit log line
Refuse MCP mail and invitations to external addresses by default 23ac75f4
Invitations, mail recipients and vacation notice text to addresses outside the global address book are refused unless MCP_EXTERNAL_INVITATIONS (Helm mcp.externalInvitations) is true
sendMail refuses drafts open in App Suite and does not report a mail as failed when only the sent-folder copy failed
Require AI consent before MCP tools send data to the model 2663e427
Digest summaries, calls to action and searchMailSemantic call the model only with consent, using the user's selected model
mcp.autoSummary now follows features.autoSummary when unset, so with the chart defaults the MCP digest no longer summarises
Restrict OAuth redirects to an operator allow-list and revoke manual keys with their sessions 89cad731
MCP_OAUTH_ALLOWED_REDIRECTS (Helm mcp.oauthAllowedRedirects) lists allowed redirect hosts and schemes; empty allows every redirect
Revoking a manual key logs out its Middleware session; GET and DELETE /api/mcp/key are deprecated
Analyse changed calendar events again and expire old analyses (ai-service#301) bac87397b0e4edca
New POST /api/calendar/analysis; GET /api/calendar/{eventCompositeId}/analysis/{language} is deprecated
Analyses older than summaries.maxAgeDays are deleted
Structure prompts for provider-side prompt caching (AS-281) b62674ea
Prompts are ordered so OpenAI can serve the history from its cache; new metric ai_cached_tokens_total
Treat appointments marked as free as reminders in the away digest (ai-service#284) 30463324
Address users with Sie in the formal German UI outside the chat; the chat keeps "du" f7282d19
Apply plans.yaml and models.yaml changes at runtime without restarting the pods (ai-service#308) 14e22209
The service applies changes within one to two minutes; an invalid file is rejected and the previous configuration stays active while helm upgrade still reports success, so check the service log after a change
Appointments in a series are rendered twice when declined via AI chat (ai-service#298) ee60d75b
Chat history displays yesterday's chats under today (ai-service#314) bf2ee03d
Chat appointment and task searches missing results when the model converted the time range to UTC (ai-service#285) 349b7b95
Keep numbered lists in summaries (ai-service#291) aaa8d6c7
Select away digest appointments by what happened while away (ai-service#284) c9665034
Lists open invitations, appointments changed by others and missed occurrences, and names the reason for each
Birthdays and shared calendars no longer appear as unanswered invitations
Show appointments organized in another time zone at the user's time 61428c17
Memory extraction failing with OpenAI json_object format b3633a67
Read the io.ox/core settings from the JSlob tree e9fb9a18
MCP usage is now reported to OX Count; keys generated before the update keep reporting off until they are regenerated
Use ss instead of ß in AI texts for the de_CH locale (AS-311) bcd14bf7
Use KI instead of AI in the formal German UI 077a3418
Lowercase du in the informal German translation 2c68eec4
Mail compose AI chat header matches the mail compose header style 2ae072f2
Upper right corner not rounded in compose chat 69825005