Skip to content

v2.2.11

Choose a tag to compare

@hjxwz123 hjxwz123 released this 14 Aug 11:49
· 85 commits to main since this release

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 null policy, 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_id directly 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 404 requests 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_ids storage. Existing models receive NULL, 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}/shares must now send email instead of user_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.11 and leave SANDBOX_IMAGE_TAG unset 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 --check passed.

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