---
name: fantasia-release-build
description: >-
  Produces production Electron builds for Fantasia Archive with electron-
  builder and Quasar. Use when changing build scripts, packaging, or publish
  flags, or when the user asks how to ship the desktop app.
---

# Fantasia Archive — release build

## Scripts (`package.json`)

- **`yarn quasar:build:electron`**: `quasar build -m electron --publish never`
- **`yarn quasar:build:electron:summarized`**: **`.utility-scripts/quasarBuildElectronSummarized.mjs`** — log in **`test-results/quasar-build-electron-last.log`** on failure; used by **`testbatch:ensure:*`**
- **`yarn quasar:dev:electron`**: dev + hot reload

## Tooling

- **Node.js 22.22.0+** (`engines.node`)
- **electron-builder** devDependency; Quasar Electron mode drives pipeline (**`quasar.config.ts`**)

## Checklist before release candidate

1. **Full** **`yarn testbatch:verify`** one terminal (not dev scoped gate alone)
2. **`yarn quasar:build:electron`** separate terminal; smoke packaged app
3. **Packaged DevTools** — **Help → Toggle developer tools** (or default F12 chord) opens DevTools on the installed build. Product law; do not ship if blocked. [fantasia-electron-main](../fantasia-electron-main/SKILL.md) **Packaged DevTools**
4. Playwright after same build — [fantasia-testing](../fantasia-testing/SKILL.md)
5. Full chain: **`yarn testbatch:ensure:nochange`** or separate Storybook scripts

## CI release build (`.github/workflows/build.yml`)

- Manual **`workflow_dispatch`** with a **`version`** input; packages **Windows**, **macOS**, **Linux** (AppImage/deb/rpm) and uploads installers
- **No CI test gate** — verify, Playwright, Storybook VRT do **not** run in the build workflow
- Run the local checklist above (esp. **`yarn testbatch:ensure:nochange`**) on your own machine **before** triggering the CI build
- Push/PR testing stays in **`verify.yml`** and the **`pr-full-suite-*`** labeled-PR workflows

## Versioning

- **NEVER** auto-bump version during release/build
- **`package.json` `version`** = source of truth; changelog headings align
- Change version only when user explicitly requests

## Types

Shared types → **`types/`**. See [types-folder.mdc](../../rules/types-folder.mdc).
