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>
This commit is contained in:
Lilia_Chen
2026-04-25 00:56:03 +08:00
committed by GitHub
co-authored by autofix-ci[bot]
parent 255ce71cba
commit c6c0494998
27 changed files with 2269 additions and 41 deletions
+10 -2
View File
@@ -92,8 +92,9 @@ jobs:
if: matrix.app_name == 'stage-tamagotchi-godot'
uses: chickensoft-games/setup-godot@v2
with:
version: 4.6.1
version: 4.6.2
use-dotnet: true
include-templates: true
- run: pnpm install --frozen-lockfile
- run: pnpm run build:packages
@@ -101,6 +102,13 @@ jobs:
- name: Build App
run: ${{ matrix.command }}
- name: Export Godot Linux sidecar
if: matrix.app_name == 'stage-tamagotchi-godot'
working-directory: ./engines/stage-tamagotchi-godot
run: |
mkdir -p build/linux
godot --headless --export-release "Linux" build/linux/godot-stage
typecheck:
name: Type Check
runs-on: ubuntu-latest
@@ -133,4 +141,4 @@ jobs:
# base-ref: origin/main # optional, default: origin/main
# fail-on-downgrade: true # optional, default: true
- name: Print result
run: "echo 'Downgraded: ${{ steps.check.outputs.downgraded }}'"
run: "echo 'Downgraded: ${{ steps.check.outputs.downgraded }}'"