Commit Graph
42 Commits
Author SHA1 Message Date
Lilia_Chenandautofix-ci[bot] bc7dda3d5f feat(stage-tamagotchi): add experimental Godot stage sidecar (#1830)
## Summary

Adds the experimental Godot stage sidecar path for `stage-tamagotchi`.

This PR wires the existing Tamagotchi model selection flow into an
external Godot runtime window. The renderer gates Godot scene input to
VRM models, Electron main materialises the selected model bytes to a
local file, and the Godot sidecar receives the native path over a local
WebSocket bridge before importing and displaying the avatar at runtime.

## What Changed

- Added a typed Godot scene input contract with `format: "vrm"`.
- Added renderer-side VRM-only gating before sending selected model data
to Electron main.
- Added Electron main sidecar management for:
  - launching Godot
  - starting the local WebSocket bridge
  - materialising selected VRM bytes under app `userData`
  - forwarding scene apply messages to Godot
  - optional remote debugging support
- Added Godot runtime scripts for:
  - sidecar startup and WebSocket orchestration
  - message envelope parsing
  - avatar import and atomic replacement
  - runtime VRM import through Godot `GLTFDocument`
- Added engine-local docs for runtime import, live debugging, vendor
patches, and current VRM support boundaries.
- Removed temporary tests after using them to verify the glue behaviour
locally, to keep the review surface smaller.

## Vendor Code Note

A large part of this PR is vendored Godot add-on code, not AIRI business
logic.

The bulk of the added files under:

- `engines/stage-tamagotchi-godot/addons/vrm/**`
- `engines/stage-tamagotchi-godot/addons/Godot-MToon-Shader/**`

comes from V-Sekai Godot VRM / MToon add-ons. These files are required
because Godot plugins are project-local source/assets rather than
package-manager dependencies.

The intended review scope for vendor code is limited to:

- source baseline metadata
- license/plugin config
- Godot-generated metadata notes
- the documented local patch in `addons/vrm/vrm_extension.gd`

The application/runtime code to review is mainly under:

- `apps/stage-tamagotchi/src/shared/eventa/index.ts`
- `apps/stage-tamagotchi/src/renderer/pages/settings/models/`
- `apps/stage-tamagotchi/src/main/services/airi/godot-stage/`
- `engines/stage-tamagotchi-godot/scripts/`

## Current Boundary

This is still an experimental G1 Godot sidecar path.

The runtime scene input contract accepts `.vrm` files only. The current
Godot runtime importer covers the VRM 0.x path used by the local fixture
through AIRI’s runtime bridge over the vendored VRM extension. VRM 1.0
editor import support exists in the vendored add-on, but the sidecar
runtime importer does not yet register the full `VRMC_*` extension set,
so this PR does not claim full VRM 1.0 runtime support.

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-05-15 14:37:32 +08:00
Lilia_Chenandautofix-ci[bot] c6c0494998 feat(stage-tamagotchi-godot): add Godot stage G0 sidecar preview (#1724)
## Summary

Add the G0 Godot Stage sidecar preview for `stage-tamagotchi`.

## Design

- Keep Electron as the desktop host and run Godot as a separate sidecar
window by design.
- Use the settings window as the entry point for starting/stopping the
experimental Godot Stage.
- Require explicit `GODOT4` in development mode instead of
auto-discovering local Godot installs.
- Use the packaged sidecar under `process.resourcesPath/godot-stage` in
the packaged runtime.
- Close the Godot WebSocket lifecycle channel on startup failure and
stage shutdown.

## Changes

- Add the Electron main-side Godot Stage lifecycle service.
- Add renderer/settings wiring for switching to the experimental Godot
Stage.
- Add the minimal Godot stage runtime skeleton and WebSocket handshake
path.
- Add Godot export presets for sidecar builds.
- Add sidecar path verification for the Godot export preset and
`electron-builder` resource contract.
- Document the development runtime setup and packaging expectations.

## CI/CD

- Align Godot CI to `4.6.2`.
- Add Linux Godot export smoke coverage as the fastest CI export path.
- Add sidecar contract verification to CI.
- Run packaged sidecar verification after `electron-builder --dir`.

CD is intentionally deferred in this PR. The release workflow still
needs a later step to export the Godot sidecar before packaging release
artefacts.

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-25 00:56:03 +08:00
Lilia_Chen 6a61248cd4 refactor(stage-tamagotchi-godot): move to engines dir (#1715) 2026-04-23 19:30:53 +08:00
567fd6666e feat(stage-tamagotchi-godot): initiation of Godot stage (#1697)
## Description

This PR introduces `@proj-airi/stage-tamagotchi-godot` as the initial
Godot C# workspace package for the desktop-only `stage-tamagotchi` stage
runtime track.

The current scope is intentionally limited to G0 bootstrap work:
- add the Godot/.NET project files and workspace wrapper files
- establish the package boundary for the Godot-backed desktop stage
runtime
- add a minimal runnable scene and script so the Godot project can be
opened, built, and executed inside the repo

Concretely, this PR adds:
- the new `packages/stage-tamagotchi-godot` package
- Godot project files (`project.godot`, `.csproj`, `.sln`, editor/config
files)
- a minimal `stage-root` scene and `StageRoot.cs` script
- basic visible scene contents for runtime validation (`Camera3D`,
`OmniLight3D`, `Box`)
- a package README describing scope and ownership boundaries
- minimal package scripts for build/typecheck via `dotnet build`

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: LemonNeko <self@lemonneko.moe>
Co-authored-by: Garfield Lee <Garfield550@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Neko <neko@ayaka.moe>
2026-04-23 01:04:01 +08:00
Lilia-Chen 631a6ba65f fix: decouple vrm loading reason and ThreeScene phase transition reason 2026-04-02 00:11:38 +01:00
Lilia_Chen 522e48b063 fix(stage-ui-three): model offset and camera position setting is now persistent in stage-web app (#1543) 2026-04-02 07:04:03 +08:00
Lilia_Chenandautofix-ci[bot] d9ba2ab40e refactor(stage-ui-three): improved outline logic (#1536)
* refactor(stage-ui-three): improved outline logic

* [autofix.ci] apply automated fixes

* fix(stage-ui-three): restored runtime hooks being exposed

* some type fix

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-04-01 07:48:00 +08:00
Lilia-Chen 718e91a833 refactor(stage-ui-three): add hooks in VRM loading workflow 2026-03-31 00:24:13 +01:00
Lilia-Chen 1037614a89 fix(stage-ui-three): removed duplicated IBL inject 2026-03-26 14:23:55 +00:00
Lilia_Chen 088ce34a2a fix(stage-ui-three): cutout bug fix (#1471)
* fix(stage-ui-three): cutout bug fix

* fix(stage-ui-three): gemini review comment

* fix(stage-ui-three): codex review comment
2026-03-25 08:49:21 +08:00
Lilia_Chenandautofix-ci[bot] 9ae795a831 refactor(tamagotchi/stage-*): remove duplicated scene in the setting page for tamagotchi (#1460)
* refactor(tamagotchi): remove setting window duplicate scene

* refactor(tamagotchi): some changes

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-24 03:46:52 +08:00
Lilia_ChenandGarfield Lee cf3e6a43bd chore(docs): new DevLog for VRM & three.js refactor (#1368)
---------

Co-authored-by-agent: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Garfield Lee <Garfield550@users.noreply.github.com>
2026-03-16 02:11:52 +08:00
dec2b04924 refactor: vrm performance tracing and better lifecycle management (#1194)
* refactor: vrm performance tracing and better lifecycle management

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Rename lag-visualizer.vue to performance-visualizer.vue

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @sumimakito

Co-authored-by: Makito <i@maki.to>

* Apply suggestion from @sumimakito

Co-authored-by: Makito <i@maki.to>

* Apply suggestion from @sumimakito

Co-authored-by: Makito <i@maki.to>

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* [autofix.ci] apply automated fixes

* Apply suggestion from @Lilia-Chen

* [autofix.ci] apply automated fixes

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* [autofix.ci] apply automated fixes

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* [autofix.ci] apply automated fixes

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* Apply suggestion from @Lilia-Chen

* fix: some tiny bugs and model URL lifecycle

* fix: TresCanvas size=0 bug

* Delete .claude/settings.json

* fix: some clean-up

* [autofix.ci] apply automated fixes

* fix: use screen to wrap up TresCanvas

* Delete .claude/settings.json

---------

Co-authored-by: Makito <i@maki.to>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Neko <neko@ayaka.moe>
2026-03-12 09:20:20 +08:00
Lilia_Chenandautofix-ci[bot] 0093803920 feat(stage-ui-*): ACT special tokens for future motion gen (#974)
* feat(stage-ui*):ACT special tokens

* test(stage-ui): llm-marker-parser test updates for ACT tokens

* [autofix.ci] apply automated fixes

* style(stage-ui): apply gemini code review notes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-20 09:32:47 +08:00
Lilia-Chen 8787db198a release: v0.8.1-beta.13 2026-01-19 19:51:29 +00:00
Lilia_Chenandautofix-ci[bot] 372f356964 fix(stage-ui-three): lipsync update() (#971)
* bug-fix: lipsync update

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-18 20:55:43 +08:00
Lilia_ChenandMakito ecd5eee155 feat(model-driver-mediapipe): integrate MediaPipe as a motion capture tool (#828)
---------

Co-authored-by: Makito <i@maki.to>
2025-12-30 12:11:08 +08:00
Lilia_Chen c74f335253 feat(stage-ui-three-performance-runtime): init new experimental three performance runtime design (#809) 2025-12-17 10:50:06 +08:00
Lilia_Chenandautofix-ci[bot] c19ead966a fix(stage-ui): fixed the system prompt initialisation bug (#796)
* bug-fix(stage-ui): fixed the system prompt not successfully initialised bug

* bug-fix(stage-ui): if it's already initialised, then nothing needs to do in onMounted()

* [autofix.ci] apply automated fixes

* bug-fix(stage-ui): removed onMounted() logic, which is unnecessary

* fix: removed a blank vue playground page in the dev-tool. This should be left for the next PR maybe...

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-12-15 21:53:29 +00:00
c13ada508f feat(stage-ui): Synchronised Emotion Expression and Delay Animation to the TTS AIRI Speaking (#741)
* feat(stage-ui): Synchronised emotion expression and delay animation with the tts speaking

* [autofix.ci] apply automated fixes

* Update packages/stage-ui/src/utils/tts.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* feat(stage-ui): Synchronised emotion expression and delay animation with the tts speaking - code review

* feat(stage-ui): Synchronised emotion expression and delay animation with the tts speaking - code review

* feat(stage-ui): Synchronised emotion expression and delay animation with the tts speaking - code review

* feat(stage-ui): Synchronised emotion expression and delay animation with the tts speaking - code review

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-16 19:52:44 +00:00
Lilia_Chenandautofix-ci[bot] 02cbbf40ee feat(stage-ui-three): Enhanced Lip Sync Animation (#740)
* feature: enhanced lip sync animation

* [autofix.ci] apply automated fixes

* feature: enhanced lip sync animation - code review

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-11-14 23:49:30 +00:00
Lilia_Chenandgemini-code-assist[bot] 94f4959a99 fix(stage-ui-three): fix the issue VRM model goes too far #642 (#662)
* bug-fix model goes too far

* bug-fix model goes too far gemini-review

* Update packages/stage-ui-three/src/composables/vrm/core.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* bug-fix model goes too far gemini-review

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-17 21:03:21 +01:00
Lilia_Chen 5459741276 refactor(stage-ui,renderer-three) - three-scene package (#569) 2025-09-25 21:59:29 +08:00
Lilia_Chen 08d579df4a bug fix - VRM - directional light adjustment persistance (#556) 2025-09-05 00:41:48 +01:00
Lilia_Chen d64bfa33fa fix(stage-ui/VRM) Directional light now can adjust rotation (#554)
* bug fix - VRM - directional light can now adjust rotation
2025-09-04 21:51:00 +01:00
Lilia_Chen 6b556019e2 fix&refactor(stage-ui): Shader injection now can correctly deal with MToon material and ShaderMaterial (#542)
* shader fix & refactor
2025-09-02 00:25:54 +01:00
Lilia_Chen d780691043 feat(stage-ui/VRM) Better skybox IBL: irrSH diffusion & Specular reflection (#504)
* better skybox IBL: irrSH diffusion & Specular
2025-08-28 13:11:41 +01:00
Lilia_ChenandNeko f6d6349528 feat(stage-ui): NPR skybox environmental lighting functionality added (#457)
---------

Co-authored-by: Neko <neko@ayaka.moe>
2025-08-26 12:51:02 +08:00
Lilia_Chen 92ae0c0730 feat(stage-ui): Switch between hemisphere light and sky box (#357) 2025-08-14 22:15:21 +08:00
Lilia_Chen 9fbbccc04a chore(stage-ui): queue.ts renaming, tts "..." recognition, and something relates to next and afterNext (#355) 2025-08-07 18:16:40 +08:00
Lilia_Chen d651074096 fix(stage-ui) TTS decimals are now retained, AIRI will no longer say "25" if it's "2.5" (#340) 2025-08-01 20:37:30 +08:00
Lilia_Chen 76ed0ff315 stage-web fix chat history only load the last AIRI'soutput (#334) 2025-07-30 11:06:11 +08:00
97ecbdcc9d feat(stage-ui): LookAt 3 functions: looking at camera; looking at mouse; looking forward (tracking disabled) (#326)
---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Neko <neko@ayaka.moe>
2025-07-27 21:32:01 +08:00
Lilia_Chen 1d486655ed feat(stage-ui): Now the VRM model can always look to the camera! (#322) 2025-07-25 19:03:50 +08:00
Lilia_Chen 0e7116c695 doc: contributing: zh-Hans: quick fix (#320) 2025-07-24 19:36:16 +08:00
Lilia_Chen 494bb3a324 fix(stage-ui): In the prod, the camera was not being set correct pos and target (#317) 2025-07-24 13:28:49 +08:00
Lilia_ChenandNeko 7f5a244fbf feat(stage-ui): animation start coordinate anchor + vrm position logic fix (#314)
---------

Co-authored-by: Neko <neko@ayaka.moe>
2025-07-24 01:07:50 +08:00
Lilia_Chen 7c62bb0908 feat(stage-ui): VRM model setting: camera psotion (view scale) (#309) 2025-07-22 12:27:27 +08:00
Lilia_ChenandNeko a8454b4a44 feat(stage-ui): VRM model setting page: FOV and Rotation (#307)
---------

Co-authored-by: Neko <neko@ayaka.moe>
2025-07-21 19:17:06 +08:00
Lilia_Chen 1a2a790ee5 feat(stage-ui): VRM model postioning functionalities (#302) 2025-07-19 22:39:32 +08:00
Lilia_ChenandNeko d2ce04b21b feat(stage-ui): Live2D vs VRM page switch botton and VRM model uploading functionality (#290)
---------

Co-authored-by: Neko <neko@ayaka.moe>
2025-07-19 01:17:41 +08:00
05e83d6ac5 i18n(docs): contribution guide (#285)
---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Neko <neko@ayaka.moe>
2025-07-17 17:47:06 +08:00