diff --git a/cspell.config.yaml b/cspell.config.yaml index 0e69379d7..a579aeec1 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -315,6 +315,7 @@ words: - Unlisten - unocss - unplugin + - unref - unspeech - upterm - userversion diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-airi-card.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-airi-card.avif index 71fd42ba2..5ebce065b 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-airi-card.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-airi-card.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-chat-window.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-chat-window.avif index 5caaa60d9..196db0efa 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-chat-window.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-chat-window.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-consciousness.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-consciousness.avif index 9a1c75b8d..007d32d21 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-consciousness.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-consciousness.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-controls-island-expanded.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-controls-island-expanded.avif index ecd69fecd..f354a965b 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-controls-island-expanded.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-controls-island-expanded.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-data-settings.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-data-settings.avif index a88b74bd8..2f51b5b3c 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-data-settings.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-data-settings.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-beat-sync.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-beat-sync.avif index 09ddd5827..26fec3cfe 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-beat-sync.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-beat-sync.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-context-flow.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-context-flow.avif index 57333797c..0ad6a5c9d 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-context-flow.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-context-flow.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-displays.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-displays.avif index dcedc585e..1a059c6ab 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-displays.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-displays.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-plugin-host.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-plugin-host.avif index 0006c8b0a..4efd21365 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-plugin-host.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-plugin-host.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-relative-mouse.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-relative-mouse.avif index bb90b557b..5736ff5ca 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-relative-mouse.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-relative-mouse.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-screen-capture.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-screen-capture.avif index 745e0784e..d0d6b1013 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-screen-capture.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-screen-capture.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-use-window-mouse.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-use-window-mouse.avif index a5bcd6447..092317926 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-use-window-mouse.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-use-window-mouse.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-vision-capture.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-vision-capture.avif index 4bea2b23c..9ee83d5d6 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-vision-capture.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-vision-capture.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-websocket-inspector.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-websocket-inspector.avif index 50875d777..6dc15ff78 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-websocket-inspector.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-websocket-inspector.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-widgets-calling.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-widgets-calling.avif index 5992ec885..dcc4fca63 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-widgets-calling.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-devtools-widgets-calling.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-hearing.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-hearing.avif index 29d0323ad..f44ac3961 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-hearing.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-hearing.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-main-window.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-main-window.avif index 727e24a1c..0a5594e09 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-main-window.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-main-window.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-models.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-models.avif index ee133205e..282d9bb28 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-models.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-models.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-modules.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-modules.avif index 952be9eff..6ac9536fd 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-modules.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-modules.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-providers.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-providers.avif index ef6d5ad66..5cb91f36c 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-providers.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-providers.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-settings-window.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-settings-window.avif index 5cf9e0b4f..bd68d8c8b 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-settings-window.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-settings-window.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-speech.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-speech.avif index e226d36a5..800c74265 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-speech.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-speech.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-color-scheme.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-color-scheme.avif index 28eda62f8..a61ccf7ae 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-color-scheme.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-color-scheme.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-developer.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-developer.avif index 9c35e2d2d..3a6e6bd1c 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-developer.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-developer.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-general.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-general.avif index ac8bb9114..657abe251 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-general.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-system-general.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-vision.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-vision.avif index 3c906fa4f..72d750970 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-vision.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-vision.avif differ diff --git a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-websocket-settings.avif b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-websocket-settings.avif index 003b3cab7..9f1375a70 100644 Binary files a/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-websocket-settings.avif and b/docs/content/en/docs/manual/tamagotchi/setup-and-use/assets/manual-websocket-settings.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/README.md b/packages/scenarios-stage-tamagotchi-browser/README.md index 85a245ab0..f4e54df9b 100644 --- a/packages/scenarios-stage-tamagotchi-browser/README.md +++ b/packages/scenarios-stage-tamagotchi-browser/README.md @@ -8,43 +8,67 @@ This package is the tamagotchi browser composition layer. It contains: - the Vite/Vue scene app - the scene composition components and capture roots +- file-based scene routing from `src/scenes/**` via `unplugin-vue-router` - the `capture` script that exports final browser captures through `@proj-airi/vishot-runner-browser` It expects raw business screenshots to exist in `artifacts/raw` before final export runs. +Current docs capture target route: + +- `/docs/setup-and-use` -> `src/scenes/docs/setup-and-use/index.vue` +- `/docs/setup-and-use/intro-chat` -> `src/scenes/docs/setup-and-use/intro-chat.vue` +- `/docs/setup-and-use/intro-websocket` -> `src/scenes/docs/setup-and-use/intro-websocket.vue` +- `/docs/setup-and-use/main-window` -> `src/scenes/docs/setup-and-use/main-window.vue` +- `/docs/setup-and-use/settings` -> `src/scenes/docs/setup-and-use/settings.vue` + ## Workflow -1. Build the Electron app. -2. Capture raw screenshots into this package's `artifacts/raw` directory. -3. Run this package's `capture` script to export the composed scene roots into `artifacts/final`. +1. Run Electron capture first and populate `artifacts/raw` (see electron package README). +2. Run browser capture and output final composed files to docs assets. + +## Agent Quickstart + +From repo root, run: ```bash -pnpm -F @proj-airi/stage-tamagotchi build -pnpm -F @proj-airi/vishot-runner-electron capture -- ../../packages/scenarios-stage-tamagotchi-electron/src/scenarios/demo-controls-settings-chat-websocket.ts --output-dir ../../packages/scenarios-stage-tamagotchi-browser/artifacts/raw -pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture +pnpm -F @proj-airi/vishot-runner-electron capture ../../packages/scenarios-stage-tamagotchi-electron/src/scenarios/demo-controls-settings-chat-websocket/index.ts --output-dir ../../packages/scenarios-stage-tamagotchi-browser/artifacts/raw --format avif +pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture --format avif --route '/docs/setup-and-use/intro-chat' --output-dir ../../docs/content/en/docs/manual/tamagotchi/setup-and-use/assets --settle-ms 800 +pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture --format avif --route '/docs/setup-and-use/intro-websocket' --output-dir ../../docs/content/en/docs/manual/tamagotchi/setup-and-use/assets --settle-ms 800 +pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture --format avif --route '/docs/setup-and-use/main-window' --output-dir ../../docs/content/en/docs/manual/tamagotchi/setup-and-use/assets --settle-ms 800 +pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture --format avif --route '/docs/setup-and-use/settings' --output-dir ../../docs/content/en/docs/manual/tamagotchi/setup-and-use/assets --settle-ms 800 ``` -Expected raw inputs: +Expected results: -- `artifacts/raw/00-stage-tamagotchi.png` -- `artifacts/raw/04-websocket-settings.png` +- Raw: `27` files under `packages/scenarios-stage-tamagotchi-browser/artifacts/raw` +- Final docs assets: `manual-*.avif` and `intro-chat-window.avif` under `docs/content/en/docs/manual/tamagotchi/setup-and-use/assets` -Current composed outputs: +## Capture Flags -- `artifacts/final/intro-chat-window.png` -- `artifacts/final/intro-websocket-settings.png` +The browser capture script supports: -Optional AVIF export: +- `--format ` (default: `png`) +- `--route ` (default: `/docs/setup-and-use`) +- `--output-dir ` (default: `artifacts/final`) +- `--settle-ms ` (default: `500`) extra delay after scene ready before screenshot + +Examples: ```bash -pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture -- --format avif +pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture --format avif --settle-ms 800 +pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture --route /docs/setup-and-use --settle-ms 800 +pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture --route /docs/setup-and-use/settings --settle-ms 800 +pnpm -F @proj-airi/scenarios-stage-tamagotchi-browser capture --format avif --route /docs/setup-and-use --output-dir ../../docs/content/en/docs/manual/tamagotchi/setup-and-use/assets --settle-ms 800 ``` -The browser capture flow still starts from PNG because that is the Playwright screenshot format. The package's `capture` script can opt into an AVIF post-processing step through Vishot's `imageTransformers` hook. +The browser capture flow starts from Playwright PNG screenshots, then optionally transforms to AVIF via Vishot `imageTransformers`. ## Notes -- The current scene app renders `src/scenes/intro-manual-scene.vue`. +- This package can host multiple scene pages. Add Vue SFC routes under `src/scenes/**` (for example `src/scenes/docs/setup-and-use/index.vue`). +- The default capture route is `/docs/setup-and-use`. Override it with `--route /your/path`. +- Captures are produced only for roots mounted by the exact route you pass. For full setup manual assets, run captures for `/docs/setup-and-use/intro-chat`, `/docs/setup-and-use/intro-websocket`, `/docs/setup-and-use/main-window`, and `/docs/setup-and-use/settings`. - Final export depends on the browser scene reaching the `__SCENARIO_CAPTURE_READY__` flag after its raw images load. - If raw capture is missing or stale, final export will fail or render outdated assets. - If you enable AVIF output, the final artifact filenames switch from `.png` to `.avif` because the transformer replaces the emitted PNG files after capture. +- Paths in these `pnpm -F` examples are resolved from the filtered package working directory. diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/00-stage-tamagotchi.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/00-stage-tamagotchi.avif new file mode 100644 index 000000000..b66c68675 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/00-stage-tamagotchi.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/01-controls-island-expanded.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/01-controls-island-expanded.avif new file mode 100644 index 000000000..a66f30deb Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/01-controls-island-expanded.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/02-settings-window.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/02-settings-window.avif new file mode 100644 index 000000000..97700b527 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/02-settings-window.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/03-websocket-settings.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/03-websocket-settings.avif new file mode 100644 index 000000000..63f1ef5f2 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/03-websocket-settings.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/04-chat-window.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/04-chat-window.avif new file mode 100644 index 000000000..73e315959 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/04-chat-window.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/05-airi-card.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/05-airi-card.avif new file mode 100644 index 000000000..09f520287 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/05-airi-card.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/06-providers.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/06-providers.avif new file mode 100644 index 000000000..4621150d3 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/06-providers.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/07-data.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/07-data.avif new file mode 100644 index 000000000..edc9fbe42 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/07-data.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/08-system-general.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/08-system-general.avif new file mode 100644 index 000000000..739031c6b Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/08-system-general.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/09-system-color-scheme.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/09-system-color-scheme.avif new file mode 100644 index 000000000..16df855da Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/09-system-color-scheme.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/10-models.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/10-models.avif new file mode 100644 index 000000000..1efcdfb22 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/10-models.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/11-modules.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/11-modules.avif new file mode 100644 index 000000000..d5384c999 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/11-modules.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/12-hearing.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/12-hearing.avif new file mode 100644 index 000000000..fd132de17 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/12-hearing.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/13-system-developer.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/13-system-developer.avif new file mode 100644 index 000000000..29487c9ea Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/13-system-developer.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/14-consciousness.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/14-consciousness.avif new file mode 100644 index 000000000..ad69430e1 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/14-consciousness.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/15-speech.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/15-speech.avif new file mode 100644 index 000000000..5c7480089 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/15-speech.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/16-vision.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/16-vision.avif new file mode 100644 index 000000000..73f599cce Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/16-vision.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/17-devtools-use-window-mouse.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/17-devtools-use-window-mouse.avif new file mode 100644 index 000000000..048ce4542 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/17-devtools-use-window-mouse.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/18-devtools-displays.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/18-devtools-displays.avif new file mode 100644 index 000000000..baf023030 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/18-devtools-displays.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/19-devtools-widgets-calling.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/19-devtools-widgets-calling.avif new file mode 100644 index 000000000..3d1c836bf Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/19-devtools-widgets-calling.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/20-devtools-context-flow.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/20-devtools-context-flow.avif new file mode 100644 index 000000000..6fd06686a Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/20-devtools-context-flow.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/21-devtools-relative-mouse.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/21-devtools-relative-mouse.avif new file mode 100644 index 000000000..cd6cf2aff Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/21-devtools-relative-mouse.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/22-devtools-beat-sync.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/22-devtools-beat-sync.avif new file mode 100644 index 000000000..ec2fadf77 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/22-devtools-beat-sync.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/23-devtools-websocket-inspector.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/23-devtools-websocket-inspector.avif new file mode 100644 index 000000000..17c4116ae Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/23-devtools-websocket-inspector.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/24-devtools-plugin-host.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/24-devtools-plugin-host.avif new file mode 100644 index 000000000..8fb23070b Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/24-devtools-plugin-host.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/25-devtools-screen-capture.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/25-devtools-screen-capture.avif new file mode 100644 index 000000000..dcd2b5df0 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/25-devtools-screen-capture.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/26-devtools-vision-capture.avif b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/26-devtools-vision-capture.avif new file mode 100644 index 000000000..c326e7249 Binary files /dev/null and b/packages/scenarios-stage-tamagotchi-browser/artifacts/raw/26-devtools-vision-capture.avif differ diff --git a/packages/scenarios-stage-tamagotchi-browser/package.json b/packages/scenarios-stage-tamagotchi-browser/package.json index cb6ae6976..42fed1840 100644 --- a/packages/scenarios-stage-tamagotchi-browser/package.json +++ b/packages/scenarios-stage-tamagotchi-browser/package.json @@ -26,15 +26,20 @@ "@napi-rs/image": "^1.12.0", "@proj-airi/vishot-runner-browser": "workspace:^", "@proj-airi/vishot-runtime": "workspace:^", + "@vueuse/core": "catalog:", "date-fns": "catalog:", - "vue": "catalog:" + "reka-ui": "^2.9.5", + "vue": "catalog:", + "vue-router": "catalog:" }, "devDependencies": { "@iconify-json/line-md": "catalog:", "@iconify-json/material-symbols": "catalog:", "@iconify-json/mdi": "catalog:", + "@iconify-json/ph": "catalog:", "@unocss/reset": "^66.6.8", "@vitejs/plugin-vue": "^6.0.5", + "unplugin-vue-router": "^0.19.2", "vue-tsc": "^3.2.6" } } diff --git a/packages/scenarios-stage-tamagotchi-browser/scripts/capture.ts b/packages/scenarios-stage-tamagotchi-browser/scripts/capture.ts index 97612f78e..b44df4468 100644 --- a/packages/scenarios-stage-tamagotchi-browser/scripts/capture.ts +++ b/packages/scenarios-stage-tamagotchi-browser/scripts/capture.ts @@ -8,14 +8,42 @@ import { argv, cwd } from 'node:process' import { Transformer } from '@napi-rs/image' import { captureBrowserRoots } from '@proj-airi/vishot-runner-browser' +const DEFAULT_AVIF_MAX_WIDTH = 1200 +const DEFAULT_AVIF_QUALITY = 35 +const DEFAULT_AVIF_SPEED = 6 + const sceneAppRoot = path.resolve(cwd()) -const outputDir = path.resolve(sceneAppRoot, 'artifacts', 'final') const formatFlagIndex = argv.findIndex(arg => arg === '--format') +const routeFlagIndex = argv.findIndex(arg => arg === '--route') +const outputDirFlagIndex = argv.findIndex(arg => arg === '--output-dir') +const settleMsFlagIndex = argv.findIndex(arg => arg === '--settle-ms') +const avifMaxWidthFlagIndex = argv.findIndex(arg => arg === '--avif-max-width') +const avifQualityFlagIndex = argv.findIndex(arg => arg === '--avif-quality') +const avifSpeedFlagIndex = argv.findIndex(arg => arg === '--avif-speed') const requestedFormat = formatFlagIndex >= 0 ? argv[formatFlagIndex + 1] : 'png' +const routePath = routeFlagIndex >= 0 ? argv[routeFlagIndex + 1] : '/docs/setup-and-use' +const settleMs = settleMsFlagIndex >= 0 ? Number(argv[settleMsFlagIndex + 1]) : 500 +const avifMaxWidth = avifMaxWidthFlagIndex >= 0 ? Number(argv[avifMaxWidthFlagIndex + 1]) : DEFAULT_AVIF_MAX_WIDTH +const avifQuality = avifQualityFlagIndex >= 0 ? Number(argv[avifQualityFlagIndex + 1]) : DEFAULT_AVIF_QUALITY +const avifSpeed = avifSpeedFlagIndex >= 0 ? Number(argv[avifSpeedFlagIndex + 1]) : DEFAULT_AVIF_SPEED +const outputDir = outputDirFlagIndex >= 0 + ? path.resolve(sceneAppRoot, argv[outputDirFlagIndex + 1]) + : path.resolve(sceneAppRoot, 'artifacts', 'final') const avifTransformer: ArtifactTransformer = async (artifact) => { const derivedFilePath = artifact.filePath.replace(/\.png$/i, '.avif') - const avifBuffer = await new Transformer(await readFile(artifact.filePath)).avif() + const transformer = new Transformer(await readFile(artifact.filePath)) + const metadata = await transformer.metadata() + + if (metadata.width > avifMaxWidth) { + const scale = avifMaxWidth / metadata.width + transformer.resize(avifMaxWidth, Math.round(metadata.height * scale)) + } + + const avifBuffer = await transformer.avif({ + quality: avifQuality, + speed: avifSpeed, + }) await writeFile(derivedFilePath, avifBuffer) await rm(artifact.filePath, { force: true }) @@ -31,13 +59,54 @@ if (!['png', 'avif'].includes(requestedFormat)) { throw new Error(`Unsupported capture format "${requestedFormat}". Expected "png" or "avif".`) } +if (!routePath?.startsWith('/')) { + throw new Error(`Unsupported route path "${routePath}". Route paths must start with "/".`) +} + +if (outputDirFlagIndex >= 0 && !argv[outputDirFlagIndex + 1]) { + throw new Error('Missing value for --output-dir.') +} + +if (settleMsFlagIndex >= 0 && !argv[settleMsFlagIndex + 1]) { + throw new Error('Missing value for --settle-ms.') +} + +if (avifMaxWidthFlagIndex >= 0 && !argv[avifMaxWidthFlagIndex + 1]) { + throw new Error('Missing value for --avif-max-width.') +} + +if (avifQualityFlagIndex >= 0 && !argv[avifQualityFlagIndex + 1]) { + throw new Error('Missing value for --avif-quality.') +} + +if (avifSpeedFlagIndex >= 0 && !argv[avifSpeedFlagIndex + 1]) { + throw new Error('Missing value for --avif-speed.') +} + +if (!Number.isFinite(settleMs) || settleMs < 0) { + throw new Error(`Unsupported settle delay "${argv[settleMsFlagIndex + 1] ?? settleMs}". Expected a number >= 0.`) +} + +if (!Number.isFinite(avifMaxWidth) || avifMaxWidth < 1) { + throw new Error(`Unsupported AVIF max width "${argv[avifMaxWidthFlagIndex + 1] ?? avifMaxWidth}". Expected a number >= 1.`) +} + +if (!Number.isFinite(avifQuality) || avifQuality < 0 || avifQuality > 100) { + throw new Error(`Unsupported AVIF quality "${argv[avifQualityFlagIndex + 1] ?? avifQuality}". Expected a number between 0 and 100.`) +} + +if (!Number.isFinite(avifSpeed) || avifSpeed < 1 || avifSpeed > 10) { + throw new Error(`Unsupported AVIF speed "${argv[avifSpeedFlagIndex + 1] ?? avifSpeed}". Expected a number between 1 and 10.`) +} + await captureBrowserRoots({ imageTransformers: requestedFormat === 'avif' ? [avifTransformer] : undefined, sceneAppRoot, - routePath: '/', + routePath, outputDir, + settleMs, viewport: { width: 1920, height: 1080, diff --git a/packages/scenarios-stage-tamagotchi-browser/src/App.vue b/packages/scenarios-stage-tamagotchi-browser/src/App.vue index ffe71b591..09e198952 100644 --- a/packages/scenarios-stage-tamagotchi-browser/src/App.vue +++ b/packages/scenarios-stage-tamagotchi-browser/src/App.vue @@ -1,9 +1,17 @@