v0.9.0-alpha.1
moeru-ai/airiv0.9.0-alpha.1Mar 4, 2026by nekomeowww
AI Summary
Major alpha release introducing a comprehensive Minecraft plugin system (MCP), new packages for plugin SDK and server communication, and new AI providers like MiniMax and Kokoro TTS.
Key Highlights
- Introduced Minecraft MCP implementation
- Added new plugin SDK and server-shared packages
- Added MiniMax chat provider and Kokoro TTS
- Implemented structured ActionError for Minecraft
New Features
- Minecraft MCP integration
- Plugin SDK architecture
- MiniMax chat provider
- Kokoro TTS provider
- Groq provider support
- Structured ActionError
Full Release Notes
## New Contributors * @salmanmkc made their first contribution in https://github.com/moeru-ai/airi/pull/1047 * @Garfield550 made their first contribution in https://github.com/moeru-ai/airi/pull/1053 * @Arizona-dev made their first contribution in https://github.com/moeru-ai/airi/pull/1055 * @liuxiaopai-ai made their first contribution in https://github.com/moeru-ai/airi/pull/1063 * @atian8179 made their first contribution in https://github.com/moeru-ai/airi/pull/1079 * @kiminus made their first contribution in https://github.com/moeru-ai/airi/pull/1088 * @MayoneJY made their first contribution in https://github.com/moeru-ai/airi/pull/1085 * @YoungUsing made their first contribution in https://github.com/moeru-ai/airi/pull/1109 ### š Features - Allow to enable secure websocket for server channel - by @LemonNekoGH in https://github.com/moeru-ai/airi/issues/1014 [<samp>(e4add)</samp>](https://github.com/moeru-ai/airi/commit/e4add70e) - **electron-eventa**: - New package - by @nekomeowww [<samp>(9ffeb)</samp>](https://github.com/moeru-ai/airi/commit/9ffebd23) - **electron-vueuse**: - New package - by @nekomeowww [<samp>(715f9)</samp>](https://github.com/moeru-ai/airi/commit/715f99bf) - **minecraft**: - Introduce structured ActionError for skill failures, implement fail-fast logic in planning, and remove unused planning code. - by @shinohara-rin [<samp>(3b22a)</samp>](https://github.com/moeru-ai/airi/commit/3b22a45b) - Add debug web dashboard - by @shinohara-rin [<samp>(d20bc)</samp>](https://github.com/moeru-ai/airi/commit/d20bcab6) - Async concious - by @shinohara-rin [<samp>(9b698)</samp>](https://github.com/moeru-ai/airi/commit/9b698ae4) - Architecture redesign, blackboard pattern and OODA - by @shinohara-rin [<samp>(8facb)</samp>](https://github.com/moeru-ai/airi/commit/8facbdac) - Better debug server, event queue for the brain - by @shinohara-rin [<samp>(3f113)</samp>](https://github.com/moeru-ai/airi/commit/3f113cf1) - Add require_feedback for actions, updates prompt - by @shinohara-rin [<samp>(311d3)</samp>](https://github.com/moeru-ai/airi/commit/311d3ed0) - Scaffold raw event pipeline with leaky bucket + DI wiring - by @shinohara-rin [<samp>(a3a29)</samp>](https://github.com/moeru-ai/airi/commit/a3a29ae2) - Mineflayer perception collector - by @shinohara-rin [<samp>(ee21a)</samp>](https://github.com/moeru-ai/airi/commit/ee21a678) - Implement raw event pipeline - by @shinohara-rin [<samp>(39a5a)</samp>](https://github.com/moeru-ai/airi/commit/39a5aceb) - Logging for perception pipeline - by @shinohara-rin [<samp>(9b53e)</samp>](https://github.com/moeru-ai/airi/commit/9b53e431) - Stage processors, perception frame - by @shinohara-rin [<samp>(ee0ad)</samp>](https://github.com/moeru-ai/airi/commit/ee0adcaa) - Add tests for perception pipeline - by @shinohara-rin [<samp>(e791d)</samp>](https://github.com/moeru-ai/airi/commit/e791d5c5) - Implement reflex layer and related refactors - by @shinohara-rin [<samp>(585ff)</samp>](https://github.com/moeru-ai/airi/commit/585ff689) - Test for signals - by @shinohara-rin [<samp>(0f343)</samp>](https://github.com/moeru-ai/airi/commit/0f34399b) - Attempt at sliding window for salience detection - by @shinohara-rin [<samp>(bc5e1)</samp>](https://github.com/moeru-ai/airi/commit/bc5e1f42) - Yet another overhaul... i honestly don't know what to feel about this - by @shinohara-rin [<samp>(7158c)</samp>](https://github.com/moeru-ai/airi/commit/7158c55e) - Reflex behaviors WIP - by @shinohara-rin [<samp>(54380)</samp>](https://github.com/moeru-ai/airi/commit/54380744) - Add reflex state to dashboard - by @shinohara-rin [<samp>(07f65)</samp>](https://github.com/moeru-ai/airi/commit/07f65950) - Semantic percetion, belief and state pulling - by @shinohara-rin [<samp>(8beac)</samp>](https://github.com/moeru-ai/airi/commit/8beac18c) - Resizable debug dashboard - by @shinohara-rin [<samp>(7fa30)</samp>](https://github.com/moeru-ai/airi/commit/7fa30759) - Execute tools from dashboard - by @shinohara-rin [<samp>(07097)</samp>](https://github.com/moeru-ai/airi/commit/07097d1f) - Action parallelism with feedback timeout - by @shinohara-rin [<samp>(9c9ba)</samp>](https://github.com/moeru-ai/airi/commit/9c9ba1e7) - Get the block player is looking at - by @shinohara-rin [<samp>(6f63e)</samp>](https://github.com/moeru-ai/airi/commit/6f63e729) - Timestamp in blackboard - by @shinohara-rin [<samp>(6ff24)</samp>](https://github.com/moeru-ai/airi/commit/6ff248c9) - Retry on LLM call failure - by @shinohara-rin [<samp>(9300a)</samp>](https://github.com/moeru-ai/airi/commit/9300a7dc) - Add mineBlockAt tool - by @shinohara-rin [<samp>(59847)</samp>](https://github.com/moeru-ai/airi/commit/59847cf5) - Improve goToCoordinate - by @shinohara-rin [<samp>(200b7)</samp>](https://github.com/moeru-ai/airi/commit/200b783e) - Event on player join, wire up eventbus - by @shinohara-rin [<samp>(c4b35)</samp>](https://github.com/moeru-ai/airi/commit/c4b35f65) - Work mode in reflex if action inflight, so idle behaviors doesn't get played while working - by @shinohara-rin [<samp>(b11bb)</samp>](https://github.com/moeru-ai/airi/commit/b11bb1a7) - Hook up prismarine-viewer - by @shinohara-rin [<samp>(a9dc7)</samp>](https://github.com/moeru-ai/airi/commit/a9dc7d52) - Show reflex mode in dashboard - by @shinohara-rin [<samp>(4133b)</samp>](https://github.com/moeru-ai/airi/commit/4133b90e) - Add social reflex, follow player on chat - by @shinohara-rin [<samp>(e02f7)</samp>](https://github.com/moeru-ai/airi/commit/e02f718a) - Auto respawn - by @shinohara-rin [<samp>(69c61)</samp>](https://github.com/moeru-ai/airi/commit/69c61c1a) - Accept system message - by @shinohara-rin [<samp>(d5303)</samp>](https://github.com/moeru-ai/airi/commit/d53031ff) - Track and display nearby players' held items in context - by @shinohara-rin [<samp>(c77f5)</samp>](https://github.com/moeru-ai/airi/commit/c77f56d8) - Hurt source limitations: the yaml rule doesn't support conditioning... - by @shinohara-rin [<samp>(fc24f)</samp>](https://github.com/moeru-ai/airi/commit/fc24f6e6) - Autocrafter and recepie planner - by @shinohara-rin [<samp>(b4f60)</samp>](https://github.com/moeru-ai/airi/commit/b4f606e5) - Improve error handling and auto-craft intermediates...but it doesn't work very well - by @shinohara-rin [<samp>(d9b99)</samp>](https://github.com/moeru-ai/airi/commit/d9b99bdd) - Use native tool calling for instant tasks - by @shinohara-rin [<samp>(02c39)</samp>](https://github.com/moeru-ai/airi/commit/02c3949a) - Borrow patch from mindcraft - by @shinohara-rin [<samp>(4b8f0)</samp>](https://github.com/moeru-ai/airi/commit/4b8f00ce) - Reasoning hack - by @shinohara-rin [<samp>(62f16)</samp>](https://github.com/moeru-ai/airi/commit/62f16570) - Add rate limit detection and backoff to brain retry logic - by @shinohara-rin [<samp>(b237a)</samp>](https://github.com/moeru-ai/airi/commit/b237ac84) - Back to xsai, again :D - by @shinohara-rin [<samp>(6488a)</samp>](https://github.com/moeru-ai/airi/commit/6488a3b4) - (does it work???)use native reasoning field instead of [REASONING] prefix hack - by @shinohara-rin [<samp>(b20d5)</samp>](https://github.com/moeru-ai/airi/commit/b20d5550) - Add automatic reconnection with configurable retry limit - by @shinohara-rin [<samp>(c250e)</samp>](https://github.com/moeru-ai/airi/commit/c250ecfe) - Use js REPL for llm interface, would could possibly go wrong - by @shinohara-rin [<samp>(4e1ba)</samp>](https://github.com/moeru-ai/airi/commit/4e1ba453) - Run conscious brain in js repl with runtime globals - by @shinohara-rin [<samp>(b02d4)</samp>](https://github.com/moeru-ai/airi/commit/b02d4a9b) - Add giveUp tool with cooldown suppression - by @shinohara-rin [<samp>(e69e6)</samp>](https://github.com/moeru-ai/airi/commit/e69e6608) - `expect` guardrails and a working gaze api - by @shinohara-rin [<samp>(6d7db)</samp>](https://github.com/moeru-ai/airi/commit/6d7db23f) - Add REPL dashboard tab with live execution - by @shinohara-rin [<samp>(cce49)</samp>](https://github.com/moeru-ai/airi/commit/cce492f6) - Capture and expose LLM input snapshot in REPL with source tracking - by @shinohara-rin [<samp>(f70f9)</samp>](https://github.com/moeru-ai/airi/commit/f70f9fac) - Add no-action follow-up system to prevent silent observation loops - by @shinohara-rin [<samp>(13841)</samp>](https://github.com/moeru-ai/airi/commit/1384161f) - Add query DSL for read-only runtime introspection with composable block/entity/inventory queries - by @shinohara-rin [<samp>(e9087)</samp>](https://github.com/moeru-ai/airi/commit/e9087a34) - Expose LLM log to runtime for introspection - by @shinohara-rin [<samp>(4f382)</samp>](https://github.com/moeru-ai/airi/commit/4f382e02) - Extract brain prompt to markdown template with hot-reload support - by @shinohara-rin [<samp>(e7006)</samp>](https://github.com/moeru-ai/airi/commit/e7006763) - Interesting stuff happening! minecraft mcp - by @shinohara-rin [<samp>(10251)</samp>](https://github.com/moeru-ai/airi/commit/10251a9a) - Add llm trace endpoint and compact prompt payloads - by @shinohara-rin [<samp>(b32c2)</samp>](https://github.com/moeru-ai/airi/commit/b32c2cac) - Add forgetConversation runtime function for prompt/debug reset workflows - by @shinohara-rin [<samp>(b5978)</samp>](https://github.com/moeru-ai/airi/commit/b5978a74) - Document forget_conversation and value-first prompt workflow in MCP skill reference - by @shinohara-rin [<samp>(da4af)</samp>](https://github.com/moeru-ai/airi/commit/da4af1b9) - Add query.self/snapshot helpers and inventory count/has/summary methods - by @shinohara-rin [<samp>(5642b)</samp>](https://github.com/moeru-ai/airi/commit/5642b1e2) - Add pause/resume control for cognitive engine via !pause command and Brain.setPaused/togglePaused/isPaused methods - by @shinohara-rin [<samp>(b124d)</samp>](https://github.com/moeru-ai/airi/commit/b124de0f) - Compact brain prompt tool descriptions to reduce token usage - by @shinohara-rin [<samp>(ca109)</samp>](https://github.com/moeru-ai/airi/commit/ca109ba9) - Improve error retry logic with exponential backoff and quota detection - by @shinohara-rin [<samp>(81381)</samp>](https://github.com/moeru-ai/airi/commit/81381353) - Prioritize player chat over stale feedback/follow-ups in brain event queue - by @shinohara-rin [<samp>(ca6f1)</samp>](https://github.com/moeru-ai/airi/commit/ca6f1571) - Add includeBuiltins option to get_state tool to filter REPL builtins by default - by @shinohara-rin [<samp>(8010c)</samp>](https://github.com/moeru-ai/airi/commit/8010c49d) - Add control action queue to brain for async action management with capacity limits - by @shinohara-rin [<samp>(3f059)</samp>](https://github.com/moeru-ai/airi/commit/3f059527) - Add budgeted no-action follow-up system with stagnation detection and player chat reset - by @shinohara-rin [<samp>(0f536)</samp>](https://github.com/moeru-ai/airi/commit/0f536b9e) - Add error-burst guard to prevent LLM error loops with mandatory giveUp+chat recovery - by @shinohara-rin [<samp>(9a35b)</samp>](https://github.com/moeru-ai/airi/commit/9a35b853) - Add live conversation panel with session tracking and processing state - by @shinohara-rin [<samp>(4a354)</samp>](https://github.com/moeru-ai/airi/commit/4a354c35) - Move gaze to perception + query.gaze - by @shinohara-rin [<samp>(942d0)</samp>](https://github.com/moeru-ai/airi/commit/942d0358) - Remove greeting reflex behavior and associated state tracking - by @shinohara-rin [<samp>(6a50b)</samp>](https://github.com/moeru-ai/airi/commit/6a50bcf9) - Add patterns runtime to REPL with block alias support for collect actions - by @shinohara-rin [<samp>(fdb0d)</samp>](https://github.com/moeru-ai/airi/commit/fdb0d26b) - Add map() query DSL for ASCII spatial awareness and terrain visualization - by @shinohara-rin [<samp>(2022c)</samp>](https://github.com/moeru-ai/airi/commit/2022c733) - Add context boundary system with auto-summarization to prevent unbounded conversation history growth - by @shinohara-rin [<samp>(08afe)</samp>](https://github.com/moeru-ai/airi/commit/08afe0f2) - **minecraft-hub**: - Init, but bugged - by @nekomeowww [<samp>(59b27)</samp>](https://github.com/moeru-ai/airi/commit/59b274b9) - **plugin-protocol,server-shared**: - New package - by @nekomeowww [<samp>(ca195)</samp>](https://github.com/moeru-ai/airi/commit/ca195296) - **plugin-sdk**: - Init - by @nekomeowww [<samp>(0e9b0)</samp>](https://github.com/moeru-ai/airi/commit/0e9b0668) - Tsconfig missing - by @nekomeowww [<samp>(31904)</samp>](https://github.com/moeru-ai/airi/commit/31904bc6) - Many more initial impl - by @nekomeowww [<samp>(795e1)</samp>](https://github.com/moeru-ai/airi/commit/795e12f1) - Basic implementation for multi-transport - by @nekomeowww [<samp>(d98b3)</samp>](https://github.com/moeru-ai/airi/commit/d98b3c6a) - Configure vitest - by @sumimakito [<samp>(ebf1b)</samp>](https://github.com/moeru-ai/airi/commit/ebf1bac2) - Utilize details prop for richer o11y on waiting-deps - by @sumimakito [<samp>(ab22a)</samp>](https://github.com/moeru-ai/airi/commit/ab22af58) - Add degraded and withdrawn cap states - by @sumimakito [<samp>(256f3)</samp>](https://github.com/moeru-ai/airi/commit/256f34f7) - Version negotiation with compatibility checks - by @sumimakito [<samp>(c6f9d)</samp>](https://github.com/moeru-ai/airi/commit/c6f9db7c) - **plugin-sdk,stage-tamagotchi**: - Basic file system loader, protocol - by @nekomeowww [<samp>(cae48)</samp>](https://github.com/moeru-ai/airi/commit/cae48f28) - Demo plugin, and plugin inspector - by @nekomeowww [<samp>(e8f61)</samp>](https://github.com/moeru-ai/airi/commit/e8f6155e) - **providers**: - Add MiniMax chat provider (China & Global) - by @gpc123456 in https://github.com/moeru-ai/airi/issues/1032 [<samp>(1c6df)</samp>](https://github.com/moeru-ai/airi/commit/1c6df1c8) - **server**: - Database migration - by @luoling8192 [<samp>(ea050)</samp>](https://github.com/moeru-ai/airi/commit/ea050755) - Health check route - by @luoling8192 [<samp>(f7874)</samp>](https://github.com/moeru-ai/airi/commit/f787485b) - Log api error - by @luoling8192 [<samp>(6c7aa)</samp>](https://github.com/moeru-ai/airi/commit/6c7aa855) - **server-shared**: - Events - by @nekomeowww [<samp>(892c1)</samp>](https://github.com/moeru-ai/airi/commit/892c1a2d) - **stage-***: - Support max fps - by @luoling8192 [<samp>(cfa37)</samp>](https://github.com/moeru-ai/airi/commit/cfa375f3) - Basic mcp implementation - by @BeanDz and **LemonNeko** in https://github.com/moeru-ai/airi/issues/1115 [<samp>(8f490)</samp>](https://github.com/moeru-ai/airi/commit/8f4909db) - **stage-pages**: - Add warning for unavailable indextts2 support in I⦠- by @Misaka-0x447f in https://github.com/moeru-ai/airi/issues/1018 [<samp>(d95dc)</samp>](https://github.com/moeru-ai/airi/commit/d95dc5e0) - **stage-tamagotchi**: - Switch back to .icon app icon for macOS builds - by @sumimakito [<samp>(0f3c9)</samp>](https://github.com/moeru-ai/airi/commit/0f3c9cd9) - Dynamic select macOS app icon while building - by @sumimakito [<samp>(62704)</samp>](https://github.com/moeru-ai/airi/commit/62704872) - Promoted to libs/electron - by @nekomeowww [<samp>(9419a)</samp>](https://github.com/moeru-ai/airi/commit/9419a778) - Dashboard window - by @nekomeowww [<samp>(1d18b)</samp>](https://github.com/moeru-ai/airi/commit/1d18be61) - Popup controls island and better tray with window opts - by @lietblue in https://github.com/moeru-ai/airi/issues/1106 [<samp>(ce00d)</samp>](https://github.com/moeru-ai/airi/commit/ce00df0f) - Hot-reload i18n during Electron runtime - by @nekomeowww [<samp>(a1ff1)</samp>](https://github.com/moeru-ai/airi/commit/a1ff12ce) - **stage-tamagotchi,i18n**: - Localize tray & init Electron i18n - by @nekomeowww [<samp>(a2030)</samp>](https://github.com/moeru-ai/airi/commit/a20309ed) - **stage-ui**: - Add Kokoro TTS (Local) speech provider - by @sebastian-zm in https://github.com/moeru-ai/airi/issues/1005 [<samp>(47e44)</samp>](https://github.com/moeru-ai/airi/commit/47e444bd) - Add Groq to onboarding provider selection - by @Arizona-dev in https://github.com/moeru-ai/airi/issues/1055 [<samp>(4f261)</samp>](https://github.com/moeru-ai/airi/commit/4f2616c8) - **tamagotchi**: - Add reset main window position to system tray - by @kiminus in https://github.com/moeru-ai/airi/issues/1088 [<samp>(42cbd)</samp>](https://github.com/moeru-ai/airi/commit/42cbd18b) ### š Bug Fixes - **channel-server**: - Allow wss on non-localhost - by @LemonNekoGH in https://github.com/moeru-ai/airi/issues/1021 [<samp>(a28c5)</samp>](https://github.com/moeru-ai/airi/commit/a28c5f0e) - **ci**: - Use macos-26 instead of macos-latest for ARM macOS - by @sumimakito [<samp>(9f625)</samp>](https://github.com/moeru-ai/airi/commit/9f625af6) - Specify build.extends for electron-builder - by @sumimakito [<samp>(418d6)</samp>](https://github.com/moeru-ai/airi/commit/418d6ba4) - Never publish when build-only - by @sumimakito [<samp>(c6e2c)</samp>](https://github.com/moeru-ai/airi/commit/c6e2cff6) - **ci): 'should use swiftlint version from env not inputs' (#1025) * fix(ci**: - 'should use swiftlint version from env not inputs' - by @LemonNekoGH [<samp>(9e503)</samp>](https://github.com/moeru-ai/airi/commit/9e5034ff) - **debug**: - Fix Zod 4 compatibility in tool-executor - by @shinohara-rin [<samp>(377d9)</samp>](https://github.com/moeru-ai/airi/commit/377d9378) - **deps**: - Resolve race condition while building electron-vueuse and electron-eventa with turbo - by @sumimakito in https://github.com/moeru-ai/airi/issues/1052 [<samp>(7daed)</samp>](https://github.com/moeru-ai/airi/commit/7daedb78) - **docs**: - Typo in instructions for Chat window - by @YoungUsing in https://github.com/moeru-ai/airi/issues/1109 [<samp>(db592)</samp>](https://github.com/moeru-ai/airi/commit/db5928e2) - **i18n,stage-layouts**: - Show correct edition in about info - by @sumimakito [<samp>(faf5c)</samp>](https://github.com/moeru-ai/airi/commit/faf5c9c8) - **minecraft**: - Planning agent ctx - by @shinohara-rin [<samp>(dd395)</samp>](https://github.com/moeru-ai/airi/commit/dd395241) - Prevent handled events from reaching the brain - by @shinohara-rin [<samp>(f2ccd)</samp>](https://github.com/moeru-ai/airi/commit/f2ccde5f) - Fix model not specified - by @shinohara-rin [<samp>(9d3e8)</samp>](https://github.com/moeru-ai/airi/commit/9d3e808a) - Dashboard not working - by @shinohara-rin [<samp>(54c93)</samp>](https://github.com/moeru-ai/airi/commit/54c93f6d) - Fix tool action result message - by @shinohara-rin in https://github.com/moeru-ai/airi/issues/5 [<samp>(c155e)</samp>](https://github.com/moeru-ai/airi/commit/c155e4e3) - Implement proper interrupt method to stop bot actions - by @shinohara-rin [<samp>(1ac8e)</samp>](https://github.com/moeru-ai/airi/commit/1ac8e3fb) - Don't rebuild dispatch table every time - by @shinohara-rin [<samp>(2d4ef)</samp>](https://github.com/moeru-ai/airi/commit/2d4eff7d) - Cognitive engine should wait for bot initializes - by @shinohara-rin [<samp>(0959f)</samp>](https://github.com/moeru-ai/airi/commit/0959f70c) - Fix behavior rules not loaded - by @shinohara-rin [<samp>(8d68a)</samp>](https://github.com/moeru-ai/airi/commit/8d68af30) - Dirty teabagging workaround - by @shinohara-rin [<samp>(0eca1)</samp>](https://github.com/moeru-ai/airi/commit/0eca1603) - There's no oxygen in minecraft wtf - by @shinohara-rin [<samp>(67bc3)</samp>](https://github.com/moeru-ai/airi/commit/67bc3dae) - Use correct id for blocksearch and some improvements - by @shinohara-rin [<samp>(de8b1)</samp>](https://github.com/moeru-ai/airi/commit/de8b1994) - Fix blackboard name mismatch - by @shinohara-rin [<samp>(57b20)</samp>](https://github.com/moeru-ai/airi/commit/57b20755) - Collectblock should provide correct feedback - by @shinohara-rin [<samp>(9d395)</samp>](https://github.com/moeru-ai/airi/commit/9d395fd8) - No need for feedback on interruptions - by @shinohara-rin [<samp>(112ed)</samp>](https://github.com/moeru-ai/airi/commit/112ed4ea) - Debug dashboard layout problem - by @shinohara-rin [<samp>(ffa0a)</samp>](https://github.com/moeru-ai/airi/commit/ffa0a431) - Emit reflex state on behavior end and mode change to keep dashboard state refresh - by @shinohara-rin [<samp>(50111)</samp>](https://github.com/moeru-ai/airi/commit/50111bab) - Fix craftables showing wrong results - by @shinohara-rin [<samp>(e9dd2)</samp>](https://github.com/moeru-ai/airi/commit/e9dd2ce0) - Invalid LLM output breaks blackboard - by @shinohara-rin [<samp>(260bc)</samp>](https://github.com/moeru-ai/airi/commit/260bc379) - Make logging actually meaningful - by @shinohara-rin [<samp>(02d3f)</samp>](https://github.com/moeru-ai/airi/commit/02d3f386) - Simplify brain error retry logic to catch edge cases - by @shinohara-rin [<samp>(c21b9)</samp>](https://github.com/moeru-ai/airi/commit/c21b9975) - Validate LLM response structure to retry on invalid format - by @shinohara-rin [<samp>(1c942)</samp>](https://github.com/moeru-ai/airi/commit/1c942a84) - Sane tool description in system mesage - by @shinohara-rin [<samp>(f59a1)</samp>](https://github.com/moeru-ai/airi/commit/f59a11a5) - Clamp unsolicited chat and ignore harness wrappers - by @shinohara-rin [<samp>(80aa5)</samp>](https://github.com/moeru-ai/airi/commit/80aa5ba6) - Fix repl results not feeding to llm - by @shinohara-rin [<samp>(034f0)</samp>](https://github.com/moeru-ai/airi/commit/034f0f30) - Correct gaze ray pitch direction - by @shinohara-rin [<samp>(1eced)</samp>](https://github.com/moeru-ai/airi/commit/1ecedb20) - Llm can now obtain expression results - by @shinohara-rin [<samp>(27c3b)</samp>](https://github.com/moeru-ai/airi/commit/27c3b7f8) - Render nested return objects without [Object] truncation in planner output - by @shinohara-rin [<samp>(843b1)</samp>](https://github.com/moeru-ai/airi/commit/843b149e) - Re-equip tool after ensurePickaxe and throw typed error for missing harvest tools - by @shinohara-rin [<samp>(447f7)</samp>](https://github.com/moeru-ai/airi/commit/447f7793) - Mcp-initiated chat no longer cause "SOMETHING WENT WRONG" - by @shinohara-rin [<samp>(a9f95)</samp>](https://github.com/moeru-ai/airi/commit/a9f95aeb) - Skip reasoning parameter for Cerebras API to avoid unsupported field errors - by @shinohara-rin [<samp>(cbf85)</samp>](https://github.com/moeru-ai/airi/commit/cbf85af6) - Persist prevRun returnRaw for typed value reuse - by @shinohara-rin [<samp>(42e5e)</samp>](https://github.com/moeru-ai/airi/commit/42e5e337) - Semicolon now works in single line - by @shinohara-rin [<samp>(cbcd2)</samp>](https://github.com/moeru-ai/airi/commit/cbcd2359) - Stop action cancels active control action without emitting failure feedback - by @shinohara-rin [<samp>(e700a)</samp>](https://github.com/moeru-ai/airi/commit/e700a177) - Add pause checks during LLM retry loop to prevent execution while paused - by @shinohara-rin [<samp>(7d4a0)</samp>](https://github.com/moeru-ai/airi/commit/7d4a0f12) - Announce giveUp cooldown to chat with reason when bot gives up - by @shinohara-rin [<samp>(60416)</samp>](https://github.com/moeru-ai/airi/commit/604167c9) - Remove autoCraft action and fix craftRecipe num parameter to mean craft count not output count - by @shinohara-rin [<samp>(165fd)</samp>](https://github.com/moeru-ai/airi/commit/165fde77) - Remove returnValue from prevRun/lastRun to prevent stringified return mirror exposure - by @shinohara-rin [<samp>(5ea05)</samp>](https://github.com/moeru-ai/airi/commit/5ea05fb3) - Add toJSON/inspect.custom serialization to query chains for cleaner REPL output - by @shinohara-rin [<samp>(b1700)</samp>](https://github.com/moeru-ai/airi/commit/b170094a) - Remove hardcoded return in isCerebrasBaseURL that prevented reasoning from being sent to all LLM providers - by @shinohara-rin [<samp>(22021)</samp>](https://github.com/moeru-ai/airi/commit/2202154b) - Fix Brain resource leaks, race conditions, and unbounded growth - by @shinohara-rin [<samp>(303c0)</samp>](https://github.com/moeru-ai/airi/commit/303c0774) - Stop McpReplServer and destroy Brain on cleanup to prevent port conflicts on reconnect - by @shinohara-rin [<samp>(a140c)</samp>](https://github.com/moeru-ai/airi/commit/a140ce50) - Make action tool globals updatable so REPL reflects runtime action changes - by @shinohara-rin [<samp>(32957)</samp>](https://github.com/moeru-ai/airi/commit/32957e42) - Nullify EventRegistry context on stop() to prevent stale handler execution - by @shinohara-rin [<samp>(e668b)</samp>](https://github.com/moeru-ai/airi/commit/e668b9b4) - Await reconnect plugin initialization before spawn hooks to prevent race conditions - by @shinohara-rin [<samp>(a135b)</samp>](https://github.com/moeru-ai/airi/commit/a135b079) - **nix**: - When one nix hash update pushes now the other pulls - by @sebastian-zm in https://github.com/moeru-ai/airi/issues/1019 [<samp>(65875)</samp>](https://github.com/moeru-ai/airi/commit/6587555e) - Pull before push in workflows - by @sebastian-zm in https://github.com/moeru-ai/airi/issues/1049 [<samp>(b3117)</samp>](https://github.com/moeru-ai/airi/commit/b3117e9a) - **plugin-host**: - Persist session cwd and explicitly assign default - by @sumimakito [<samp>(bc438)</samp>](https://github.com/moeru-ai/airi/commit/bc4387e2) - **plugin-sdk,plugin-protocol**: - Private for now - by @nekomeowww [<samp>(0d293)</samp>](https://github.com/moeru-ai/airi/commit/0d2936a1) - **plugin-sdk,server-***: - Type mismatch - by @nekomeowww [<samp>(b49cf)</samp>](https://github.com/moeru-ai/airi/commit/b49cf927) - **server**: - Railway build - by @luoling8192 [<samp>(5b961)</samp>](https://github.com/moeru-ai/airi/commit/5b9610e2) - Limited body size to 1MB - by @luoling8192 and **Sergei Kochanov** [<samp>(24eb8)</samp>](https://github.com/moeru-ai/airi/commit/24eb86f6) - **server-runtime**: - Fix invalid payloads dispatched over WebSockets - by @Zazzik1 in https://github.com/moeru-ai/airi/issues/1037 [<samp>(76064)</samp>](https://github.com/moeru-ai/airi/commit/760641b5) - **server-schema**: - Private for now - by @nekomeowww [<samp>(8521a)</samp>](https://github.com/moeru-ai/airi/commit/8521abff) - **server-sdk,workspace**: - Incorrect version - by @nekomeowww [<samp>(69a21)</samp>](https://github.com/moeru-ai/airi/commit/69a21faf) - **server-shared**: - Toggle on inlineOnly - by @nekomeowww [<samp>(1e1a0)</samp>](https://github.com/moeru-ai/airi/commit/1e1a0dd0) - Move plugin-protocol from devDeps to deps to fix node:crypto from nanoid - by @sumimakito [<samp>(c04c9)</samp>](https://github.com/moeru-ai/airi/commit/c04c9ef1) - **speech**: - Respect SSML toggle in test synthesis - by @liuxiaopai-ai in https://github.com/moeru-ai/airi/issues/1063 [<samp>(47a79)</samp>](https://github.com/moeru-ai/airi/commit/47a79165) - **stage-***: - Kokoro TTS now works in production too - by @sebastian-zm in https://github.com/moeru-ai/airi/issues/1017 [<samp>(c8f67)</samp>](https://github.com/moeru-ai/airi/commit/c8f679e1) - **stage-layouts**: - HeaderLink component no longer makes entire Header clickable - by @Zazzik1 in https://github.com/moeru-ai/airi/issues/1035 [<samp>(66b86)</samp>](https://github.com/moeru-ai/airi/commit/66b86154) - Shouldn't display header for tamagotchi - by @nekomeowww [<samp>(2f63d)</samp>](https://github.com/moeru-ai/airi/commit/2f63dc20) - Keep page header visible in settings pages - by @MayoneJY in https://github.com/moeru-ai/airi/issues/1085 [<samp>(753c9)</samp>](https://github.com/moeru-ai/airi/commit/753c9138) - **stage-pages**: - Treat comet speech as openai-compatible as it doesn't support voice listing - by @shinohara-rin in https://github.com/moeru-ai/airi/issues/1060 [<samp>(ea6f4)</samp>](https://github.com/moeru-ai/airi/commit/ea6f4dfb) - Add manual model fallback when discovery fails - by @liuxiaopai-ai in https://github.com/moeru-ai/airi/issues/1069 [<samp>(f175a)</samp>](https://github.com/moeru-ai/airi/commit/f175a9c6) - Add missing mcp settings page to fix white screen - by @lietblue in https://github.com/moeru-ai/airi/issues/1103 [<samp>(62523)</samp>](https://github.com/moeru-ai/airi/commit/62523f00) - **stage-pocket**: - Backward navigation gestures - by @LemonNekoGH in https://github.com/moeru-ai/airi/issues/1112 [<samp>(e5f1d)</samp>](https://github.com/moeru-ai/airi/commit/e5f1d540) - **stage-tamagotchi**: - Updated with appId - by @nekomeowww [<samp>(dd92f)</samp>](https://github.com/moeru-ai/airi/commit/dd92fb8f) - Use isLinux() from eventa invoke instead of platform regexp - by @nekomeowww [<samp>(bbf40)</samp>](https://github.com/moeru-ai/airi/commit/bbf40d28) - ERR_ABORT (-3) occurs when loading hash route window - by @nekomeowww [<samp>(3a107)</samp>](https://github.com/moeru-ai/airi/commit/3a107b74) - Websocket started duplicated-ly - by @nekomeowww [<samp>(ed65f)</samp>](https://github.com/moeru-ai/airi/commit/ed65f3ef) - Include ms package in Electron artifacts - by @liuxiaopai-ai in https://github.com/moeru-ai/airi/issues/1068 [<samp>(846d6)</samp>](https://github.com/moeru-ai/airi/commit/846d63d7) - Incorrect implementation of server-runtime tlsConfig - by @nekomeowww [<samp>(ba09f)</samp>](https://github.com/moeru-ai/airi/commit/ba09f20e) - Ms and debug package not bundled - by @nekomeowww [<samp>(7f7ef)</samp>](https://github.com/moeru-ai/airi/commit/7f7ef6da) - __dirname issue caused by badly overridden electron-vite config - by @sumimakito [<samp>(0470e)</samp>](https://github.com/moeru-ai/airi/commit/0470ec1e) - May miss the change, refactor code - by @nekomeowww [<samp>(cc652)</samp>](https://github.com/moeru-ai/airi/commit/cc6528e2) - Improve controls island tooltip placement - by @lietblue in https://github.com/moeru-ai/airi/issues/1119 [<samp>(41bd3)</samp>](https://github.com/moeru-ai/airi/commit/41bd3d8e) - **stage-tamagotchi,stage-ui**: - Mismatched state - by @nekomeowww [<samp>(9ca2e)</samp>](https://github.com/moeru-ai/airi/commit/9ca2eefb) - **stage-ui**: - Only dedupe assistant message, strip local id on API call - by @shinohara-rin in https://github.com/moeru-ai/airi/issues/1010 [<samp>(9b1b2)</samp>](https://github.com/moeru-ai/airi/commit/9b1b2420) - Connectivity checks for IndexTTS and Player2 speech providers - by @shinohara-rin in https://github.com/moeru-ai/airi/issues/1013 [<samp>(58bc0)</samp>](https://github.com/moeru-ai/airi/commit/58bc0501) - Auto-mark player2 provider as added when valid - by @shinohara-rin in https://github.com/moeru-ai/airi/issues/1012 [<samp>(77f8a)</samp>](https://github.com/moeru-ai/airi/commit/77f8aad9) - Better error handling and timeouts for the kokoro worker - by @sebastian-zm in https://github.com/moeru-ai/airi/issues/1020 [<samp>(00b24)</samp>](https://github.com/moeru-ai/airi/commit/00b240e7) - Live2d scaling not applied visually in model settings view - by @shinohara-rin in https://github.com/moeru-ai/airi/issues/1036 [<samp>(4a0e1)</samp>](https://github.com/moeru-ai/airi/commit/4a0e1917) - Hardcode Perplexity models and disable dynamic listing - by @shinohara-rin and **shinohara-rin** in https://github.com/moeru-ai/airi/issues/1038 [<samp>(d76a5)</samp>](https://github.com/moeru-ai/airi/commit/d76a5b4f) - Type issue of vrm options - by @nekomeowww [<samp>(c48a3)</samp>](https://github.com/moeru-ai/airi/commit/c48a3719) - Correct signed SSML prosody percentages - by @BlackFrameAI in https://github.com/moeru-ai/airi/issues/1043 [<samp>(f859a)</samp>](https://github.com/moeru-ai/airi/commit/f859a7ed) - Many provider catalog issues - by @nekomeowww [<samp>(58991)</samp>](https://github.com/moeru-ai/airi/commit/58991a15) - Add bottom padding to settings data and ripple-grid layouts - by @Garfield550 in https://github.com/moeru-ai/airi/issues/1053 [<samp>(b630d)</samp>](https://github.com/moeru-ai/airi/commit/b630db08) - Strip internal fields from messages before sending to LLM API - by @Arizona-dev in https://github.com/moeru-ai/airi/issues/1054 [<samp>(54880)</samp>](https://github.com/moeru-ai/airi/commit/548805f2) - Add model list for player2 speech - by @liuxiaopai-ai in https://github.com/moeru-ai/airi/issues/1067 [<samp>(03aec)</samp>](https://github.com/moeru-ai/airi/commit/03aecbcb) - Add listModels capability to Deepgram TTS provider - by @atian8179 in https://github.com/moeru-ai/airi/issues/1079 [<samp>(f4dc0)</samp>](https://github.com/moeru-ai/airi/commit/f4dc07c7) - Prevent onboard model list overflow under collapse button - by @horizonzzzz in https://github.com/moeru-ai/airi/issues/1086 [<samp>(5ce0c)</samp>](https://github.com/moeru-ai/airi/commit/5ce0c2ae) - **vscode-airi**: - Incorrect package module setup - by @nekomeowww [<samp>(377a6)</samp>](https://github.com/moeru-ai/airi/commit/377a6997) ### š Performance - **server**: Upsert chat messages - by @luoling8192 [<samp>(8ff4e)</samp>](https://github.com/moeru-ai/airi/commit/8ff4effb) ##### [View changes on GitHub](https://github.com/moeru-ai/airi/compare/v0.8.4...v0.9.0-alpha.1) **Full Changelog**: https://github.com/moeru-ai/airi/compare/v0.8.5-beta.3...v0.9.0-alpha.1