4897 Commits
Author SHA1 Message Date
Neko e8dc7b84ca fix(stage-ui): follow the Histoire dark mode in stories (#3222) 2026-10-29 17:23:10 +08:00
mullung d49e93e206 docs(ko): link Korean blog pages in the Korean README (#3215) 2026-10-29 17:22:30 +08:00
Neko a62f1cbea9 refactor: migrate status banners to Alert (#3224) 2026-10-29 16:58:46 +08:00
Neko 0367c4001f feat(ui): add Alert for status messages (#3221) 2026-10-29 16:44:00 +08:00
蓝莓🫐 b7e374bf57 fix(stage-tamagotchi,stage-web,stage-pocket): set the document language to the UI locale (#3219)
## Summary

The apps did not set `<html lang>` to the UI locale. stage-tamagotchi
had no `lang`, and stage-web and stage-pocket kept `lang="en"`. The base
font stack has no CJK font. So Chromium picks the fallback font for CJK
text from the document language, and without a matching `lang`, the OS
language decides.

On a macOS with Japanese first in the language list, Simplified Chinese
settings labels mixed two fonts. Hiragino Kaku Gothic W3 rendered the
characters that it has. Simplified-only characters, such as 设, 备, and 对,
fell back to PingFang SC Medium, so they looked bold.

The document language now follows the UI locale. Chromium then picks one
font for each locale, for example PingFang SC for `zh-Hans` and PingFang
TC for `zh-Hant`.

## Changes

- `modules/i18n.ts` of each app sets `document.documentElement.lang` to
the initial locale.
- The code that applies a language change also sets it. This is
`useLanguage` in stage-tamagotchi, and the `settings.language` watcher
in `App.vue` of stage-web and stage-pocket.
- `use-language.test.ts` moves to browser mode as
`use-language.browser.test.ts`. `useLanguage` now uses `document`, and
the node test project has no DOM. The test now uses the real
`localStorage` instead of a `globalThis` stub.

## Verification

Measured on macOS with the language list `ja-US, en-US, zh-Hans-US`. The
Electron 43 build of this repository rendered one Simplified Chinese
label under each `lang` on a test page. `CSS.getPlatformFontsForNode`
reported these fonts:

| `lang` | Fonts for "向所有设备开放 配对令牌" |
| --- | --- |
| none, `en` | Hiragino Kaku Gothic ProN W3 ×8, PingFang SC Medium ×3 |
| `zh-Hans`, `zh-CN` | PingFang SC Medium ×11 |
| `zh-Hant` | PingFang TC Medium ×11 |

- The commit hook ran `moeru-lint --fix`.
- Typecheck and tests did not run locally. CI runs them, including the
moved browser test.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-10-29 08:07:34 +00:00
Neko e1df804cf3 feat(stage-ui,stage-tamagotchi,stage-layouts): add a microphone switch that closes the microphone for every feature (#3210) 2026-10-29 15:15:23 +08:00
mullungandClaude Opus 5.5 0157be3a94 fix(i18n): correct outdated and wrong Korean strings (#3216)
## Summary

Some Korean strings were wrong or out of date. This PR corrects 14
values in 3 files under `packages/i18n/src/locales/ko/`.

- `tamagotchi.stage.controls-island.login`: the Controls Island sign-in
button said 가입하기, which means "sign up". It now says 로그인, as the other
Korean sign-in strings do.
- `settings.pages.connection.*` and
`settings.websocket-secure-enabled.*`: 2770267dc rewrote 12 English
strings on the connection settings page. The Korean values kept the
older text. Eight of them were still English, for example "Connect from
Stage Pocket" for the current "Pairing". They now follow the current
English text.
- The glossary says the mobile edition reads as "Mobile ver." to end
users. The Korean text now says 모바일 버전 and does not use "Stage Pocket"
or "pocket".
- `stage.chat.sessions.new`: the new-conversation button said "+ New"
next to its own plus icon. It now says 새 대화.

This PR is independent. It changes only the `ko` locale. Other locales
still have the same older English in `pages.connection`, but Crowdin
owns them, so this PR does not touch them.

`tamagotchi.stage.about.links.github` keeps `Github`. `GitHub` equals
the English text, and deleting the key fails the locale check.

## Verification

```text
node .github/scripts/check-locales.ts --root packages/i18n/src/locales --base <upstream/main locales> --source-changes warning   # passed
pnpm exec eslint packages/i18n/src/locales/ko/settings.yaml packages/i18n/src/locales/ko/stage.yaml packages/i18n/src/locales/ko/tamagotchi/stage.yaml   # passed
```

- The pre-commit hook (`moeru-lint --fix`) passed.
- No ko value in the 3 files is equal to its English value.

## Visual changes

| Before | After |
| --- | --- |
|
![](https://github.com/user-attachments/assets/a9851e38-4b99-4ddf-95a1-b48c96f18a1b)
|
![](https://github.com/user-attachments/assets/5932a58e-1de5-4be8-88f1-7b88ca4e573d)
|
| Main window / Controls Island menu, signed out, `ko` | Main window /
Controls Island menu, signed out, `ko` |
|
![](https://github.com/user-attachments/assets/108c1128-2fc0-4887-9a7c-5ec0cd49280c)
|
![](https://github.com/user-attachments/assets/ba348e4d-2809-4af9-9e68-a206e57218f3)
|
| Settings / Connection, `ko` | Settings / Connection, `ko` |
|
![](https://github.com/user-attachments/assets/c25912d4-7378-48f6-9075-c094197aad31)
|
![](https://github.com/user-attachments/assets/5e25ee3e-4aa4-4f06-800c-6d99a3b28435)
|
| Floating chat / Conversations drawer, `ko` | Floating chat /
Conversations drawer, `ko` |

How I took the captures:

- I built stage-tamagotchi with `pnpm -F @proj-airi/stage-tamagotchi
build` on Windows 11 and captured it with `vishot capture --target
electron`.
- Each run used a new empty profile (`APP_USER_DATA_PATH`) with
`settings/language` set to `ko` and onboarding marked as done.
- The "Before" build used the same commit with the 3 `ko` files restored
from the merge base (`71b3c178e`). The merge base and this branch differ
only in these files.
- The `qr.token-hint` and `qr.image-alt` values are not in the captures.
They show only when the Pairing panel is open, and that panel shows a
live pairing QR code.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 06:16:31 +00:00
Weathercoldandgithub-actions[bot] 7dded0a088 chore(nix): update pnpmDeps hash (#3218)
Auto-generated by CI to keep Nix pnpmDeps hash up-to-date.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-29 05:42:00 +00:00
LemonNeko 8d036d42f6 chore(deps): auto bump and adapt (#3217) 2026-10-29 05:25:05 +00:00
Weathercoldandgithub-actions[bot] 71b3c178ea chore(nix): update pnpmDeps hash (#3214)
Auto-generated by CI to keep Nix pnpmDeps hash up-to-date.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-29 01:23:49 +00:00
Neko 5852c12fd2 fix(stage-tamagotchi): boot the installer that the user installed from another channel (#3213) 2026-10-29 09:13:26 +08:00
Nekoandgithub-actions[bot] 335f6cac72 chore: update README release artifacts to v0.13.1 (#3212)
## Description

Updates stable desktop download links after the v0.13.1 release.

## Linked Issues

None.

## Additional Context

Generated by the post-release README workflow.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-29 00:24:22 +00:00
Neko 689b18e2b5 test(stage-tamagotchi): compare static asset paths by real path (#3211) 2026-10-29 07:33:20 +08:00
Neko abea2e7b71 fix(stage-tamagotchi): keep the standing chat dock in place (#3209) 2026-10-29 07:27:17 +08:00
Neko Ayaka 5d97ac41b7 release: v0.13.1 v0.13.1 2026-10-29 07:19:40 +08:00
Neko 0fa5e9bb1f refactor(stage-ui): remove the voice draft card from web and mobile (#3207) 2026-10-29 06:53:09 +08:00
Weathercoldandgithub-actions[bot] 19b8a9682b chore(nix): update pnpmDeps hash (#3208)
Auto-generated by CI to keep Nix pnpmDeps hash up-to-date.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-28 22:40:38 +00:00
Neko 440d867f11 feat(stage-tamagotchi): add an option to turn off automatic update downloads (#3206) 2026-10-29 06:28:19 +08:00
Neko ee85084b26 test(stage-web): hold the button before the orbit text drag (#3205) 2026-10-29 05:55:19 +08:00
215cfc3e64 feat(api-server): send configured headers to LLM upstreams (#3200)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Neko <neko@ayaka.moe>
2026-10-29 02:48:37 +08:00
Weathercoldandgithub-actions[bot] b9d0bb34a6 chore(nix): update pnpmDeps hash (#3204)
Auto-generated by CI to keep Nix pnpmDeps hash up-to-date.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-29 02:25:03 +08:00
Neko f815c3c072 feat(ui): redesign the error panel and use Maple Mono (#3203) 2026-10-29 02:13:00 +08:00
Neko 927d1facc1 fix(stage-ui): keep stores off disposed Pinias (#3201) 2026-10-28 23:50:24 +08:00
e943c70d79 chore(nix): update pnpmDeps hash (#3193)
Auto-generated by CI to keep Nix pnpmDeps hash up-to-date.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Neko <neko@ayaka.moe>
2026-10-28 23:13:01 +08:00
Neko 0586ed5fe9 feat(stage-tamagotchi): build AppImage and pacman packages for Linux (#3188) 2026-10-28 23:08:15 +08:00
Neko 48a8b0b7dc test(stage-ui): load the UnoCSS preflight in the motion workbench test (#3199) 2026-10-28 23:07:21 +08:00
Neko 6886904208 fix(ui): keep range thumbs buildable without the chromatic preset (#3194) 2026-10-28 21:50:13 +08:00
Neko 3a6c65b798 refactor: move hand-made tints to chromatic colours (#3191) 2026-10-28 21:36:29 +08:00
CyberSprout a2bef067be fix(stage-ui): keep wake word preparation when an equal catalog arrives during load (#3104) 2026-10-28 21:12:16 +08:00
Neko a19cdf05fb fix(stage-tamagotchi): write the updater log in the user data directory (#3187) 2026-10-28 21:11:14 +08:00
Weathercoldandgithub-actions[bot] 325b485ef6 chore(nix): update pnpmDeps hash (#3185)
Auto-generated by CI to keep Nix pnpmDeps hash up-to-date.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-28 13:05:01 +00:00
Nekoandgithub-actions[bot] fe586eb60d chore: update README release artifacts to v0.13.0 (#3182)
## Description

Updates stable desktop download links after the v0.13.0 release.

## Linked Issues

None.

## Additional Context

Generated by the post-release README workflow.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-28 20:46:15 +08:00
jim139129 32054c07cf fix(security): update runtimes for CVE-2026-111497 (#3184) 2026-10-28 20:45:56 +08:00
Weathercoldandgithub-actions[bot] 95284c473c chore(nix): update pnpmDeps hash (#3176)
Auto-generated by CI to keep Nix pnpmDeps hash up-to-date.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-28 12:03:55 +00:00
Neko e76f3a8e60 fix(deps): bump pinia-plugin-synced to 0.1.7 for leader takeover after a reload (#3183) 2026-10-28 19:46:23 +08:00
Neko 61bda9be55 chore(deps): bump chromatic to v2 (#3181) 2026-10-28 17:42:57 +08:00
Neko 6102cbf818 ci(stage-tamagotchi): version dev and nightly builds as prereleases and register their installers (#3179) 2026-10-28 17:38:58 +08:00
github-actions[bot]andCrowdin Bot 89b84c51bf chore(i18n): update translations (#3168)
This PR contains updated translations from Crowdin. Created from [GitHub
Actions](https://github.com/moeru-ai/airi/blob/main/.github/workflows/crowdin-cron-sync.yml).

You can review the source of translations
[here](https://crowdin.com/project/proj-airi)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-10-28 17:38:18 +08:00
jim139129 5ea6aa50a3 fix(stage-ui): let optional modules switch off without losing settings (#3174) 2026-10-28 17:38:03 +08:00
Neko 672fd6693a feat(stage-tamagotchi): show the version as badges on the about page (#3177) 2026-10-28 17:35:41 +08:00
Neko 36596e07fd ci(stage-tamagotchi): route releases through canary and register installers (#3166) 2026-10-28 16:44:13 +08:00
Neko dfd9453bea fix(stage-tamagotchi): keep four update channels and report health after the stage loads (#3165) 2026-10-28 00:27:25 +00:00
louisjia2008-ux 76906c57f4 fix(minecraft): correct chest transfer counts and cleanup (#3108) 2026-10-28 07:58:50 +08:00
Neko 13eef81f02 chore(scenarios-stage-tamagotchi-browser): add v0.13 release areas (#3164) 2026-10-28 06:09:53 +08:00
蓝莓🫐 ce4962785f feat(stage-tamagotchi): stand the feed dock up beside the character (#3162) 2026-10-28 05:37:25 +08:00
Neko Ayaka 3c4aca2093 release: v0.13.0 v0.13.0 2026-10-28 05:26:59 +08:00
Neko 4d07a3b6bc ci: run testing-audio only on demand and drop Xvfb (#3161) 2026-10-28 05:15:09 +08:00
github-actions[bot]andCrowdin Bot d5bfe8f9ba chore(i18n): update translations (#3116)
This PR contains updated translations from Crowdin. Created from [GitHub
Actions](https://github.com/moeru-ai/airi/blob/main/.github/workflows/crowdin-cron-sync.yml).

You can review the source of translations
[here](https://crowdin.com/project/proj-airi)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-10-28 05:13:53 +08:00
futures-learner 9b17db32c3 fix(stage-ui): persist the active Character card id (#3125) 2026-10-28 05:13:18 +08:00
jim139129 4c719cf49c feat(stage-ui): add DeepSeek web search provider (#3156) 2026-10-28 04:34:24 +08:00