Commit Graph
1749 Commits
Author SHA1 Message Date
Neko 3fcae726c5 fix(stage-layouts): center the mobile chat input (#2517) 2026-09-11 02:36:18 +08:00
Neko 69ca0a9171 feat(stage-web): show FPS history in performance visualizer (#2516) 2026-09-11 01:46:40 +08:00
leafyy 3c9e60907c test(stage-tamagotchi): stabilize interactive area browser fixtures (#2510)
## Summary

The desktop browser suite can mount `InteractiveArea` before its utility
styles settle, then scroll history while the reply composer is still
expanding. A pending Virtua tail scroll can replace the message that the
test selected and make the scrollport assertion fail.

This addresses the pre-existing browser-test failure reported during
#2506 ([CI
failure](https://github.com/moeru-ai/airi/actions/runs/34448585692/job/102804067154)).

- Scan desktop and shared Vue components before the initial test
stylesheet is served. Load the desktop UnoCSS config explicitly so
config discovery does not replace the scan.
- Give each fixture a window-sized host, reset the viewport, and dispose
the component, host, and Pinia after each test.
- Wait for the reply transition and virtual-list measurements to settle
before scrolling. Cover both 200 ms and 1 s transitions, and assert the
requested scroll position throughout the existing message-mount checks.

Only browser tests and their configuration change.

## Validation

The complete desktop browser suite passed with three shuffled seeds: **6
files, 65 tests per run**, with no skipped tests.

```sh
for seed in 2508 2506 2507; do
  npm_config_registry=https://registry.npmjs.org/ NODE_OPTIONS=--no-experimental-webstorage \
    pnpm exec vitest run --config apps/stage-tamagotchi/vitest.config.ts \
    --project browser --sequence.shuffle --sequence.seed="$seed" --bail=1
done
npm_config_registry=https://registry.npmjs.org/ pnpm run typecheck
npm_config_registry=https://registry.npmjs.org/ pnpm run lint
git diff --check
```

Typecheck passed all 52 tasks. Lint passed with existing repository
warnings. ResizeObserver loop warnings remain visible; this change does
not suppress them. Linux CI validation is pending.
2026-09-10 17:41:29 +08:00
Younsang Na db2f8e3064 chore: optimize typecheck execution (#2499) 2026-09-10 00:03:27 +08:00
Neko 0d7b5e9a60 feat(stage-ui): add swipe to reply for chat messages (#2489) 2026-09-10 00:01:53 +08:00
RainbowBird 66f0d45028 refactor(analytics): replace PostHog with OpenPanel (#2480) 2026-09-09 08:26:18 +00:00
Younsang Naandleafyy 5e78b64e35 fix(stage-tamagotchi): prevent controls island overflow in small windows with scroll (#2474)
## Description

<!-- Please insert your description here and especially provide info
about the "what" this PR is solving -->

### As-is
Depending on the size, the Controls Island area gets cut off, making the
buttons in the cropped area inaccessible.

### To-be
The Controls Island is managed via scrolling, allowing interaction with
buttons regardless of the size.
If the main controls also exceed the available space, the entire
Controls Island becomes scrollable. Horizontal scrolling is available
for narrow windows.

#### narrow & smaill

https://github.com/user-attachments/assets/1a44ff4f-8fe2-4a05-96a8-59ebf7dafcff

#### somewhat generous size


https://github.com/user-attachments/assets/c73dbee4-8c8f-4937-ae1a-eda00178274c



## Linked Issues



<!-- Optional, if you have any -->
close #2400

## Additional Context

<!-- e.g. is there anything you'd like reviewers to focus on? -->
Although the size is somewhat less than ideal, the issue has been
resolved, and this serves as a universal solution.

---------

Co-authored-by: leafyy <wuqizq@outlook.com>
2026-09-09 14:20:51 +08:00
Lovehsigure_520 f679616c34 fix(stage-tamagotchi): allow sign-in on the first attempt (#2482) 2026-09-08 17:56:23 +08:00
RainbowBird ef9f122d50 fix(stage-ui): inherit global settings for default card (#2332) 2026-09-08 09:48:39 +00:00
e293b71abc feat: add support for temperature, top_p to be configurable (#2200)
Co-authored-by: twix03 <sathwikbalaa@gmail.com>
Co-authored-by: RainbowBird <git@luoling.moe>
2026-09-08 00:02:53 +08:00
RainbowBird 0fd71bc1ab feat(stage-layouts): add mobile view adjustment mode (#2475) 2026-09-07 12:37:45 +08:00
leafyy 05ac66edfa fix(stage-tamagotchi): show Live2D expressions in settings (#2451)
## Summary

- Send a serializable Live2D expression snapshot from the stage renderer
to the separate Settings window.
- Route expression changes back to the renderer that owns the loaded
model, with owner ID checks for stale-window isolation.
- Add browser regressions for the component boundary and the complete
BroadcastChannel round trip.

Fixes #2450

## Verification

- `pnpm typecheck`
- `pnpm lint`
- `../../node_modules/.bin/vitest run --project browser
src/components/scenarios/settings/model-settings/live2d.browser.test.ts`
- `node_modules/.bin/vitest run --config
apps/stage-tamagotchi/vitest.config.ts --project browser
apps/stage-tamagotchi/src/renderer/composables/model-settings-runtime.browser.test.ts`
- `./node_modules/.bin/electron-vite build`
- Vishot Electron capture with the issue Live2D fixture on the merge
base and this branch
- `sem diff upstream/main...HEAD --no-cosmetics -v --file-exts .ts .tsx`

## Visual changes

| Before | After |
|---|---|
|
![](https://github.com/user-attachments/assets/e383ebf3-d60e-4f66-8550-4cab0dc61261)
|
![](https://github.com/user-attachments/assets/b8aee712-c227-44d0-a60c-2dd24cc0b0cd)
|
| Settings / Models / Live2D expressions: empty list | Settings / Models
/ Live2D expressions: model entries are available |
2026-09-07 11:14:44 +08:00
RainbowBird 836941fda8 feat(stage-layouts): simplify mobile stage controls (#2472)
Signed-off-by: RainbowBird <git@luoling.moe>
2026-09-06 16:28:01 +00:00
RainbowBird 05007ce3ca refactor(stage-ui): rename analytics runtime path (#2466) 2026-09-04 23:37:45 +08:00
RainbowBird e23fa64b62 fix(stage-layouts): suppress mobile browser form assistance (#2460) 2026-09-04 15:56:01 +08:00
leafyy 2ca8339a49 fix(speech): synchronize streaming catalog state (#2445) 2026-09-03 19:20:35 +08:00
Doji 75bde7ee34 fix(stage-pocket): add missing account settings route (#2457) 2026-09-03 18:23:06 +08:00
leafyy 13bbad95dc fix(stage-pages): initialize streaming speech provider config (#2440) 2026-09-02 19:00:05 +08:00
Doji 9c213115f8 fix(stage): unify mobile keyboard avoidance (#2426) 2026-09-02 02:23:24 +08:00
leafyy 55ef3d416e fix(stage-ui-three): preserve imported VRM view settings (#2423) 2026-09-01 10:31:12 +08:00
Neko 99ce4bdcd0 fix(stage-tamagotchi): enforce widget window lifecycle (#2409) 2026-08-30 14:11:14 +08:00
Neko Ayaka 2c1e223c8d release: v0.12.0-beta.5 2026-08-30 02:31:30 +08:00
Lovehsigure_520 da2ac8bbcc fix(ui): standardize scrollable areas (#2399) 2026-08-29 22:34:24 +08:00
Younsang Na 273a5e535c fix(stage-tamagotchi): hide inactive title bar info icon (#2404) 2026-08-29 22:01:09 +08:00
RinandNeko Ayaka 8ddb35353e feat(stage-tamagotchi,stage-ui-live2d): procedural motion generation (#2376)
---------

Co-authored-by: Neko Ayaka <neko@ayaka.moe>
2026-08-29 18:15:28 +08:00
Neko 434f8de2be fix(stage-ui): remove the chat session initialization race (#2394) 2026-08-29 03:35:31 +08:00
Makito 56bcfc793e fix(stage-tamagotchi): include install-electron in scripts to ensure electron (#2392)
## Description

Let `dev` and `start` scripts run `install-electron` before
`electron-vite`.

Electron 42 removed the `postinstall` script. The `electron` package now
downloads its binary on its `bin` entry's first run. `electron-vite`
reads `node_modules/electron/path.txt` directly, so it never starts that
download. A fresh install therefore fails with:

```
error during start dev server and electron app:
Error: Electron uninstall
    at getElectronPath (...)
    ...
```

`install-electron` runs the same code as the removed `postinstall`
script. It returns immediately when the binary is already present.
2026-08-29 02:13:45 +09:00
leafyy 4f38487447 fix(stage-pocket): add iOS microphone usage description (#2389) 2026-08-28 17:44:30 +08:00
Neko Ayaka fe38fb9ded release: v0.12.0-beta.4 2026-08-28 04:59:05 +08:00
Neko Ayaka 175ad08477 release: v0.12.0-beta.3 2026-08-27 20:48:27 +08:00
ANIRUDDHA ADAK badbe63559 fix(stage-tamagotchi): guard systemPreferences calls on Linux (#2380) 2026-08-27 19:56:15 +08:00
이윤진(Lee Yunjin) 62b4fd21ff fix(stage-tamagotchi): fix window visibility and ozone flags on wayland (#2288) 2026-08-27 17:25:06 +08:00
leafyy 795c43f0a7 refactor(stage-pages): share polaroid page (#2375) 2026-08-27 17:10:34 +08:00
Neko c6c486d761 fix(ui-server-auth): exclude stage inference assets (#2379) 2026-08-27 00:11:25 +08:00
Neko Ayaka 146b3da65a Revert "style: lint"
This reverts commit 98f40d7d0b.
2026-08-26 20:13:10 +08:00
Neko Ayaka 98f40d7d0b style: lint 2026-08-26 19:49:58 +08:00
Neko Ayaka 6a24582696 chore(deps): bump dependencies 2026-08-26 19:01:04 +08:00
Neko Ayaka f53e82a9b3 release: v0.12.0-beta.2 2026-08-26 04:17:25 +08:00
Neko 6299dd0919 fix(stage-ui): stabilize connection status animation (#2365) 2026-08-26 04:14:53 +08:00
Neko 95cc685b1b feat(stage-tamagotchi): add Apple Speech transcription (#2364) 2026-08-25 17:41:43 +00:00
Neko eb5cdbe71a fix(stage-pocket): use system browser for authentication (#2355) 2026-08-25 13:54:03 +08:00
Neko e2376736af fix(stage-ui): align module provider visibility with auth (#2353) 2026-08-24 21:27:58 +08:00
Neko Ayaka f14a7ac9a1 release: v0.12.0-beta.1 2026-08-24 03:55:37 +08:00
Neko f790a96d70 feat(stage-ui): add thinking model option (#2343) 2026-08-23 05:24:33 +08:00
Neko 30eeb8bd40 fix(stage-web): improve performance visualizer (#2344) 2026-08-23 05:23:03 +08:00
Neko 67a0410c4d fix(stage-web): stabilize mobile keyboard layout (#2338) 2026-08-22 14:38:22 +08:00
Neko Ayaka 702b4c862d feat(stage-tamagotchi): adaptive controls island 2026-08-19 23:30:57 +08:00
Neko 2bc1c51c29 feat(stage-tamagotchi): animate tray window alignment (#2319) 2026-08-19 14:17:39 +08:00
Neko 5e95e56d62 fix(stage-ui,stage-web,stage-tamagotchi): capture imported Live2D models in Polaroid (#2320) 2026-08-19 14:17:03 +08:00
Neko Ayaka 5c0916baa3 fix(stage-ui,stage-tamagotchi,stage-web,stage-pocket): incorrectly initialized 2026-08-19 04:17:21 +08:00