v1.7.0
Sessions menu, External Connectors (Email + Calendar), multi-agent @mention, governance Phase B, generate_image tool, and 100+ fixes.
Backend.AI GO v1.7.0
171 commits since v1.6.1. (143,498 lines added, 6,356 lines deleted)
New Features
Sessions Management
- Sessions menu rolls out to production with full Active / History / Diagnostics tabs available on every build .
- SessionsService consolidates LLM, diffusion, squad-agent, and history lifecycle events into one observable surface, exposed via Tauri commands and matching REST handlers .
- Active tab with sortable / filterable DataTable, table & card view toggle, and terminate-vs-delete semantics with starting / terminal-state guards .
- History tab with paginated list, delete actions, and persistence so terminated sessions are recorded across restarts .
- Session detail drawer reusing the model-card pattern, plus a Diagnostics tab with PID, health, uptime, and a bounded 200-entry scrollable log list — full API parity (
sessions_get_diagnosticsTauri +GET /api/v1/sessions/{id}/diagnosticsREST);api_keyis never exposed . - Accessible column sorting on the shared
DataTable(per-columnsortable/ accessors / comparators / default direction;aria-sortfor WCAG 2.1 SC 1.3.1; keyboard activation; stable sort) . - Session-alias rename UI when multiple instances of the same model are loaded; multi-session model display in chat & selection surfaces .
External Connectors Platform
- Email (SMTP/IMAP) as the first external connector — IMAP read adapter, SMTP write adapter Stages 0-6, end-to-end docs .
- Calendar (Google Calendar) as the second connector — backend foundation, governance integration, Settings UI alignment with Email .
- Connector governance hook API + thin interceptor .
- Finalized connector audit trail schema with
canonical_serializeandredactedFields, SQLite-backedConnectorAuditStore, redaction pass, and retention policy . - Content-addressed blob storage for rollback snapshots .
- Connector audit log page with one-click undo per row, plus an in-app toast carrying an undo action immediately after a connector write .
- Undo intent taxonomy and orchestration through the connector registry; affordances on notifications, audit rows, and agent cards .
- Channel bot tokens migrated to the OS credential vault; channel capability class declared for governance; channel messages now emit
ConnectorAuditEntryrows . - Retention-to-blob deletion handoff for ContentAddressed snapshots; credential-bearing
params.bodycontent redacted before truncation .
Multi-Agent @mention Collaboration
- Foundation: message and agent-run data model extensions for mentions, parent run chains, and forwarded messages .
- @mention autocomplete in the chat input with profile picker and inline chip preview .
- Main-agent orchestration and task delegation service routing @mention requests to sub-agent profiles .
- Mention chip rendering in user messages and assistant sub-agent attribution on reply bubbles .
- Real-time execution status UI for mention chips and chat — live run progress, stall, and error states .
- No-mention continuity (last responder retains the turn) and parallel mention dispatch .
- Polish pass — header relabel, i18n strings, docs, integration validation .
Personal Governance & Policy (Phase B)
- Policy-triggered approval prompt with inline policy edit from the approval dialog .
- Policy surface in Settings .
- Governance events emitted on guardrail and limit rule changes .
- IANA timezone names supported for limit day-boundary calculations .
Models, Agent Tools, and Chat
- New
generate_imageagent tool for LLM-autonomous image creation, wired to the existing Draw / sd-server stack . - Recommended utility-model registry as a single source of truth for memory-extraction and title-generation models, with on-demand auto-load, lifecycle toasts, onboarding suggestion, and Settings UI to pick extraction & title models independently .
- Per-session
preserve_thinkingoverride with tri-state UI in the Chat Parameters Drawer . thinking_budget_tokensandpreserve_thinkingsupport for Qwen models .- Models page table view backed by the shared
ViewModeToggle. - Bench harness for memory-extraction and title-model output quality .
Server, Distribution, and UI Foundations
aigo-servermanpage and headless.debpackaging for Linux server deployment .- Sidebar header unified with the main toolbar (macOS traffic-light fix included) .
- Streaming audit-row scan for
collect_live_store_refsso very large audit stores no longer block on full materialization .
Improvements
- Email read action contexts thread
GovernanceHint::Silentthroughinvoke_with_governancefor full parity with Calendar . - First-class
metadataslot onOperationResultfor connector-specific receipt data . - Settings: align Email and Calendar connector design under the same layout .
- Refresh whitelisted default models for cloud providers .
- Serialize utility LLM calls (memory extraction, title generation) via a promise-chained queue to prevent slot contention with the active chat .
- Models menu no longer surfaces running models — moved to the header status pill and Sessions UI .
- Multi-session aliases align after router suffixing so
/v1/modelsand selectors stay coherent across reloads ( follow-up). - Memory extraction notification now explains why 0 entries were saved (no new facts, parse failure, validation failure, all duplicates) instead of an opaque "0 saved" .
- Unify router endpoint resolution for Tauri commands and REST handlers via
RouterEndpointResolvertrait . - Make GGUF arch validation permissive with improved failure errors .
- Email connector UI + adapter polish .
- Wrap connector credentials in zeroize-on-drop
SecretString. - Squad Overview activity grid + timeline integration and UI polish .
- Align policies rule drawer with the canonical
Drawerlayout . - Migrate governance UI raw elements to common components .
- Use fs4 for cross-platform disk space detection in engine commands .
- Codify
before_statevsundo_tokenprecedence inconnectors-trait.mdfor connector authors .
Bug Fixes
- Loaded MLX/local models in the main model selector display the same name as the router/Continuum dropdown instead of "Model.safetensors" .
- Use named exports for date-fns v4 locale loaders — fixes
Cannot access 'es' before initializationstartup crash that prevented v1.7.0-beta.3 from running . - Strip
· port {port} · {n}k ctxsuffix fromSessionSummary.displayNamefor LLM-serving sessions to avoid duplicating columns . - Sessions: complete i18n, accessibility, and responsive QA pass .
- Providers: sync router and enrich
selected_modelson Refresh . - Stabilized unified Sessions runtime identities and lifecycle history; encoded/validated session history filenames defensively .
- Ensure terminated sessions appear in the History tab .
- Cancel in-flight tool execution on cowork stop signal; Cowork stop button actually halts the running task .
- Sub-agent tool approval dialog surfaces in the chat surface so runs no longer stall .
- Sub-agent approval prompts no longer surface in the wrong chat session when the user switches sessions; switching sessions no longer leaves approval-waiting sub-agents stalled .
- Scope sub-agent approval surface to the active chat session so approvals don't leak across sessions .
- Sub-agent retains its prior reply when the user sends a no-mention follow-up, preventing repeated clarifying questions .
- Parallel
fetch_urlcalls no longer block when approved withremember=false. - Headless file and event APIs hardened for permission and lifecycle edge cases .
- Epic 1047 agent tools hardening pass .
- Complete node registration pairing flow .
- Address epic 2759 review gaps and headless gating .
- Memory extraction empty-reason surfacing in chat UI notification + Rust diagnostic logging under
memory::extraction. - Title-generation prompt, validation, retry behavior unified with the recommended utility model;
parseBareModelIdapplied; Qwen3-specific/no_thinkprefix removed; memory extraction serialized before title generation . - Title generation no longer races memory extraction for the local single-completion slot .
- Title generation no longer injects the Qwen3-specific
/no_thinkcontrol token into prompts for other model families . - Sub-agent run hangs after spawn — reject the literal
defaultmodel alias to recover . - Resolve @mention delegation failures for the Main Agent and built-in profiles; complete delegation follow-ups; flip autocomplete popover when clipped by the viewport .
- Stabilize Hugging Face download manager: delete, retry, cancel/retry race, and queue persistence .
- Chat memory extraction persists saved memories and the UI distinguishes success and failure outcomes .
- Detect token exhaustion inside reasoning blocks via request config .
- MLX capability detector identifies audio/video on multimodal Qwen3.5/3.6 models; fall back to
chat_template.jinjafor tool-calling detection . - Close email governance and rollback gaps .
- Enter Tokio runtime context before spawning the retention scheduler so
make devno longer panics in the AppKit delegate . - Strip MLX quantization suffix (
-4bit,_4bit,.4bit, etc.) in Rust alias derivation so model aliases match the TypeScript frontend . - Capture per-chunk undo ids and propagate all-failed across channel multi-chunk sends .
- Stabilize download queue height with max-3-item constraint and smooth transitions .
- Forward
top_k,min_p,frequency_penalty,presence_penalty,repeat_penalty, andseedover the Unix-socket transport — six sampling fields were silently dropped for all socket-backed models on macOS . - Context-window indicator no longer drops to 0% between multi-turn replies for socket-backed (macOS MLX / llama-server) models .
- Wire
LimitAction::RequireApprovalto the approval dialog; address governance and limits follow-up gaps . - Epic post-merge review — security, validation, i18n, and correctness .
- Use sidecar lock file for squad memory writes .
CI/CD Improvements
- Copy
src-tauri/benchesinto theDockerfile.serverbuild context so the headless image actually builds. - Add
aigo-container-clitosetupanddevdependency chains . - Drop unused
DEBIAN/conffilessodpkg-debsucceeds. - Fix 21
cargo clippy --all-targetslint errors across 13 files . - Copy
src-tauri/cratesinto the Dockerrust-builderstage. - Connector rollback integration coverage for snapshot path and governance approval round-trip .
- Credential vault round-trip on macOS / Windows / Linux .
Technical Details
- Multi-session router refactor: internal pools, port allocators, crash monitors, and unload surfaces now keyed by
session_idinstead of model alias. A dual-emit window keeps the old alias-keyed event payloads for one release alongside the new session-id payloads to ease frontend migration. The/v1/modelsendpoint emits per-session suffixed aliases so multiple instances of the same model coexist cleanly . - Unified Sessions treats public session IDs as canonical UUIDs only — loaded-model, diffusion, squad, history, and REST
/loadedDTOs requiresessionId; legacy empty/composite/path-like IDs no longer accepted . - Codify
before_statevsundo_tokenprecedence inconnectors-trait.md. - First-to-second connector retrospective covering Wave 1 → Wave 3 .
Dependencies
- Update mlxcel to 0.0.25.
- Update continuum-router to 1.5.6 (also 1.5.5 via; 1.5.3 and 1.5.2 over the v1.7.0 cycle).
Breaking Changes
- Models menu is now a pure catalog: the "Currently Loaded" section, port/uptime display, and per-card unload affordances at the page level have been removed. Loading still works the same way; runtime and session state is surfaced in the header status pill, in chat, and in the Sessions menu (
/sessions). Unloading remains available through the header status pill popover and the model settings drawer (, completes epic). - Unified Sessions requires canonical UUID session IDs: loaded-model, diffusion, squad, history, and REST
/loadedDTOs requiresessionId; legacy empty/composite/path-like IDs are no longer accepted . - Multi-session router keys by
session_id: internal pools, port allocators, crash monitors, and unload surfaces moved from model-alias keying tosession_idkeying, with a one-release dual-emit compatibility window for event payloads .
Known Issues
None.
Full Changelog
Full Changelog: v1.6.1...v1.7.0