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