v2.2.11
What's Changed
Aivory 2.2.11 adds per-model MCP tool defaults, closes an account-discovery gap in personal knowledge-base sharing, and makes the first message of a new conversation enter the chat view immediately even when the network is slow. Administrators can now decide which MCP services a model selects by default without weakening global or user-group restrictions, knowledge-base owners can share only by entering a complete account email address, and users receive immediate visual confirmation after sending from the home page.
Model-Level MCP Tool Defaults
- Adds an MCP default-selection section to the administrator model editor alongside the existing built-in tool defaults.
- Supports a live "all available services" policy that automatically includes newly added eligible MCP services without requiring every model to be edited again.
- Supports an explicit custom policy, including an empty selection when a model should start with no MCP services selected.
- Preserves the distinction between an omitted or
nullpolicy, an explicit empty array, and a specific list of MCP service IDs across administrator APIs, configuration backups, SQLite, and PostgreSQL. - Keeps saved IDs for services that are disabled, temporarily unavailable, unsynchronized, or deleted, allowing administrators to review and remove stale configuration instead of losing it silently.
- Shows MCP names, icons, descriptions, loading placeholders, retry actions, empty states, disabled states, unsynchronized states, stale-snapshot states, and deleted-service placeholders in the model editor.
- Exposes select-all and clear actions for custom defaults while retaining unavailable saved selections until an administrator deliberately removes them.
- Applies model defaults only when the user has not made an explicit tool selection for the conversation. A user's selected tools remain authoritative for that turn.
- Continues enforcing administrator-wide tool availability and user-group permissions as hard runtime limits, regardless of a model's saved defaults.
- Declares tools only from currently enabled MCP services with a usable discovery snapshot. A previous synchronization error can continue using the last successful snapshot.
- Re-resolves MCP defaults when the system switches to a TTFT fallback model, so the fallback model uses its own configuration rather than inheriting the original model's defaults.
- Keeps MCP service IDs and connection details out of the public model catalog while returning the configuration through authenticated administrator endpoints.
- Adds localized administrator copy for English, Simplified Chinese, Traditional Chinese, Japanese, and French.
Private Knowledge-Base Sharing
- Requires a complete email address before searching for a user to share a personal knowledge base with.
- Returns no candidates for an empty query, display name, partial local part, partial address, wildcard, or email substring, preventing the sharing dialog from becoming a general account directory.
- Matches one active account by normalized, case-insensitive exact email and excludes the knowledge-base owner.
- Limits the candidate endpoint to at most one result because account emails are unique.
- Changes share creation and role updates to resolve the target from the complete email on the server instead of accepting an opaque user ID.
- Rejects attempts to bypass the discovery boundary by submitting
user_iddirectly to the share mutation endpoint. - Keeps existing shares in a separate visible list so owners can still review, change roles, and remove access without searching again.
- Adds clear input guidance, incomplete-address feedback, loading feedback, no-match feedback, retry behavior, and an already-shared state in all supported interface languages.
- Preserves the existing read and upload-capable roles, ownership rules, revocation behavior, user-group restrictions, and workspace/project sharing boundaries.
Immediate New-Conversation Navigation
- Creates a local temporary conversation and enters its
/chat/<id>route synchronously when the user sends the first message from the home page. - Starts the real conversation request only after the target route is visible, so a slow create request no longer leaves the home page looking unresponsive.
- Replaces the temporary conversation ID in place when the server returns the real ID, without interrupting the visible turn or stream.
- Uses the same optimistic transition for ordinary first messages and messages with attachments.
- Reuses an attachment-owned server conversation that was prepared earlier, preserving file ownership and ingestion state instead of creating a duplicate conversation.
- Waits for an in-progress attachment draft only in background send work; the wait no longer blocks route navigation.
- Avoids requesting conversation details or inline threads for client-only temporary IDs, eliminating expected
404requests during the optimistic interval. - Keeps the user's message and an explicit assistant error state visible if server-side conversation creation fails.
- Retains duplicate-send protection and avoids redirecting the user back to the conversation if they navigate elsewhere before the real ID arrives.
- Loads the home and thread views through one shared lazy route module so the first-send transition does not flash the content-panel loading fallback.
Upgrade Notes
- Database migrations run automatically for SQLite and PostgreSQL; no manual SQL migration is required.
- The migration adds nullable
models.mcp_server_idsstorage. Existing models receiveNULL, which means all currently eligible MCP services are selected by default and preserves the behavior before this release. - Administrators can save
[]to make a model default to no MCP services, or save a list of service IDs for a custom default selection. - Direct API integrations that call
PUT /api/kbs/{id}/sharesmust now sendemailinstead ofuser_id. The email must be complete and resolve to an active account. - The share-candidate endpoint now returns a result only for an exact email lookup and returns at most one candidate.
- Existing knowledge-base shares, roles, files, embeddings, and conversation selections require no migration or reindexing.
- The optimistic new-conversation flow does not change stored conversation or message formats and requires no historical data migration.
- For Docker deployments, set
IMAGE_TAG=2.2.11and leaveSANDBOX_IMAGE_TAGunset after the matching application and sandbox image workflows complete.
Validation
- TypeScript type checking, ESLint, and the production frontend build passed.
- Focused frontend tests passed for exact-email discovery, model MCP default-selection semantics, optimistic first-send ordering, attachment conversation reuse, and temporary-route request suppression.
- Focused Go tests passed for model persistence and migration, administrator model APIs, tool catalogs, MCP runtime filtering, fallback-model behavior, exact-email sharing, authorization, and revocation-sensitive paths.
- All supported administrator and knowledge-base locale files parsed successfully.
git diff --checkpassed.
Release Scope
- Knowledge-base exact-email sharing:
3aa97ce(fix(kb): require exact email for sharing). - Model-level MCP defaults:
4a5dc7f(feat(models): configure default MCP tools). - Immediate new-conversation navigation:
1c31966(fix(chat): enter new conversations immediately).
Full Changelog: v2.2.10...v2.2.11