Skip to content
CAI
Software that uses CAICheck a score

iOfficeAI/AionUi

48.4

Weak · 20 September 2026

147.1k

lines of production code

TypeScript

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a cross-platform desktop and mobile client for an AI agent platform, providing a unified interface for chat, file management, and agent configuration. It supports multiple AI providers and agent protocols, enabling features like document conversion, in-app browser control, and real-time tool execution. The application manages complex state for conversations, teams, and scheduled tasks, while offering extensive customization through themes, skills, and MCP server integrations.

Features

Add Brazilian Portuguese (pt-BR) locale for desktop app

Users can now select Brazilian Portuguese as the interface language. This change introduces the complete pt-BR translation set for the desktop renderer, covering core UI elements, conversation history, agent modes, scheduled tasks, file management, and error messages.

packages/desktop/src/renderer/services/i18n/locales/pt-BR · high confidence

Add French (fr-FR) locale support

The application now includes a complete French (France) translation set, enabling users to interact with the interface in French. This update adds translation files for core areas including common UI elements, agent modes, conversation history, scheduled tasks, file selection, login, MCP integration, and specific agent backends like ACP and Codex.

packages/desktop/src/renderer/services/i18n/locales/fr-FR · high confidence

Add German (de-DE) locale support

Users can now switch the application interface to German. This change introduces the complete German translation set, including new locale files for core areas such as conversations, agent configuration, scheduled tasks (cron), file selection, and login, as well as the module index that registers these translations for the renderer.

packages/desktop/src/renderer/services/i18n/locales/de-DE · high confidence

Add complete Spanish (es-ES) translation support

Users can now use the application in Spanish (Spain/LATAM). This change introduces a full set of translation files covering the login screen, common UI elements, conversation history, agent modes, scheduled tasks, MCP integration, and various agent-specific interfaces (ACP, Codex, Google/Gemini), ensuring the interface is fully localized for Spanish-speaking users.

packages/desktop/src/renderer/services/i18n/locales/es-ES · high confidence

Add conversation minimap panel with search and navigation

A new ConversationTitleMinimap component has been introduced to the conversation page, providing a floating panel that displays a scrollable list of conversation turns (questions and answers). Users can open this panel to search through message history using text keywords or message indices, with results highlighted and snippets shown. Selecting a result navigates the main view to the corresponding message. The panel dynamically adjusts its size and visual style to match the current theme and viewport width.

packages/desktop/src/renderer/pages/conversation/components/ConversationTitleMinimap · high confidence

Added Homebrew cask template for AionUi

A reference template for the Homebrew cask definition (aionui.rb.example) has been added to the repository. This file serves as a guide for maintaining the official Homebrew cask, specifying the application version (1.7.1), architecture support (arm64 and x64), download URLs, and cleanup instructions, to be used by the automated bump action when new releases are published.

homebrew · high confidence

Added file picker dropdown for @ mentions

Introduced a new AtFileMenu component that renders the dropdown list for file-based @ mentions in the chat interface. This component displays file names and their paths (or custom subtitles) within a scrollable container capped at 40vh or 320px, allowing users to select files directly from the mention menu.

packages/desktop/src/renderer/components/chat/AtFileMenu · high confidence

Assistant management page rebuilt with My/Official tabs and full editor

The Assistant Settings page has been completely rebuilt to organize assistants into 'My Assistants' (user-created and CLI-generated) and 'Official' (built-in) tabs. Users can now reorder their enabled assistants via drag-and-drop, toggle them on/off, and manage them through a new full-page editor that supports creating, editing, and deleting custom assistants. The editor allows configuration of the main agent, default model, permission, and thought level settings, as well as managing skills and MCP servers. Builtin assistants are now read-only (except for agent selection and defaults) to prevent accidental modification, while user-created assistants can be fully customized. The list view includes avatars (supporting images, emojis, and fallback icons), source tags, and availability status indicators for offline or missing agents.

packages/desktop/src/renderer/pages/settings/AssistantSettings · high confidence

Browser and desktop notifications for agent turns and permission requests

Users now receive notifications when the agent finishes a turn or requests permission (e.g., tool access). In the WebUI, a browser notification appears when the tab is hidden and permissions are granted; in the desktop app, a native system notification is shown when the window is unfocused. Both paths include the conversation name in the notification body and navigate to the relevant conversation when clicked.

packages/desktop/src/renderer/hooks/system/notification · high confidence

Build system overhaul and new developer tooling

The build scripts have been significantly refactored to support a unified native module rebuild strategy, reducing code duplication and improving cross-architecture build reliability. A new \rebuildNativeModules.js\ utility centralizes the rebuilding of native dependencies like \better-sqlite3\ across platforms, while \afterPack.js\ now handles post-packaging verification and cross-arch cleanup. macOS notarization logic in \afterSign.js\ has been updated to use \@electron/notarize\ with ad-hoc fallbacks. Additionally, new scripts have been introduced to support developer workflows: \benchmark-startup.ts\ and \benchmark-acp-startup.ts\ provide performance profiling for app startup and agent connections, \build-mcp-servers.js\ bundles internal MCP servers for external execution, and \check-i18n.js\ enforces translation consistency via pre-commit hooks.

scripts · high confidence

Custom CSS theme creation and background image support

The Appearance settings page now allows users to create, edit, and delete custom CSS themes. A new modal interface enables users to define a theme name, select a light or dark appearance mode, and upload a cover image. The system automatically injects the uploaded cover as a fixed background image across the application shell while keeping internal containers transparent. A preview panel in the settings displays a layout mockup using colors extracted from the theme's CSS variables, with sensible fallbacks for missing values.

packages/desktop/src/renderer/pages/settings/AppearanceSettings · high confidence

Desktop pet animated states and preview tool

Added a collection of animated SVG assets for the desktop pet in public/pet-states, covering states such as idle, happy, thinking, working, error, notification, sleeping, dozing, dragging, carrying, building, juggling, sweeping, and various interaction poses (poke, random look/read). Each SVG includes CSS keyframe animations for body movement, shadows, and state-specific details (e.g., checkmark bubble for done, sparks for happy, Zs for sleep). A preview.html page was also added to visually inspect all states in the browser with a size slider, serving as a standalone art resource viewer without requiring the full app.

public/pet-states · high confidence

Initial release of the AionUi mobile application

This change introduces the first version of the AionUi mobile app, built on React Native and Expo. It provides a native interface for connecting to the AionUi server via QR code scanning or manual URL pasting, featuring a chat tab with a workspace-aware drawer sidebar, a files tab for browsing and previewing code/markdown/images, and a settings screen for connection management. The entry includes the core navigation structure, UI components, and comprehensive test coverage for the API, WebSocket, and bridge services.

mobile · high confidence

Introduce Aionrs conversation platform with dedicated chat UI and model selection

A new Aionrs conversation platform is now available, providing a dedicated chat interface that includes a send box with draft persistence, a two-level model selector (grouped by provider with thought-level configuration), and a message list with pagination and artifact support. The implementation handles streaming responses, thought display, and local cron command processing, while explicitly filtering out Google Auth providers from the model list.

packages/desktop/src/renderer/pages/conversation/platforms/aionrs · high confidence

Introduce GuidPage as the new home screen entry point

The application now uses a new GuidPage component as the primary landing interface, replacing the previous generic utility exports. This page provides a unified input area with assistant selection, model configuration, and skill management, backed by new hooks for input handling, assistant defaults, and model selection. It also integrates slash command support, file attachment, and speech input capabilities directly into the home view.

packages/desktop/src/renderer/pages/guid · high confidence

Introduce dedicated Team mode page with runtime and activity views

The Team page now features a dedicated layout for Team mode, including a read-only message and task activity view, runtime restart controls, and a model refresh button. It also displays teammate warmup status and triggers model selection, while aligning workspace collapse behavior with single chat and showing suggestions only in the empty state for the leader agent.

packages/desktop/src/renderer/pages/team · high confidence

Introduce desktop pet with idle animations, eye tracking, and confirmation bubbles

The desktop pet feature is now fully implemented in the main process, providing an always-on-top, transparent window that displays the pet's state and reacts to user interaction. The pet tracks mouse movement with eye-tracking logic, transitions through idle behaviors (random looks, yawning, deep sleep) based on inactivity timers, and respects a priority-based state machine for AI-driven states like thinking, working, and errors. Tool-call confirmations are now routed to a dedicated, anchored confirmation bubble window that respects user positioning and theme changes. The pet window supports dragging, hit-detection for click-through, and includes safeguards against renderer crashes affecting mouse capture.

packages/desktop/src/process/pet · high confidence

Introduce in-app browser MCP and image generation tools

Added a new in-app browser MCP tool that connects to the Electron webview via a single-target CDP bridge, ensuring the agent controls only the browser panel and not the main window, and fixed Windows spawn errors by routing through cmd.exe. Also added a built-in image generation MCP tool that executes image creation and editing tasks using a provider configured via environment variables.

packages/desktop/src/process/resources · high confidence

Introduce in-app browser and robust file preview infrastructure

The Preview module now includes a dedicated in-app browser that keeps webview processes alive across tab switches to preserve state, supports persistent login sessions via a shared partition, and allows keyword search in the address bar. File preview has been updated to use authenticated backend stream URLs instead of local file paths, and the system now explicitly handles legacy Office formats (doc, xls, ppt) and HEIC images as unsupported to prevent renderer failures. The module also adds a one-time notification when the agent first drives the browser, ensuring users understand the behavior without blocking the workflow.

packages/desktop/src/renderer/pages/conversation/Preview · high confidence

Introduce interactive desktop pet with confirmation dialogs and theme support

The desktop pet feature is now fully implemented in the renderer, featuring a draggable SVG-based pet that tracks eye and body movements, a dedicated hit-area window for click-through management to prevent mouse capture bugs, and a new confirmation dialog UI that supports keyboard shortcuts (Enter, Esc, A, Y, N) and adapts to light/dark themes via CSS variables. The pet state management now uses cross-fading SVG transitions, and the confirmation system integrates with the main process for secure user responses.

packages/desktop/src/renderer/pet · high confidence

Introduce standalone aionui-web CLI with auto-open and initial admin password setup

The \packages/web-cli\ package now provides a standalone Node.js CLI (\aionui-web\) that launches the WebUI. On first launch, the CLI automatically bootstraps an admin password by polling the backend's auth status and printing the generated credentials to the console. It also automatically opens the local URL in the default browser (unless \--no-open\ is passed or the \AIONUI\_OPEN\_BROWSER\ environment variable disables it). The CLI supports configuration via flags (e.g., \--port\, \--static-dir\, \--backend-bin\) and environment variables, and gracefully degrades to frontend-only mode if the backend binary is missing.

packages/web-cli · high confidence

Introduce web-host package with backend lifecycle management and LAN IP selection

The web-host package now provides the core infrastructure for launching and managing the aioncore backend process, including robust startup diagnostics, crash-restart handling, and safe shutdown that cleans up orphaned agent processes. It also features a static server that serves the WebUI and reverse-proxies API and WebSocket traffic, with improved LAN IP selection logic that avoids advertising unreachable or VPN addresses as the access URL.

packages/web-host/src · high confidence

Introduces AionUi base component library and error-surface feedback tools

This change adds a new set of base UI components to the renderer, including AionModal (with preset sizes and a 'standard' layout variant), AionCollapse, AionSelect, AionScrollArea, AionSteps, AionSearchInput, and AionInlineSearchInput, all exported from a unified index. It also introduces error-surface interaction components: FeedbackButton for one-click feedback with module preselection, ButlerDiagnoseButton for routing error reports to the Butler chat, and TalkToButlerButton as a unified entry point for chat/manual actions. Additionally, it adds FileChangesPanel for displaying file diffs and ForkBranchIcon for conversation branching.

packages/desktop/src/renderer/components/base · high confidence

Introduces dedicated React hooks and contexts for Team mode state management

Adds a suite of new hooks and context providers in the team page to manage complex team-specific state, including session warmup and permission propagation (TeamPermissionContext), tab and assistant list management with persistent ordering (TeamTabsContext), and real-time run state reconciliation (useTeamRunView). It also introduces hooks for tracking membership mutation busy states (teamMembershipMutationBusy), managing sidebar badge counts (useSiderTeamBadges), handling activity board controls (useTeamActivityControls), and resolving teammate identity colors (useTeamMemberColors, TeamIdentityContext). These changes centralize team logic, ensuring that team-only features are properly gated and that state such as view modes, pending permissions, and assistant options are persisted and synchronized with backend events.

packages/desktop/src/renderer/pages/team/hooks · high confidence

Introduces new utility modules for configuration, model capabilities, and protocol detection

This change adds several new utility files to the desktop application's common utils directory. It introduces appConfig.ts to manage application metadata (name, version, protocol version) via a centralized configuration set by the main process. It adds imageModelAllowlist.ts to restrict image generation models to those explicitly known to work with the current 'form B' implementation, preventing runtime failures for unsupported models. It also adds modelCapabilities.ts, which defines regex-based patterns and exclusion lists to determine model capabilities (text, vision, function calling, image generation, etc.) and handles model settings updates. Furthermore, it includes platformAuthType.ts and platformConstants.ts to standardize authentication type resolution based on platform (e.g., Gemini, Anthropic, New API) and identify the 'new-api' platform. A new protocolDetector.ts is added to automatically detect API protocols (OpenAI, Gemini, Anthropic) by testing endpoints and validating responses. Finally, urlValidation.ts provides secure validation for official API hostnames (Google, OpenAI, Anthropic) to prevent URL spoofing, and utils.ts provides helper functions for UUID generation, error parsing, and locale resolution.

packages/desktop/src/common/utils · high confidence

New ACP agent UI components for model selection, runtime management, and context tracking

The agent component area now includes a suite of new UI elements for ACP-based agents: AcpModelSelector for model and thought-level switching with warmup status handling, AgentModeSelector for agent mode switching, AcpRuntimeRestartButton for restarting agent runtimes, ContextUsageIndicator for displaying token usage and costs, AgentBadge for agent identity display, ThemedLogo for theme-adaptive logo rendering, and ChannelConflictWarning for detecting OpenClaw channel conflicts. These components provide the frontend interface for agent configuration, runtime control, and usage visibility.

packages/desktop/src/renderer/components/agent · high confidence

New ACP message cards for permissions, tool calls, and terminal output

The conversation view now renders dedicated UI cards for Agent Communication Protocol (ACP) interactions. Users can approve permission requests via a redesigned panel that displays raw input details when no command is present. Tool call results are shown with status indicators, markdown content, file diffs, and image previews with download support. Live terminal output is displayed in a card that auto-scrolls and includes a stop button to kill running commands. Available commands are presented in a collapsible list.

packages/desktop/src/renderer/pages/conversation/Messages/acp · high confidence

New Archived Settings page with grouped view and load-more pagination

A new Archived Settings page has been added, allowing users to view and manage their archived conversations and teams. The page groups archived items by project (or 'No project' for ungrouped chats) and implements a 'load-more' pagination strategy, initially showing a limited window of items per group and fetching additional items on demand. Users can restore individual items back to the active sidebar or delete them, with the UI updating to reflect these changes.

packages/desktop/src/renderer/pages/settings/ArchivedSettings · high confidence

New HTTP API client for aioncore server communication

The renderer now includes a dedicated HTTP client (client.ts) for communicating with the aioncore server, exposing standard REST methods (GET, POST, PUT, PATCH, DELETE) via a factory function. The client handles JSON serialization and includes robust error handling that reads the error response body exactly once to prevent double-consumption issues, exposing status, text, and parsed body details through a new ApiError class. Type definitions for API responses (ApiResponse) are also provided to support type-safe interactions.

packages/desktop/src/renderer/api · high confidence

New Skills Hub settings page with file browser and assistant attachment management

The Skills settings area now features a dedicated Skills Hub page that organizes skills into Custom, Official, Auto-injected, and Extension tabs, complete with search and batch deletion for custom skills. Users can now view a detail page for any skill, which includes a file browser to inspect the skill's source files (Markdown and code) and a management section to attach or detach the skill from specific assistants via an inline list. The interface also displays an avatar stack showing which assistants currently use a skill, and provides improved error messaging and import history tracking for skill installations.

packages/desktop/src/renderer/pages/settings/SkillsSettings · high confidence

New UI hooks for layout, shortcuts, and interaction management

The desktop renderer now includes a suite of new React hooks to support the project-scoped explorer and improved layout behavior. \useProjectExplorerColumnWidth\ and \useProjectPreviewRegionWidth\ manage the resizable, persisted widths of the project explorer and preview panels using fixed pixel values, ensuring the chat region retains its minimum space. \useProjectPanelCollapse\ handles the collapse state of the project panel, persisting preferences per project on desktop and handling mobile-specific overlay behavior. \useConversationShortcuts\ adds keyboard bindings for cycling through conversations (Ctrl+Tab), creating new conversations, and toggling the sidebar. Additional utility hooks include \useResizableSplit\ for the underlying drag-and-split logic with snap-collapse support, \useDebounce\ and \useThrottle\ for performance optimization, \useLatestRef\/\useLatestCallback\ to avoid closure traps, \useIndexedItemRefs\ for managing list item references, and \useTextSelection\ for detecting selected text and URLs within containers.

packages/desktop/src/renderer/hooks/ui · high confidence

New UI utility library for desktop renderer

This change introduces a new \packages/desktop/src/renderer/utils/ui\ module containing a suite of UI utilities. It adds a \ModalHOC\ for managing modal state, platform-aware keyboard shortcut helpers (\keyboardShortcuts.ts\) that correctly handle Cmd/Ctrl modifiers and block shortcuts in editable areas, and drag-and-drop modifiers (\dndModifiers.ts\) to restrict sorting to specific axes. It also includes a robust clipboard utility with fallbacks for non-secure contexts, runtime patches (\runtimePatches.ts\) to suppress known ResizeObserver loop warnings and third-party library noise, and specific fixes for sidebar tooltip positioning and mobile focus management. Additionally, existing Higher-Order Component utilities (\HOC.tsx\, \createContext.tsx\) have been moved into this new directory and slightly refactored.

packages/desktop/src/renderer/utils/ui · high confidence

New agent configuration and model management hooks

The renderer now includes a suite of new hooks in the agent directory to handle advanced agent settings and model selection. useAcpConfigOptions and useAcpModelInfo provide the logic for reading, writing, and gating ACP runtime configuration options (such as thought levels) and managing model switching with status feedback. Supporting hooks like useManagedAgents and useHubAgents handle the loading and installation of managed and hub-based agents, while useModelProviderList and useConfigModelListWithImage manage the provider and model lists, including specific logic for Google Auth and image model availability. Additionally, usePresetAssistantInfo resolves assistant identities and avatars from conversation data with improved legacy compatibility.

packages/desktop/src/renderer/hooks/agent · high confidence

New aioncore packaging and verification scripts

Added \prepare-aioncore.js\ and \verify-bundled-aioncore-resources.js\ to the shared scripts package. The preparation script resolves and bundles the aioncore binary (via GitHub Actions artifacts, releases, or local paths) and its managed resources into the project's resources directory. The verification script validates the integrity of the bundled aioncore resources, checking for required files, correct platform/architecture metadata in the manifest, and compliance with the managed resources contract schema.

packages/shared-scripts · high confidence

New assistant management hooks and TalkToButler entry point

The assistant settings UI now uses a dedicated set of React hooks (\useAssistantEditor\, \useAssistantList\, \useAssistantOrder\) to manage assistant creation, editing, and reordering. These hooks centralize state for assistant profiles, skill defaults, and MCP server configurations, while persisting the enabled assistant order to user preferences. Additionally, a new \useTalkToButler\ hook provides a unified entry point that automatically enables the built-in AionUi Butler assistant and pre-fills the home chat with a specific prompt and optional file attachments.

packages/desktop/src/renderer/hooks/assistant · high confidence

New chat UI components for commands, mentions, and voice input

This change introduces a suite of new React components in the chat renderer to support enhanced interaction features. It adds a \CommandQueuePanel\ for managing and reordering draft commands, and a \SlashCommandMenu\ for selecting slash commands. It also includes \AtSessionMenu\ and \MentionMenuShell\ to handle \@@\ session mentions and cross-conversation delivery, along with a \CrossSessionDisabledBanner\ to manage the feature's visibility. Additionally, it introduces \SpeechInputButton\ for streaming voice input with live transcripts, \CollapsibleContent\ for handling long message content with gradient masks, and \ThoughtDisplay\ to show AI processing status with improved elapsed time tracking.

packages/desktop/src/renderer/components/chat · high confidence

New chat interaction hooks for auto-scroll, slash commands, and cross-session mentions

This change introduces a suite of new React hooks in the chat renderer to enhance the user experience. Users will see smoother chat scrolling with \useAutoScroll\, which intelligently follows new content when near the bottom. The chat input now supports a slash command menu (\useSlashCommandController\, \useSlashCommands\) that can be accepted via Tab or Enter, along with improved IME composition handling (\useCompositionInput\). Additionally, users can now mention other conversations using the \@@\ syntax (\useMentionSessionFromMessage\, \useSessionMentionSearch\), with a centralized toggle (\useCrossSessionMessageEnabled\) to enable or disable this feature. Other improvements include automatic conversation title generation (\useAutoTitle\), message-level conversation forking (\useForkConversation\), and a typing animation for streamed responses (\useTypingAnimation\).

packages/desktop/src/renderer/hooks/chat · high confidence

New dedicated Tools settings page with MCP server management and JSON import validation

The Tools settings page has been split out from the combined Capabilities page into its own top-level entry in the settings sidebar. This new page allows users to manage Model Context Protocol (MCP) servers, including adding, editing, and deleting them, as well as testing connections and handling OAuth authentication for HTTP/SSE transports. A key addition is the ability to batch-import MCP server configurations via JSON, which now includes strict validation logic to parse both array-based and object-based server definitions, ensuring correct transport types (stdio, http, sse) and required fields like commands or URLs are present before saving.

packages/desktop/src/renderer/pages/settings/ToolsSettings · high confidence

New dedicated preview components for diff, HTML, images, and Office files

The conversation preview panel now uses a set of new, dedicated viewer components to render specific file types more effectively. Diff files are rendered with a rich side-by-side or line-by-line view and a download option. HTML files can be previewed in an iframe with an optional element inspector mode. Images are loaded via the new ChatFileRef identity or legacy paths. Office documents (Word, Excel, PowerPoint) are previewed using the OfficeWatchViewer, which handles local file watching and provides specific error guidance for missing OfficeCLI dependencies. PDFs are rendered via a webview with a reload mechanism to handle file updates. These components are exported from the viewers index and integrate with the existing preview context.

packages/desktop/src/renderer/pages/conversation/Preview/components/viewers · high confidence

New desktop capabilities: side-question overlay, document conversion, and approval store

The desktop application now includes a 'between-the-lines' (Btw) overlay component that allows users to ask side questions during a conversation, displaying the answer in a floating panel with keyboard dismissal support. It also introduces a DocumentConverter service capable of converting between Word, Excel, and Markdown formats using libraries like mammoth, turndown, and xlsx-republish. Additionally, a new BaseApprovalStore has been added to manage session-level permission caching for agent actions (exec, edit, read), and a TestShowcase page has been added to display custom-styled UI components.

(repo-wide) · high confidence

New extension examples for ACP adapters, channel plugins, and comprehensive E2E testing

Added several new example extensions in the \examples\ directory to demonstrate and validate the extension system. The \e2e-full-extension\ provides a comprehensive test suite covering all contribution types (ACP adapters, skills, MCP servers, channel plugins, themes, assistants, and settings tabs) with full i18n support for English, Japanese, Korean, Russian, Turkish, Chinese (Simplified and Traditional). The \acp-adapter-extension\ demonstrates an ACP adapter contribution. Channel plugin examples include \ext-feishu\ (Feishu) and \ext-wecom-bot\ (Enterprise WeCom), showcasing webhook handling, encryption, stream responses, and event deduplication. The \hello-world-extension\ serves as a complete demo of all AionUI extension capabilities including agents, lifecycle hooks, and permissions.

examples · high confidence

New file handling utilities for preview, download, and selection

Added a new set of utility modules in the renderer's file utils to support project-scoped file previews, downloads, and selection. This includes MIME type mapping and base64-to-Blob conversion for binary downloads (PDF, Office, archives), diff parsing utilities for file change info, file type classification for preview content, and logic to manage file selection items with proper chat references (local, project, upload) to ensure correct backend resolution and deduplication.

packages/desktop/src/renderer/utils/file · high confidence

New file-handling hooks for uploads, previews, and exports

The renderer now includes a suite of new hooks in the file-handling area to manage file interactions more robustly. \useAbortUploadsOnConversationChange\ cancels in-flight uploads when the active conversation switches or the component unmounts, preventing orphaned uploads. \useUploadState\ provides a centralized store for tracking upload progress and active counts. \usePreviewLauncher\ and \useDiffPreviewHandlers\ unify the logic for opening file previews and diff views, handling path resolution and content fallbacks. \useConversationExport\ enables users to export conversation transcripts as text files. \useDragUpload\ and \usePasteService\ standardize drag-and-drop and clipboard-based file inputs, while \useOpenFileSelector\ and \useWorkspaceSelector\ manage native file dialogs and workspace directory selection.

packages/desktop/src/renderer/hooks/file · high confidence

New font customization hooks for families, sizes, weights, and scaling

The renderer now exposes dedicated React hooks in the font settings area to manage typography preferences. Users can select font families (including local system fonts via the Local Font Access API), adjust font sizes, choose font weights, and set a global font scale (zoom). These hooks persist choices to the config service, apply them to the UI theme immediately, and keep the interface synchronized with the main process zoom state.

packages/desktop/src/renderer/hooks/ui/font · high confidence

New grouped conversation history sidebar with search, drag-to-reorder, and batch selection

The conversation history sidebar has been replaced by a new grouped layout that organizes conversations into pinned and timeline-based sections. Users can now drag and drop pinned conversations to reorder them, select multiple items for batch actions, and search across conversation messages using a dedicated search popover. The UI also supports marking conversations as unread, creating scheduled cron tasks, and viewing fork lineage badges.

packages/desktop/src/renderer/pages/conversation/GroupedHistory · high confidence

New localized English strings for agents, scheduled tasks, and file previews

The English (US) locale now includes dedicated translation modules for Agent health and configuration, Agent Mode permissions, Codex network and permission errors, Scheduled Tasks (cron) management, and File Preview operations. Users will see localized messages for agent connection states, model switching, thinking levels, and runtime restarts, as well as detailed error handling for Codex network issues and permission requests. The Scheduled Tasks module provides full UI text for creating, editing, and managing recurring tasks, while the File Preview module adds localization for code, markdown, and office document previews, including save, edit, and export actions.

packages/desktop/src/renderer/services/i18n/locales/en-US · high confidence

New media and file preview components for the renderer

This change introduces a suite of new React components in the renderer's media folder to enhance file handling and preview capabilities. Users can now view code diffs with a dark theme and side-by-side view via Diff2Html, and preview local images with retry logic and file metadata in FilePreview. The HorizontalFileList component provides a scrollable container for file attachments, while LocalImageView resolves relative image paths against the conversation workspace. File attachment interactions are improved with FileAttachButton, which supports skills and MCP server quick-invocation, and UploadProgressBar, which displays per-file progress and allows individual upload cancellation. Additionally, WebviewHost and webviewHistory provide a robust, self-contained webview component with internal navigation history management to prevent state loss during redirects.

packages/desktop/src/renderer/components/media · high confidence

New message components for agent status, thinking, tools, and cron triggers

The conversation view now renders several new message types with dedicated UI components. Agent connection and error states are displayed via MessageAgentStatus, which shows status badges and provides Butler diagnosis and feedback buttons on errors. AI 'thinking' phases are shown in MessageThinking with a collapsible body and live elapsed-time timer. Tool usage is presented through MessageToolCall (with inline diff previews for file edits) and MessageToolGroupSummary (a unified, expandable list of tool steps with input/output details and image download support). Structured agent tips and errors are rendered by MessageTips with localized content and ownership tags. Scheduled task triggers appear as clickable MessageCronTrigger cards, and cron execution badges are shown via MessageCronBadge. Additionally, MessageSkillSuggest displays skill suggestions, and MessageText now handles cross-session mentions, local file previews, and improved copy behavior.

packages/desktop/src/renderer/pages/conversation/Messages/components · high confidence

New message navigation rail and structured question card

The conversation view now includes a vertical anchor rail on the left edge that displays ticks for each user message, allowing users to hover to preview turn snippets and click to jump directly to specific messages. Additionally, a new structured question card component has been added to handle multi-select and single-select user prompts with dedicated answer channels, replacing the previous generic input method for these interactions.

packages/desktop/src/renderer/pages/conversation/Messages · high confidence

New mobile action sheet component for chat controls

Introduced the MobileActionSheet component in the chat renderer, providing a slide-up interface for mobile users to access chat actions and settings. This new UI element supports nested submenus with slide transitions, multi-select options (used for features like Skills and MCP), and platform-specific file attachment handling (distinguishing between desktop host pickers and web device uploads).

packages/desktop/src/renderer/components/chat/MobileActionSheet · high confidence

New mobile workspace overlay and workspace open controls

The ChatLayout component now includes a dedicated mobile workspace overlay (MobileWorkspaceOverlay) that presents the workspace panel as a fixed, full-height side drawer with a backdrop and a floating collapse handle, ensuring the workspace remains accessible on narrow viewports without disrupting the chat layout. Additionally, a new WorkspaceOpenButton component has been added to the workspace panel header, allowing users to open the current workspace folder in external tools (VS Code, Terminal, File Explorer) or the in-app browser, with options filtered based on whether the workspace is temporary and persisting the user's last choice. These changes are supported by new CSS styles for the mobile header and dropdown, and the main ChatLayout index now integrates these components to handle mobile-specific rendering and workspace state.

packages/desktop/src/renderer/pages/conversation/components/ChatLayout · high confidence

New navigation interceptor for agent-driven page previews

A new NavigationInterceptor module has been added to the chat navigation layer to handle agent-initiated navigation tools. This component intercepts specific tool calls (such as 'navigate\_page' and 'new\_page') from Chrome DevTools MCP servers, normalizes their names by stripping common prefixes, and extracts target URLs from various data formats (direct fields, arguments, raw input, or content text). When a navigation tool is detected, it prepares a preview open event, enabling the application to display the requested page content in a preview panel rather than performing a standard browser navigation.

packages/desktop/src/common/chat/navigation · high confidence

New page-based settings views for Pet, System, WebUI, Mode, and Extensions

The settings interface now includes dedicated page components for Pet, System, WebUI, Mode, and Extension settings, replacing or supplementing previous modal-based layouts. The Pet settings page fixes a bug where the enable switch's initial state could be incorrect by sourcing it from the authoritative system setting via IPC, falling back to OFF on failure. The Extension settings page enables rendering of extension-contributed settings tabs via iframes or webviews, handling localization and external URLs. The System settings page routes between general system settings and the About page. The Mode, WebUI, and System settings pages act as wrappers for their respective modal content components in the new page view mode.

packages/desktop/src/renderer/pages/settings · high confidence

New platform-specific type definitions for ACP, Electron, and file snapshots

This change introduces three new TypeScript type definition files in the platform types directory to support specific desktop capabilities. acpTypes.ts defines the data structures for the Agent Communication Protocol (ACP), including agent capabilities, session updates, tool call outputs, and configuration option selectors. electron.ts establishes the Electron bridge API interface for web-to-main-process communication (such as file path resolution and feedback logging) and defines detailed error classification types for backend startup failures, distinguishing between issues like architecture mismatches, database version incompatibilities, and timeout events. fileSnapshot.ts provides types for tracking file system changes and comparing staged versus unstaged file states.

packages/desktop/src/common/types/platform · high confidence

New preload scripts expose IPC bridges for desktop core, feedback, and pet UI components

The desktop preload layer now includes dedicated scripts (main.ts, petConfirmPreload.ts, petHitPreload.ts, petPreload.ts) that expose specific IPC APIs to renderer processes via contextBridge. The main preload bridges backend startup state (port, language, failure status), provides a generic adapter bridge for renderer-to-main communication, and adds feedback utilities (log collection, screenshot capture, diagnostics logging) alongside tray event forwarding. Separate preloads expose APIs for the pet UI features: petConfirm handles confirmation dialogs and theme changes, petHit manages interaction events (drag, click, context menu, mouse ignore), and petPreload tracks state changes, eye/body movement, and resize events.

packages/desktop/src/preload · high confidence

New provider configuration types and API contracts

The desktop application now includes explicit TypeScript definitions for provider authentication modes (including Google OAuth, Gemini, Vertex AI, OpenAI, Anthropic, and Bedrock), API wire-contracts for creating and updating providers (with support for model capabilities and health checks), and speech-to-text configuration for OpenAI and Deepgram. These types standardize how provider settings are structured and validated before being sent to the backend.

packages/desktop/src/common/types/provider · high confidence

New renderer utility modules for navigation, platform detection, and event handling

This change introduces several new utility modules in the renderer to support decoupled architecture and cross-environment compatibility. It adds a global navigation helper (\appRestart.ts\, \navigation.ts\) allowing navigation triggers from outside the React Router context, which is critical for components like the FeedbackReportModal. Platform detection and asset resolution logic (\platform.ts\) is standardized to handle differences between Electron desktop and WebUI environments, ensuring correct URL resolution for backend assets and external link opening. A typed event emitter (\emitter.ts\) is introduced to manage cross-conversation events, file selections, and send-box interactions with proper scoping. Additionally, preview error classification (\previewError.ts\) and URL parsing utilities (\url.ts\) are added to improve user feedback and link handling, while \discontinuedBuild.ts\ introduces a compile-time flag to support product fork differentiation.

packages/desktop/src/renderer/utils · high confidence

New sidebar navigation components for assistants, scheduled tasks, search, and toolbar

The sidebar now includes dedicated UI components for accessing assistants, scheduled tasks, conversation history search, and the new chat/batch mode toolbar. These new React components (SiderAssistantEntry, SiderScheduledEntry, SiderSearchEntry, SiderToolbar) provide a consistent visual style with tooltips and handle both collapsed and expanded states, integrating with the existing translation system for multi-language support.

packages/desktop/src/renderer/components/layout/Sider/SiderNav · high confidence

New skill file service for browsing and reading skill contents

A new backend service has been introduced to manage skill file operations, providing the ability to list directory structures and read file contents within a skill's scope. This service enforces strict path validation to ensure that file access remains confined within the designated skill directory, preventing traversal outside the intended context. It exposes methods to retrieve a sorted tree of skill files and directories, as well as to read the raw text of specific skill files, laying the groundwork for UI components that need to inspect or display skill contents.

packages/desktop/src/process/services/skills · high confidence

New system hooks for desktop renderer: deep linking, protocol detection, speech input, and theme management

The desktop renderer now includes a suite of new system hooks to handle platform-specific features. \useDeepLink\ enables handling \aionui://\ deep links for adding providers and navigating to specific routes. \useProtocolDetection\ allows automatic detection of API endpoint protocols. \useSpeechInput\ and \useLiveTranscriptInsertion\ provide robust streaming voice input with live transcript support. \useTheme\ centralizes theme resolution and application, including system appearance detection. \useExtensionSettingsTabs\ and \useExtI18n\ manage extension settings tabs with internationalization. \useCrossSessionRateLimitNotice\ handles rate-limiting notifications for cross-conversation messages. \usePwaMode\ detects PWA standalone mode. \currentUserId\ provides a reliable user ID for the desktop app where the standard auth context is limited.

packages/desktop/src/renderer/hooks/system · high confidence

New team mode UI components and team creation flow

This change introduces a suite of new React components for the team collaboration interface, including a redesigned Team Create Modal with assistant selection and workspace configuration, a Team Chat View that routes to platform-specific chat implementations (ACP/Aionrs), and a Team Tabs bar supporting drag-to-reorder, inline renaming, and status indicators. It also adds visual identity components like AgentStatusBadge and TeamAgentIdentity for displaying agent avatars and status, a Team Warmup Overlay to handle agent startup states and errors, and a Team View Toggle for switching between parallel, single, and board layouts.

packages/desktop/src/renderer/pages/team/components · high confidence

New type definitions for Team mode search, runtime state, and agent lifecycle

This change introduces new TypeScript interfaces in the desktop application to support Team mode features. It adds \IMessageSearchItem\ and \IMessageSearchResponse\ to enable searching messages within team conversations. It also defines core runtime types including \ITeamSlotWork\, \ITeamRunEvent\, and \ITeamRunStateResponse\ to track the state of team runs and individual agent slots, as well as \ITeamAgentStatusEvent\ and \ITeamAgentSpawnedEvent\ to handle real-time agent lifecycle updates. Additionally, \TeamAssistant\ and \TTeam\ types are defined to manage persisted team configurations and assistant metadata.

packages/desktop/src/common/types/team · high confidence

New type definitions for chat file references, sidebar read-models, and project explorer

This change introduces a set of new TypeScript type definitions in the common types package to support recent UI and backend contract updates. It adds \ChatFileRef\ and related helpers to standardize how files are referenced in chat messages (distinguishing between project, upload, and local sources), defines the \SidebarResponse\ and \SidebarItem\ shapes that mirror the backend's grouped, paged sidebar API, and establishes the \ProjectEntryDto\ and \ProjectDetailDto\ types for the new project-scoped explorer control plane. Additionally, it includes type declarations for \pptx2json\ and \turndown-plugin-gfm\ libraries, and defines \FeedbackDiagnostics\ types to structure core diagnostics attached to user feedback reports.

packages/desktop/src/common/types · high confidence

New type definitions for document conversion and preview content handling

The \packages/desktop/src/common/types/office\ directory now includes \conversion.ts\ and \preview.ts\, introducing structured TypeScript interfaces for office document operations. \conversion.ts\ defines the data models and API contracts for converting between Word, Excel, PowerPoint, and Markdown/PDF formats, including specific structures for Excel sheets (with images and merges) and PowerPoint slides. \preview.ts\ expands the \PreviewContentType\ union to explicitly support 'ppt', 'word', 'excel', 'csv', and 'unsupported' types, ensuring the preview system can correctly identify and route legacy Office binaries, ODF, and CSV files that previously failed or were misrouted.

packages/desktop/src/common/types/office · high confidence

New workspace utility module for path handling, events, and history

A new \workspace\ utility module has been added to the renderer, introducing three key capabilities: path normalization for file-watch events (specifically handling macOS \/private\ symlink resolution and Windows backslash folding), a set of custom DOM events for workspace state and file-status changes (toggle, collapsed state, and initial file load signals), and local-storage-based tracking of workspace update times. These utilities support more reliable file watching in the preview panel and enable UI components to react to workspace state changes and file availability.

packages/desktop/src/renderer/utils/workspace · high confidence

Preview panel introduces dedicated hooks for local file preview, scroll sync, and tab management

The Preview panel now uses a new set of custom React hooks to enhance the user experience when viewing files. The \useLocalFilePreview\ hook handles opening local files by resolving their content and metadata, ensuring consistent tab behavior whether accessed from the chat or the explorer. A new \useScrollSync\ hook synchronizes scrolling between the editor and preview panes in split-screen mode using percentage-based alignment and debouncing. Additionally, \usePreviewKeyboardShortcuts\ adds support for saving (Cmd/Ctrl+S) and closing tabs (Cmd/Ctrl+W) directly within the preview context, while \useTabOverflow\ manages visual indicators for horizontally scrolling tab bars. Theme detection is also abstracted into \useThemeDetection\ to keep the preview UI consistent with the app's theme settings.

packages/desktop/src/renderer/pages/conversation/Preview/hooks · high confidence

Project-scoped file explorer with drag-and-drop, context actions, and themed icons

The file tree in the conversation view has been replaced by a project-scoped Explorer that manages file subscriptions via a WebSocket monitor, persisting expansion and selection state per project in localStorage. Users can now drag and drop files to transfer or import them, create, rename, and delete files and folders, and use context-menu actions to copy relative or absolute paths, reveal files in the OS file manager (Electron only), and add items to the chat send box. The tree features a persistent filename search, directories-first sorting, and a new file-type icon theme (Catppuccin) that adapts to the active light or dark appearance.

packages/desktop/src/renderer/pages/conversation/explorer · high confidence

Read-only team activity board for messages and tasks

A new read-only activity view has been added to the Team mode, displaying a unified feed of team messages and tasks organized into a board layout with one column per member. The view includes a control bar for filtering by content type (messages, tasks, or all), sorting by time, and selecting specific members, along with toggles to show or hide system messages and terminal tasks. Messages and tasks are rendered as cards with expandable content, read/unread status indicators, and attachment counts. Tasks display dependency information, allowing users to click a dependency tag to jump to and highlight the blocker's card within the board. The feed supports infinite scrolling with a load-more sentinel and handles real-time updates via WebSocket events.

packages/desktop/src/renderer/pages/team/activity · high confidence

Redesigned Agent Management with Repair, Hub, and Inline Editing

The Agent Settings page has been rebuilt to provide a unified interface for managing both official and custom agents. Users can now install and update agents directly from the AionHub via a new modal, and custom agents can be created, edited, and deleted inline. A dedicated Agent Repair Page allows users to troubleshoot connection issues, override launch paths, and manage environment variables for specific agents. The interface also displays which assistants are bound to each agent, supports availability filtering, and ensures disabled custom agents remain visible for easy re-enabling.

packages/desktop/src/renderer/pages/settings/AgentSettings · high confidence

The Markdown renderer has been rebuilt to support advanced content types and improved usability. Code blocks now feature collapsible previews, syntax highlighting, and copy-to-clipboard functionality. New diagram blocks allow rendering of Mermaid flowcharts and WaveDrom timing diagrams directly in chat, with support for drag-to-pan and zoom interactions, including a dedicated fullscreen overlay for detailed inspection. Math formulas are now rendered using KaTeX. Additionally, local file links are handled natively within the application, displaying file paths and line numbers with an option to open them in the built-in preview panel rather than the system shell. The rendering engine also uses Shadow DOM to isolate styles, ensuring consistent appearance across different themes and preventing CSS conflicts.

packages/desktop/src/renderer/components/Markdown · high confidence

Renderer entry point, theme persistence, and runtime integrity reconciliation

The renderer now initializes with a new entry point (index.html and main.tsx) that synchronously restores the user's theme preference from localStorage to prevent visual flashing on startup. It also introduces a runtime installation reconciler that monitors backend resource health, automatically retracting installation-integrity dialogs if the system self-heals within a 15-second window, and only surfacing persistent failures. Additionally, the renderer now supports rendering WaveDrom timing diagrams in markdown by adding the necessary TypeScript type declarations for the wavedrom library.

packages/desktop/src/renderer · high confidence

Scheduled tasks page now supports custom schedules and timezone preservation

The Scheduled Tasks page has been rebuilt to support custom scheduling options (intervals, weekdays, monthly, and advanced cron expressions) and ensures that scheduled tasks preserve the user's local timezone. The new Create Task dialog allows users to define detailed recurrence patterns, while the Task Detail page and background utilities automatically repair any existing jobs that lack timezone data, ensuring consistent execution times across different locales.

packages/desktop/src/renderer/pages/cron/ScheduledTasksPage · high confidence

Slash command menu now supports ACP agent commands and session skills

The slash command autocomplete menu has been expanded to dynamically include commands provided by ACP-compatible agents (such as Claude) and skills loaded into the current conversation. This change introduces a mapping layer that normalizes agent-provided commands and session skills into the existing slash command interface, allowing users to discover and insert agent-specific actions and skill templates directly from the chat input. The menu now prioritizes built-in commands, followed by agent commands, and finally session skills, ensuring a consistent and context-aware experience across different conversation types.

packages/desktop/src/common/chat/slash · high confidence

Source Control panel with collapsible sections and tree/list view modes

The Source Control (SCM) panel now features a collapsible, resizable section layout with a multi-repository switcher and a toggleable list or directory tree view for changes. Users can switch between a flat list (the previous behavior) and a VS Code-style tree view that groups files by directory, with expand/collapse state persisted per directory. The panel supports multi-repo projects, grouping linked worktrees under their primary repository, and provides bulk stage/unstage/discard actions. Changes are grouped by status (staged, unstaged, blocked) with distinct visual indicators for conflicted and unknown states, and action buttons are correctly gated based on repository capabilities and resource state.

packages/desktop/src/renderer/pages/conversation/SourceControl · high confidence

Team workspace cleanup and storage management utilities

Added utility functions to handle team-specific lifecycle and storage concerns: \removeTeamAssistantWithCronCleanup\ and \removeTeamWithCronCleanup\ ensure that associated cron jobs are deleted when a team assistant or entire team is removed, preventing orphaned scheduled tasks. \pruneOrphanTeamStorage\ cleans up stale \localStorage\ entries for teams that no longer exist, covering both frontend deletions and backend removal events. \resolveTeamWorkspaceView\ and \isTemporaryTeamWorkspacePath\ provide logic to identify and manage temporary workspace paths, ensuring correct workspace state resolution for team members.

packages/desktop/src/renderer/pages/team/utils · high confidence

Turkish (tr-TR) locale files added to the desktop renderer

The desktop application now includes a complete set of Turkish (tr-TR) translation files, covering the ACP connection status, agent health and configuration, Codex network and permission errors, conversation history, scheduled tasks, MCP tool management, and file previewing. This addition enables the user interface to display in Turkish for these specific features.

packages/desktop/src/renderer/services/i18n/locales/uk-UA · high confidence

Unified agent and model metadata utilities

The renderer now uses a new set of utility modules in \packages/desktop/src/renderer/utils/model\ to centralize how agents and models are displayed and configured. Agent logos are resolved dynamically from the backend management catalog rather than hardcoded paths, with local file paths safely filtered out. Agent runtime catalogs (models, modes, commands) are parsed from backend payloads, and agent types are classified with a deprecation policy for legacy runtimes. Assistant selection logic enforces a consistent, user-preference-aware ordering across the UI, while model capability detection applies a three-tier rule system (user config, provider rules, regex patterns) with caching. Platform configurations are centralized, promoting Moonshot/Kimi to the top of the list, and error detection utilities distinguish between quota limits, API key issues, and general API errors to prevent inappropriate automatic model switching.

packages/desktop/src/renderer/utils/model · high confidence

Unified rotating API client with multi-key support and protocol conversion

The desktop application now uses a new rotating API client architecture that automatically switches to a backup API key if the current one fails (e.g., due to rate limits or unauthorized errors), significantly improving reliability for users with multiple keys. This change introduces native support for Anthropic and Gemini models alongside OpenAI, using a unified interface that automatically converts requests and responses between different provider formats. A centralized factory handles client creation, including URL normalization for new-api gateways and proxy configuration, ensuring consistent behavior across all supported AI providers.

packages/desktop/src/common/api · high confidence

Visual indicators for scheduled task status in conversation headers

The conversation header now displays a compact pill button when a scheduled task is associated with the current chat. This button shows an alarm clock icon with a colored dot—green for active, orange for paused, and red for errors—and includes a tooltip describing the current state. Clicking the button navigates the user to the detailed scheduled task page. The indicator is hidden on mobile views to preserve titlebar space and does not appear if no job is linked to the conversation.

packages/desktop/src/renderer/pages/cron/components · high confidence

Removals

Removal of Gemini agent task implementation

The \BaseAgentTask\ and \GeminiAgentTask\ classes in \src/process/task\ have been deleted. This removes the specific implementation for handling Gemini-based agent interactions, including the logic for initializing the Gemini configuration, managing conversation streams, and sending messages to the Gemini worker process.

src/process/task · high confidence

Removal of Gemini and general Settings panels

The application no longer includes the Settings interface or the specific configuration panel for Google Gemini. The \src/renderer/panel/settings.tsx\ and \src/renderer/panel/geminsettings.tsx\ files have been deleted, removing the user's ability to configure language preferences, proxy settings, and Gemini API authentication methods (such as API keys or OAuth) through the UI.

src/renderer/panel · high confidence

Removal of Gemini-specific chat and workspace components

The Gemini-specific chat interface (GeminiChat.tsx) and its associated file workspace panel (GeminiWorkspace.tsx) have been removed from the renderer. This deletion eliminates the dedicated UI for Gemini conversations, including the thought-display overlay, file attachment handling, and the right-side file tree sidebar, effectively ending support for this specific model integration in the current UI layer.

src/renderer · high confidence

Removal of Gemini-specific conversation components

The Gemini-specific UI components (ChatConversation, ChatHistory, ChatSider, ConversationWelcome) have been removed from the renderer/conversation directory. This eliminates the dedicated UI for managing Gemini chat sessions, including history display, sidebar workspace selection, and the welcome screen with file/folder upload capabilities, effectively removing support for this specific chat type from this part of the application.

src/renderer/conversation · high confidence

Removal of dedicated Gemini worker process

The dedicated worker file for the Gemini agent (src/worker/gemini.ts) has been removed. This eliminates the previous implementation that managed the Gemini agent via a forked task with specific message piping and stream handling, indicating a shift in how Gemini interactions are processed within the application.

src/worker · high confidence

Removal of legacy Electron IPC bridge adapter files

The legacy adapter files \src/adapter/browser.ts\ and \src/adapter/main.ts\ have been removed. These files previously handled the communication bridge between the renderer and main processes in Electron and provided a browser-compatible shim. Their deletion indicates that the application no longer relies on this specific IPC implementation, likely due to a migration to a different communication mechanism or a simplified architecture that no longer requires these specific adapter layers.

src/adapter · high confidence

Removal of legacy Gemini CLI core modules

The \src/agent/gemini/cli\ directory has been cleaned up by deleting several legacy files that are no longer part of the active codebase. Specifically, \atCommandProcessor.js\ (which handled \@path\ file injection), \config.ts\ (CLI configuration loading), \errorParsing.js\ (API error formatting), \extension.ts\ (extension loading), \settings.ts\ (user/workspace settings management), \types.js\ (shared type enums), and \useReactToolScheduler.js\ (tool status mapping) have all been removed. This change eliminates dead code and reduces the maintenance surface for the Gemini CLI agent.

src/agent/gemini/cli · high confidence

Removal of legacy event emitter utility

The \src/renderer/utils/emitter.ts\ file has been removed, eliminating the custom EventEmitter wrapper that previously managed events like file selection and workspace refresh. This change indicates that the application no longer relies on this specific event-driven communication pattern in the renderer, likely due to a broader architectural shift in how state and events are handled.

src/renderer/utils · high confidence

Removal of legacy message rendering components and hooks

The legacy message rendering components (MessageList, MessageText, MessageTips, MessageToolCall, MessageToolGroup) and the associated state management hooks (useMessageList, useChatKey) have been removed from the renderer. This cleanup eliminates the previous implementation of message display and list management, likely in preparation for or as a result of a broader architectural migration to a new message handling system.

src/renderer/messages · high confidence

Removal of legacy process-layer agent and storage modules

The \src/process\ directory has been completely removed, eliminating the legacy implementation for managing Gemini agent tasks and file-based chat storage. This change deletes the \WorkerManage\ singleton, the \initAgent\ helper for creating temporary workspaces, the \initBridge\ IPC handlers for conversation lifecycle, the \initStorage\ module that persisted chat data to local JSON files, the \message\ module for debounced message syncing, and the \utils\ module containing path and directory-reading helpers. Users will no longer interact with this specific process-layer architecture, which has been superseded by the application's newer storage and bridge systems.

src/process · high confidence

Removed legacy Electron worker fork and pipe communication classes

The \ForkTask\ and \Pipe\ classes, which previously managed Electron \utilityProcess\ forking and custom deferred promise-based IPC, have been removed from the codebase. This eliminates the legacy mechanism for spawning and communicating with child worker processes, simplifying the worker architecture by discarding the custom event-emitter and pipe-handling logic in favor of the current implementation.

src/worker/fork · high confidence

Removed legacy Gemini agent implementation

The legacy \GeminiAgent\ class and its associated utility functions (stream processing, tool call handling) have been removed from the codebase. This deletion eliminates the direct dependency on the \@google/gemini-cli-core\ package for this agent path, simplifying the architecture and removing obsolete code paths that are no longer used.

src/agent/gemini · high confidence

Removed legacy Webpack configuration files

Deleted the Webpack build configuration files (webpack.config.ts, webpack.rules.ts, webpack.plugins.ts, webpack.renderer.config.ts, and icon-park-loader.js) from the config directory, removing the associated build rules and loaders that were previously used to compile the application.

config · high confidence

Removed legacy renderer components

Deleted the legacy Diff2Html, LanguageSwitcher, Markdown, and SendBox components from the renderer. These files are no longer part of the application's UI, indicating a structural shift in how diffs, language selection, markdown rendering, and message input are handled.

src/renderer/components · high confidence

Security

The HTML preview renderer now safely inlines local resources (images, CSS, scripts) by resolving relative paths and strictly validating them against the trusted workspace root, blocking any attempts to escape via path traversal sequences like \..\. Additionally, when users select text containing a URL within the preview, a floating toolbar appears offering options to add the text to the chat, open the link in the app's built-in browser, or open it in the system browser.

packages/desktop/src/renderer/pages/conversation/Preview/components/renderers · high confidence

Architecture

Removed legacy Electron main and preload entry points

The legacy \src/index.ts\ (main process entry) and \src/preload.ts\ (preload script) files have been deleted. This removes the old Electron window creation logic, the hardcoded Webpack entry point declarations, and the basic IPC bridge exposed via \contextBridge\, indicating a migration to a new application bootstrap and communication architecture.

src · high confidence

Behavioural changes

ACP conversation platform UI and error handling restructured

The ACP conversation interface has been reorganized into a new component structure within the \acp\ platform directory. The main \AcpChat\ component now serves as the central layout, integrating the message list, plan bar, and the new \AcpSendBox\ for user input. To improve reliability and debugging, error handling has been significantly enhanced: \buildSendFailureError\ and \errorDiagnostics\ now classify specific failure modes (such as busy states, transport errors, and agent disconnections) and generate redacted error summaries for telemetry, ensuring sensitive data is stripped before reporting. Additionally, \useAcpInitialMessage\ manages the sending of initial messages on mount, and \AcpE2EStreamInjector\ provides a mechanism for injecting simulated message streams for end-to-end testing.

packages/desktop/src/renderer/pages/conversation/platforms/acp · high confidence

Assistant management page restructured into Enabled, My, and Official tabs

The Assistant Settings home page has been rebuilt to organize assistants into three distinct tabs: 'Enabled' (for managing and reordering active assistants), 'My Assistants' (for user-created and CLI-connected assistants), and 'Official' (for built-in templates). This change introduces a new tabbed navigation layout, adds a search bar to filter assistants across all tabs, and enables drag-and-drop reordering specifically within the Enabled tab. It also includes custom empty states for the 'My Assistants' tab to guide new users, quick-chat buttons on enabled rows, and runtime badges to identify the underlying engine for each assistant.

packages/desktop/src/renderer/pages/settings/AssistantSettings/home · high confidence

Assistant settings editor restructured into modular configuration sections

The Assistant Settings editor has been refactored to use a new, modular UI structure. The interface is now divided into distinct, reusable sections: Identity (for name, description, and avatar), Defaults (for configuring default model, permissions, skills, MCPs, and thought levels), Prompts (for managing recommended prompts), and Rules (for editing Markdown-based rules with edit/preview modes). These sections are built on new primitive components (SectionCard, ConfigRow, FieldLabel) that enforce a consistent visual style, including immediate vs. new-conversation applicability indicators and read-only states.

packages/desktop/src/renderer/pages/settings/AssistantSettings/editor · high confidence

Automated migration of Assistant type properties to snake\_case

A new codemod script has been added to automatically refactor the frontend Assistant type and its access sites from camelCase to snake\_case. This tool updates property accesses, object literal assignments, and destructuring patterns for fields such as name\_i18n, sort\_order, and enabled\_skills across the codebase, ensuring consistency with the backend schema without manual editing.

scripts/codemods · high confidence

Chinese (Simplified) locale fully populated with new feature translations

The zh-CN locale has been completely rebuilt with 19 new translation modules (acp, agent, agentMode, codex, common, conversation, cron, fileSelection, google, guid, login, mcp, messages, pet, preview, settings, team, tools, update) and an updated index.ts. This adds comprehensive Chinese support for newly introduced capabilities including ACP authentication and status, Codex network/permission handling, scheduled tasks, MCP server management, team collaboration, desktop pets, and detailed startup error diagnostics, ensuring these features are now fully localized for Chinese users.

packages/desktop/src/renderer/services/i18n/locales/zh-CN · high confidence

Context-aware feedback reporting with automatic module selection and diagnostics

The feedback service now automatically pre-selects the appropriate feedback module based on the user's current route (e.g., mapping /settings/agent to 'agent-detection') and attaches core diagnostics, including logs and database diagnostics, to submitted reports. It also captures explicit context such as team or conversation IDs from the URL and supports an optional contact email field, ensuring reports are richer and more targeted without manual configuration.

packages/desktop/src/renderer/services/feedback · high confidence

Conversation UI components restructured with new empty state and title editing

The conversation page components have been reorganized to support a new single-chat empty state and inline title editing. A new SingleChatEmptyState component displays the assistant identity and a greeting when a conversation has no messages, resolving the previous blank-window issue. The ChatTitleEditor component now allows users to click to rename conversations, including handling empty titles with a placeholder. Additionally, the ChatHistory component has been updated to load conversations from the database and support inline editing of conversation names. The ChatSlider component now conditionally renders the project-level Explorer based on workspace status, and the WorkspaceCollapse component supports sticky headers for long project groups.

packages/desktop/src/renderer/pages/conversation/components · high confidence

Conversation history grouping, sorting, and export logic

The GroupedHistory utility layer now implements backend-driven conversation grouping by workspace, pinning fidelity, and custom sort ordering. Users will see conversations organized into workspace sections with pinned items appearing at the top, while team-owned conversations are filtered out of the sidebar. The system supports manual reordering via a computed sort-order index that handles insertion and reindexing. Additionally, a new export helper enables users to export individual conversations as Markdown or JSON files, including associated workspace files in a zip archive.

packages/desktop/src/renderer/pages/conversation/GroupedHistory/utils · high confidence

Decouples platform services from Electron to support non-Electron runtimes

The desktop application now abstracts platform-specific capabilities (paths, worker processes, power management, notifications, and networking) behind a new \IPlatformServices\ interface, allowing it to run in non-Electron environments. An \ElectronPlatformServices\ implementation wraps Electron APIs for the desktop experience, while a \NodePlatformServices\ implementation provides equivalent functionality using Node.js primitives (e.g., \child\_process\ for workers, \os\ for paths, native \fetch\ for networking) for headless or server modes. A generic \bridge\ module replaces direct IPC mechanisms, enabling cross-process communication via a unified event/invoke pattern that works over both Electron IPC and other transports. This change allows the same core logic to be used in both the desktop app and non-desktop contexts, with graceful degradation (e.g., silent notifications, no power management) in non-Electron modes.

packages/desktop/src/common/platform · high confidence

Desktop adapter migrates from Electron IPC to HTTP/WS backend bridge

The desktop adapter layer has been rewritten to route communication to the backend via HTTP REST and WebSocket instead of relying on Electron's native IPC. This introduces a new \httpBridge\ for API calls, a \browser\ module for WebSocket handling (including session refresh and reconnection logic for WebUI mode), and a suite of mapper files (\apiModelMapper\, \sidebarMapper\, \teamMapper\, etc.) to translate between backend wire formats and frontend types. Electron-specific operations like window controls and native dialogs remain as IPC, but the core data flow now uses a unified bridge pattern that works in both desktop and browser environments.

packages/desktop/src/common/adapter · high confidence

Desktop process utility layer restructured and hardened

The \packages/desktop/src/process/utils\ module has been replaced with a new, modular utility layer that improves startup reliability, data persistence, and user experience. Key changes include: introducing a persistent anonymous analytics ID (\analyticsId.ts\) for installation tracking; implementing a robust GPU crash recovery system (\gpuRecovery.ts\) that automatically disables hardware acceleration after repeated failures; adding a renderer crash recovery policy (\rendererRecovery.ts\) with backoff and throttling to prevent reload storms; ensuring settings and window bounds are persisted on quit (\persistOnQuit.ts\); and migrating legacy assistant and admin user data to the new backend storage (\migrateAssistants.ts\, \ensureAdminUser.ts\). The module also adds support for deep links (\deepLink.ts\), a configurable application menu (\appMenu.ts\), and improved logging with dated log files (\configureConsoleLog.ts\).

packages/desktop/src/process/utils · high confidence

Grouped conversation history with batch selection, drag-to-reorder, and stream-aware sidebar states

The conversation history view now groups items into pinned, project, and general sections, allowing you to drag-and-drop pinned conversations to reorder them (persisted via sort order) and use batch mode to select and archive multiple conversations at once. The sidebar now accurately reflects real-time agent activity: it shows a generating spinner only for known content-stream message types, and displays a distinct 'needs you' indicator when the agent is waiting for user confirmation (e.g., tool permissions or structured questions). Additionally, navigating to a conversation automatically expands its containing section and project folder and scrolls it into view, while workspace expansion and section collapse states are persisted across reloads.

packages/desktop/src/renderer/pages/conversation/GroupedHistory/hooks · high confidence

Guid page input and assistant selection logic refactored into dedicated hooks

The Guid page's frontend logic has been restructured into a set of dedicated React hooks to improve modularity and state management. \useGuidInput\ now centralizes input text, file handling (drag-and-drop, paste, upload), and workspace directory state. \useGuidAssistantSelection\ manages the assistant catalog (loaded via \useCustomAgentsLoader\), persists the last selected assistant, and handles default selection logic. \useGuidModelSelection\ handles provider-based model selection and defaults. \useGuidSend\ orchestrates the conversation creation payload, ensuring that CLI agents do not incorrectly inherit provider-specific model overrides on their first turn. \useTypewriterPlaceholder\ provides the animated placeholder text for the input field. This change consolidates complex state interactions into reusable, testable units within the Guid page.

packages/desktop/src/renderer/pages/guid/hooks · high confidence

Improved backend binary resolution with diagnostic error reporting

The desktop application now uses a dedicated binary resolver to locate the 'aioncore' backend executable, supporting an environment variable override (AIONUI\_BACKEND\_BIN), a bundled fallback, and a system PATH search. If the binary cannot be found, the application throws a detailed error containing diagnostic information such as the checked paths, directory contents, and PATH lookup results, which aids in troubleshooting startup failures.

packages/desktop/src/process/backend · high confidence

Improved chat mention handling, message pagination, and content rendering

The chat experience now supports cross-conversation references via \@@\ session mentions alongside existing \@\ file mentions, with dedicated parsing and highlighting logic to ensure accurate token matching and visual feedback. Message display has been enhanced with cursor-based pagination for smoother navigation through long conversations, while AI response rendering now correctly strips internal thinking tags and skill-suggestion blocks from both the display and clipboard copy operations. Additionally, the chat interface now supports LaTeX math formula rendering in markdown content, and conversation exports have been improved with better filename sanitization and content formatting.

packages/desktop/src/renderer/utils/chat · high confidence

Installer localization and asset cleanup

The installer now displays localized error messages in English and Simplified Chinese when it fails to close or remove the previous version, guiding users to resolve file conflicts. Additionally, the AionUI logo SVG asset has been cleaned up by adding a missing newline at the end of the file.

resources · high confidence

Introduces mid-turn message delivery and refined runtime state management

The conversation runtime view now supports sending messages while a turn is already in flight, provided the backend runtime signals support via the \supports\_midturn\_delivery\ flag. This change introduces a new \ConversationRuntimeViewStore\ and \useConversationRuntimeView\ hook that track detailed state such as \activeTurnId\, \isProcessing\, \canSendMessage\, and \supportsMidturnDelivery\. The UI can now bypass client-side queuing for compatible backends, allowing for more responsive interactions. Additionally, the store handles busy send conflicts, local stopping/restarting states, and ensures that turn-completion events are scoped to the correct turn, improving reliability during rapid user interactions.

packages/desktop/src/renderer/pages/conversation/runtime · high confidence

Introduces structured theme system with improved text legibility

The application now uses a unified theme model that layers structured CSS tokens over a baseline color scheme, allowing for more consistent and maintainable styling. This change includes a specific fix to increase the contrast of secondary text colors in both light and dark modes, improving readability. Additionally, the theme system supports custom user themes via a sandboxed CSS channel and enforces a token contract to prevent invalid style overrides.

packages/desktop/src/renderer/styles/themes · high confidence

Introduces structured versioning and update status models for the desktop client

The update module now includes new TypeScript definitions to standardize how version information and update states are handled. The \VersionInfo\ class provides robust semantic version comparison, allowing the application to determine if an update is available, identify the update type (major, minor, patch), and enforce minimum version requirements for forced updates. Additionally, \updateTypes.ts\ defines the data structures for update checks, downloads, and installer failure tracking, establishing a clear contract for the auto-updater's status and progress reporting.

packages/desktop/src/common/update · high confidence

Language-aware formatting and right-to-left layout support

The application now formats numbers, dates, and byte sizes according to the user's selected app language rather than the host operating system's locale, ensuring consistent display across different environments. Additionally, the interface now supports right-to-left (RTL) layout for Persian (fa-IR), automatically adjusting the document direction and language attributes when that locale is selected.

packages/desktop/src/renderer/services/i18n · high confidence

MCP server management hooks restructured with backend catalog and connection testing

The MCP hooks in the renderer have been reorganized to manage server state, connection testing, and OAuth authentication. A new \catalog.ts\ module fetches the server list from the backend, deduplicating and normalizing transport types (e.g., \streamable\_http\ to \http\) before merging with local settings. The \useMcpServers\ hook now loads this backend catalog and extension-provided servers, while \useMcpConnection\ handles connection testing with specific error handling for runtime command failures (Node, Bun, Python, etc.) and OAuth requirements. A \MessageQueue\ singleton ensures UI messages are displayed sequentially to prevent overlap during rapid toggling, and \useMountedMessage\ prevents crashes when messages are triggered after a component unmounts.

packages/desktop/src/renderer/hooks/mcp · high confidence

Main-process i18n service now bundles 13 languages for desktop UI

The desktop application's main process now initializes internationalization using a centralized service that statically bundles 13 locales (en-US, zh-CN, ja-JP, zh-TW, ko-KR, tr-TR, ru-RU, uk-UA, pt-BR, de-DE, es-ES, fr-FR, and fa-IR). This change ensures that language switching and initial language loading work correctly within the main process context without requiring file-system reads, supporting the decoupling of the WebUI from Electron-specific runtime behaviors.

packages/desktop/src/process/services/i18n · high confidence

Migrate desktop build system to electron-vite and configure app packaging

The desktop application's build pipeline has been replaced with electron-vite, introducing a new configuration file (electron.vite.config.ts) that manages the main, preload, and renderer processes. This change includes specific bundling adjustments such as externalizing dependencies for the main process while bundling Sentry's preload module to ensure compatibility with Electron's sandbox mode. Additionally, a new electron-builder configuration (electron-builder.yml) defines the packaging rules, including asset inclusion, native module handling (asarUnpack), and platform-specific targets (NSIS for Windows, DMG/ZIP for macOS, DEB for Linux). The build process now also integrates a custom plugin to build built-in MCP servers and handles icon transformation via a Vite plugin.

packages/desktop · high confidence

New IPC bridge layer for desktop process communication

The desktop application now uses a dedicated IPC bridge layer in \packages/desktop/src/process/bridge\ to manage communication between the renderer and main processes. This new architecture introduces modular bridges for system settings (including close-to-tray behavior, language changes, and desktop pet controls), application lifecycle (restart, devtools, zoom, and start-on-boot), file dialogs, feedback collection (logs and screenshots), system notifications, theme synchronization, update management, and WebUI lifecycle. This change centralizes and standardizes how the UI interacts with the underlying Electron and backend services.

packages/desktop/src/process/bridge · high confidence

New chat library and tool-call normalization logic

The chat subsystem now uses a new \chatLib\ module that defines message types (including ACP-specific types like \acp\_tool\_call\ and \acp\_terminal\_output\) and path-joining utilities. A new \normalizeToolCall\ module standardizes tool-call messages into a uniform \NormalizedToolCall\ shape, handling \tool\_group\, \acp\_tool\_call\, and legacy \tool\_call\ formats, while \acpToolCallOutput\ sanitizes large inline image results and extracts image paths. A new \atCommandParser\ parses \@\ file references in queries, and \forkConversation\ gates message-level forking based on backend turn-anchors. These changes standardize how chat messages and tool outputs are processed and displayed.

packages/desktop/src/common/chat · high confidence

New conversation command queue with busy-state handling

The conversation platform now uses a dedicated command queue to manage message sending, supporting both automatic and manual modes. This change introduces robust handling for backend busy states (such as active turns or unavailable runtimes) by classifying 409 Conflict errors and preventing race conditions during queue draining. It also includes validation limits for input length, file count, and queue size, along with utilities to assert bridge success and normalize session references.

packages/desktop/src/renderer/pages/conversation/platforms · high confidence

New conversation hooks for lease management, layout constraints, and workspace collapse

The conversation page now uses a set of new React hooks to manage runtime state and UI behavior. useActiveLease ensures the active conversation or team session remains alive by sending periodic IPC heartbeats, stopping when the tab is hidden. useLayoutConstraints enforces minimum pixel widths for the chat, preview, and workspace panels, auto-collapsing the workspace when the container is too narrow and clamping the chat split ratio. useWorkspaceCollapse manages the right-side panel's visibility, persisting user preferences, auto-expanding on file events (with different logic for user-picked vs. temporary workspaces), and forcing collapse on mobile or conversation switches. Additional hooks include useConversationAssistants for fetching and ordering available assistants, useContainerWidth for responsive sizing via ResizeObserver, and useTitleRename for inline conversation title editing with IPC updates and cache refreshes.

packages/desktop/src/renderer/pages/conversation/hooks · high confidence

New font customization and unified theme application system

The theme system has been refactored to support granular font customization, allowing users to select specific font families, sizes, and weights via new utility functions that write these settings to CSS variables on the root element. Theme application is now centralized in a new \applyTheme\ module that synchronizes appearance attributes (\data-theme\ and \arco-theme\) and injects structured design tokens and custom CSS. Custom CSS processing has been upgraded to use PostCSS for robust parsing and automatic \!important\ injection, ensuring user styles reliably override defaults. Additionally, a 'Follow System' mode has been implemented to automatically sync the app's theme with the OS appearance preference.

packages/desktop/src/renderer/utils/theme · high confidence

New settings components for language switching, font scaling, and update notifications

The settings area now includes a LanguageSwitcher component that lets users change the application language from a dropdown supporting 13 locales (including zh-CN, en-US, es-ES, fr-FR, de-DE, ja-JP, ko-KR, pt-BR, ru-RU, tr-TR, uk-UA, and fa-IR). A ScaleControl component provides a slider and +/- buttons to adjust the font scale (80%–150%) with a reset option, persisting the value via the theme context. Update handling is consolidated into a singleton notification system: UpdateNotificationCard renders a full or mini progress/status UI for checking, downloading, and installing updates, while UpdateMigrationDialog guides users of the discontinued AionUi build to migrate to AionPro. The update check logic in checkForUpdatesShared.ts now prevents downgrade offers by ensuring only strictly newer versions are presented.

packages/desktop/src/renderer/components/settings · high confidence

New theme system and style architecture for the desktop renderer

The renderer's styling layer has been restructured to support a unified, theme-aware design system. A new migration guide and TypeScript color token definitions replace hardcoded hex values with semantic CSS variables and UnoCSS atomic classes, enabling seamless light/dark mode switching. Arco Design component overrides have been centralized to fix specific UI regressions, including vertical alignment of loading spinners and font rendering issues caused by the Inter typeface. Additionally, dedicated stylesheets now manage layout behaviors (such as sticky sider labels and responsive sidebar positioning) and provide native theming for markdown content, including dual-theme support for code blocks.

packages/desktop/src/renderer/styles · high confidence

New type definitions for assistant, agent, and channel configurations

The desktop application now includes a comprehensive set of TypeScript type definitions to support the assistant-first architecture and multi-agent capabilities. This introduces structured types for Assistant configurations (including defaults, prompts, and governance settings), Detected Agents (covering ACP, remote, aionrs, and other execution engines), Hub extensions, and Channel bindings. These types enforce the migration from legacy backend-only agent references to explicit assistant IDs in channel bindings and provide the necessary schema for managing assistant states, preferences, and remote agent connections.

packages/desktop/src/common/types/agent · high confidence

Preview panel now persists state per project and auto-refreshes on file changes

The preview panel now isolates its open tabs and UI state by project, meaning switching projects resets the preview while staying within the same project keeps it open. It also automatically watches the directories of open files and refreshes tabs when those files change on disk, ensuring the preview stays in sync with the workspace.

packages/desktop/src/renderer/pages/conversation/Preview/context · high confidence

Preview panel refactored with robust tab management and safety controls

The Preview panel has been restructured into a modular component set (PreviewPanel, PreviewTabs, PreviewToolbar, PreviewContextMenu, and PreviewConfirmModals) to improve reliability and user safety. This change introduces confirmation dialogs for closing and refreshing tabs with unsaved edits, preventing accidental data loss. It also adds a comprehensive right-click context menu for managing multiple tabs (close left/right/others/all, copy paths, reveal in folder) and a refined refresh button that accurately reflects file change states. Additionally, path resolution logic has been updated to correctly handle project file references and cross-platform path formats, ensuring copy and open actions work as expected.

packages/desktop/src/renderer/pages/conversation/Preview/components/PreviewPanel · high confidence

Redesigned Guid input area with assistant selection, workspace footnote, and action row

The Guid page now features a completely restructured input interface. The assistant selection area has been expanded into a responsive multi-column panel that adapts the number of visible assistant pills based on the available width, with a hover-to-expand mechanism for overflow options. The input card itself now includes an inner white card design, supports slash command menus, and displays a workspace footnote component that allows users to browse, search, and select recent or new workspace directories. The action row has been redesigned to provide flat access to model selection, agent mode switching, skills, and MCP server toggles, with a dedicated mobile action sheet for smaller screens.

packages/desktop/src/renderer/pages/guid/components · high confidence

Redesigned Settings Modal with granular appearance controls and new system sections

The Settings modal has been restructured into distinct content tabs, introducing a comprehensive Appearance section that allows users to customize font family, weight, and size per region (app, chat, markdown, code) alongside a unified theme gallery and zoom scale. A new System section exposes browser data management (including a toggle to allow agent-driven browser control and a button to clear cached credentials) and developer-specific options like DevTools toggling and CDP remote debugging configuration. The About tab now features a dedicated update workflow that guides discontinued AionUi builds toward AionPro migration, while the Model tab provides a consolidated interface for managing provider health, enabling/disabling specific models, and configuring API protocols.

packages/desktop/src/renderer/components/settings/SettingsModal · high confidence

Redesigned login page with new UI and expanded language support

The login page has been completely redesigned with a modern visual style, including a gradient background with animated floating circles, a frosted-glass card effect, and slide-up animations. The layout has been adjusted to ensure the mobile language selector sits in its own row to prevent overlap with the logo. Additionally, the language picker now supports a wider range of locales, including newly added Spanish (es-ES), German (de-DE), and Persian (fa-IR), alongside existing options like Chinese, Japanese, and Portuguese.

packages/desktop/src/renderer/pages/login · high confidence

Redesigned permission request panel with one-click submission

The permission request UI in the conversation view has been redesigned to allow users to submit their decision in a single click. The new \PermissionRequestPanel\ component presents options as full-width list rows, eliminating the need for a separate confirmation step. It includes visual feedback for loading states, success, and errors, and supports various operation kinds (execute, edit, read, fetch, tool) with detailed command information.

packages/desktop/src/renderer/pages/conversation/Messages/components/MessagePermission · high confidence

Redesigned startup flow, layout, and error handling

The application now features a dedicated startup gate that displays a benign 'backend starting' view while the backend initializes, replacing previous misleading error states for slow startups. A new installation integrity dialog system provides specific, actionable guidance for various startup failures (such as incomplete installations, database corruption, or architecture mismatches) instead of generic errors. The main layout has been restructured to support a resizable, collapsible project explorer panel on desktop and an overlay on mobile, with improved window controls and a dynamic document title that updates with navigation and language changes. Additionally, a notice is now shown if hardware acceleration is auto-disabled due to GPU crashes, guiding users to re-enable it in settings.

packages/desktop/src/renderer/components/layout · high confidence

Redesigned titlebar with mobile branding, search, and migration notice

The desktop titlebar has been restructured to improve usability on mobile and desktop. On mobile, the brand area now displays the current conversation name alongside the assistant's logo. Desktop users can now search conversations directly from the titlebar toolbar. Additionally, for discontinued builds, a persistent migration notice capsule has been added to the toolbar to guide users toward AionPro.

packages/desktop/src/renderer/components/layout/Titlebar · high confidence

Removal of deprecated community themes and unification of the theme system

The desktop application's theme system has been consolidated to support only the official Light and Dark themes, removing previously available decorative community skins. Users will no longer see or be able to select third-party themes; any previously saved preference for a removed community theme will automatically resolve to the Light theme upon next launch. This change simplifies the appearance settings by ensuring only built-in, officially supported themes are available.

packages/desktop/src/renderer/theme · high confidence

Removal of legacy chat library and IPC bridge abstractions

The legacy \chatLib.ts\ (message type definitions and transformation logic), \ipcBridge.ts\ (IPC channel wrappers for chat, file, and conversation operations), and \storage.ts\ (chat and config storage wrappers) have been removed from \src/common\. This eliminates the previous abstraction layer for chat message handling, inter-process communication, and local storage, indicating a migration to a new underlying architecture for these core functionalities.

src/common · high confidence

Removal of static i18n initialization module

The static i18n initialization file at src/renderer/i18n/index.ts has been removed. This file previously handled the synchronous setup of the i18next library, including the registration of Chinese and English locale resources, configuration of the language detector, and the initial language change based on stored user preferences. Its deletion indicates a structural shift in how internationalization is bootstrapped within the renderer, likely moving towards a dynamic or lazy-loading approach as suggested by the associated commit messages.

src/renderer/i18n · high confidence

Russian (ru-RU) localization fully populated with new feature strings

The Russian locale now includes comprehensive translations for recently added desktop features. This update adds support for Agent health monitoring and auto-switching, Codex network error handling and permission requests, scheduled task (cron) management, Model Context Protocol (MCP) server configuration, and the desktop pet feature. It also covers conversation history actions (batch delete, archiving, forking), file preview and editing, and startup diagnostics, ensuring these new UI elements are fully readable in Russian.

packages/desktop/src/renderer/services/i18n/locales/ru-RU · high confidence

SendBox component introduced with mobile redesign and session mention support

The chat SendBox component has been replaced with a new implementation that includes a mobile-focused redesign using an action sheet interface. This update adds support for session mentions (using the @@ syntax), allowing users to reference other conversations directly in their messages, with logic to reconcile and remove stale session references when tokens are deleted. The component also integrates with the new project-scoped Explorer for file mentions, supports streaming voice input with live transcripts, and features improved styling for send and draft buttons to ensure proper visual states on mobile panels.

packages/desktop/src/renderer/components/chat/SendBox · high confidence

Server-side file picker for WebUI and improved workspace folder selection

Users running the application in a browser (WebUI) can now select files and folders from the server filesystem via a new modal dialog, replacing the previously non-functional native dialog calls. This is supported by a new WorkspaceFolderSelect component that provides a compact dropdown with recent workspace history and a clickable browse button, along with styling refinements for the folder icon and text alignment.

packages/desktop/src/renderer/components/workspace · high confidence

Settings page restructured with unified header, sidebar, and enhanced model/MCP configuration

The Settings page now uses a shared \SettingsPageHeader\ and \SettingsSider\ to provide a consistent layout with sticky headers, tabbed navigation, and a sidebar that supports extension tabs anchored to specific sections. Model configuration has been enhanced: the Add/Edit Model modals now support multi-select models, protocol detection for New API platforms, and configurable model capabilities like image input and OpenAI API mode. MCP server management has moved to the conversation scope and now includes JSON and one-click import modals with validation and batch import support. The Base URL is now editable when editing a model platform, with non-destructive refresh behavior that preserves model selection.

packages/desktop/src/renderer/pages/settings/components · high confidence

The sidebar layout has been redesigned with a new visual system, including updated font weights, section title sizing, and color tokens for better contrast and consistency. A new footer component adds a settings toggle, theme switcher, and logout option. Team items now display a running-state indicator and support archiving directly from the sidebar. Users can also reorder sidebar entries via drag-and-drop, with the order persisted in local storage.

packages/desktop/src/renderer/components/layout/Sider · high confidence

Standardize development tooling and CI configuration

The project now enforces consistent code quality and formatting standards by introducing Oxlint and Oxfmt as the primary linting and formatting tools, replacing the previous ESLint and Prettier setup. This change is supported by new configuration files (\.oxlintrc.json\, \.oxfmtrc.json\) and a comprehensive pre-commit hook setup (\.pre-commit-config.yaml\) that runs type checking, linting, and formatting before every commit. Additionally, Codecov configuration (\.codecov.yml\) has been added to track coverage thresholds, and a new \justfile\ provides standardized commands for development, dependency installation, and native module rebuilding.

(repo-wide) · high confidence

Unified CodeMirror 6 code editors with streaming and theming

The Preview panel now uses a unified CodeMirror 6-based editing experience for code, HTML, and Markdown files. This change introduces new editor components that support syntax highlighting, line numbers, folding, and search, while integrating with the application's theme system for consistent styling. A key behavioral improvement is the detection of AI streaming writes: the editors automatically scroll to the bottom and display a visual indicator when content is being appended externally, distinguishing it from user edits. Additionally, large files are handled gracefully by disabling heavy syntax parsing to maintain performance, while still preserving essential features like undo/redo and theme-aware backgrounds.

packages/desktop/src/renderer/pages/conversation/Preview/components/editors · high confidence

Unified configuration system with granular appearance controls and backend migration

The desktop application's configuration layer has been restructured to centralize settings management and migrate legacy local preferences to the backend. A new ConfigService now persists UI appearance options—including per-region font sizes, font families, font weights, zoom factors, and theme selections—along with window bounds and system preferences (notifications, tray behavior) to the backend API, ensuring they survive restarts and sync across sessions. Legacy settings such as MCP configurations, image generation models, and speech-to-text options are automatically migrated from local storage to the backend during startup, with idempotent flags to prevent overwriting user changes or resurrecting deleted items. The system also introduces environment-aware naming for dev instances, expanded internationalization support with normalized language codes, and centralized constants for browser sessions and media handling.

packages/desktop/src/common/config · high confidence

Unified file upload, paste handling, and speech-to-text services

The renderer now uses dedicated services to handle media input: FileService manages HTTP multipart uploads with progress tracking and cancellation support; PasteService intercepts clipboard images and files, normalizing names and routing them through the same upload pipeline; SpeechToTextService sends audio blobs to the backend /api/stt endpoint with language hints and size limits. These changes standardize how user-provided media is captured, named, and transmitted to the backend, replacing ad-hoc implementations with a consistent, abort-aware, multipart-based approach.

packages/desktop/src/renderer/services · high confidence

Unified theme system and new application context providers

The application now uses a unified ThemeContext that consolidates theme selection (including a new 'Follow System' mode), font scaling, and granular font customization (family, size, weight) into a single provider. Additionally, new context providers have been introduced to manage application state: AuthContext handles authentication with silent session refresh on 401 errors and clears user-specific cache (including preview scopes) on logout; ConversationContext exposes session-level metadata like MCP status and capability flags; ConversationHistoryContext provides grouped conversation history; FeedbackContext manages the feedback reporting modal with automatic screenshot capture and diagnostics; LayoutContext tracks UI layout state; and NavigationHistoryContext implements a browser-like back/forward stack for in-app navigation.

packages/desktop/src/renderer/hooks/context · high confidence

Unified theme system with structured token support and system mode

The desktop application now uses a unified theme model that supports a 'Follow System' mode, automatically switching between light and dark appearances based on the OS preference. This change introduces a structured token channel, allowing custom themes to override specific CSS custom properties (such as backgrounds, text, and semantic colors) via a defined contract, ensuring that only valid, documented tokens are applied. The underlying theme types and resolution logic have been updated to handle these structured overrides alongside legacy CSS strings, providing a more robust and extensible theming foundation for users.

packages/desktop/src/common/theme · high confidence

Unified theming and syntax highlighting for code and markdown in the preview pane

The preview pane now uses a centralized theme system to ensure consistent styling across code editors and markdown content. Code blocks in the editor now support configurable font weights and sizes, with syntax highlighting that adapts to light and dark modes. Markdown rendering has been enhanced with GitHub-flavored syntax highlighting for elements like headings, links, and code, while code blocks within markdown use Shiki themes that match the editor's appearance. Language detection for code editors is now more robust, supporting fuzzy name matching and file extension fallbacks, with automatic disabling of highlighting for large files to maintain performance.

packages/desktop/src/renderer/pages/conversation/Preview/theme · high confidence

Fixes

Add PWA support with service worker to prevent white screens

The application now includes a service worker (sw.js) and web manifest to enable Progressive Web App features. This change introduces a network-first caching strategy for navigation requests and a strict network-only strategy with content-type validation for script and style assets. This specific validation prevents 'module script MIME' errors and white screens that occurred when stale or mismatched asset hashes caused the server to serve HTML fallbacks for JavaScript/CSS files. The service worker also cleans up old cache versions and forces tabs to reload to ensure users immediately benefit from the fix.

public · high confidence

Desktop app startup, error handling, and telemetry overhaul

The desktop application's main entry point and supporting modules have been rewritten to improve stability and diagnostics. Startup logic now includes architecture compatibility checks, Windows path hydration, and specific handling for backend launch failures to prevent false alarms about broken installations. Error reporting is enhanced with uncaught exception logging that provides better attribution for Sentry alerts, while noisy GPU process crashes are filtered out to reduce alert fatigue. Telemetry now includes device IDs, OS names, and app version tags for better context in Slack alerts. Additionally, a new feedback log collection system supports dated log layouts, and the 'close-to-tray' setting is persisted correctly.

packages/desktop/src · high confidence

The \7zip-bin\ patch now replaces the bundled 7za binary on macOS with a wrapper script that delegates to the system \zip\ command when creating archives. This resolves issues where the bundled 7za version failed with \E\_INVALIDARG\ on \.app\ bundles containing symlinks, ensuring correct archive creation for macOS users.

patches · high confidence

Harden Windows installer failure handling and reporting

The Windows installer now provides more robust error handling and clearer user feedback during installation failures. It introduces structured error codes and bilingual (English/Chinese) messages for specific failure scenarios such as locked files, architecture mismatches, and incomplete bundles. The installer also includes improved self-lock detection to prevent the installer from blocking itself, better process termination logic to close lingering AionUi processes, and automatic failure reporting to Sentry with detailed diagnostics and log paths to help the support team resolve issues.

resources/windows · high confidence

Improved conversation loading and project synchronization

The conversation page now handles missing or deleted conversations by displaying a warning and redirecting to the home screen instead of showing an empty skeleton. It also synchronizes the active project context immediately upon switching conversations to prevent the Explorer from briefly displaying stale project data, and automatically updates the conversation title from history when appropriate.

packages/desktop/src/renderer/pages/conversation · high confidence

Improved desktop startup reliability and diagnostics

The desktop application now includes robust startup checks and diagnostics to prevent common failure modes. It blocks execution on macOS if the installed package architecture (x64) does not match the device (ARM64), preventing silent failures. Startup logic now correctly handles backend launch failures, ignores cancelled startup sequences, and prevents false alarms for local data repair issues caused by concurrent instances. Additionally, the app preserves backend error codes, keeps the desktop open on backend failure for better visibility, and serializes quit cleanup to ensure a stable shutdown. Windows users benefit from proper AppUserModelID registration for toast notifications and reliable CLI detection via Windows path hydration.

packages/desktop/src/process/startup · high confidence

Redesigned desktop auto-update service with CDN feed and diagnostics

The desktop application's update mechanism has been rebuilt to fetch stable release metadata from the AionUI CDN (static.aionui.com/releases) using a custom provider, replacing the previous feed configuration. This change introduces robust platform-specific channel selection (e.g., macOS ARM64, Windows ARM64) and adds detailed auto-update diagnostics that log status events, progress, and errors to a local JSON file for improved troubleshooting. Additionally, the update flow now includes hardened failure handling for Windows NSIS installers, improved diagnostics for incomplete backend installations, and stricter checks to prevent version downgrades during update checks.

packages/desktop/src/process/services · high confidence

Refactor conversation UI layout, error handling, and state management utilities

This change consolidates and refactors several utility modules in the conversation renderer to improve layout stability, error clarity, and state consistency. The chat surface now uses a fluid width class that respects container queries, preventing unwanted indentation in narrow team-parallel columns. Workspace panel sizing has switched from a ratio-based approach to fixed pixel widths (defaulting to 260px) with proper clamping. Error handling for conversation creation is standardized through normalized error codes, mapping backend responses (including legacy patterns) to specific user-facing messages for workspace path and team assistant issues. Conversation runtime state is managed via a deduplicated ensure-runtime promise and a persistent turn-clock that survives component unmounts, ensuring accurate elapsed-time display. Assistant identity resolution now explicitly prioritizes preset assistant backends and handles fallback logos consistently.

packages/desktop/src/renderer/pages/conversation/utils · high confidence

Repair legacy database schema on startup

The desktop application now automatically repairs the legacy SQLite database schema during startup to ensure compatibility with the current version. This process, located in the database service layer, detects missing columns defined in the legacy handoff contract (such as \pinned\ fields in conversations or \session\_mode\ in teams) and adds them to existing tables. It also ensures the system user exists and runs necessary migrations up to version 26, preventing startup failures caused by schema mismatches in older user data files.

packages/desktop/src/process/services/database · high confidence

Test coverage

Added E2E test coverage for Settings Display and Skills Hub features; Added E2E tests for Assistant Settings core interactions, UI states, and edge cases; Added E2E tests for assistant user-data migration; Added E2E tests for built-in skill migration; Added E2E tests for conversation features; Added E2E tests for preview panel features and security; Added E2E tests for team creation, deletion, and member operations; Added Vitest test environment setup files; Added integration tests for Windows PATH hydration and assistant migration; Added test fixtures for the Agent Hub extension system; Added test infrastructure and unit tests for the web-host startup logic; Added tests for conversation runtime stability and command queue behavior; Added tests for runtime installation reconciler behavior; Added unit tests for Team mode UI components; Added unit tests for agent logo resolution and AionCore resource verification; Added unit tests for auto-update, CDN feed, and installer failure handling; Added unit tests for backend binary resolution logic; Added unit tests for bootstrap startup, diagnostics, and migration logic; Added unit tests for common utility modules; Added unit tests for config migration, font settings, and storage; Added unit tests for conversation UI components; Added unit tests for conversation UI components and logic; Added unit tests for core application logic and stability mechanisms; Added unit tests for cron job status, utilities, and timezone repair; Added unit tests for cron task creation, scheduling, and agent metadata resolution; Added unit tests for layout components and hooks; Added unit tests for mock HTTP bridge helper and extension settings components; Added unit tests for preview panel components and file type handling; Added unit tests for process-layer utilities and bridges; Added unit tests for provider API client infrastructure; Added unit tests for renderer API client, bootstrap config, and business settings; Added unit tests for renderer hooks and components; Added unit tests for renderer utility functions; Added unit tests for skills settings and file browsing components; Added unit tests for startup failure classification and Windows AppUserModelId registration; Added unit tests for the Assistant Settings UI and migration logic; Added unit tests for the common adapter layer; Added unit tests for the feedback reporting system and error-surface UI components; Added unit tests for the platform bridge and storage modules; Added unit tests for the preview panel's browser, editor, and UI components; Added unit tests for the theme system; Added unit tests for web-cli browser auto-open and admin password bootstrapping; Added unit tests for workspace file icons and file picker utilities; Expanded E2E test coverage for Team, Agent, and Assistant features; Expanded unit test coverage for renderer components; New E2E bridge helper for backend communication; New E2E test helper infrastructure for assistant, skills, and backend communication; New E2E test infrastructure with Playwright and Electron support; Scaffolded directory structure for end-to-end feature tests.

Dependencies

Project restructured into a monorepo with new mobile, desktop, and web packages

The project has been reorganized from a single flat structure into a monorepo using npm workspaces. This introduces new packages: \mobile\ (an Expo/React Native app for iOS and Android), \desktop\ (the Electron application), \web-host\ (a standalone WebUI host), \web-cli\ (a CLI for the WebUI), and \shared-scripts\ (common build utilities). The root \package.json\ has been updated to version 2.2.2, switching the license to Apache-2.0 and replacing the old build tooling (Electron Forge, Webpack) with \electron-vite\ and \electron-builder\. Additionally, the \package-lock.json\ has been removed in favor of \bun.lock\, and the dependency list has been significantly expanded to include new libraries for AI integration (Anthropic, AWS Bedrock, Google GenAI, MCP), UI components (CodeMirror, Monaco Editor), and mobile support.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 48.

Lenses

  • Code Health 68
  • Architecture 72
  • Maturity 66
  • Readiness 42
  • Security 60
  • Accessibility 43

Changes since last survey

  • 300 commits — 185 feature/other, 115 fixes

By area

  • packages/desktop — 218 commits
  • (root) — 36 commits
  • docs/readme — 11 commits
  • tests/unit — 8 commits
  • .github/workflows — 7 commits
  • (repo) — 6 commits
  • packages/web-host — 5 commits
  • resources/windows — 3 commits
  • .github/ISSUE_TEMPLATE — 2 commits
  • .codex/skills — 1 commit
  • packages/shared-scripts — 1 commit
  • resources/kimi — 1 commit
  • resources/wx-16.png — 1 commit

Notable commits

  • fix: Fix(preview): restore multi-tab when opening files from explorer (#3821)
  • fix: Merge pull request #3586 from iOfficeAI/jiahe/fix/team-lead-tool-policy
  • fix: Revert "Revert "ci: create source-only draft release upstream while keeping b…" (#3928)
  • fix: Revert "ci: create source-only draft release upstream while keeping builds ga…" (#3927)
  • fix: chore(sidebar): revert #3969 and #3983 from main (#3984)
  • fix: fix(acp): render relative images in agent replies (#4103)
  • fix: fix(agent-settings): hide launch path for npx agents and fix repair-panel status banner (#3641)
  • fix: fix(assistant): return to My Assistants after duplicating/creating
  • fix: fix(assistant): use management catalog for editor engines (#3511)
  • fix: fix(assistants): let the editor drive Antigravity (#3951)
  • fix: fix(bridge): accept void-param invokes after JSON serialization (#3611)
  • fix: fix(browser): stop in-app browser MCP commands hanging, and fix Windows spawn EINVAL (#3883) (#3885)
  • fix: fix(build): align Codex installer verifier (#3561)
  • fix: fix(build): merge React vendors into one chunk to fix white screen (#3938)
  • fix: fix(build): verify current Codex ACP Windows binaries (#3557)
  • fix: fix(chat): align compose actions and draft queue draining (#4082)
  • fix: fix(chat): bound HorizontalFileList to conversation width to prevent overflow (#3659)
  • fix: fix(chat): copy button copies the whole AI turn, not just its last text segment (#3949)
  • fix: fix(chat): restore ACP file change panels (#3665)
  • fix: fix(chat): restore arrow-up icon on send buttons (#3627)
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

iOfficeAI/AionUi was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 6744099b279b991c17e31c243f0920477bd31cb6 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.