Skip to content
CAI
Software that uses CAICheck a score

moeru-ai/airi

52.3

Adequate · 28 September 2026

292.2k

lines of production code

TypeScript

primary language

3

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a multi-platform AI assistant framework that provides desktop, mobile, and web interfaces for interacting with large language models. It features real-time voice input with speech-to-text and voice activity detection, alongside a rich chat interface that supports streaming responses and dynamic component rendering. The platform also includes a desktop overlay mode for native computer use, allowing the AI to control local applications, and supports 3D avatar rendering via Live2D and VRM models.

How it got here

2024–2025 — Monorepo restructuring and platform expansion

111 changes.

The project underwent a major architectural overhaul, establishing a robust monorepo structure with dedicated server runtime, SDK, and shared packages while migrating deployment to Cloudflare Workers. This period saw the introduction of new client applications, including the Stage Pocket mobile app and an expanded Stage Tamagotchi desktop client with native capabilities, alongside the removal of legacy components and state management logic.

2026 — Platform expansion and plugin ecosystem

96 changes.

This period focused on expanding the AIRI platform through the introduction of a robust plugin SDK, new bot integrations, and mobile support for Android. Significant work was done to enhance the core application with advanced rendering capabilities, including Godot sidecar integration, Live2D procedural motion, and comprehensive model support. The infrastructure was also strengthened with dedicated authentication services, unified IPC contracts, and improved developer tooling.

Features

AIRI computer-use-mcp service documentation and Chrome extension bridge

The \services/computer-use-mcp\ package now includes comprehensive documentation (AGENTS.md, FEASIBILITY.md, README.md, airi-cli-architecture.md, mimic-baseline-training-boundary.md, planning-orchestration-contract.md, coding-plast-mem-bridge-contract.md) defining its role as AIRI's macOS desktop orchestration layer, its policy boundaries, and its integration contracts. Additionally, a read-only Chrome extension (background.js, content.js, msg\_bridge.js, manifest.json) has been added to provide DOM observation capabilities for the desktop grounding layer, stripping all DOM-mutating actions to rely on macOS OS-level input events instead. Test fixtures (fake-runner.mjs, interactive-echo.mjs, text-target.html) are also included to support deterministic testing of the service's execution and observation paths.

services · high confidence

AIRI desktop app now supports native computer use and Apple Speech transcription

The Stage Tamagotchi Electron app introduces a desktop computer-use capability that allows the AI to interact with local native applications via the AUV SDK, with a UI toggle to enable or disable this access per request. It also adds Apple Speech transcription on macOS for voice input. To support these features, the app includes a new Electron build configuration, a Flatpak manifest for Linux distribution, and a desktop entry file.

apps/stage-tamagotchi · high confidence

API server restructured with new database schema and payment overhaul

The API server application has been reorganized into its own independent workspace, complete with its own Dockerfile, Drizzle ORM configuration, and a comprehensive set of database migrations. This change introduces a new payment architecture that replaces the previous Stripe-specific tables (checkout sessions, invoices, subscriptions, customers) with a generic \payment\_order\ and \payment\_customer\ system, enabling support for multiple payment processors including a new Apple IAP channel. The database schema also adds support for LLM request tracking via a new \llm\_request\_attempt\ table, introduces user ban and session management fields, and adds optional S3 object storage capabilities for private file uploads.

server/apps/api · high confidence

Add CLI entry point for forwarding Claude Code hook events

The plugin now includes a new CLI executable (\src/run.ts\ / \src/cli.ts\) that listens for Claude Code hook events via stdin. When a \UserPromptSubmit\ event is received, the CLI parses the JSON input and forwards the user's prompt text to the AIRI Channel Server. This enables the plugin to integrate with Claude Code's hook system by acting as a bridge that pipes hook data into the AIRI infrastructure.

plugins/airi-plugin-claude-code · high confidence

Add ChillRoundM font package

A new \font-chillroundm\ package has been added, providing the 'ChillRoundM' typeface. The package includes the font files (TTF and OTF), a CSS definition with \font-display: swap\, and an entry point that imports the styles. It is licensed under the SIL Open Font License (Version 1.1) and is built using \tsdown\ to bundle the CSS and copy font assets to the distribution directory.

packages/font-chillroundm, packages/font-cjkfonts-allseto · high confidence

Add Godot MToon shader and VRM 1.0 import support to the Tamagotchi stage engine

The \engines/stage-tamagotchi-godot\ directory now includes the V-Sekai MToon shader addon (version 3.4.0) and the VRM 1.0 GLTF document extensions. This enables the Godot sidecar to render avatars with toon shading and import VRM 1.0 models at runtime, including support for HDR emissive multipliers and MToon material properties via the \VRMC\_materials\_mtoon\ and \VRMC\_materials\_hdr\_emissiveMultiplier\ extensions.

engines · high confidence

Add MMD (MikuMikuDance) renderer support to the stage

Introduces the \@proj-airi/stage-ui-mmd\ package, enabling the stage to render PMX/PMD models with VMD/VPD motion support. This new renderer provides physics-driven secondary motion (hair, skirts), IK, and append-bone propagation via Ammo.js, alongside morph-based lip-sync, emotion expressions, and gaze tracking. It integrates with the existing stage contract, allowing users to load MMD models from ZIP packages or URLs and configure settings like physics gravity, IK, and gaze modes through the model settings panel.

packages/stage-ui-mmd · high confidence

Add OIDC authentication callback page

The application now includes a dedicated callback page for handling OpenID Connect (OIDC) authentication flows. This page processes the authorization code and state from the URL, exchanges them for tokens via the backend, applies the OIDC tokens to the session, and redirects the user to the home page upon success. It also handles various error states (provider errors, missing parameters, token exchange failures) by displaying user-friendly error messages and offering a 'Try Again' button to restart the sign-in process.

apps/stage-web/src/pages/auth · high confidence

Add QR code scanning for server channel connection

Users can now connect to a server channel by scanning a QR code. This change introduces a new connection settings page that includes a QR scanner component, utilizing the Capacitor barcode scanner to read QR payloads, validate them, and automatically configure the WebSocket connection details upon success.

apps/stage-pocket/src/pages/settings/connection · high confidence

Add Spotlight search window with global shortcut and notification integration

Introduces a new Spotlight window manager that provides a floating, always-on-top search interface accessible via a configurable global keyboard shortcut (defaulting to Ctrl+Shift+A). The window is positioned near the cursor and supports hiding on blur. It integrates with the system notification center to display search results, allowing users to click notifications to open the main chat window, while enforcing strict IPC security to ensure only the Spotlight window can trigger specific hide and notification actions.

apps/stage-tamagotchi/src/main/windows/spotlight · high confidence

Add caption overlay window with follow and positioning logic

Introduces a new floating caption overlay window that can follow the main application window. The implementation includes logic to compute initial bounds based on display resolution breakpoints, persist relative positioning offsets per display configuration, and handle window visibility and always-on-top settings across platforms.

apps/stage-tamagotchi/src/main/windows/caption · high confidence

Add desktop grounding overlay for visual feedback

Introduces a new transparent, always-on-top overlay window that displays a ghost pointer, target bounding box, and confidence badges to provide visual grounding for desktop interactions. The overlay is gated by the AIRI\_DESKTOP\_OVERLAY environment variable, is click-through to avoid intercepting user input, and polls the MCP bridge for state updates.

apps/stage-tamagotchi/src/main/windows/desktop-overlay · high confidence

Add devtools for screen ambient light and VRM resource events

The devtools panel now includes a new Live2D ambient light section with controls to enable the feature, select the source (screen capture or forced color), choose the mode (window gradient or global), and adjust strength, squint, and shader parameters like dark base, base curve, and wrap intensity. A dedicated diagnostics tab provides real-time metrics on capture and sampling, a preview of the pixel frame with excluded regions, and visualizations of the target and applied light maps. Additionally, a new resource events table displays recent VRM model lifecycle events, including timestamps, phases, reasons, and memory usage, to aid in performance debugging.

apps/stage-tamagotchi/src/renderer/components/devtools · high confidence

Add gamepad input support with Vue integration and DualSense WebHID

This change introduces three new packages to handle game controller input. The \@proj-airi/input-gamepad\ package provides a framework-agnostic \StandardGamepadMonitor\ that polls the browser Gamepad API, normalizes W3C standard mapping inputs (buttons, sticks, triggers), and detects controller families (Xbox, PlayStation, Nintendo) for appropriate button labels. The \@proj-airi/input-gamepad-vueuse\ package exposes a \useStandardGamepad\ Vue composable that wraps the monitor, providing reactive state for buttons, sticks, and values, along with lifecycle management tied to Vue scopes. The \@proj-airi/input-playstation-dualsense-5\ package adds support for Sony DualSense controllers via WebHID, enabling raw input parsing for advanced features like motion sensors, touchpad, adaptive triggers, and rumble, as well as output control for lightbars and haptics.

packages/input-gamepad, packages/input-gamepad-vueuse, packages/input-playstation-dualsense-5 · high confidence

Add onboarding permission management UI for notifications and microphone

The onboarding flow now includes a dedicated permissions panel that displays the status of notification and microphone permissions. Users can view whether these permissions are granted or not, and request them directly from the interface. If a permission is denied, the app provides a button to open the device's system settings to allow the user to grant access manually. This component integrates with native platforms (Android/iOS) via Capacitor for accurate permission checking and settings navigation, while falling back to web-based permission queries on non-native platforms.

apps/stage-pocket/src/components/permissions · high confidence

Add onboarding step for managing app permissions

Users now encounter a dedicated onboarding step to review and manage application permissions. This new UI component presents a description of the permissions, a panel for detailed permission settings, and navigation controls to proceed or go back within the onboarding flow.

apps/stage-pocket/src/components/onboarding · high confidence

Add weather display component to the component-calling plugin

The weather plugin now includes a new \Weather\ component that displays city, temperature, and condition data. It features a loading state with pulse and wave skeleton animations and renders a clear-day icon alongside the data in a styled grid layout. The component is registered via \defineCallingComponent\ with a Valibot schema for city, temperature, and condition, and is exported for use within the component-calling framework.

apps/component-calling/src/plugins/plugin-component-calling-weather · high confidence

Added DualEndRange slider component

A new DualEndRange Vue component has been introduced in the DataGui module, providing a custom range slider that supports multiple draggable thumbs. Users can now interact with a range control that clamps values within specified min/max bounds, respects step increments, and emits updates as thumbs are dragged, replacing any previous implementation or enabling new multi-thumb range selection capabilities in the stage-web application.

apps/stage-pocket/src/components/DataGui, apps/stage-web/src/components/DataGui · high confidence

Added Fade on Hover tutorial notice

The notice window now includes a new 'Fade on Hover' tutorial page that displays a video guide and explanation of the feature, allowing users to dismiss it permanently via a 'Don't show again' option.

apps/stage-tamagotchi/src/renderer/pages/notice · high confidence

Added MCP Stdio server management and testing capabilities

The application now includes a new service for managing Model Context Protocol (MCP) servers via stdio transport. This change introduces a manager that handles server lifecycle operations (start, stop, restart), configuration file management (read, write, open), and tool invocation. A key behavioral addition is the inclusion of stderr output in test results when a server connection fails, allowing users to see diagnostic messages (such as missing environment variables) directly in the test outcome. This is supported by new unit tests verifying that connection errors and their associated stderr logs are correctly captured and reported.

apps/stage-tamagotchi/src/main/services/airi/mcp-servers · high confidence

Added Map widget for demo visualization

A new Map widget has been introduced in the stage-tamagotchi renderer to visualize transit routes. This component displays a stylized map surface with an SVG-based route path, origin/destination markers, and stop points, alongside metadata such as ETA, mode, and status. It supports loading states with skeleton placeholders and allows customization via props for accent colors, labels, and route data, serving as a visual demo element for the application.

apps/stage-tamagotchi/src/renderer/widgets/map · high confidence

Added base styling and transition effects for the Tamagotchi renderer

The Tamagotchi renderer now includes dedicated CSS files to manage its visual presentation. A new main stylesheet establishes the layout, applies dark mode support via CSS variables, and styles the NProgress loading bar with a specific pink accent color. Additionally, a transitions stylesheet defines slide-away animations for UI elements, allowing components to fade and shift vertically when entering or leaving the view.

apps/stage-tamagotchi/src/renderer/styles · high confidence

Added initial dashboard page component

A new dashboard page component has been added to the renderer, providing the foundational structure for the dashboard view within the application.

apps/stage-tamagotchi/src/renderer/pages/dashboard · high confidence

Added utility script for per-module LOC and tests for OpenCollective sponsorship patch

A new \scripts/list-module-loc.mjs\ utility has been added to calculate lines of code per package by scanning \package.json\ files across the monorepo and running \scc\ on resolved source directories. Additionally, tests and configuration for the SponsorKit OpenCollective integration have been added, verifying that GraphQL requests correctly use the \Personal-Token\ header instead of the deprecated \Api-Key\ header.

scripts · high confidence

App lifecycle hook management for quit and window-close events

The bootkit library now provides a lifecycle management system that allows components to register cleanup hooks for application quit and window-close events. Users can subscribe to \onAppBeforeQuit\ and \onAppWindowAllClosed\ events, receiving a function to unregister their specific hook. This ensures that resources tied to specific windows or features are properly cleaned up when the application shuts down or windows are closed, preventing memory leaks and ensuring graceful shutdown behavior.

apps/stage-tamagotchi/src/main/libs/bootkit · high confidence

Built-in local HTTP server for OIDC authentication and plugin assets

The application now includes a local loopback HTTP server to handle Electron OIDC authentication callbacks and serve plugin static assets securely. For authentication, the server listens on 127.0.0.1, validates the OIDC state to prevent forgery, and supports standard CORS for web relays. For plugin assets, it serves files from extension roots under a session-scoped path (\/\_airi/extensions/...\) using cookie-based authentication, enforcing strict path normalization to prevent directory traversal and symlink escapes, and applying security headers like \no-store\ and \nosniff\.

apps/stage-tamagotchi/src/main/services/airi/http-server · high confidence

Connection status indicator with flicker animation

The status island now displays a connection indicator that shows whether the WebSocket is connected or disconnected. When disconnected, the icon applies a flicker animation to visually signal the state. Clicking the indicator opens the connection settings page, and the tooltip provides context about the current status and the action to open settings.

apps/stage-tamagotchi/src/renderer/components/stage-islands/status-island · high confidence

Desktop command relay for Minecraft via AIRI integration

Users can now control the Minecraft bot from desktop Stage runtimes through a new AIRI integration. The \AiriBridge\ routes high-level \spark:command\ events directly to the Minecraft decision loop (bypassing chat history) and drops them if the bot is offline, while the \MinecraftContextService\ publishes the bot's status and relay instructions to Stage instances. This enables desktop agents to invoke the \builtIn\_emitSparkCommand\ tool to instruct the bot, with the system automatically managing command availability based on the bot's online state.

integrations/minecraft · high confidence

Electron auth callback bridge and VRM runtime tracing bridge

This change introduces two new bridge modules in the renderer. The electron-auth-callback bridge registers persistent listeners to handle OIDC token exchange via the auth store, ensuring sign-in state is correctly synchronized across Electron windows and preventing race conditions with VueUse storage. The stage-three-runtime-trace bridge sets up a BroadcastChannel-based relay to forward VRM and Three.js runtime trace events (such as load, dispose, and frame updates) between renderer instances, enabling remote debugging and performance monitoring of 3D assets.

apps/stage-tamagotchi/src/renderer/bridges · high confidence

Experimental Godot stage sidecar integration in model settings

The Model Settings page now includes an experimental toggle to switch the stage renderer to a Godot-based sidecar. This change introduces a new settings model that validates display models (restricting input to VRM format), manages a throttled queue for camera and view-state patches sent to the Godot process, and handles session lifecycle events (start/stop) via Electron IPC. Users can now select Godot as the stage renderer, which triggers the sidecar process and allows real-time view adjustments, with appropriate error handling and state synchronization for the experimental feature.

apps/stage-tamagotchi/src/renderer/pages/settings/models · high confidence

Extension UI widgets now support customizable, plugin-provided interfaces

The extension-ui widget area now renders plugin-provided UIs inside sandboxed iframes instead of a static placeholder. The new ExtensionUiHost component resolves the iframe source from the plugin module's config (supporting both src and srcdoc), handles the init/ready handshake with the iframe, and relays typed messages between the host and the plugin. It also bridges plugin 'spark notify' commentary requests to the stage's character reaction system and queues iframe invoke requests with timeouts and deduplication, ensuring that plugin widgets can deliver fully customizable, interactive interfaces.

apps/stage-tamagotchi/src/renderer/widgets/extension-ui · high confidence

Initial Android platform support for stage-pocket

The stage-pocket application now includes an Android build target, allowing users to run the app on Android devices (API 26+). This change introduces the native Android project structure, including Gradle build scripts, configuration files, and platform-specific assets, enabling the app to be compiled and deployed as an Android application.

apps/stage-pocket/android · high confidence

Initial Nix package definition for AIRI desktop application

This change introduces the Nix build infrastructure for the AIRI desktop application, creating a reproducible build environment using pnpm 11 and Electron 41. The package definition (nix/common.nix and nix/package.nix) builds the stage-tamagotchi frontend, packages it with Electron, and installs the application binary along with necessary assets (VRM, Live2D) and desktop integration files. It also includes helper scripts to automatically update dependency and asset hashes for the Nix store.

nix · high confidence

Initial iOS project structure for Stage Pocket

The iOS application project for Stage Pocket has been established, introducing the native Xcode project file that defines the build configuration and source structure. This setup includes the core application entry point (AppDelegate), the main user interface (Main.storyboard), and the web view container resources. It also integrates specific native capabilities such as a WebSocket bridge for host communication, a custom web authentication plugin, and support for the Liquid Glass app icon style, alongside the standard Capacitor configuration files.

apps/stage-pocket/ios/App/App.xcodeproj · high confidence

Initial implementation of the memory-pgvector process

Added a new \memory-pgvector\ package that initializes a server SDK client named 'memory-pgvector'. The process sets up global logging configuration and registers a handler for the \module:configure\ event, while ensuring graceful shutdown via SIGINT/SIGTERM signals. This serves as the foundational entry point for the memory-pgvector service within the broader system.

packages/memory-pgvector · high confidence

Initial project scaffolding and configuration

Establishes the foundational configuration for the monorepo, including pnpm workspace definitions, ESLint rules, and tooling setups (EditorConfig, Git attributes, Crowdin, CSpell). Adds a comprehensive Agent Guide (AGENTS.md) defining development workflows and code standards, and introduces Nix flake support for reproducible development environments and packaging.

(repo-wide) · high confidence

Initial public assets for the server-auth UI

The \apps/ui-server-auth/public\ directory now contains the foundational static assets for the new server-auth UI application. This includes a custom 404 page, a site favicon, and configuration files for the hosting environment: \\headers\ to disable caching for asset directories (\/assets/\\ and \/assets-v2/\*\), \\_redirects\ to handle SPA routing by proxying \/ui\ paths to the root index, and \.assetsignore\ to exclude build artifacts.

apps/ui-server-auth/public · high confidence

Initial release of the @proj-airi/server-sdk for server-side WebSocket clients

The \packages/server-sdk\ package is now available, providing a TypeScript client for connecting to AIRI server components over WebSocket. It handles the full connection lifecycle—including authentication, module announcement, and heartbeat management—and supports both SuperJSON and plain JSON message formats. The SDK exposes a \Client\ class with status tracking (\connectionStatus\, \isReady\), reliable sending (\send\, \sendOrThrow\), and event listening, along with a \WebSocketExtensionPeer\ helper for managing extension-level protocol interactions. Tests are included to verify connection flow, codec parsing, and peer announcement logic.

packages/server-sdk · high confidence

Initial release of the Component Calling application

This change introduces the new 'Component Calling' application, providing a standalone Vue-based interface for component interaction. The app is configured with Vite and Vue Router for module bundling and navigation, while UnoCSS (including the Chromatic preset) handles styling. It also includes a Netlify deployment configuration that sets the Node.js runtime to version 24 and defines the build and publish paths for the associated stream components.

apps/component-calling · high confidence

Initial scaffolding for Bilibili Laplace plugin

A new plugin package for Bilibili Laplace has been added to the project. The initial commit includes the standard TypeScript configuration (tsconfig.json) and build setup (tsdown.config.ts) required to compile the module, along with a placeholder entry point (src/index.ts) that currently outputs a 'WIP' warning. This establishes the structural foundation for the feature, though the actual implementation logic is not yet present.

plugins/airi-plugin-bilibili-laplace · high confidence

Initial scaffolding for Home Assistant plugin

Added the initial project structure for the Home Assistant plugin, including a TypeScript configuration, a build configuration using tsdown, and a placeholder entry point that currently outputs a 'WIP' warning. This establishes the foundational setup for the plugin, though the implementation is not yet complete.

plugins/airi-plugin-homeassistant · high confidence

Initial scaffolding of the core-character package

The core-character package has been added to the repository, providing the foundational structure for a headless pipeline and character role-playing feature. This initial commit establishes the build configuration using tsdown for bundling and TypeScript declaration generation, along with a standard tsconfig targeting ESNext. The package currently exports an empty module, serving as a placeholder for future implementation.

packages/core-character · high confidence

Initial styling setup for the server auth UI

The server authentication application now includes its foundational CSS styles. This adds a main stylesheet that imports the shared UI library, defines CSS variables for light and dark theme backgrounds, and applies global resets such as disabling double-tap zoom on touch devices. It also configures the NProgress loading bar to respect the current theme and hides it when the app is running in standalone mode. Additionally, dedicated transition stylesheets are provided to handle slide-away animations and Vue-specific fade/slide transitions for page navigation.

apps/ui-server-auth/src/styles · high confidence

Initialize i18n module with locale resolution

The renderer's i18n module is now initialized using vue-i18n, resolving the active locale from local storage settings or falling back to the browser's language, with English as the final fallback.

apps/stage-tamagotchi/src/renderer/modules · high confidence

Inlay window now allows configuring vibrancy and platform-specific background material

The Inlay page now exposes controls to adjust the window's visual appearance. Users can select a vibrancy effect (such as titlebar, selection, or acrylic) via a combobox, which immediately applies the change. Additionally, on Windows, a new 'Background Material' combobox appears, allowing users to choose effects like mica, acrylic, or tabbed. A close button has also been added to the window header for easier dismissal.

apps/stage-tamagotchi/src/renderer/pages/inlay · high confidence

Introduce @proj-airi/ccc package for Character Card V3 protocol support

The new \@proj-airi/ccc\ package provides the core primitives for handling the Character Card V3 (CCv3) specification. It includes a forward-compatible codec that validates CCv3 JSON envelopes while preserving unknown fields for future versions, and exports helpers to convert character cards into JSON, PNG, and APNG formats. This enables importing, validating, and exporting community Character Cards without silently discarding data that the application does not yet understand.

packages/ccc · high confidence

Introduce @proj-airi/electron-eventa for shared Electron IPC contracts

Added the new \@proj-airi/electron-eventa\ package, which provides a centralized set of shared Eventa contract definitions for Electron IPC across AIRI applications. This package standardizes communication by exposing typed invoke and event channels for core Electron modules, including app lifecycle (quit, platform checks), window management (bounds, vibrancy, background material, resize), screen interactions (cursor point, display info), system preferences (media access), and power monitor events (lock/unlock, suspend/resume). It also includes specific contracts for the auto-updater, defining states, progress, diagnostics, and update actions, ensuring consistent and type-safe IPC patterns for these features.

packages/electron-eventa · high confidence

Introduce @proj-airi/electron-vueuse package for shared Electron-Vue utilities

A new \packages/electron-vueuse\ package has been added to provide VueUse-style composables and helpers for Electron applications. This library exposes renderer-side utilities for common Electron behaviors, including mouse tracking (\useElectronMouse\, \useElectronMouseInElement\, \useElectronMouseAroundWindowBorder\), window bounds and resize handling (\useElectronWindowBounds\, \useElectronWindowResize\), display information (\useElectronAllDisplays\), and auto-update management (\useElectronAutoUpdater\). It also introduces an Eventa-based context and invoke pattern (\useElectronEventaContext\, \useElectronEventaInvoke\) to standardize IPC communication. Additionally, the package provides main-process loop utilities (\useLoop\, \createRendererLoop\) that manage execution cycles with safety checks for renderer availability and window visibility.

packages/electron-vueuse · high confidence

Introduce @proj-airi/pipelines-audio for speech orchestration and streaming control

The new \@proj-airi/pipelines-audio\ package provides shared orchestration for speech playback, text chunking, and transcript buffering, decoupling these concerns from application UIs. It introduces a streaming control system that parses and dispatches special tokens (ACT, DELAY, CALL) to manage LLM interactions, alongside a playback manager that handles voice queuing, priority-based stealing, and owner-specific limits. The package also includes a TTS chunker that optimizes audio boost timing by enforcing minimum word counts and handles narrative stripping for CJK and other languages.

packages/pipelines-audio · high confidence

Introduce @proj-airi/server-shared package for shared server types and error handling

The new \@proj-airi/server-shared\ package provides shared TypeScript type definitions and error-handling utilities for all server-side packages in Project AIRI. It exports WebSocket event types (including \input:text\, \input:text:voice\, and \input:voice\) and a structured error classification system that parses server messages into codes (e.g., \invalid-token\, \module-not-found\) with metadata on whether errors are authentication-related, recoverable, or terminal. The package is built using \tsdown\ and includes a README documenting usage scenarios for distributed agents like Minecraft and Discord.

packages/server-shared · high confidence

Introduce @proj-airi/stage-shared package for cross-environment contracts and utilities

A new shared package has been added to provide runtime-neutral helpers and serializable contracts for AIRI stage applications. It introduces beat-sync detection logic that adapts to Web, Capacitor, and Tamagotchi (Electron) environments, and adds PKCE-based authentication utilities for secure login flows. The package also includes composables for versioned and manual-reset local storage to prevent state synchronization issues, global shortcut accelerator parsing, and environment-specific configuration checks for features like Flux purchases and custom providers.

packages/stage-shared · high confidence

Introduce AIRI Dashboard window with window management and IPC handlers

The application now includes a dedicated AIRI Dashboard window. This new window persists its position and size settings across sessions, supports window dragging (with a Linux-specific workaround bypass), and exposes IPC handlers to open the Settings, Chat, and Notice windows from the dashboard interface.

apps/stage-tamagotchi/src/main/windows/dashboard · high confidence

Introduce AIRI Extension SDK with scoped channels, kit API, and v2 manifest validation

The \packages/plugin-sdk\ package now provides the runtime-agnostic SDK for AIRI extensions, replacing the legacy plugin model. Extensions must now use an \extension.airi.json\ manifest (Manifest v2) and define their entrypoint via \defineExtension()\. The SDK introduces scoped Eventa channels (\createExtensionChannelScope\, \createModuleChannelScope\) to isolate traffic per extension and module, and a Kit API (\ctx.kits.use\, \defineKit\) that allows extensions to consume host-provided capabilities with strict version and permission checks. The package also includes a strict manifest schema that rejects invalid versions, unsafe IDs, and legacy formats, along with design documentation for the capability orchestration and multi-transport architecture.

packages/plugin-sdk · high confidence

Introduce AIRI Web Extension plugin for capturing web context

A new browser extension plugin has been added to capture and send web context (page titles, video metadata, and subtitles) from YouTube and Bilibili to the AIRI server. The extension includes a content script to detect site-specific context, a background service to manage WebSocket connections and settings, and a Vue-based popup UI for configuring connection details, toggling capture features, and viewing live status.

plugins/airi-plugin-web-extension · high confidence

Introduce Component Calling demo app with dark mode and streaming UI

A new 'Component Calling' application has been added to the workspace, providing a chat interface that demonstrates AI-driven component invocation. The app features a dark mode toggle powered by the shared UI theme system and supports streaming responses from LLMs. It includes a custom XML parser to interpret component calls and props from the model's output, allowing the UI to render dynamic widgets (such as a weather component) based on the conversation. The entry point uses Vue Router with hash history, and the main page integrates with the xsai library for text streaming.

apps/component-calling/src · high confidence

Introduce Inlay window with reusable instance management and RPC integration

The application now includes a new Inlay window, implemented as a reusable Electron BrowserWindow instance that dynamically adjusts its size and position based on the user's display resolution and breakpoints. This window is configured with specific security and UI settings, including disabled macOS window buttons and privileged navigation protection. It establishes communication with the main process via IPC, setting up RPC handlers to interact with the server channel and internationalization services, ensuring the window is ready to display content from the renderer process.

apps/stage-tamagotchi/src/main/windows/inlay · high confidence

Introduce MediaPipe motion-capture workshop for stage-web

Adds a new experimental single-person motion-capture pipeline to the \model-driver-mediapipe\ package, enabling stage-web to drive VRM avatars using MediaPipe Tasks Vision. The package provides a backend adapter for pose, hand, and face landmark detection, a scheduler with per-task frame-rate control and dropped-frame handling, and utilities to map MediaPipe landmarks to VRM bone orientations. A debug canvas overlay visualizes the detected landmarks, and a build script downloads the required MediaPipe model assets with retry logic. This feature is accessible via the stage-web devtools page and the Settings → System → Developer “MediaPipe Workshop” menu entry.

packages/model-driver-mediapipe · high confidence

Introduce Notice window for user confirmations

Added a new Notice window (1020x600) to the application, managed by a dedicated window manager in the main process. This window is used to display confirmation dialogs to the user, handling the 'confirm' action and safely closing the window upon interaction. The implementation includes proper navigation protection and integration with the i18n and server channel services.

apps/stage-tamagotchi/src/main/windows/notice · high confidence

Introduce Pinia synchronization and development tracing utilities

The \packages/stage-ui/src/libs/pinia\ module now provides a \setupSynced\ helper that installs a Pinia plugin and Vue plugin to synchronize store state across multiple renderer processes using the \pinia-plugin-synced\ library, including a configurable leadership policy and a 5-minute call timeout. Additionally, a new \pinia-plugin-tracing\ development tool is introduced to monitor Pinia action and mutation rates in the browser console, emitting lifecycle events via a BroadcastChannel while ensuring that sensitive action arguments and results are never recorded.

packages/stage-ui/src/libs/pinia · high confidence

Introduce Spine 2D runtime integration for animated models

Adds the \@proj-airi/stage-ui-spine\ package, enabling the stage to render and control Spine 2D animated models. This includes Vue components (\SpineScene\, \SpineCanvas\, \SpineModel\) for rendering, a Pinia store for managing animation state and view controls, and LLM-callable tools for playing animations and switching skins. The package supports Spine versions 4.0, 4.1, and 4.2, and requires a valid Spine Editor license for development.

packages/stage-ui-spine · high confidence

Introduce Stage Pocket as a new native-capable app shell

Stage Pocket is a new application entry point that serves as a native-capable shell for the AIRI experience, built on Capacitor to support both iOS and Android targets. It provides a host-backed WebSocket bridge to enable native socket I/O for the server SDK while keeping the web page on secure origins, and includes specific UnoCSS utilities (pt-safe, pb-safe, etc.) to respect safe-area insets on mobile devices. The app is configured with its own Vite build pipeline, TypeScript settings, and Gradle wrapper for Android, allowing developers to run the web interface with native device capabilities.

apps/stage-pocket · high confidence

Introduce Stage Pocket mobile app and component-calling demo

This change adds the \@proj-airi/stage-pocket\ package, a new mobile application built with Capacitor that enables QR code scanning to connect to the AIRI desktop client, along with the \@proj-airi/component-calling\ demo app for realtime audio interactions. The Stage Pocket entry point includes the full suite of shared UI, audio, and inference dependencies, while the Android and iOS native project files (Gradle, Swift Package Manager) are initialized to support the mobile runtime.

(dependencies) · high confidence

Introduce Tachie scene rendering for static emotion images

The \@proj-airi/stage-ui-tachie\ package is now available, providing a renderer for characters represented by a small set of complete, static emotion images. It loads \.tachie.zip\ archives (containing images like \neutral.png\, \happy.webp\, etc.) and renders them using PixiJS on a transparent, responsive canvas. The component supports AIRI's shared emotion vocabulary, allowing users to switch between states like happy, sad, or angry. It includes features such as theme-colored shadows, configurable render scales, and canvas capture for stage screenshots. This renderer is designed for low-asset characters and is distinct from layered or rigged animation systems like Live2D or Spine.

packages/stage-ui-tachie · high confidence

Introduce audio input, recording, and voice activity detection capabilities

The stage-pocket app now includes core audio handling features. Users can select specific audio input devices and start/stop media streams via the new \useAudioInput\ composable. Audio recording is supported through \useAudioRecord\, which captures media and plays it back upon stopping. Additionally, a Voice Activity Detection (VAD) system has been added, utilizing a Silero VAD model (loaded via \@huggingface/transformers\) and an AudioWorklet processor to detect speech boundaries in real-time, exposing events for speech start and status updates.

apps/stage-pocket/src/composables, apps/stage-pocket/src/workers · high confidence

Introduce cap-vite CLI for unified Vite and Capacitor development

The new @proj-airi/cap-vite package provides a CLI that launches a Vite dev server and automatically runs \cap run\ for the specified platform (iOS or Android) in a single terminal session. It intelligently resolves the target device by checking platform-specific environment variables (CAPACITOR\_DEVICE\_ID\_IOS/ANDROID) or falling back to the first available device from \cap run --list\. The tool injects a Vite plugin to handle native file changes, automatically restarting the native app when source files in the platform directory are modified, and allows manual restarts by pressing 'R'. It also supports forwarding arguments to both Vite and Capacitor via a double-dash separator and configures the Capacitor server URL automatically.

packages/cap-vite · high confidence

Introduce cloud chat synchronization and real-time WebSocket sync

The chat-sync library now supports mirroring local chat sessions to the cloud and syncing messages in real time. A new REST-based cloud mapper handles session reconciliation (claiming, creating, and adopting chats) and enforces schema validation on API responses. The WebSocket client has been upgraded to version 2, moving authentication to a post-connection step to prevent premature state exposure, and introduces robust reconnection logic with exponential backoff and specific handling for unauthorized closures. Message synchronization logic ensures that only user and completed assistant turns are synced, while tool calls and system prompts remain local, and incoming messages are merged into the local store with proper deduplication and ordering.

packages/stage-ui/src/libs/chat-sync · high confidence

Introduce dedicated Server Auth UI for hosted AIRI deployments

A new standalone Vue/Vite application (\apps/ui-server-auth\) has been added to handle user-facing authentication flows for the hosted AIRI server, including sign-in, email verification, password reset, profile management, and Electron OIDC callback relaying. This UI is deployed separately to Cloudflare Pages at \accounts.airi.build\ and communicates with the server's \/api/auth/\*\ endpoints. The implementation includes specific configuration to prevent browser cache poisoning by serving static assets under a distinct \/assets-v2/\ namespace, integrates OpenPanel for analytics tracking, and provides a dedicated Electron callback parser to relay OIDC tokens from the browser back to the desktop application.

apps/ui-server-auth · high confidence

Introduce dedicated Three.js stage UI package

The \stage-ui-three\ package is introduced to host the shared Three.js scene root, VRM model lifecycle management, and camera controls for stage surfaces. It provides the \ThreeScene\ component, a Pinia model store, and explicit VRM loading and disposal logic to prevent memory leaks and ensure deterministic model switching. The package also includes an \OrbitControls\ component for camera interaction, an \Environment\ component for HDRI skybox and IBL lighting, and a local \trace\ submodule for runtime diagnostics.

packages/stage-ui-three · high confidence

Introduce dedicated server authentication UI application

Adds a new standalone Vue application for server-side authentication flows, bootstrapped via main.ts with Pinia, Vue Router, i18n, and OpenPanel analytics. The app root (App.vue) manages global language and theme settings and renders toast notifications, while routing is configured to support both standard and hash-based histories depending on the deployment target. A test suite validates Cloudflare Pages routing behavior, ensuring proper 404 handling for static assets and correct cache-control headers for asset revalidation.

apps/ui-server-auth/src · high confidence

Introduce dedicated server-auth UI pages and components

The \apps/ui-server-auth/src/pages\ directory now contains a complete set of new Vue components for the server-auth application, replacing previous placeholder or undefined states. Users will now see fully implemented pages for signing in (with email and social provider flows), managing their profile (including name updates, password changes, and linked account management), and account deletion. The UI also includes dedicated screens for password reset, email verification (utilizing cross-tab signaling for smoother OIDC handoffs), and an Electron OAuth callback handler. A new \auth-notice\ component provides consistent status feedback across these flows, and a catch-all \\[...all\].vue\ page handles 404s with navigation back to sign-in.

apps/ui-server-auth/src/pages · high confidence

Introduce electron-screen-capture package for screen sharing and macOS permission handling

This change adds a new \electron-screen-capture\ package that provides utilities for screen capture within the Electron application. It introduces IPC-based APIs for getting available display sources, setting and resetting capture sources with mutex locking, and checking or requesting screen capture permissions specifically on macOS. The package includes main-process initialization logic to handle Electron's \desktopCapturer\ and feature flags (such as loopback audio support), a renderer-side setup function for invoking these capabilities, and a Vue composable (\useElectronScreenCapture\) to integrate screen capture flows into the UI. It also defines serializable types for desktop capturer sources to handle icons and thumbnails over IPC.

packages/electron-screen-capture · high confidence

Introduce experimental Godot stage sidecar service

Added a new service at \apps/stage-tamagotchi/src/main/services/airi/godot-stage\ that manages the lifecycle of an external Godot stage process. This implementation handles starting and stopping the Godot binary (using a pre-exported production binary or a local dev executable), bridges WebSocket communication for real-time status and view snapshots, and forwards scene input payloads (VRM models) to the stage. It exposes a manager interface for renderer windows to control the stage and subscribe to its state changes.

apps/stage-tamagotchi/src/main/services/airi/godot-stage · high confidence

Introduce native Android bridge for WebSocket, authentication, and microphone permissions

The Android app now includes a native Kotlin implementation that bridges the Capacitor WebView to the host OS for critical capabilities. A new WebSocket bridge allows the web app to manage native WebSocket connections (connect, send, close) via a JavaScript interface, including support for local self-signed certificates used by development servers. Authentication is handled by opening the system browser for login flows, and microphone permissions are checked natively to support audio input device selection. These changes enable reliable real-time communication and media access on Android.

apps/stage-pocket/android/app · high confidence

Introduce server-sdk-shared package for chat WebSocket contracts

A new shared package, @proj-airi/server-sdk-shared, has been added to define the contracts for the hosted chat WebSocket. It provides TypeScript schemas and validation utilities for chat operations, including sending and pulling messages, as well as handling post-connection authentication via the 'chat:authenticate' event. The package exposes types for wire messages and request/response payloads, supporting the v2 protocol structure where authentication occurs after the WebSocket connection is established.

server/packages/server-sdk-shared · high confidence

Introduce shared authentication contracts package

The new \@proj-airi/auth-shared\ package provides neutral authentication contracts shared between the resource API and the standalone auth service. It defines the PostgreSQL schema (including user, session, account, and OAuth tables) and the \AuthSession\ interface, ensuring that both processes use identical data structures for the authenticated principal and authorization policies like ban expiry handling without depending on each other's runtime.

server/packages/auth-shared · high confidence

Introduce standalone AIRI Editor window

A new, reusable AIRI Editor window has been added to the Tamagotchi application. This window operates independently from the main settings interface, launching at a dedicated /editor route with a minimal stage runtime and disabled synced leader mode. The implementation includes the main window manager logic and registers the necessary Electron IPC handlers to support future editor features.

apps/stage-tamagotchi/src/main/windows/editor · high confidence

Introduce system tray with window sizing and alignment controls

Adds a new system tray menu that allows users to toggle the main window visibility, adjust its size (recommended, full height, half height, or full screen), and align it to specific positions (center, top-left, top-right, bottom-left, bottom-right) on the dominant display. The tray menu is localized via i18n and includes safeguards to prevent errors when the renderer is unavailable.

apps/stage-tamagotchi/src/main/tray · high confidence

Introduce unified audio package with Web Audio API integration and WAV encoding

The new \packages/audio\ package provides a centralized audio infrastructure for the application. It introduces an \AudioContext\ manager (\audio-context/index.ts\) that handles initialization, sample-rate management (defaulting to 48kHz), and the loading of Web Audio API worklets. This includes a \ResamplingAudioWorkletProcessor\ (\processor.worklet.ts\) that utilizes \@alexanderolsen/libsamplerate-js\ to resample audio streams in real-time, supporting configurable input/output sample rates and channel counts. Additionally, the package includes a WAV encoding module (\encoding/wav.ts\) with utilities to convert between Float32 and PCM16 formats and generate WAV files, accompanied by unit tests (\encoding/wav.test.ts\) to verify the correctness of these conversions.

packages/audio · high confidence

Introduce unocss-preset-fonts package for custom font integration

A new \unocss-preset-fonts\ package has been added to provide a UnoCSS preset that integrates three specific fonts: CJKFonts AllSeto, Departure Mono, and Xiaolai SC. The preset is configured to load these fonts without an external provider and includes preflight CSS imports for the corresponding local font packages (\@proj-airi/font-cjkfonts-allseto\, \@proj-airi/font-departure-mono\, and \@proj-airi/font-xiaolai\), ensuring they are available for styling within the application.

packages/unocss-preset-fonts · high confidence

Introduce vision processing and orchestration stores

The vision module in the stage-ui store now includes dedicated Pinia stores to manage vision capabilities. The new \useVisionOrchestratorStore\ coordinates frame capture and multimodal inference, ensuring stable context IDs for repeated updates from the same source and partitioning contexts by workload. The \useVisionProcessingStore\ handles the capture ticker, tracking metrics like tick counts, processing durations, and context update rates with configurable intervals. Additionally, the \useVisionStore\ centralizes vision settings, including active provider/model selection, Ollama thinking options, and chat integration toggles, with persistence and cross-window synchronization.

packages/stage-ui/src/stores/modules/vision · high confidence

Introduces @proj-airi/better-ws for reliable WebSocket connections

A new \better-ws\ package provides runtime-agnostic WebSocket primitives for reliable realtime connections. It includes a client with automatic reconnect (exponential backoff) and a server with peer registry, broadcast, and named groups. The package ships with a CrossWS connector for browser and Node environments, allowing applications to build custom protocols on top of stable connection lifecycle management.

packages/stage-ui · high confidence

Introduces configurable server channel with TLS and authentication

The channel-server module now supports configurable hostname, authentication tokens, and TLS certificates for secure WebSocket connections. Users can enable secure (WSS) connections via TLS configuration, and the server generates or accepts custom auth tokens to secure the channel. The server can bind to non-localhost addresses (e.g., 0.0.0.0) to allow external connections, with QR code generation providing reachable LAN addresses for device pairing.

apps/stage-tamagotchi/src/main/services/airi/channel-server · high confidence

The app now includes dedicated modules to handle platform-specific integrations: deep links are installed to route authentication callbacks via Capacitor, a new WebAuthentication plugin opens the system browser for login flows, and a WebSocket bridge connects the app to native Android hosts for reliable server communication. Additionally, microphone permission checks and server channel QR probing are now supported, while internationalization and PWA registration are standardized.

apps/stage-pocket/src/modules · high confidence

Introduces reusable window management for Electron windows

The application now uses a new reusable window manager in the main process that handles creating, caching, and closing Electron BrowserWindows. This logic ensures that if a window is closed while it is still initializing, the pending creation is discarded and a fresh window is created on the next request, preventing crashes or stale references. This infrastructure supports features like the floating chat window and settings page by providing a reliable way to manage window lifecycles.

apps/stage-tamagotchi/src/main/libs/electron/window-manager · high confidence

Introduces server runtime with secure WebSocket event routing and consumer delivery

The \packages/server-runtime\ package now provides the core server runtime, including a CLI entry point (\bin/run.ts\) to start the H3-based WebSocket server. It enforces security by using constant-time comparison for authentication tokens and validates incoming WebSocket messages using SuperJSON (with a fallback to plain JSON). The runtime implements a consumer-based event delivery system that supports priority, sticky, and round-robin selection, along with a routing middleware that allows filtering peers via label selectors, glob patterns, and extension/instance identities.

packages/server-runtime · high confidence

Introduction of the Onboarding Window Manager

The application now includes a dedicated onboarding window manager that handles the lifecycle and display of the initial 'Welcome to AIRI' setup experience. This component creates a resizable, 1000x650 window with specific styling (dark background, custom icon) and integrates authentication services and internationalization. It manages window visibility, handles safe closing via IPC events, and ensures the window is properly toggled and shown upon readiness, providing a structured entry point for new users.

apps/stage-tamagotchi/src/main/windows/onboarding · high confidence

Introduction of the Stage Pocket application with voice and streaming transcription

The new Stage Pocket app provides a main stage interface that integrates voice input, VAD-based speech detection, and streaming transcription. Users can interact via voice, with the system automatically sending transcribed text to the chat using the currently selected provider, model, and configurable temperature/top\_p settings. The layout adapts to mobile and desktop, respects safe areas, and includes a WebSocket status indicator.

apps/stage-pocket/src/pages · high confidence

Launch of standalone Auth service with native Google sign-in and Steam integration

The server now includes a standalone Auth application (\server/apps/auth\) that handles authentication, identity, and session management. This service introduces native Google sign-in support via the \AUTH\_GOOGLE\_NATIVE\_CLIENT\_IDS\ environment variable, allowing Android Credential Manager and other native clients to authenticate using specific Google OAuth audiences. It also adds a new Steam OpenID 2.0 sign-in plugin, enabling users to link their Steam accounts. The service is containerized with a dedicated Dockerfile, includes OpenTelemetry instrumentation for observability, and manages its own database connection and email delivery via Resend.

server/apps/auth · high confidence

Launch of the Stage Web application with voice and provider configuration

The Stage Web application is now available, providing a web-based interface for interacting with the AI assistant. This release introduces a new main page that supports voice input via both streaming transcription and Voice Activity Detection (VAD), allowing users to speak naturally to the model. It also includes a dedicated settings page for configuring the official chat provider, enabling users to select between different API protocols (such as Responses API and Chat Completions). Additionally, a fallback 404 page has been added to handle unknown routes gracefully.

apps/stage-web/src/pages · high confidence

Live2D component restructured with ambient light preview and expression support

The Live2D rendering logic has been reorganized into a new component hierarchy (Live2DScene, Live2DCanvas, Live2DModel) that integrates a screen ambient light filter for dynamic lighting effects and a new expression controller that properly scopes expressions to the currently loaded model. A dedicated diagnostic preview component has been added to visualize ambient light settings, and the rendering pipeline now includes a background scene layer that composites behind the model.

packages/stage-ui-live2d · high confidence

Local test harness for the AIRI Electron updater

A new local test harness has been added to \apps/stage-tamagotchi/scripts/update-test\ to verify the AIRI updater workflow without relying on external servers. It includes a mock HTTP server (\start-server.ts\) and manifest generator (\generate-manifest.ts\) that create local fixtures for stable, beta, alpha, and nightly channels, along with orchestration scripts (\run-test.sh\, \run-matrix.sh\) to launch the app against these mocks. This allows developers to manually or automatically verify update discovery, download states, and channel switching (via \UPDATE\_SERVER\_URL\ and \AIRI\_UPDATE\_CHANNEL\) on the local machine.

apps/stage-tamagotchi/scripts/update-test · high confidence

Migrate deployment to Cloudflare Workers and add performance diagnostics

The stage-web application has moved its hosting from Netlify to Cloudflare Workers, evidenced by the removal of the Netlify configuration and the addition of a Wrangler configuration file. A new Dockerfile has been introduced to support local and CI builds using Node.js 24 and Nginx for production serving. Additionally, a performance visualizer feature has been added, allowing users to view FPS history and export recordings to help identify animation performance issues.

apps/stage-web · high confidence

Native iOS bridge for host WebSocket communication and authentication

The iOS app now includes a native bridge that enables direct WebSocket communication with a local host (such as a Tamagotchi device) and supports system-level web authentication. This is implemented via new Swift components in the iOS project: a \DevBridgeViewController\ that configures the Capacitor WebView with a transparent background and gesture navigation, a \HostWebSocketBridge\ and \URLSessionHostWebSocketSession\ that manage WebSocket lifecycle and message passing between the web view and native code, and a \WebAuthenticationPlugin\ that leverages \ASWebAuthenticationSession\ for secure login flows. The \Info.plist\ has been updated with the necessary usage descriptions for camera, microphone, and local network access to support these features.

apps/stage-pocket/ios/App/App · high confidence

New @proj-airi/ui-loading-screens package with Sci-Fi and Bar styles

A new \@proj-airi/ui-loading-screens\ package has been introduced to provide visual feedback during application startup. It includes two distinct loading screen components: \LoadingLogoWithBar\, which displays a simple progress bar and status text, and \LoadingSciFiCircle\, a retro terminal-style loader featuring ASCII art, boot logs, and CRT effects. The Sci-Fi component supports a barrel distortion filter for a more immersive visual style and is available for preview in the package's playground.

packages/ui-loading-screens · high confidence

New @proj-airi/ui-transitions package with playground

A new \@proj-airi/ui-transitions\ package has been added, providing a set of UI transition animations for fade-in and fade-out of scenes. The package includes several distinct transition components such as Arrow, Bubble Wave Out, Fantasy Fall, Multiple Blocks Reveal, and Rectangles Rotate, which can be configured with custom colors, durations, and directions. A dedicated playground application is included to demonstrate these transitions, featuring a dark mode toggle and navigation between different transition examples.

packages/ui-transitions · high confidence

New Account Settings page with login and logout actions

A new Account Settings page has been added to the application, providing users with a dedicated interface to manage their account. This page integrates with the existing authentication store to handle login requests and includes a logout function that signs the user out and redirects them to the main settings view. The page is configured with specific metadata for layout, title, and icon display within the settings navigation.

apps/stage-web/src/pages/settings/account · high confidence

New Aliyun NLS and Apple Speech transcription providers

The provider catalog now includes Aliyun NLS for real-time streaming transcription (supporting multiple Chinese regions) and Apple Speech for native macOS transcription. The Aliyun provider handles WebSocket-based streaming with interim result corrections, while the Apple Speech provider integrates with the Electron desktop app to provide locale-aware transcription. Both providers are registered in the provider attributes system with appropriate pricing and deployment metadata.

packages/stage-ui/src/libs/providers · high confidence

New Artistry image generation bridge and widget service infrastructure

This change introduces the backend service layer for the new Artistry image generation system and the core widget management service within the AIRI widgets module. The \artistry-bridge.ts\ file implements a provider-agnostic image generation engine that supports ComfyUI (local), Replicate (cloud), and Nano Banana (Google AI Studio), featuring request deduplication, job status polling, and configurable globals. Alongside this, \index.ts\ establishes the \createWidgetsService\ to handle Electron IPC invoke handlers for widget lifecycle operations (add, update, remove, open, hide) and iframe event routing, backed by strict payload validation in \validation.ts\ to ensure data integrity for widget properties and IDs.

apps/stage-tamagotchi/src/main/services/airi/widgets · high confidence

A new Artistry widget has been added to the stage-tamagotchi renderer, exposing the Comfy.vue component via index.ts. This widget provides a gallery interface for browsing generated images, setting them as character backgrounds, and displaying generation progress, integrating with the existing background and card stores.

apps/stage-tamagotchi/src/renderer/widgets/artistry · high confidence

New Characters management page in settings

A new Characters page has been added to the application settings, allowing users to view, search, create, edit, and delete their AI characters. The page features a list view with search filtering, a 'Create New' button to add characters, and a dialog for editing character details. It integrates with the character store to fetch and manage character data and tracks deletion events for analytics.

apps/stage-web/src/pages/settings/characters · high confidence

New Data Settings page with chat import sync and sectioned layout

A new Data settings page has been added to the Tamagotchi app, providing a structured interface for managing application data. The page integrates several sub-sections: Chats (with a new feature to sync imported chat sessions via the chat session store), Desktop Folder management, Models/Modules, Desktop Reset, and a Danger section. A status banner component is used to display feedback for actions across these sections. The page is registered in the settings menu with a specific order and icon.

apps/stage-tamagotchi/src/renderer/pages/settings/data · high confidence

New Departure Mono font package added

A new \font-departure-mono\ package has been introduced to the workspace, providing the Departure Mono typeface (v1.500) under the SIL Open Font License. This package bundles the font files, a CSS \@font-face\ definition for web usage, and a TypeScript entry point, configured to build using \tsdown\.

packages/font-departure-mono · high confidence

New Developer Tools section in System settings

A new 'Developer' section has been added to the System settings page, providing a centralized hub for various debugging and testing utilities. This includes tools for audio recording, performance visualization, markdown stress testing, background theme blending, background removal (WebGPU), chat, gesture recognition, image processing, polaroid shots, context flow inspection, WebSocket traffic inspection, web haptics, plugin host debugging, magic keys, color extraction, Aliyun real-time transcription, VRM/TTS performance playground, and MediaPipe motion capture. The settings page also introduces a ripple grid interaction effect for navigating these options.

apps/stage-web/src/pages/settings/system · high confidence

New Discord voice integration and Minecraft bot infrastructure

This change introduces a new Discord bot adapter that enables voice chat capabilities, including joining voice channels, monitoring user speech, and transcribing audio via local Whisper or OpenAI models to send text responses. It also establishes the foundational architecture for the Minecraft integration, defining core bot management, a plugin runtime system, connection supervision for reconnection, and agent interfaces for actions, memory, and planning.

integrations/discord-bot, integrations/minecraft/src/libs/mineflayer, integrations/twitter-services · high confidence

New Electron main process entry point for Stage Tamagotchi

The application now uses a new \src/main/index.ts\ entry point to initialize the Electron main process. This change establishes the core runtime environment by configuring logging via \@guiiai/logg\, setting up dependency injection with \injeca\, and initializing key services such as the built-in HTTP server, auto-updater, global shortcuts, and screen capture utilities. It also handles platform-specific configurations, including enabling WebGPU on Linux and supporting Wayland, while managing window lifecycles and single-instance guards.

apps/stage-tamagotchi/src/main · high confidence

New Electron main-process service layer with comprehensive test coverage

The \apps/stage-tamagotchi/src/main/services/electron\ directory now contains a new set of main-process services that replace or supplement previous implementations. This includes an app service for opening the user data folder and quitting, a robust auto-updater that fetches release tags from the GitHub API and supports multiple update lanes (stable, beta, alpha, nightly) with platform-specific cache cleanup, and a global shortcut service that uses \uiohook-napi\ for key-up events (e.g., push-to-talk) while falling back to Electron's native shortcuts. Additionally, a media permission handler restricts audio capture and device access to local AIRI pages, and a system preferences service exposes platform detection. All these services are accompanied by extensive unit tests in \\*.test.ts\ files, verifying behaviors like updater channel selection, shortcut registration conflicts, and permission grant logic.

apps/stage-tamagotchi/src/main/services/electron · high confidence

New Electron scenario automation framework for documentation screenshots

This package introduces a dedicated Electron capture framework for generating documentation screenshots, built on top of the Vishot testing tool. It provides a structured API for automating interactions with the AIRI stage-tamagotchi application, including helpers for managing windows (main, settings, chat), controlling the UI island, navigating settings routes, and dismissing overlays. A key addition is a gesture primitive that supports swipe actions via both trusted Chromium CDP touch events and native wheel movements, ensuring reliable reproduction of touch-based UI interactions like swipe-to-reply in automated captures.

packages/scenarios-stage-tamagotchi-electron · high confidence

New MCP server configuration interface in settings

The Settings page now includes a dedicated module for configuring Model Context Protocol (MCP) servers. Users can manage server definitions through a structured form (specifying identifier, command, arguments, environment variables, and working directory) or via a raw JSON editor. The interface supports adding, removing, and editing multiple servers, validates configuration against the MCP schema, and allows users to test server connections to verify tool availability and diagnose errors.

apps/stage-tamagotchi/src/renderer/pages/settings/modules · high confidence

New Satori bot integration with LLM-driven action planning

The \integrations/satori-bot\ module introduces a new bot adapter for the Satori protocol, enabling the system to connect to Satori-based messaging platforms via WebSocket. This integration features an LLM-driven action planner that dynamically decides between sending messages, reading unread events, or continuing loops based on conversation context and personality prompts. It includes a structured action registry (send, read, continue, break, sleep, list channels) with concurrency safety checks to prevent message collisions, and manages bot state through a persistent database for event queues and chat history.

integrations/satori-bot, integrations/telegram-bot · high confidence

New Settings window manager for Electron

The application now includes a dedicated Settings window, implemented via a new \SettingsWindowManager\ in the main process. This window is a reusable 600x800 pixel browser window that loads the \/settings\ route by default and supports navigation to other routes. It integrates with several existing services, including auto-updater, devtools, widgets, spotlight, global shortcuts, and various stage managers (Godot, MCP, server channel), while also initializing screen capture capabilities for the window.

apps/stage-tamagotchi/src/main/windows/settings · high confidence

New System Settings pages for General, Permissions, and Developer tools

The System settings section now includes dedicated pages for General configuration, Permissions management, and Developer tools. Users can access a new Developer menu offering quick links to various testing utilities (such as audio, chat, and WebSocket inspection) and toggle animation transitions. The Permissions page integrates a dedicated panel for managing app permissions, while the main System index provides navigation to these new sub-sections.

apps/stage-pocket/src/pages/settings/system · high confidence

New Tamagotchi Devtools pages for global shortcuts, screen capture, and VRM performance

The Tamagotchi devtools now include dedicated pages for testing and monitoring core subsystems. The Global Shortcut page allows registering, unregistering, and monitoring trigger events for global keyboard shortcuts. The Screen Capture page provides a UI to select and stream screen, window, or device sources. The Performance Visualizer page displays real-time diagnostics for the Stage Three runtime, including window lifecycle, Three.js render metrics, VRM update frame timings, and resource snapshots. Additional pages expose the Live2D ambient light controls, motion devtools, and the auto-updater diagnostics.

apps/stage-tamagotchi/src/renderer/pages/devtools · high confidence

New Tamagotchi renderer components for chat and window management

This change introduces a new set of renderer components for the Tamagotchi application, including the main InteractiveArea for chat interactions, a ChatViewportLayout to manage the chat history and composer positioning, and an IconAnimation component for visual effects. It also adds ResizeHandler for window resizing, WindowRouterLink for navigation, and WithScreenCapture to handle macOS screen capture permissions. Additionally, browser tests are added for the InteractiveArea and ChatViewportLayout to ensure correct layout behavior and state synchronization.

apps/stage-tamagotchi/src/renderer/components · high confidence

New UI component library with form fields and animations

The \@proj-airi/ui\ package introduces a new stylized UI component library built on Reka UI and UnoCSS. It provides a comprehensive set of form components, including \FieldInput\ (with native number modifier support), \FieldSelect\, \FieldComboboxSelect\, \FieldCheckbox\, \FieldRange\, and \FieldTextArea\, alongside primitive inputs like \Input\, \Checkbox\, and \Combobox\. The library also adds animation primitives such as \AnimatedContent\ for presence-based transitions and various transition components (\TransitionVertical\, \TransitionHorizontal\, \TransitionBidirectional\). Documentation is included in the package README.

packages/ui · high confidence

New agent skills for Electron debugging, PR creation, and code standards

The \.agents\ directory now includes several new skill definitions that guide AI agents in specific workflows. The \agent-browser-electron\ skill provides instructions for inspecting and automating Electron apps via the Chrome DevTools Protocol, specifically addressing multi-window and lazy-loading scenarios. The \create-pr\ skill standardizes pull request creation with requirements for context evidence, visual diffs, and behavior diagrams. Additionally, new skills enforce project-specific standards: \enforce-rules-for-typescript\ for source code structure, \enforce-rules-for-unocss\ for styling, \enforce-rules-for-vitest\ for testing practices, and \enforce-rules-for-pinia-synced\ for cross-window state synchronization.

.agents · high confidence

New audio visualization and icon animation components

Added AudioWaveform.vue, a new component that renders a real-time audio waveform on a canvas using the Web Audio API and adapts its colors to the current theme, and IconAnimation.vue, a new component that handles complex icon animations with configurable duration, direction, and completion callbacks.

apps/stage-web/src/components · high confidence

New built-in tools for desktop control, image generation, and weather

The renderer now ships three new built-in tools: a desktop computer-use tool that allows the agent to control native apps, inspect windows, and capture screenshots via IPC; an image-journal tool that generates images using the configured artistry providers (ComfyUI, Replicate, etc.) and manages them as background journal entries or overlay widgets; and a weather tool that fetches current conditions from the Open-Meteo API and displays them as an overlay widget. These additions expand the agent's capabilities beyond chat to include local system interaction, visual content creation, and real-time environmental data.

apps/stage-tamagotchi/src/renderer/stores/tools/builtin · high confidence

New centralized settings page with animated navigation

A new settings page has been added to the Tamagotchi app, dynamically listing all routes marked with a 'settingsEntry' meta property. The page displays these settings as a list of items with titles, descriptions, and icons, sorted by a defined order. It includes visual enhancements such as staggered entry animations for the list items and a background decorative icon, while also implementing custom page transition logic controlled by user settings.

apps/stage-tamagotchi/src/renderer/pages/settings · high confidence

New character creation and management UI components

The character settings page now includes dedicated Vue components for managing AI characters. Users can create new characters via a dedicated card interface, edit character details (including identity, LLM model, temperature, top\_p, and TTS settings) through a dialog with form validation, and view/manage existing characters using a list item component that displays version, model, and voice status. The implementation integrates with the character store for creation and updates, and tracks analytics events for character creation.

apps/stage-web/src/pages/settings/characters/components · high confidence

New composables for audio input, recording, icon animations, and performance monitoring

The application now includes four new composables in the \stage-web\ package to enhance user interaction and diagnostics. Users can now select specific audio input devices and record audio directly in the browser, with playback triggered upon stopping the recording. Page transitions and icon animations are now controllable via settings, respecting user preferences for disabling transitions. Additionally, a new performance lag sampler is available to monitor FPS, frame duration, long tasks, and memory usage, providing real-time performance metrics for debugging and optimization.

apps/stage-web/src/composables · high confidence

New configuration schemas for Artistry and Global app settings

The application now persists specific user preferences via new configuration schemas. The Artistry module introduces settings for AI image generation providers (ComfyUI, Replicate, Nanobanana), allowing users to configure server URLs, API keys, default models, and aspect ratios. The Global app configuration adds support for saving the user's selected language, the keyboard shortcut for the Spotlight feature, and the software update channel (e.g., stable, beta, nightly).

apps/stage-tamagotchi/src/main/configs · high confidence

New connection settings page with TLS toggle, auth token management, and QR pairing

A new Connection settings page has been added to the Tamagotchi stage, allowing users to configure remote WebSocket connections. Key features include a toggle to enable/disable WebSocket TLS (WSS) security, a visible/copyable server authentication token field, and a checkbox to expose the server to all network interfaces (0.0.0.0) on desktop. Additionally, a QR code card is provided for device pairing, which is hardcoded to render as dark-on-light to ensure compatibility with mobile barcode scanners.

apps/stage-tamagotchi/src/renderer/pages/settings/connection · high confidence

New desktop data management controls in Settings

The Settings \> Data page now includes dedicated sections for managing the desktop application's local state. Users can open the user data folder directly via a new button, reset the desktop application's persisted state to clear local settings, and re-center the main application window on the current display. These controls are presented with distinct visual styling and include confirmation steps for the reset action to prevent accidental data loss.

apps/stage-tamagotchi/src/renderer/pages/settings/data/components · high confidence

New desktop overlay, caption, and chat pages for the Tamagotchi stage

The Tamagotchi renderer now includes several new pages that enhance the desktop experience. A desktop overlay page visualizes the AI agent's ghost pointer and target candidates using screen-absolute coordinate mapping and MCP polling, with pure logic extracted for testability. A caption overlay page displays synchronized speaker and assistant text with fade-on-hover behavior. A floating chat window page allows users to resize and reposition the chat independently, while a standard chat page provides a fixed layout with scrollable history. These additions expand the stage's interactive capabilities on desktop.

apps/stage-tamagotchi/src/renderer/pages · high confidence

New devtools pages for audio recording, background removal, and performance visualization

The devtools section now includes several new interactive pages: an audio recorder that captures and plays back WAV files, a background removal tool that processes images using a WebGPU/WASM adapter with auto-processing and hover preview, a background gradient blending page that extracts colors from images to update the UI theme, a gesture circle detector for testing input patterns, a MediaPipe model driver for real-time pose/hand/face tracking on VRM models, a performance playground for testing speech pipelines and emotions, and a performance visualizer that records and exports FPS, frame duration, long tasks, and memory metrics. Additionally, browser tests were added to verify imported Live2D and VRM model handling in the Polaroid component.

apps/stage-web/src/pages/devtools · high confidence

New devtools playground pages for audio, inference, and gesture testing

The devtools section now includes several new interactive pages to help test and debug specific capabilities. The audio-record page allows selecting an input device and recording audio to WAV files. The background-removal page provides a batch-processing interface for removing image backgrounds using a WebGPU/WASM adapter. The background-gradient-blending page tests color extraction from images using Node Vibrant and html2canvas to update the UI theme. The gesture-circle page visualizes pointer movement and detects circular gestures. The notifications page tests local notification scheduling via Capacitor. The performance-playground page offers a comprehensive environment for testing the speech pipeline, audio playback, and VRM character expressions. Finally, the use-magic-keys page serves as a visual test for keyboard input handling.

apps/stage-pocket/src/pages/devtools · high confidence

New eventa channels for computer use, chat window management, and spotlight shortcuts

The application now exposes new eventa channels to support computer-use automation, a floating chat window with draft persistence, and spotlight shortcut configuration. Users can now invoke computer-use actions (run commands, read images) via the new \computer-use.ts\ module. The chat interface supports a new 'floating' mode that can be pinned, resized, and moved independently, with unsent drafts automatically carried over when switching between legacy and floating windows. Additionally, spotlight shortcuts can now be queried and set, and result notifications can be displayed.

apps/stage-tamagotchi/src/shared/eventa · high confidence

New extension host infrastructure with auto-reload, static asset hosting, and gamelet kit support

The Stage Tamagotchi extension host now supports importing extensions from local folders via the Extension management window, with a new \extension.airi.json\ manifest format (Manifest V2). It includes an optional auto-reload feature that watches extension files and triggers hot-reloads, a static asset service that mounts extension UI assets behind a local server with cookie-based session management, and a built-in gamelet kit that allows extensions to open and manage iframe-backed UI widgets. A sample devtools extension is provided to validate the new host lifecycle and import flow.

apps/stage-tamagotchi/src/main/services/airi/plugins · high confidence

New floating chat window with robust multi-monitor placement and draft safety

The chat window now defaults to a new floating mode that attaches beside the main character window, intelligently choosing left or right sides and top or bottom anchors based on available screen space. This placement logic includes hysteresis to prevent jittery layout switching during window drags and ensures the chat remains fully visible within the work area of multi-monitor setups, even shrinking the chat if it exceeds the display bounds. A critical fix prevents main process crashes on Windows caused by negative zero coordinates in window positioning. Additionally, switching between the legacy and floating chat modes now safely preserves unsent composer drafts, ensuring text is not lost if the new window fails to load or restore the session.

apps/stage-tamagotchi/src/main/windows/chat · high confidence

New font-xiaolai package for Xiaolai SC Regular font

A new package, font-xiaolai, has been added to provide the Xiaolai SC Regular font. This package includes the necessary CSS @font-face definition and build configuration (using tsdown) to bundle the font files and styles, making the font available for use in the application.

packages/font-xiaolai · high confidence

New glossary system and English locale foundation for internationalization

The i18n package now includes a structured glossary system to ensure consistent terminology across all supported languages. A new \terms.yaml\ file defines approved English terms, which are validated against a strict schema and converted into a TBX (TermBase eXchange) format for import into the Crowdin translation platform. This change also establishes the foundational English locale files (\base.yaml\, \stage.yaml\, \settings.yaml\, etc.) and provides utilities to normalize locale codes (e.g., mapping \zh-CN\ to \zh-Hans\), ensuring a consistent and high-quality translation workflow for the application's interface.

packages/i18n · high confidence

New i18n and PWA module initializations

The application now initializes internationalization and PWA capabilities via dedicated module files. The new i18n module sets up vue-i18n using locale messages from the @proj-airi/i18n package, determining the active language by checking the 'settings/language' localStorage key or falling back to the browser's language, with English as the final fallback. Additionally, a new PWA module exports the registerSW function from virtual:pwa-register to handle service worker registration.

apps/stage-web/src/modules · high confidence

New integrations for Discord, Minecraft, Satori, and Telegram bots

This change introduces four new standalone bot integrations into the \integrations/\ workspace. The Discord bot enables voice channel interaction with AI services like OpenAI and ElevenLabs. The Minecraft service provides a Mineflayer-based bot with a four-layer cognitive architecture (Perception, Reflex, Conscious, Action) and includes a local MCP debug server for inspecting bot state and injecting events. The Satori bot is a standalone, event-driven agent supporting multiple chat platforms (QQ, Telegram, Discord, Lark) via the Satori Protocol, featuring a temporary internal core and PGlite-based persistence. The Telegram bot allows AI interaction within Telegram, supporting vision models and embeddings via Ollama, and includes deployment configurations for Prometheus and Tempo monitoring.

integrations · high confidence

New macOS 26 platform simulation with dock-aware window anchoring and liquid-glass effects

The Stage Tamagotchi Browser now includes a new macOS 26 platform simulation layer. This adds a \PlatformRoot\ component that renders a macOS-style desktop environment, complete with a \Dock\ and \MenuBar\. A key behavioral update is the \WindowRoot\ component, which now supports dock-aware window anchoring; when anchored to corners like 'bottom-right', windows automatically adjust their position to avoid overlapping the dock by calculating a usable work area. The simulation also features a 'liquid-glass' visual effect, implemented via SVG filters and a \Refractive\ component, to apply realistic glass-like refraction and specular highlights to window frames.

packages/scenarios-stage-tamagotchi-browser · high confidence

New main-process utilities for debugging, logging, platform detection, and single-instance control

The app now includes dedicated modules in the main process to improve developer experience and runtime stability. A debugger module enables configurable remote CDP debugging via environment variables, allowing developers to attach external tools and optionally auto-open the inspector. A file logger creates timestamped session logs in the userData directory, ensuring persistent records for troubleshooting. Platform detection logic correctly resolves Wayland vs. X11 status by prioritizing explicit Ozone flags over environment variables, fixing display behavior on Wayland systems. Finally, a single-instance guard prevents duplicate desktop processes from launching, focusing the existing window instead to avoid resource conflicts.

apps/stage-tamagotchi/src/main/app · high confidence

New plugin SDK for Tamagotchi extensions

The \packages/plugin-sdk-tamagotchi\ package has been introduced to provide extension authors with a structured API for building Tamagotchi plugins. It exposes a \gameletKit\ for mounting and orchestrating iframe-based gamelet UIs, and a \toolKit\ for registering tools and toolset prompts with the host. The SDK handles the underlying communication contracts, including a dedicated Eventa channel for gamelet iframe requests and a widget bridge for UI iframes, while managing the serialization of tool schemas and host data records.

packages/plugin-sdk-tamagotchi · high confidence

New plugin-protocol package for shared plugin communication contracts

A new \@proj-airi/plugin-protocol\ package has been introduced to provide canonical protocol contracts for plugin-to-host communication. This package defines the WebSocket event names and payload types used for module and extension orchestration, including specific interfaces for plugin, module, extension, and kit identities, as well as dynamic module contributions and configuration schemas. It exposes these definitions via \@proj-airi/plugin-protocol/types\ to ensure event name stability and matching payload definitions across server and plugin runtimes, supported by unit tests that verify the distinct IDs for peer authentication and extension announcements.

packages/plugin-protocol · high confidence

New release artifact and update metadata scripts

The \apps/stage-tamagotchi/scripts\ directory now includes a suite of new scripts to manage release artifacts and update metadata. \rename-artifacts.ts\ and \artifacts-metadata.ts\ handle the renaming of build outputs to standardized release filenames and provide CLI utilities to query artifact details. \regenerate-windows-latest.ts\ and \merge-latest-mac.ts\ automate the generation and merging of auto-update manifest files (\latest.yml\/\latest-mac.yml\) for Windows and macOS, ensuring correct hashes and URLs. Additionally, \update-readme-download-links.ts\ automatically updates download links in README files to point to the latest GitHub releases, and \desktop-overlay-live-window-smoke.ts\ along with its test file introduces a new smoke test for the desktop overlay feature.

apps/stage-tamagotchi/scripts · high confidence

New resource loading status indicator on the stage

A new 'resource-status-island' component has been added to the stage interface, providing users with real-time feedback on module loading progress. This pill-shaped UI element displays a 'Resources loading...' or 'Ready!' status and, when clicked, opens a tooltip that lists individual modules, their specific file-level progress bars, and any availability reasons. The component is designed to be non-intrusive, using pointer-events-none on its container to ensure clicks pass through to the stage background when not interacting with the status pill itself.

apps/stage-tamagotchi/src/renderer/components/stage-islands/resource-status-island · high confidence

New shared stage-pages package and context-flow devtools

The \@proj-airi/stage-pages\ package is introduced to host route-level Vue pages shared across multiple AIRI stage applications, providing a centralized location for reusable page behavior and route structure. This release adds a comprehensive Context Flow devtools interface, featuring components to visualize active context buckets, track context lifecycle events, inspect prompt projections, and monitor runtime coordination (WebSocket status, pending sends, and broadcast activity). It also includes a Beat Sync playground for tuning animation styles and a general settings component that exposes theme, language, and analytics controls.

packages/stage-pages · high confidence

New shared utilities for MCP config validation, model settings, and diagnostics

The shared module now includes a Zod-based validation layer for MCP stdio server configurations (mcp-config.ts), ensuring that JSON drafts and persisted files conform to the expected schema before use. It introduces a runtime communication channel (model-settings-runtime.ts) for synchronizing Live2D expression settings between the stage renderer and the UI. Additionally, new files provide diagnostic snapshots for screen ambient light capture (screen-ambient-light-diagnostics.ts), a helper to validate spotlight shortcut accelerators (spotlight-shortcut.ts), and infrastructure for a desktop overlay smoke test (desktop-overlay-live-window-smoke.ts and desktop-overlay-heartbeat.ts).

apps/stage-tamagotchi/src/shared · high confidence

New shared utilities for window animation, display anchoring, and lifecycle management

The \apps/stage-tamagotchi/src/main/windows/shared\ directory now provides a suite of shared utilities for managing Electron windows. This includes an \Animator\ class that smoothly animates window position changes while applying target sizes and preventing animations on destroyed windows. Display utilities (\display.ts\) introduce robust logic for centering windows within work areas and anchoring resize operations to the dominant display, ensuring windows stay visible across multi-monitor setups. A \ReferencedWindowManager\ simplifies the creation and lifecycle management of named, reusable windows (such as notices or widgets) by handling context binding and safe closing. Additionally, \window.ts\ adds platform-aware always-on-top handling, safe external link navigation guards, and precise delta-based resize calculations that respect minimum size constraints.

apps/stage-tamagotchi/src/main/windows/shared · high confidence

New standalone auth UI modules for server-side OIDC flows

The \apps/ui-server-auth/src/modules\ directory now contains the core logic for the standalone authentication UI, including a provider-neutral analytics client that tracks anonymous milestones (like \signup\_form\_completed\) separately from server-side canonical events, a cookie-based Better Auth client factory, and dedicated modules for email/password flows, user profile management, and social sign-in (including Steam OpenID). It also introduces a bootstrap context resolver that safely extracts trusted API server origins from server redirects and normalizes redirect paths under the \/ui\ base, ensuring secure and correct navigation for OIDC handoffs.

apps/ui-server-auth/src/modules · high confidence

New stores for background management, performance monitoring, and PWA updates

The application introduces three new Pinia stores in the stage-web frontend. The \background\ store re-exports background-related types and logic from the shared \stage-layouts\ package to centralize background state. A new \devtools-lag\ store provides a performance visualizer that samples FPS, frame duration, long tasks, and memory usage, allowing users to record and analyze performance metrics over a sliding window. Additionally, a \pwa\ store handles service worker updates by displaying a toast notification (using \ToasterPWAUpdateReady\) when a new version is ready, with logic to skip this prompt in specific environments like Hugging Face Spaces.

apps/stage-web/src/stores · high confidence

New system settings pages for developer tools and window shortcuts

The application now includes dedicated settings pages under the System section to manage developer utilities and global shortcuts. The Developer page provides a centralized menu to access various inspection and testing tools, including context flow, beat sync visualization, live2d motion, websocket inspection, plugin host debugging, and screen capture. Additionally, a new Window Shortcuts page allows users to configure and record global keyboard shortcuts for the spotlight feature, with validation and conflict handling.

apps/stage-tamagotchi/src/renderer/pages/settings/system · high confidence

New utility functions for stage interaction, voice input, and resource management

This change introduces several new utility modules in the renderer's utils directory to support stage interaction logic, voice input lifecycle management, and safe resource handling. The \fade-on-hover\ and \stage-three-transparency\ utilities determine when the stage window should fade and allow click-through to underlying applications based on hover state and transparency. The \voice-input-lifecycle\ module serializes microphone start/stop operations to prevent race conditions and ensure errors are properly propagated, while \voice-input-suppression\ handles muting input during and after assistant speech to prevent echo. Additionally, \create-object-url-from-bytes\ provides a safe way to generate blob URLs from byte arrays without leaking buffer data, and \windows.ts\ provides stubs for click-through control.

apps/stage-tamagotchi/src/renderer/utils · high confidence

New utility functions for window geometry and size normalization

Added two new utility modules in the shared utils directory to handle window management logic. The \display.ts\ module introduces functions to calculate the dominant display area for cross-screen windows and to clamp window bounds within a specific rectangle, ensuring windows stay within usable screen areas. The \window-size.ts\ module provides a normalization function that sanitizes widget window size inputs by validating dimensions and flooring numeric values, preparing them for application in Electron windows.

apps/stage-tamagotchi/src/shared/utils · high confidence

New visual rendering for text and image journal tool calls

The chat interface now includes a dedicated renderer for journal-related tool calls, providing structured and visual feedback for text and image entries. When a text journal is created, the UI displays a 'Saved to long-term memory' badge and renders the content as formatted Markdown. For image journals, it shows a status badge indicating the mode (e.g., 'Updating Scene' for background or 'Generating image' for inline), renders the prompt as Markdown, and displays the generated image in a clickable card that opens a preview. This component handles both successful results and error states, ensuring users see clear, contextual information for these specific AI actions.

apps/stage-tamagotchi/src/renderer/components/chat-tool-renderers · high confidence

New weather widget with animated icons and skeleton loading states

The weather widget in the stage-tamagotchi app has been updated to include a new \Weather\ component that displays dynamic weather conditions using animated SVG icons (such as rotating suns for clear days) and supports various weather effects like rain, snow, and fog. The widget now features a \Skeleton\ component that provides pulse and wave animation placeholders during loading states, improving the user experience while data is being fetched. Additionally, the widget includes a comprehensive mapping system to normalize weather condition strings into specific icons and effects, ensuring consistent visual representation across different weather scenarios.

apps/stage-tamagotchi/src/renderer/widgets/weather · high confidence

Procedural motion generation for Live2D models

This change introduces a new capability for generating procedural, AI-driven motion for Live2D characters. It adds the \@proj-airi/motion-driver-magic\ package, which fits VAR and AR-HMM statistical models to recorded motion sequences to produce continuous, seeded procedural motion frames. It also adds the \@proj-airi/model-driver-magic-live2d\ package, which drives the Live2D target with these generated poses, applying fixed-rate scheduling, output filtering (cutoff and EMA smoothing), and pose conversion. Additionally, a new \Live2DSystemAudioLipSyncDriver\ is added to the stage-tamagotchi app, enabling lipsync by capturing system audio via Electron's screen capture API and converting it into Live2D mouth movements.

(repo-wide) · high confidence

Registers chat window RPC services and devtools handler

The chat window now explicitly registers its RPC services by invoking the widget and MCP server service creators, ensuring these capabilities are available to the renderer process. Additionally, a handler is defined to allow opening the main process devtools from the chat window interface.

apps/stage-tamagotchi/src/main/windows/chat/rpc · high confidence

Stage Pocket app initialization and onboarding flow

The Stage Pocket application now initializes its core services, including analytics (via OpenPanel), authentication, and device settings, upon launch. Users will encounter a new onboarding flow that includes a permissions request step and an analytics notice, ensuring proper setup before accessing the main interface. The app also handles deep links for authentication and manages UI transitions and toast notifications.

apps/stage-pocket/src · high confidence

Support for detached DevTools windows with custom positioning

The application now supports opening the DevTools as a separate, detached window. This new capability allows users to specify custom dimensions (width, height) and screen coordinates (x, y) when opening the DevTools, enabling flexible window management. The implementation introduces a reusable window manager that handles window lifecycle, applies security protections for privileged navigation, and initializes screen capture capabilities for the detached view.

apps/stage-tamagotchi/src/main/windows/devtools · high confidence

Tamagotchi mode now registers and manages built-in, MCP, and plugin tools

The Tamagotchi application now includes dedicated Pinia stores to manage AI tools within its specific context. The new \useTamagotchiBuiltinToolsStore\ registers built-in capabilities such as image journaling, weather, widgets, and desktop computer use, with computer-use tools requiring explicit user selection. Additionally, \useTamagotchiMcpToolsStore\ and \useTamagotchiPluginToolsStore\ handle the dynamic loading, execution proxying, and cleanup of Model Context Protocol (MCP) tools and third-party plugin tools respectively. The plugin store includes a 5-second timeout to prevent startup hangs if tool listing fails, ensuring a smoother initialization experience.

apps/stage-tamagotchi/src/renderer/stores/tools · high confidence

Tamagotchi renderer composable overhaul and new features

The \apps/stage-tamagotchi/src/renderer/composables\ directory has been completely rewritten to support new Tamagotchi capabilities and fix platform-specific issues. Language persistence now correctly restores the user's locale from the main process on Electron restarts, preventing fallback to the OS locale (\#1658). Live2D expression settings are now properly synchronized between the settings window and the stage via a runtime owner channel, ensuring commands are applied to the correct model instance (\#2450). A new floating chat window feature includes click-through logic that correctly handles pointer events over transparent areas and dismisses overlays when the chat folds. Additionally, the renderer now supports chat draft handover between windows, ambient light diagnostics, and scroll position restoration across routes.

apps/stage-tamagotchi/src/renderer/composables · high confidence

macOS accessibility tree capture and app alias resolution

The computer-use-mcp service now captures macOS application accessibility trees via an inline Swift script (using the AXUIElement API) and provides utilities to resolve application name aliases (e.g., mapping 'VS Code' to 'Visual Studio Code'). This includes new modules for formatting accessibility snapshots as text, finding nodes by unique ID, and normalizing app names for actions like opening or focusing applications.

services/computer-use-mcp · high confidence

Removals

Removal of Live2D avatar and audio-visual components

The Live2D character viewer (Live2DViewer.vue) and the main chat interface with audio waveform visualization (MainStage.vue) have been removed from the application. This eliminates the interactive 3D avatar that previously synchronized its mouth movements with text-to-speech audio output, as well as the associated audio processing and streaming logic within the main stage component.

components · high confidence

Removal of legacy composables

The \useCount\ composable for managing a simple counter state and the \useUserStore\ Pinia store for managing user name history have been removed from the application. This cleanup eliminates unused state management logic related to counting and user profile tracking.

composables · high confidence

Removed application name and description constants

The constants file containing the application name ('Vitesse for Nuxt 3') and description has been deleted. This removes the centralized export of these string values, likely as part of a cleanup or refactoring effort where these constants are no longer needed or have been moved elsewhere.

constants · high confidence

Architecture

Extract runtime-neutral provider inference package

The \@proj-airi/provider-inference\ package has been introduced to host runtime-neutral provider definitions, separating them from the \stage-ui\ application layer. This package provides a portable registry of cloud and local providers (such as OpenAI, Anthropic, and Amazon Bedrock) that can execute in both Node.js and Browser environments without depending on Vue, Pinia, or browser persistence APIs. It exposes a unified interface for listing providers, creating provider instances, and managing generation protocols (Chat Completions vs. Responses API), while explicitly excluding UI views, state management, and authentication concerns which remain in \stage-ui\.

packages/provider-inference · high confidence

Plugin IPC contracts reorganized into domain-specific modules

The plugin inter-process communication (IPC) definitions in the shared Eventa layer have been split into focused modules (host, capabilities, tools, assets) to improve code organization. This change groups related contracts—such as plugin lifecycle management, capability state updates, tool definitions, and asset base URLs—into separate files while maintaining backward compatibility through a central barrel that re-exports all existing definitions. Users and developers importing from the shared eventa plugin module will see no functional changes, but the internal structure now clearly separates concerns for easier maintenance and future extension.

apps/stage-tamagotchi/src/shared/eventa/plugin · high confidence

iOS workspace configuration initialized

The iOS application workspace has been initialized with standard Xcode configuration files, including the workspace data and IDE workspace checks plist. This establishes the foundational project structure for the iOS build environment.

apps/stage-pocket/ios/App/App.xcodeproj/project.xcworkspace · high confidence

Behavioural changes

Centralized RPC handler setup for the main window

The main window now uses a dedicated RPC setup module to register IPC invoke handlers for core features including the chat window, settings, editor, auto-updater, MCP servers, Godot stage, onboarding, and authentication. This centralizes how the main window communicates with the renderer process, replacing previous ad-hoc IPC registrations with a structured, context-based approach using the @moeru/eventa library.

apps/stage-tamagotchi/src/main/windows/main/rpc · high confidence

Centralized built-in kit runtime registration for the Airi extension host

The Airi extension host now uses a dedicated \createBuiltInExtensionKitRuntime\ module to manage the registration of built-in kits (widget, gamelet, and tool kits). This change decouples kit registration logic from the host bootstrap process, providing a cleaner API for registering kit APIs and managing associated resources like the tool registry and gamelet orchestration runtime. Users benefit from a more modular and maintainable plugin system where kit integration is handled through a unified runtime interface.

apps/stage-tamagotchi/src/main/services/airi/plugins/kits · high confidence

Centralized global styles and transition animations

The application now uses a centralized \main.css\ entry point that imports the UI library's base styles and defines global CSS variables for light and dark themes. This change introduces specific mobile optimizations, including disabling double-tap zoom and preventing overscroll behavior, while also ensuring the nprogress loading bar is hidden when the app is installed as a PWA. Additionally, dedicated CSS files for Vue transition animations (slide-away and fade-slide effects) have been added to standardize visual feedback during navigation.

apps/stage-web/src/styles · high confidence

Controls island is rebuilt with adaptive placement, overflow handling, and new controls

The controls island has been completely rewritten to feature adaptive placement that automatically docks to the screen corner opposite the main window, with a smooth transition animation and a 1-second settle delay to prevent jitter. The new layout includes robust overflow handling to ensure all controls remain reachable in small windows, a fade-on-hover toggle to hide the island when not in use, and a speech mute button that stops playback. It also integrates a profile switcher, an authentication button showing user credits, and a chat toggle, all wrapped in a consistent UI with improved tooltips and icon sizing.

apps/stage-tamagotchi/src/renderer/components/stage-islands/controls-island · high confidence

Dependency patches for responses SDK, Minecraft bot, Live2D, and build tools

This update applies several dependency patches to fix behaviors and improve stability. The @xsai-ext/responses SDK is patched to support native web search tools, handle reasoning text events, await asynchronous callbacks, and correctly translate chat tool outputs. The mineflayer pathfinding library is enhanced with lava avoidance, stuck detection with retry limits, and fixes for door collisions and block placement. The pixi-live2d-display library is patched to ignore the items\_pinned\_to\_model.json file during model loading and fix path validation. The uiohook-napi patch removes the build script to use prebuilt binaries, and the tab-election patch fixes race conditions in leader election and call delivery.

patches · high confidence

Desktop overlay window readiness reporting

The desktop overlay window now exposes a readiness contract that allows the renderer to poll its boot status. The overlay initializes by setting up base window services and MCP tool services; it reports a 'ready' state once these are successfully wired, or a 'degraded' state with an error message if initialization fails, ensuring the window opens gracefully even when background services encounter issues.

apps/stage-tamagotchi/src/main/windows/desktop-overlay/rpc · high confidence

Extension host now imports plugins from directories and manages widget asset URLs

The extension host in the Tamagotchi app now supports importing plugins directly from local folders via a new directory importer that validates and copies extension packages into a managed registry. This importer enforces strict security limits (e.g., 512 MiB size cap, no symlinks) and uses a new manifest format (\extension.airi.json\). Additionally, the widget kit now handles rewriting iframe asset URLs to use mounted static asset paths, enabling proper asset serving for plugin widgets within the Electron environment.

apps/stage-tamagotchi/src/main/services/airi/plugins/host, apps/stage-tamagotchi/src/main/services/airi/plugins/kits/widget · high confidence

Hide inactive title bar info icon

The title bar component now hides the info icon that was previously visible in the inactive state. This change ensures the interface remains uncluttered until the associated collapse feature is implemented, as indicated by the commented-out code and internal notes.

apps/stage-tamagotchi/src/renderer/components/Window · high confidence

Improved mobile keyboard layout stability and new dark mode branding

The stage-layouts package now includes a new adaptive input geometry system that resolves mobile keyboard overlap and Safari-specific viewport issues, ensuring chat inputs remain visible and correctly positioned during keyboard open/close cycles. Additionally, a new dark mode logo asset has been added to support the application's branding in dark themes.

packages/stage-layouts · high confidence

Introduce first-time setup onboarding and dynamic theming in the web app

The web application now launches with a first-time setup onboarding flow that guides users through initial configuration, including an analytics consent step. The app's visual theme is now dynamic, allowing users to adjust the primary color hue, which automatically updates the interface's primary, secondary, and tertiary colors in both light and dark modes. Additionally, the app initializes core services like authentication, chat, and inference preloading on mount, and integrates OpenPanel for analytics tracking.

apps/stage-web/src · high confidence

Introduces a dedicated background window for beat-sync audio capture

The beat-sync feature now runs in its own hidden Electron background window rather than being embedded in the main application window. This new window initializes screen capture utilities via the preload script and applies privileged navigation protection, isolating the audio detection and capture logic to improve stability and security boundaries.

apps/stage-tamagotchi/src/main/windows/beat-sync · high confidence

Main window animates to avoid overlap when onboarding opens

When the onboarding window is opened, the main application window now automatically animates to an adjacent position to prevent visual overlap. This behavior is triggered by the new onboarding service in the main process, which calculates a suitable adjacent position based on the onboarding window's bounds and the display's work area, then moves the main window using a 350ms animation. If the user manually moves or resizes the main window during this process, the automatic repositioning is cancelled. Once the onboarding window is closed, the main window animates back to its original position, provided the user did not move it manually.

apps/stage-tamagotchi/src/main/services/airi/onboarding · high confidence

Main window now persists position and size, and hides instead of closing

The main application window now remembers its last position and size across restarts, restoring the window to the same location and dimensions when reopened. Additionally, clicking the close button no longer quits the application; instead, the window is hidden to the system tray, allowing users to quickly restore it without restarting the app.

apps/stage-tamagotchi/src/main/windows/main · high confidence

New Pinia stores for UI preferences, resource tracking, and window lifecycle

The renderer now uses dedicated Pinia stores to manage application state: a new controls-island store persists the user's preference for the 'Fade on Hover' feature and the 'Don't show again' notice; a resources store tracks module and component loading progress with delayed visibility flags; a window lifecycle store monitors window visibility and minimization to determine when the stage should pause (specifically avoiding pauses during virtual desktop switches); and a window store provides window dimensions and Live2D-specific mouse coordinates. Tests have been added for the diagnostics and lifecycle logic.

apps/stage-tamagotchi/src/renderer/stores · high confidence

New WebSocket status indicator and stabilized connection animation

The Stage Pocket app now includes a new WebSocket status button that displays the connection state (connected/disconnected) with distinct visual styling and tooltips, allowing users to quickly check connectivity and navigate to settings. Additionally, a new IconAnimation component has been introduced to stabilize the connection status animation, ensuring smoother visual feedback during state changes. The AudioWaveform component was also updated to use the shared theme store for dark mode detection and improved type safety for the analyser data buffer.

apps/stage-pocket/src/components · high confidence

New app styling and transition effects

The Stage Pocket app now includes a dedicated stylesheet (main.css) that defines light and dark mode background colors, disables double-tap zoom on touch devices, and enables a transparent background when the app is rendered within a native container (indicated by the .airi-native-transparent-surface class). Additionally, new transition styles have been added for slide-away animations and Vue-specific fade/slide effects, enhancing the visual feedback during navigation and state changes.

apps/stage-pocket/src/styles · high confidence

New layout components for the Tamagotchi app

The Tamagotchi renderer now includes dedicated layout files (default, settings, and stage) to structure the user interface. The new settings layout introduces a window title bar, a page header with dynamic title/subtitle resolution (including provider-specific titles), and scroll-position restoration, while the default and stage layouts provide basic container structures for routing views.

apps/stage-tamagotchi/src/renderer/layouts · high confidence

Performance visualizer now shows FPS history and separates recording from export

The Devtools performance overlay now includes an FPS history chart that preserves time-based spacing to accurately represent frame stalls, along with min/max statistics. Additionally, the behavior for stopping a recording has been corrected: stopping the recording no longer triggers a CSV export, ensuring that recording and data export are distinct actions.

apps/stage-web/src/components/Devtools · high confidence

Persistent language selection in Tamagotchi app

The Tamagotchi application now remembers the user's language preference across sessions. The i18n service initializes the locale from the persisted app configuration and registers handlers to save any language changes made during the runtime back to the configuration file, ensuring the setting is not lost when the application restarts.

apps/stage-tamagotchi/src/main/services/airi/i18n · high confidence

Refactored About window with auto-updater integration and improved security boundaries

The About window implementation has been refactored to integrate the auto-updater service, allowing users to check for and receive updates directly from the About dialog. The window setup now uses a reusable window pattern and explicitly protects privileged navigation to prevent auxiliary renderer request storms. Additionally, the change hardens local service boundaries by registering IPC handlers before the window loads and applying sandboxing configurations, ensuring a more secure and stable user experience when accessing application information.

apps/stage-tamagotchi/src/main/windows/about · medium confidence

Removal of audio and LLM state management stores

The application has removed the \stores/audio.ts\ and \stores/llm.ts\ files, eliminating the Pinia-based state management for the global AudioContext and the OpenAI LLM integration. This removes the ability to manage audio context and stream text via OpenAI directly from these specific store modules, indicating a shift away from this implementation or a consolidation of these capabilities elsewhere.

stores · high confidence

Removal of legacy catch-all and index page components

The application has removed the previous catch-all route handler (pages/\[...all\].vue) that displayed a generic 'Not found' warning and the main index page (pages/index.vue) which rendered the MainStage component with a loading fallback. These files are no longer part of the routing structure, indicating a shift in how navigation and the initial view are handled.

pages · high confidence

Rename stage-capacitor to stage-pocket

The application previously known as stage-capacitor has been renamed to stage-pocket. This change includes the addition of iOS launch and main storyboards, a Swift Package Manager configuration for Capacitor dependencies, and the introduction of a background store module that re-exports types and hooks from the stage-layouts package.

(repo-wide) · high confidence

Server codebase restructured into independent folder with local dev stack and documentation

The server source has been moved into a dedicated \server/\ directory, establishing a new project layout that separates the Resource API (\apps/api\) and Auth service (\apps/auth\) while keeping shared packages in \packages/\. To support local development, a \docker-compose.yaml\ file and a Caddy edge router configuration have been added, allowing the full backend stack (API, Auth, PostgreSQL, Redis, and Caddy) to be started with a single command. The move is accompanied by new \AGENTS.md\ and \README.md\ files that document the runtime contracts, architecture decision record (ADR) locations, and deployment boundaries. As part of this restructuring, the legacy \server/api/v1/llm/voice/text-to-speech.ts\ endpoint has been removed.

server · high confidence

Settings window IPC handlers migrated to Eventa

The settings window now uses the Eventa framework to manage its IPC handlers, replacing the previous implementation. This change wires up core services—including widgets, auto-updater, MCP servers, Godot stage, and authentication—to the settings window context, and registers handlers for window centering, spotlight shortcuts, and devtools opening.

apps/stage-tamagotchi/src/main/windows/settings/rpc · high confidence

Spark agents moved to core-agent with provider-compatible tool schemas

The spark-command and spark-notify agents have been relocated from the UI layer into the core-agent package, centralizing the scheduling, context composition, and generation logic. The spark-command tool now uses a provider-facing schema that avoids dynamic property names and preserves heterogeneous nullable metadata unions, ensuring compatibility with strict providers like Azure OpenAI while maintaining canonical forms for others. The spark-notify agent now supports configurable runtime policies that allow hosts to force text-only responses, force spark-command responses, or enable full tool execution, and it exposes composable plugins for handling reactions, observing runtime events, and managing built-in tools.

packages/core-agent · high confidence

Stage Pocket public assets and configuration

The Stage Pocket application now includes its public asset directory, featuring a new SVG favicon, HTTP headers for long-term caching of static assets, and redirect rules that normalize legacy Chinese documentation URLs (e.g., /docs/zh-hans/) to the current locale format.

apps/stage-pocket/public · high confidence

Tamagotchi renderer restructured with dedicated window contexts and beat-sync background

The Tamagotchi renderer has been reorganized to support distinct window types (main, settings, widgets, spotlight, floating chat) via a new window-context system that resolves leadership and runtime scope from URL queries, preventing race conditions during initialization. A new background window for beat-sync has been introduced to handle audio detection independently, and the chat window style menu now correctly manages preference synchronization and UI state. These changes improve stability, reduce request storms, and enable specialized renderer behaviors for different Stage modes.

apps/stage-tamagotchi/src/renderer · high confidence

Unified browser-side inference infrastructure with resilience and resource management

The browser-side inference layer has been restructured around a unified protocol, introducing dedicated adapters for Kokoro (TTS), Whisper (ASR), and background removal that offload processing to Web Workers and support cancellation via AbortController. To improve stability, adapters now feature automatic worker restarts on failure, track WebGPU device-loss events to trigger WASM fallbacks after repeated crashes, and use a centralized GPU resource coordinator to manage VRAM budgets and emit memory pressure warnings. A global load queue ensures models load sequentially with priority ordering, while new cache utilities allow users to view and clear stored model files.

packages/stage-ui/src/libs/inference · high confidence

Unified preload API exposure with custom API support

The preload script now uses a shared module to consistently expose Electron APIs and platform information to the renderer process. It introduces a new \exposeWithCustomAPI\ function that allows specific custom APIs to be exposed alongside the standard Electron interface, improving type safety and structure for preload-to-renderer communication.

apps/stage-tamagotchi/src/preload · high confidence

Updated brand logo assets

The application's visual identity has been updated with new SVG logo files for both light and dark modes. The new designs feature a refined abstract shape with updated color palettes (including shades like \#F1D0DB, \#EC92AD, and \#FFF4F4) and structural changes to the paths, replacing the previous logo assets in the \apps/stage-web/src/assets\ directory.

apps/stage-web/src/assets · high confidence

Updated site assets and configuration for Cloudflare Workers

The stage-web public directory now includes configuration files required for the migration to Cloudflare Workers. A new \_headers file sets long-term immutable caching for assets, while \_redirects handles internationalization by normalizing legacy zh-hans paths to zh-Hans and redirecting /docs/ to /docs/en/. The directory also introduces an .assetsignore file to exclude build artifacts and a new SVG favicon.

apps/stage-web/public · high confidence

Voice Activity Detection (VAD) logic moved to dedicated worker module

The Voice Activity Detection implementation has been reorganized into a new \apps/stage-web/src/workers/vad\ directory. This change introduces a dedicated AudioWorklet processor (\process.worklet.ts\) for efficient audio chunk handling and a VAD class (\vad.ts\) that integrates the Silero VAD model via \@huggingface/transformers\. The module exports a state manager and types, centralizing the VAD functionality previously scattered across the application.

apps/stage-web/src/workers · high confidence

Widget window lifecycle and iframe request coordination

The widget system now enforces strict window lifecycle management and reliable iframe communication. Widget windows are properly destroyed when their time-to-live expires or when the widget is removed, preventing orphaned windows and stale renderer states. Each widget instance is isolated to its own window context, ensuring that updates or removals do not affect other widgets. Additionally, a new iframe request coordinator handles asynchronous communication between the main process and widget iframes, providing correlation, timeout handling, and cleanup when widgets are closed.

apps/stage-tamagotchi/src/main/windows/widgets · high confidence

iOS build configuration and signing setup for Stage Pocket

The iOS project for Stage Pocket now includes essential configuration files to support code signing and archiving. An ExportOptions.plist file has been added to define the app-store-connect distribution method, manual signing style, and specific provisioning profiles for the team. A .gitignore file is introduced to exclude build artifacts, derived data, and generated Capacitor config files from version control. Additionally, a debug.xcconfig file enables Capacitor debug mode for the iOS target.

apps/stage-pocket/ios · high confidence

macOS build now includes microphone and camera entitlements

The macOS build configuration for the Tamagotchi app now includes an entitlements file that explicitly grants access to the microphone, camera, audio input, and Bluetooth. This change ensures the application can request these hardware permissions correctly during installation and runtime on macOS.

apps/stage-tamagotchi/build · high confidence

Fixes

1 commit (1 fix) fixing apps/stage-tamagotchi/src/renderer/public

A fix in apps/stage-tamagotchi/src/renderer/public — 1 commit (1 fix), 1 file.

apps/stage-tamagotchi/src/renderer/public · low confidence · unverified

Add core i18n initialization logic for the Tamagotchi app

The \apps/stage-tamagotchi/src/main/libs/i18n/index.ts\ file has been added to provide the core context and translation function (\createI18n\) required for internationalization. This implementation wraps \@intlify/core\ to manage locale signals and translation keys, ensuring the main process has the necessary infrastructure to handle localized strings.

apps/stage-tamagotchi/src/main/libs/i18n · high confidence

Add missing account settings page route

A new account settings page has been added to the Stage Pocket application, accessible via the route defined in \apps/stage-pocket/src/pages/settings/account/index.vue\. This page integrates with the existing \AccountSettingsPage\ component and provides handlers for login and logout actions, utilizing the auth store and router to manage user sessions and navigation back to the main settings view.

apps/stage-pocket/src/pages/settings/account · high confidence

Fix Electron navigation errors and config save collisions in the Tamagotchi app

The Tamagotchi app now handles Electron hash-route navigation failures gracefully by catching and ignoring false-positive ERR\_ABORT errors, preventing crashes when loading routes like /settings. Additionally, configuration persistence has been hardened to use unique temporary files for each save operation, eliminating ENOENT errors caused by concurrent save attempts and ensuring config data is no longer lost during rapid updates.

apps/stage-tamagotchi/src/main/libs/electron · high confidence

Fixes race conditions in Electron OIDC authentication flow

The authentication service in the Stage Tamagotchi app now correctly handles concurrent login attempts, window closures, and logout actions by discarding stale token exchanges. Previously, closing a loopback server or starting a new login could leave orphaned requests or allow outdated tokens to overwrite current sessions. The new implementation ensures that only the most recent login attempt receives the authentication callback, and any in-flight exchanges are safely cancelled if the owning window closes or a new login begins.

apps/stage-tamagotchi/src/main/services/airi · high confidence

Improved reliability of server channel configuration changes

The server channel settings store now rolls back optimistic UI changes if applying the configuration to the main process fails, preventing the app from getting stuck in an invalid state. Additionally, the store now waits for the main process to fully accept the new configuration before updating the published state, which resolves issues where dependent components (like the QR card) would read stale or loopback values during the server restart.

apps/stage-tamagotchi/src/renderer/stores/settings · high confidence

Test coverage

Added test setup for Live2D Cubism runtime; Added tests for strict tool schema validation matchers; Added unit tests for environment parsing, request authentication, and WebSocket authorization.

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

Score

  • CAI 37 → 52 (+15.7)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 60 → 57 (-3.5)
  • Architecture 47 → 68 (+21.4)
  • Maturity 63 → 85 (+22.4)
  • Readiness 20 → 41 (+21.9)
  • Security 53 → 61 (+7.6)

Resolved (135)

  • Boundary-crossing change coupling: App.vue ↔ App.vue (apps/stage-pocket/src/App.vue)
  • Boundary-crossing change coupling: App.vue ↔ App.vue (apps/stage-pocket/src/App.vue)
  • Boundary-crossing change coupling: Live2D.vue ↔ Stage.vue (packages/stage-ui-live2d/src/components/scenes/Live2D.vue)
  • Boundary-crossing change coupling: Live2D.vue ↔ live2d.vue (packages/stage-ui-live2d/src/components/scenes/Live2D.vue)
  • Boundary-crossing change coupling: developer.vue ↔ developer.vue (apps/stage-tamagotchi/src/renderer/pages/settings/system/developer.vue)
  • Boundary-crossing change coupling: i18n.ts ↔ index.ts (apps/stage-web/src/modules/i18n.ts)
  • Boundary-crossing change coupling: index.vue ↔ preview-stage.vue (apps/stage-tamagotchi/src/renderer/pages/index.vue)
  • Boundary-crossing change coupling: main.ts ↔ main.ts (apps/stage-tamagotchi/src/renderer/main.ts)
  • Change coupling: hearing-config-dialog.vue ↔ hearing-config.vue (packages/stage-ui/src/components/scenarios/dialogs/audio-input/hearing-config-dialog.vue)
  • Change coupling: index.ts ↔ index.ts (apps/stage-tamagotchi/src/main/index.ts)
  • Coverage not measured — test suite did not build
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • …and 115 more

New (1032)

  • (anonymous)::readInputValue (cognitive 18) (services/computer-use-mcp/chrome-extension/content.js)
  • (anonymous)::readInputValue (cyclomatic 19) (services/computer-use-mcp/chrome-extension/content.js)
  • AdaptiveInput.measure (cognitive 19) (packages/stage-layouts/src/browser/adaptive-input.ts)
  • AdaptiveInput.measure (cyclomatic 16) (packages/stage-layouts/src/browser/adaptive-input.ts)
  • Analytics.initialize (cognitive 17) (packages/stage-ui/src/libs/product-signals/index.ts)
  • Analytics.initialize (cyclomatic 19) (packages/stage-ui/src/libs/product-signals/index.ts)
  • Brain.buildUserMessage (cognitive 23) (integrations/minecraft/src/cognitive/conscious/brain.ts)
  • Brain.processEvent (cognitive 45) (integrations/minecraft/src/cognitive/conscious/brain.ts)
  • Brain.processEvent (cyclomatic 31) (integrations/minecraft/src/cognitive/conscious/brain.ts)
  • Brain.runControlActionWorker (cognitive 23) (integrations/minecraft/src/cognitive/conscious/brain.ts)
  • CI runs a third-party container image from a mutable tag (.github/workflows/autofix.yaml)
  • Change coupling: api.ts ↔ auth.ts (packages/stage-ui/src/composables/api.ts)
  • Change coupling: app.ts ↔ index.ts (server/apps/api/src/app.ts)
  • Change coupling: brain.ts ↔ pipeline.ts (integrations/minecraft/src/cognitive/conscious/brain.ts)
  • Change coupling: chats.ts ↔ auth.ts (server/apps/api/src/services/domain/chats.ts)
  • Change coupling: definitions.ts ↔ redis-keys.ts (server/apps/api/src/services/adapters/config-kv/definitions.ts)
  • Change coupling: env.ts ↔ origin.ts (server/apps/api/src/libs/env.ts)
  • Change coupling: index.ts ↔ widgets.vue (apps/stage-tamagotchi/src/main/windows/widgets/index.ts)
  • Change coupling: instrumentation.ts ↔ index.ts (server/apps/api/instrumentation.ts)
  • Change coupling: task-executor.ts ↔ brain-prompt.ts (integrations/minecraft/src/cognitive/action/task-executor.ts)
  • …and 1012 more

Changes since last survey

  • 300 commits — 159 feature/other, 141 fixes

By area

  • packages/stage-ui — 78 commits
  • server/apps — 37 commits
  • apps/stage-tamagotchi — 33 commits
  • (root) — 31 commits
  • nix/pnpm-deps-hash.txt — 20 commits
  • packages/stage-layouts — 15 commits
  • docs/content — 11 commits
  • apps/stage-pocket — 9 commits
  • .github/workflows — 6 commits
  • packages/stage-pages — 6 commits
  • .agents/skills — 5 commits
  • apps/stage-web — 5 commits
  • packages/i18n — 5 commits
  • packages/ui — 5 commits
  • packages/stage-ui-live2d — 4 commits
  • nix/assets-hash.txt — 3 commits
  • packages/provider-inference — 3 commits
  • .vscode/settings.json — 2 commits
  • apps/ui-server-auth — 2 commits
  • docs/README.zh-CN.md — 2 commits

Notable commits

  • fix: Revert "fix(stage-layouts): avoid Safari Form Assistant (#2461)"
  • fix: Revert "style: lint"
  • fix: fix(analytics): remove TS product events table (#2306)
  • fix: fix(analytics): remove model discovery events (#2312)
  • fix: fix(analytics): trim automatic product events (#2325)
  • fix: fix(api): allow Apple sandbox purchases for dedicated test accounts (#2674)
  • fix: fix(api): correct gateway and database pool alerts (#2324)
  • fix: fix(api): load Drizzle migrations at runtime (#2307)
  • fix: fix(api): preserve Responses provider fields (#2601)
  • fix: fix(api): recover completed OpenRouter Responses streams (#2593)
  • fix: fix(api): route web search through OpenRouter (#2604)
  • fix: fix(api-server): expire Flux balance cache after one minute (#2562)
  • fix: fix(auth): avoid bridge sessions on token routes (#2614)
  • fix: fix(auth): discard stale authentication requests (#2483)
  • fix: fix(auth): preserve mobile provider hints (#2281)
  • fix: fix(auth): publish login requests on the leader (#2656)
  • fix: fix(auth-server): revoke social authorizations on account deletion (#2221)
  • fix: fix(auth-ui): hide sign-in form during provider handoff (#2282)
  • fix: fix(better-ws): publish the package so server-sdk installs (#2408)
  • fix: fix(ci): pin Node.js to 26.7.0 (#2381)
  • …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

moeru-ai/airi 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 28 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 584a235e436df815450402525c7ce3e0a6df5d0a — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-24a00d372a4b.