v0.9.0
Added 6
- Basic MCP implementation for stage modules
- Popup controls island and better tray with window options for stage-tamagotchi
- Missing icon for gaming-factorio module in stage-ui
- Ollama thinking mode config and provider-side think mapping
- Anti-aliasing support for 3D models
- Manual model input fallback when model list fails to load in stage-pages
Changed 3
- Improve controls island tooltip placement in stage-tamagotchi
- Migrate satori-bot persistence to adapter
- Migrate minecraft reflex runtime to alien-signals, harden zod validation, and unify skill utilities
Fixed 8
- Typo in instructions for Chat window
- Improve VRM expression rendering and add missing emotion mappings
- Guard against undefined voices in ElevenLabs listVoices in stage-ui
- Raise ComboboxContent z-index above Dialog overlay in ui
- Auto-mark provider as added after successful validation on settings page in stage-ui
- Guard structured message fallback in telegram-bot
- Surface provider transcription errors in stage-pages and stage-ui
- Add model list for index-tts-vllm in stage-ui
New Contributors
- @YoungUsing made their first contribution in https://github.com/moeru-ai/airi/pull/1109
- @Gujiassh made their first contribution in https://github.com/moeru-ai/airi/pull/1162
- @04cb made their first contribution in https://github.com/moeru-ai/airi/pull/1182
- @dongguacute made their first contribution in https://github.com/moeru-ai/airi/pull/1169
- @SakataRyuichi made their first contribution in https://github.com/moeru-ai/airi/pull/1187
- @JasonOA888 made their first contribution in https://github.com/moeru-ai/airi/pull/1203
- @Ver-zhzh made their first contribution in https://github.com/moeru-ai/airi/pull/1196
- @Minnzen made their first contribution in https://github.com/moeru-ai/airi/pull/1214
- @kbhujbal made their first contribution in https://github.com/moeru-ai/airi/pull/1213
- @pratyush618 made their first contribution in https://github.com/moeru-ai/airi/pull/1156
- @freezinlove made their first contribution in https://github.com/moeru-ai/airi/pull/1243
- @fordelkon made their first contribution in https://github.com/moeru-ai/airi/pull/1231
- @hobostay made their first contribution in https://github.com/moeru-ai/airi/pull/1261
- @stablegenius49 made their first contribution in https://github.com/moeru-ai/airi/pull/1316
- @Oldcircle made their first contribution in https://github.com/moeru-ai/airi/pull/1333
- @Reisenbug made their first contribution in https://github.com/moeru-ai/airi/pull/1341
- @mvanhorn made their first contribution in https://github.com/moeru-ai/airi/pull/1392
- @jim139129 made their first contribution in https://github.com/moeru-ai/airi/pull/1412
- @monolithic827 made their first contribution in https://github.com/moeru-ai/airi/pull/1302
- @PurCHES5 made their first contribution in https://github.com/moeru-ai/airi/pull/1457
- @spidershield-contrib made their first contribution in https://github.com/moeru-ai/airi/pull/1445
- @howtomakeaname made their first contribution in https://github.com/moeru-ai/airi/pull/1437
- @breezy89757 made their first contribution in https://github.com/moeru-ai/airi/pull/1057
- @areong made their first contribution in https://github.com/moeru-ai/airi/pull/1483
- @xuan0x0 made their first contribution in https://github.com/moeru-ai/airi/pull/1494
- @jensenhuangfan made their first contribution in https://github.com/moeru-ai/airi/pull/1506
- @cheesemori made their first contribution in https://github.com/moeru-ai/airi/pull/851
- @you06 made their first contribution in https://github.com/moeru-ai/airi/pull/1513
- @youetube made their first contribution in https://github.com/moeru-ai/airi/pull/1033
- @JhIcefair made their first contribution in https://github.com/moeru-ai/airi/pull/1559
- @PhoenixForrestLin made their first contribution in https://github.com/moeru-ai/airi/pull/1563
- @dasilva333 made their first contribution in https://github.com/moeru-ai/airi/pull/1582
What's Changed
- fix(docs): typo in instructions for Chat window by @YoungUsing in https://github.com/moeru-ai/airi/pull/1109
- feat(stage-*): basic mcp implementation by @BeanDz in https://github.com/moeru-ai/airi/pull/1115
- feat(stage-tamagotchi): popup controls island and better tray with window opts by @lietblue in https://github.com/moeru-ai/airi/pull/1106
- fix(stage-tamagotchi): improve controls island tooltip placement by @lietblue in https://github.com/moeru-ai/airi/pull/1119
- chore(docs): updated supported LLM API providers by @Neko-233 in https://github.com/moeru-ai/airi/pull/1114
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1120
- feat(stage-ui): add missing icon for gaming-factorio module by @lietblue in https://github.com/moeru-ai/airi/pull/1130
- feat: add Ollama thinking mode config and provider-side think mapping by @Garfield550 in https://github.com/moeru-ai/airi/pull/1140
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1157
- refactor(satori-bot): migrate persistence to adapter by @NashChennc in https://github.com/moeru-ai/airi/pull/1155
- feat: add anti-aliasing support for 3D models by @NJX-njx in https://github.com/moeru-ai/airi/pull/1150
- fix: improve VRM expression rendering and add missing emotion mappings by @NJX-njx in https://github.com/moeru-ai/airi/pull/1147
- fix(stage-ui): guard against undefined voices in ElevenLabs listVoices by @NJX-njx in https://github.com/moeru-ai/airi/pull/1142
- fix(ui): raise ComboboxContent z-index above Dialog overlay by @NJX-njx in https://github.com/moeru-ai/airi/pull/1143
- fix(stage-ui): auto-mark provider as added after successful validation on settings page by @NJX-njx in https://github.com/moeru-ai/airi/pull/1144
- feat(stage-pages): add manual model input fallback when model list fails to load by @NJX-njx in https://github.com/moeru-ai/airi/pull/1145
- chore(stage-pages): add Minecraft integration unavailability notice with WIP bot setup instructions by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1161
- fix(telegram-bot): guard structured message fallback by @Gujiassh in https://github.com/moeru-ai/airi/pull/1162
- refactor(minecraft): migrate reflex runtime to alien-signals, harden zod validation, and unify skill utilities by @s3d-i in https://github.com/moeru-ai/airi/pull/1092
- fix(stage-pages,stage-ui): surface provider transcription errors by @liuxiaopai-ai in https://github.com/moeru-ai/airi/pull/1070
- fix(stage-ui): add model list for index-tts-vllm by @liuxiaopai-ai in https://github.com/moeru-ai/airi/pull/1066
- fix(ci): with outputHashAlgo to output non-empty output by @04cb in https://github.com/moeru-ai/airi/pull/1182
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1177
- fix(stage-layouts): replace Tooltip with Popover for microphone controls by @dongguacute in https://github.com/moeru-ai/airi/pull/1169
- fix(stage-*): can’t get mcp servers when use remote api by @BeanDz in https://github.com/moeru-ai/airi/pull/1181
- fix(minecraft): downgrade to mitigate upstream issue and mcp cleanup by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1192
- fix(server-runtime): use superjson.parse for incoming WebSocket messages by @SakataRyuichi in https://github.com/moeru-ai/airi/pull/1187
- feat(minecraft): disable debug servers by default by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1193
- fix(stage-ui): LM studio validation problem and add CORS note by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1175
- fix(discord): prevent VoiceManager memory leaks on join/leave cycles by @JasonOA888 in https://github.com/moeru-ai/airi/pull/1203
- chore(docs): reorganize content by @NashChennc in https://github.com/moeru-ai/airi/pull/1170
- fix(telegram-bot): guard malformed structured messages by @Gujiassh in https://github.com/moeru-ai/airi/pull/1179
- Revert "fix(stage-*): can’t get mcp servers when use remote api" by @nekomeowww in https://github.com/moeru-ai/airi/pull/1204
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1209
- feat(stage-ui): add nvidia nim provider by @Ver-zhzh in https://github.com/moeru-ai/airi/pull/1196
- feat(stage-pages): add model selection navigation after provider validation by @Minnzen in https://github.com/moeru-ai/airi/pull/1214
- fix(stage-ui): user-sent message lost by @typed-sigterm in https://github.com/moeru-ai/airi/pull/1215
- fix(minecraft): add stop method to Ticker to prevent resource leak by @kbhujbal in https://github.com/moeru-ai/airi/pull/1213
- feat(tamagotchi): add "Pin on top" toggle to controls island by @lietblue in https://github.com/moeru-ai/airi/pull/1183
- fix(stage-tamagotchi): bring back onboarding dialog by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1104
- fix(stage-ui): reset always-on-top via manual reset by @Garfield550 in https://github.com/moeru-ai/airi/pull/1218
- fix(stage-pocket): use system mkcert to work around feaxios download crash by @Minnzen in https://github.com/moeru-ai/airi/pull/1220
- fix(stage-ui-live2d): require
.model.jsonor.model3.jsonfor Live2D files by @pratyush618 in https://github.com/moeru-ai/airi/pull/1156 - chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1226
- fix(server-runtime,server-sdk): accept plain JSON from external WebSocket clients by @pratyush618 in https://github.com/moeru-ai/airi/pull/1234
- refactor(stage-ui): steps of onboarding dialog by @LemonNekoGH in https://github.com/moeru-ai/airi/pull/1224
- fix(stage-tamagotchi): disable hoverable content of control button by @LemonNekoGH in https://github.com/moeru-ai/airi/pull/1240
- fix(stage-ui-live2d,stage-tamagotchi): use temp file to prevent config loss and handle more Live2D model load failures by @pratyush618 in https://github.com/moeru-ai/airi/pull/1233
- fix(stage-tamagotchi): double close caused crash, simplified onboarding, added
safeCloseby @freezinlove in https://github.com/moeru-ai/airi/pull/1243 - feat(stage-tamagotchi): add top drag area to move window by @fordelkon in https://github.com/moeru-ai/airi/pull/1231
- feat(nix): add FHS devShell for running Electron on NixOS by @lietblue in https://github.com/moeru-ai/airi/pull/1245
- fix(stage-ui): use lightweight fetch for connectivity check by @Minnzen in https://github.com/moeru-ai/airi/pull/1238
- feat(stage-tamagotchi): add electron main process file logger hook by @Garfield550 in https://github.com/moeru-ai/airi/pull/1247
- fix(stage-tamagotchi): crash on onboarding save by bump electron to v40.8.0, bring back auto-popup by @sumimakito in https://github.com/moeru-ai/airi/pull/1246
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1251
- chore: update pnpm version to 10.32.1 by @Garfield550 in https://github.com/moeru-ai/airi/pull/1252
- fix(services): resolve lint issues by @hobostay in https://github.com/moeru-ai/airi/pull/1261
- fix(stage-tamagotchi): dependency missing for h3 by @nekomeowww in https://github.com/moeru-ai/airi/pull/1265
- fix(stage-ui): remove SSML support for Volcengine speech provider by @pratyush618 in https://github.com/moeru-ai/airi/pull/1232
- fix(stage-ui): deduplicate provider models by id by @lietblue in https://github.com/moeru-ai/airi/pull/1282
- fix(stage-tamagotchi): provide the missing core components to createCoreContext by @sumimakito in https://github.com/moeru-ai/airi/pull/1288
- fix(stage-tamagotchi): move @intlify/core from devDeps to deps by @sumimakito in https://github.com/moeru-ai/airi/pull/1291
- feat(stage-ui): optimize card many select component layout styles by @horizonzzzz in https://github.com/moeru-ai/airi/pull/1096
- refactor: vrm performance tracing and better lifecycle management by @Lilia-Chen in https://github.com/moeru-ai/airi/pull/1194
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1301
- fix(stage-ui): skip optimistic updates before apply by @Gujiassh in https://github.com/moeru-ai/airi/pull/1304
- feat(stage-pocket): request permissions onboarding by @LemonNekoGH in https://github.com/moeru-ai/airi/pull/1292
- fix(plugin-sdk): trim negotiated compatibility versions by @Gujiassh in https://github.com/moeru-ai/airi/pull/1305
- fix(stage-tamagotchi): handle app exit correctly by @sumimakito in https://github.com/moeru-ai/airi/pull/1319
- fix: let tray menu close caption overlay by @stablegenius49 in https://github.com/moeru-ai/airi/pull/1316
- feat(stage-tamagotchi): show connection status by @LemonNekoGH in https://github.com/moeru-ai/airi/pull/1311
- fix(stage-ui): flip canvas pixel reads on Y axis by @Gujiassh in https://github.com/moeru-ai/airi/pull/1309
- fix(stage-tamagotchi): make handleAppExit more robust by @sumimakito in https://github.com/moeru-ai/airi/pull/1321
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1325
- fix(stage-ui): use stable chat history keys in the stage UI by @stablegenius49 in https://github.com/moeru-ai/airi/pull/1312
- fix(telegram-bot): fix velin rendering, action loop, and LLM compatibility by @Oldcircle in https://github.com/moeru-ai/airi/pull/1333
- docs: update CLAUDE.md to use @AGENTS.md directive by @lietblue in https://github.com/moeru-ai/airi/pull/1335
- feat(stage-tamagotchi): add profile switcher to controls island and web header by @lietblue in https://github.com/moeru-ai/airi/pull/1328
- fix(speech): prevent speech provider config reset on startup by removing premature immediate watcher by @lietblue in https://github.com/moeru-ai/airi/pull/1340
- fix(minecraft): xss mitigation for minecraft debug dashboard by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1344
- fix(stage-ui): fix hash scroll on SPA navigation to providers page by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1347
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1349
- fix(stage-tamagotchi): fix model flickering and jumping on window resize by @Reisenbug in https://github.com/moeru-ai/airi/pull/1341
- fix(server-runtime): shutdown server on interruption properly by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1356
- fix(stage-tamagotchi): quit app on Live2D close button to cleanup background processes by @Reisenbug in https://github.com/moeru-ai/airi/pull/1361
- fix(stage-ui): keep nested reasoning out of speech by @Gujiassh in https://github.com/moeru-ai/airi/pull/1322
- fix(plugin-sdk): preserve absolute plugin entrypoints by @Gujiassh in https://github.com/moeru-ai/airi/pull/1323
- fix(server-runtime): preserve explicit empty route destinations by @Gujiassh in https://github.com/moeru-ai/airi/pull/1324
- Revert "fix(stage-tamagotchi): fix model flickering and jumping on window resize" by @nekomeowww in https://github.com/moeru-ai/airi/pull/1364
- chore(ci): added Scoop bucket manifest by @stablegenius49 in https://github.com/moeru-ai/airi/pull/1262
- feat(stage-pages,stage-ui,i18n): disable auto trigger for chatcompletion check and use explict button by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1336
- chore: disable PostHog telemetry in development mode by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1365
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1369
- fix(stage-ui): use nullish coalescing for errorMessageFrom fallback by @Garfield550 in https://github.com/moeru-ai/airi/pull/1370
- docs(AGENTS.md): use
errorMesageFromby @shinohara-rin in https://github.com/moeru-ai/airi/pull/1372 - feat(stage-pocket): add Android target by @lietblue in https://github.com/moeru-ai/airi/pull/1326
- chore: add project-level skills by @Garfield550 in https://github.com/moeru-ai/airi/pull/1373
- chore(docs): new DevLog for VRM & three.js refactor by @Lilia-Chen in https://github.com/moeru-ai/airi/pull/1368
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1388
- fix(llm): flatten content array for OpenAI-compatible providers by @Reisenbug in https://github.com/moeru-ai/airi/pull/1222
- fix(docs): fix typo in landing page by @qyl27 in https://github.com/moeru-ai/airi/pull/1399
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1403
- fix(stage-tamagotchi): harden caption overlay follow+mouse handling by @Iro96 in https://github.com/moeru-ai/airi/pull/1402
- fix(bucket): fix scoop manifest decompress error for NSIS installer by @mvanhorn in https://github.com/moeru-ai/airi/pull/1392
- fix(stage-pages): use placeholderLocalized from provider config for API key input by @mvanhorn in https://github.com/moeru-ai/airi/pull/1391
- fix(stage-ui-live2d): animate model position and scale on resize with animejs by @Reisenbug in https://github.com/moeru-ai/airi/pull/1395
- refactor(docs): home layout component by @qyl27 in https://github.com/moeru-ai/airi/pull/1404
- fix(stage-tamagotchi): do not pause Live2D on visibility change by @Iro96 in https://github.com/moeru-ai/airi/pull/1410
- fix(docs): incorrect button link by @qyl27 in https://github.com/moeru-ai/airi/pull/1411
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1415
- docs: update contributing docs by @jim139129 in https://github.com/moeru-ai/airi/pull/1412
- feat: upgrade MiniMax default model to M2.7 by @octo-patch in https://github.com/moeru-ai/airi/pull/1417
- feat(stage-pages,stage-ui,i18n): add OpenRouter as a speech (TTS) provider by @monolithic827 in https://github.com/moeru-ai/airi/pull/1302
- feat(docs): add a simple web version guide by @jim139129 in https://github.com/moeru-ai/airi/pull/1420
- fix(stage-pages): prevent airi card dialogs from closing on outside click by @Reisenbug in https://github.com/moeru-ai/airi/pull/1419
- fix(stage-ui): settings fallback route, and guard navigate back to home in tamagotchi by @leaft in https://github.com/moeru-ai/airi/pull/1413
- chore(readme): sync QR download buttons and migrate supporters section to SponsorKit by @Neko-233 in https://github.com/moeru-ai/airi/pull/1407
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1424
- feat(plugin-sdk): much better refactor, and new permission model by @nekomeowww in https://github.com/moeru-ai/airi/pull/1423
- feat(stage-tamagotchi): vision by @nekomeowww in https://github.com/moeru-ai/airi/pull/917
- feat(stage-pages): reorder sections and add danger zone red background by @Garfield550 in https://github.com/moeru-ai/airi/pull/1435
- feat(stage-ui): Include OpenRouter attribution headers by @monolithic827 in https://github.com/moeru-ai/airi/pull/1436
- fix(bucket): update Scoop manifest to v0.9.0-alpha.18 by @mvanhorn in https://github.com/moeru-ai/airi/pull/1430
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1443
- chore: switch zh-CN desktop download links to GitHub releases by @Neko-233 in https://github.com/moeru-ai/airi/pull/1442
- feat: refactor settings data page and add app data folder action by @Garfield550 in https://github.com/moeru-ai/airi/pull/1447
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1448
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1454
- chore: replace CLAUDE.md symlink with @AGENTS.md reference by @lietblue in https://github.com/moeru-ai/airi/pull/1455
- feat(docs): added new DevLog 2026-03-23 by @PurCHES5 in https://github.com/moeru-ai/airi/pull/1457
- fix(nix/common): ignore editor config by @kwaa in https://github.com/moeru-ai/airi/pull/1459
- feat(cap-vite): use platform-specific device id by @LemonNekoGH in https://github.com/moeru-ai/airi/pull/1458
- refactor(tamagotchi/stage-*): remove duplicated scene in the setting page for tamagotchi by @Lilia-Chen in https://github.com/moeru-ai/airi/pull/1460
- feat(stage-tamagotchi): hide header in desktop by @lietblue in https://github.com/moeru-ai/airi/pull/1462
- fix(docs): fix Try Live button opening 404 in VitePress SPA router by @Garfield550 in https://github.com/moeru-ai/airi/pull/1461
- chore(docs): added comment for target field by @qyl27 in https://github.com/moeru-ai/airi/pull/1465
- refactor(stage-*): analytics and telemetry, including consent by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1414
- fix(server-runtime): use constant-time comparison for auth token by @spidershield-contrib in https://github.com/moeru-ai/airi/pull/1445
- fix(stage-ui): improve profile switcher popover UI by @lietblue in https://github.com/moeru-ai/airi/pull/1425
- fix(stage-layouts): align web chat tools discovery with Tamagotchi (immediate watch)) by @lulu0119 in https://github.com/moeru-ai/airi/pull/1466
- fix(stage-ui): tools not available when using remote API by @BeanDz in https://github.com/moeru-ai/airi/pull/1468
- fix(stage-ui-three): cutout bug fix by @Lilia-Chen in https://github.com/moeru-ai/airi/pull/1471
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1473
- fix(stage-ui): bind cursor floating css vars by @Gujiassh in https://github.com/moeru-ai/airi/pull/1472
- fix(stage-ui): use normalized audio spectrum values by @Gujiassh in https://github.com/moeru-ai/airi/pull/1474
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1478
- chore(docs): added Visual Studio 2026 suggestion by @jim139129 in https://github.com/moeru-ai/airi/pull/1476
- fix(stage-ui): allow custom model input when model list is empty by @howtomakeaname in https://github.com/moeru-ai/airi/pull/1437
- feat(providers): add Z.ai provider by @AdairLi2504 in https://github.com/moeru-ai/airi/pull/1409
- feat(providers): add Azure OpenAI support by @breezy89757 in https://github.com/moeru-ai/airi/pull/1057
- chore(deps): move drizzle-orm to catalog by @luoling8192 in https://github.com/moeru-ai/airi/pull/1480
- fix(docs): links to other doc pages by @areong in https://github.com/moeru-ai/airi/pull/1483
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1484
- fix: rollback electron version by @Misaka-0x447f in https://github.com/moeru-ai/airi/pull/1490
- Server v1 by @Neko-233 in https://github.com/moeru-ai/airi/pull/1376
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1493
- chore(ci): bump GitHub Actions actions by @salmanmkc in https://github.com/moeru-ai/airi/pull/1048
- fix(ui): forward default slot in InputFile to BasicInputFile by @xuan0x0 in https://github.com/moeru-ai/airi/pull/1494
- fix(stage-ui): return empty string instead of empty array in mcp_list_tools error fallback by @lietblue in https://github.com/moeru-ai/airi/pull/1497
- feat(auth): Bearer token handling and OAuth token extraction by @luoling8192 in https://github.com/moeru-ai/airi/pull/1501
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1508
- refactor: replace status check string literal with enum; add chat pin… by @Misaka-0x447f in https://github.com/moeru-ai/airi/pull/1486
- fix(stage-tamagotchi): autoUpdater should have channel selected by @jensenhuangfan in https://github.com/moeru-ai/airi/pull/1506
- feat(stage-tamagotchi): add option for chat area send key by @cheesemori in https://github.com/moeru-ai/airi/pull/851
- typo(i18n): correct xsai-transformers URL typo in Japanese locale by @you06 in https://github.com/moeru-ai/airi/pull/1513
- fix(stage-layouts): clear voice auto-send input before ingest resolves by @lulu0119 in https://github.com/moeru-ai/airi/pull/1510
- feat(ui,stage-ui,stage-pages,i18n): transcription confidence filter by @Reisenbug in https://github.com/moeru-ai/airi/pull/1148
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1520
- fix(stage-*): remove unused json format and platform checking by @LemonNekoGH in https://github.com/moeru-ai/airi/pull/1523
- fix(server-runtime): preserve explicit empty route destinations by @Gujiassh in https://github.com/moeru-ai/airi/pull/1521
- fix(pwa): show update toast when new version is available by @JasonOA888 in https://github.com/moeru-ai/airi/pull/1517
- fix(stage-ui,stage-tamagotchi): bring back i18n, improved settings data ui by @nekomeowww in https://github.com/moeru-ai/airi/pull/1525
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1528
- feat(stage-ui-live2d): exp3 expression system + auto-blink rework by @youetube in https://github.com/moeru-ai/airi/pull/1033
- fix(stage-ui): keep onboarding save button visible by @Ver-zhzh in https://github.com/moeru-ai/airi/pull/1280
- chore(tauri-*,crates): now maintaining tauri and rust packages in another repo by @nekomeowww in https://github.com/moeru-ai/airi/pull/1533
- refactor(stage-ui-three): improved outline logic by @Lilia-Chen in https://github.com/moeru-ai/airi/pull/1536
- fix(stage-pages): XSS vulnerability in provider definition by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1492
- feat(minecraft,stage-*): airi integration, isolated-vm plus misc updates by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1371
- fix(stage-ui-three/stage-web): model offset and camera position setting is now persistent by @Lilia-Chen in https://github.com/moeru-ai/airi/pull/1543
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1544
- feat(devtool-capture-stage-tamagotchi): tool for interacting the electron apps by @nekomeowww in https://github.com/moeru-ai/airi/pull/1549
- fix(stage-ui): channel-server should handle onReady as well by @nekomeowww in https://github.com/moeru-ai/airi/pull/1550
- feat: lang select now moved to top-right corner - AIRI-209 by @Misaka-0x447f in https://github.com/moeru-ai/airi/pull/1555
- feat: full rollout chat completion check by @Misaka-0x447f in https://github.com/moeru-ai/airi/pull/1557
- feat(stage-ui): add hologram promo banner by @Neko-233 in https://github.com/moeru-ai/airi/pull/1514
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1562
- feat(docs): setup and use manual by @JhIcefair in https://github.com/moeru-ai/airi/pull/1559
- fix(server-*,stage-ui): WebSocket cannot reconnect correctly, improved log by @PhoenixForrestLin in https://github.com/moeru-ai/airi/pull/1563
- feat(stage-ui): scale settings by @lulu0119 in https://github.com/moeru-ai/airi/pull/1554
- chore(ci): add label sync and PR triage workflows by @shinohara-rin in https://github.com/moeru-ai/airi/pull/1575
- feat(docs): add tamagotchi manual screenshots by @Neko-233 in https://github.com/moeru-ai/airi/pull/1574
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1576
- fix(stage-tamagotchi): harden cross-platform auto-updater flow, diagnostics, logs, and cache cleanup by @jensenhuangfan in https://github.com/moeru-ai/airi/pull/1566
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1581
- fix(stage-tamagotchi): add drag region to onboarding layout by @lulu0119 in https://github.com/moeru-ai/airi/pull/1584
- fix(stage-*): onboarding model selection footer overlap and list height by @lulu0119 in https://github.com/moeru-ai/airi/pull/1583
- feat(stage-pocket): WebSocket status indicator + shared i18n by @LemonNekoGH in https://github.com/moeru-ai/airi/pull/1586
- feat(stage-tamagotchi,stage-ui,server-sdk,server-runtime): zero-trust websocket authentication by @dasilva333 in https://github.com/moeru-ai/airi/pull/1582
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1587
- feat(stage-tamagotchi): added weather API + tool for widget calling by @NJX-njx in https://github.com/moeru-ai/airi/pull/1588
- feat(stage-ui): let AIRI see tool failures in LLM context (captureToolErrors + xsai patches) by @lulu0119 in https://github.com/moeru-ai/airi/pull/1602
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1603
- perf(vishot): compress and downscale AVIF screenshots by @Neko-233 in https://github.com/moeru-ai/airi/pull/1598
- fix(stage-ui): improve LLM KV-cache compatibility for datetime context injection by @luoling8192 in https://github.com/moeru-ai/airi/pull/1593
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1608
- fix(stage-tamagotchi): no longer being able to build electron due to nested pack by @nekomeowww in https://github.com/moeru-ai/airi/pull/1609
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1613
- chore(i18n): update translations by @github-actions[bot] in https://github.com/moeru-ai/airi/pull/1616
Full Changelog: https://github.com/moeru-ai/airi/compare/v0.8.5-beta.4...v0.9.0