Skip to content

v2.3.0

Choose a tag to compare

@hjxwz123 hjxwz123 released this 19 Aug 00:57
· 58 commits to main since this release

What's Changed

Aivory 2.3.0 introduces a complete workspace authorization model for teams, governed member invitations, workspace-scoped skills and prompts, and administrator-controlled enterprise OAuth/OIDC entry policies. This release also hardens authorization across conversations, projects, knowledge bases, files, tools, and generation flows; improves modal behavior during asynchronous updates; fixes Gemini thought-signature compatibility; and strengthens release-image publishing.

Workspace Roles and Authorization

  • Adds three explicit workspace roles: administrator, member, and guest. The workspace creator remains the canonical owner and is represented as an administrator with owner-only authority where required.
  • Gives workspace administrators management access across workspace conversations, projects, knowledge bases, members, invitations, policies, and audit history.
  • Keeps member access bounded to shared workspace resources and resources they created, while allowing administrators to inspect private workspace content for governance.
  • Makes guests read-only across workspace content. Creation, mutation, generation, feedback, branching, retry, rename, sharing, and deletion controls are hidden when unavailable and are independently rejected by the API.
  • Removes archive behavior from workspace conversations for every role, preventing workspace threads from disappearing into a personal archived-chat view.
  • Shows the creator alongside the private marker when an administrator views another member's private workspace conversation.
  • Adds per-member permissions for creating projects, creating private conversations, creating skills and prompts, creating knowledge bases, adding knowledge-base files, and deleting knowledge-base content.
  • Applies authorization at the API and storage layers instead of relying on frontend visibility. PostgreSQL and SQLite use equivalent authorization paths.
  • Rechecks authority inside sensitive transactions so stale administrator requests cannot complete after a role downgrade or removal.
  • Revokes generation work when a membership or workspace policy change removes the authority required to continue it.

Workspace Capability Policies

  • Adds workspace-level model allowlists and makes the configured model set selectable from workspace management.
  • Adds workspace restrictions for built-in and hosted tools, MCP services, sandbox execution, image generation, knowledge bases, and file uploads.
  • Adds an optional monthly member-credit ceiling scoped to workspace activity.
  • Enforces capability policy when catalogs are listed and again when a request is executed, preventing clients from bypassing a hidden or disabled option with a direct API call.
  • Keeps owner-only and administrator-only operations distinct, including administrator promotion, ownership transfer, and high-privilege invitation creation.
  • Clears stale role-update loading state in the management UI and provides explicit loading, success, failure, and empty states for workspace administration requests.

Governed Workspace Invitations

  • Replaces the legacy permanent workspace token flow with managed invitation records.
  • Supports invitation role, optional exact-email binding, expiration, maximum-use limits, revocation, and usage tracking.
  • Restricts administrator invitations to the workspace owner and defaults unrestricted invitations to the read-only guest role.
  • Performs invitation authorization, validity checks, use-count updates, membership creation, and audit writes transactionally.
  • Returns an existing member's actual stored role when they follow another invitation, avoiding temporary permission escalation in the client.
  • Invalidates administrator invitations created by the former owner when workspace ownership is transferred.
  • Prevents old permanent tokens, stale requests, concurrent consumption, removed invite creators, and ownership changes from bypassing current invitation governance.
  • Adds a compact single-row invitation editor with styled role and expiry selectors, responsive wrapping, and no horizontal overflow.
  • Adds workspace audit events for invitation lifecycle, member and role changes, policy updates, and ownership transfer.

Workspace Resource Library

  • Renames the Skills page to Resource Library and adds a dedicated workspace scope for skills and prompt templates.
  • Separates personal resources from workspace resources at storage, API, catalog, and conversation-execution boundaries.
  • Allows workspace administrators and authorized members to create and manage workspace skills and prompts; guests remain read-only.
  • Makes workspace resources available to conversations in that workspace without leaking them into personal or unrelated workspace catalogs.
  • Adds the create-skills-and-prompts member permission to workspace role management.
  • Aligns empty states across Files, Resource Library, Knowledge Bases, and Projects, including consistent typography and positioning in split file views.
  • Fixes sidebar collapse and navigation shortcuts on macOS, including the workspace-aware new-chat shortcut behavior.
  • Orders workspace library schema migrations before workspace indexes are created, preventing startup failures caused by a missing workspace_id column during upgrade.

Enterprise OAuth and OIDC Login Policy

  • Adds administrator-controlled password-login availability without limiting configured OAuth/OIDC providers.
  • Adds three unauthenticated entry modes: the regular login page, a provider picker, or immediate redirect to a selected provider.
  • Falls back safely to the provider picker or login page when an automatic-redirect provider is unavailable, preventing redirect loops and inaccessible login screens.
  • Adds required, optional, and disabled initial-password policies for accounts created through OAuth/OIDC.
  • Separates public password registration from OAuth/OIDC automatic account provisioning, allowing existing third-party identities to log in while new automatic provisioning is disabled.
  • Enforces disabled password authentication and password-management endpoints on the backend rather than only hiding frontend controls.
  • Restricts identity linking and unlinking when the effective enterprise policy would make those operations unsafe.
  • Validates policy changes against enabled, usable providers and the current administrator's linked identity to prevent an administrator from locking the installation out of every login method.
  • Exposes the effective public policy without secrets, refreshes it across login and authenticated flows, and includes the new settings in administrator configuration backup and restore.
  • Adds localized policy controls and error states in English, French, Japanese, Simplified Chinese, and Traditional Chinese.

Conversation and Content Safety

  • Aligns workspace conversation controls with effective role and member permissions across the sidebar, composer, message actions, inline threads, project views, and conversation pages.
  • Prevents read-only users from creating conversations or invoking edit, retry, regenerate, branch, feedback, rename, favorite, share, or delete actions.
  • Preserves personal-space behavior outside a workspace; the new workspace restrictions are applied only when a workspace is active.
  • Fixes the Knowledge Base detail page initialization order that could produce Cannot access 'n' before initialization and render a blank page.
  • Fixes workspace member and audit authorization queries under PostgreSQL.

Gemini Thought-Signature Compatibility

  • Filters Gemini parts that contain provider metadata or a thought signature but no text, inline data, function call, or function response payload.
  • Prevents invalid requests where Gemini receives an uninitialized data oneof, which previously caused 400 responses in longer tool-enabled conversations.
  • Preserves thought signatures on parts that also contain a valid payload, maintaining provider reasoning continuity where supported.
  • Adds regression coverage for metadata-only parts and valid signed content.

Dialog and Loading Experience

  • Keeps dialogs centered while their width or height changes, avoiding the transient jump to the upper-left corner seen during tab changes.
  • Animates geometry changes caused by tabs, validation messages, skeleton replacement, and asynchronously loaded content.
  • Continues an in-progress resize transition from the currently painted dimensions so rapid updates do not snap back to an earlier size.
  • Adds a restrained content transition when asynchronous data replaces a placeholder without changing the dialog's outer dimensions.
  • Constrains dialog bodies to the viewport, preserves fixed header and footer regions, and avoids accidental horizontal scrolling.
  • Honors reduced-motion preferences for resize and content transitions.
  • Refines workspace invitation and settings dialogs for denser controls and more stable loading behavior.

CI and Documentation

  • Serializes application image publishing per Git ref and cancels stale in-progress builds so an older main build cannot overwrite a newer latest image.
  • Passes the repository token explicitly to Docker metadata generation to improve release workflow reliability.
  • Keeps semantic image tags for the application, sandbox runtime, and sandbox sidecar when v2.3.0 is published.
  • Updates project acknowledgements to Qdrant, Radix UI, and Linux Do.

Upgrade Notes

  • Database schema changes are applied automatically at startup. Back up the database before upgrading and allow one application instance to finish migration before scaling the new version out.
  • This release adds workspace role, permission, policy, invitation, audit, and resource-library schema. No manual SQL is required.
  • Existing workspace owners remain administrators with owner authority. Existing legacy workspace role values are normalized by the new authorization layer.
  • Existing personal conversations, projects, knowledge bases, skills, prompts, and files remain personal and retain their previous behavior.
  • Review each workspace's member roles, per-member creation permissions, model allowlist, tool/MCP access, and capability switches after upgrade.
  • Review Authentication and Registration settings before disabling password login or enabling automatic provider redirect. A ready OAuth/OIDC provider and a usable administrator identity are required for strict settings.
  • For version-pinned Docker deployment, set IMAGE_TAG=2.3.0 and leave SANDBOX_IMAGE_TAG unset so the application, sandbox runtime, and sandbox sidecar use the same release tag.

Validation

  • npm run typecheck
  • npm run lint
  • npm run test
  • npm run build
  • go test ./... from server/
  • go build ./... from server/
  • Locale JSON validation with jq empty
  • git diff --check

Release Scope

  • Workspace RBAC and governed invitations: e384f91 (feat(workspaces): add RBAC and governed invitations).
  • PostgreSQL workspace authorization: 867b7e5 (fix(workspaces): support PostgreSQL authorization queries).
  • Knowledge Base detail initialization: 4100a41 (fix(kb): initialize detail state before workspace lookup).
  • Workspace interface and role-state fixes: 98f284e, 0955bd6, d977a65, and 6ad107d.
  • Workspace resource library and migration ordering: bca8875 and c4092e5.
  • Enterprise OAuth/OIDC login policy: edcea1e (feat(auth): add enterprise OAuth and OIDC login policy).
  • Gemini metadata-only part filtering: edd586c (fix(gemini): filter invalid metadata-only parts).
  • Dialog geometry and asynchronous content transitions: c2be598 and acbb0a9.
  • Release workflow reliability: e932240 and bedd2e5.
  • Acknowledgements: 9867f01 (docs: update acknowledgements).

Full Changelog: v2.2.13...v2.3.0