Scenarios - Stage Tamagotchi Electron
Own the Electron capture scenarios used to generate tamagotchi docs screenshots.
Purpose
This package owns product-specific Electron scenario definitions and AIRI window/navigation helpers only. It depends on @vishot/source-electron for:
- the generic
defineScenario()helper - the generic Electron capture context surface
- raw screenshot capture and scenario loading
It does not launch Electron itself and it does not own browser-scene composition or shared screenshot staging.
Workflow
This package is step 1 of the docs screenshot pipeline.
- Build
@proj-airi/stage-tamagotchi. - Run this scenario through
@vishot/cli. - Write raw outputs to
packages/scenarios-stage-tamagotchi-browser/artifacts/raw. - Then run the browser package capture (step 2, documented in that package README).
Agent Quickstart
From repo root, run:
pnpm -F @proj-airi/stage-tamagotchi build
pnpm exec vishot capture --target electron ./packages/scenarios-stage-tamagotchi-electron/src/scenarios/demo-controls-settings-chat-websocket/index.ts --app-entrypoint ./apps/stage-tamagotchi/out/main/index.js --cwd . --output-dir ./packages/scenarios-stage-tamagotchi-browser/artifacts/raw --format avif
Expected result:
27raw files inpackages/scenarios-stage-tamagotchi-browser/artifacts/raw- names like
00-stage-tamagotchi.avif...26-devtools-vision-capture.avif
Capture a local display model
Use the file-input scenario when the requested evidence must render a local Live2D, VRM, or MMD model instead of a preset:
AIRI_DISPLAY_MODEL_FORMAT=vrm \
AIRI_DISPLAY_MODEL_PATH=/absolute/path/to/avatar.vrm \
pnpm exec vishot capture \
./packages/scenarios-stage-tamagotchi-electron/src/scenarios/display-model-from-file.ts \
--target electron \
--app-entrypoint ./apps/stage-tamagotchi/out/main/index.js \
--cwd . \
--settle-ms 2500 \
--output-dir ./.vishot/display-model/vrm
Set AIRI_DISPLAY_MODEL_FORMAT to live2d, vrm, or mmd. The scenario skips first-run onboarding in the capture profile, imports and selects the supplied file through the model chooser, captures the main stage, then restores persisted state and removes the imported fixture.
Scenario Authoring
import { defineStageTamagotchiScenario } from '../context'
export default defineStageTamagotchiScenario({
id: 'settings-connection',
async run({ capture, stageWindows, controlsIsland, settingsWindow }) {
const mainWindow = await stageWindows.waitFor('main')
await controlsIsland.expand(mainWindow.page)
const settings = await controlsIsland.openSettings(mainWindow.page)
const page = await settingsWindow.goToConnection(settings.page)
await page.waitForTimeout(1000)
await page.getByText('WebSocket Server Address').waitFor({ state: 'visible' })
await capture('connection-settings', page)
},
})
Scenario Layout
The docs workflow is organized as one section-based scenario module under src/scenarios/demo-controls-settings-chat-websocket/. The top-level index.ts orchestrates section manifests.
Important:
--output-dirforvishot captureshould point topackages/scenarios-stage-tamagotchi-browser/artifacts/raw.- This package does not publish docs assets directly; it only prepares raw assets for browser-scene composition.
Notes
- Raw scenario modules live under
src/scenarios. - Scenario entrypoints should point at
index.tswhen the workflow is organized as a section folder. - Keep this package focused on Electron capture flows for docs screenshots.
- Paths in these examples are resolved from the repository root.
Electron Profile Note (Plugin Discovery)
When running scenarios through Vishot's generic Electron source capture, the built Electron app can use a different userData profile than dev:tamagotchi.
dev:tamagotchiplugin root commonly resolves to:~/Library/Application Support/@proj-airi/stage-tamagotchi/plugins/v1
- Vishot/Electron capture runs can resolve plugin root to:
~/Library/Application Support/Electron/plugins/v1
If the chess plugin appears in dev but not in Vishot (Discovered 0 or Plugin manifest not found), link the plugin dist directory into the Electron profile plugins root too:
mkdir -p "$HOME/Library/Application Support/Electron/plugins/v1"
ln -sfn "/absolute/path/to/airi-plugin-game-chess/dist" "$HOME/Library/Application Support/Electron/plugins/v1/airi-plugin-game-chess"