Building and publishing
Editor docs
The editor builds your game the way you would from a terminal, with the project's own Vite and electron-builder, run on the editor's bundled toolchain. You need no GitHub account, no CI and no tools installed. Nothing in the output depends on the editor. The editor is a preview.
Screenshot to come: the Build panel with the Web target selected and a finished build's size report.
The Build panel#
Open it with File → Build… (Shift+Ctrl+B). Each target says what this computer can produce;
this is the one place the editor says "not available on this platform".
| Target | What it runs | Output |
|---|---|---|
| Web | vite build | Static files for any web host: itch.io, Cloudflare Pages, Netlify, GitHub Pages, your own server. |
| Desktop (this computer's OS) | electron-vite build, then electron-builder --dir | An unpacked app you can run and zip. |
| Installer (unsigned) | electron-vite build, then electron-builder for this computer's OS | A .dmg and .zip on macOS, an NSIS .exe on Windows, an AppImage and .deb on Linux. |
| Three-OS workflow (optional, GitHub) | Writes .github/workflows/desktop-build.yml into the project | A workflow that builds on macOS, Windows and Linux runners, if you want one. |
| Publish (optional) | Uploads this session's web build | A deployment on Cloudflare Pages, Netlify, GitHub Pages or itch.io. |
The web build has options for minification, source maps and the base path (./ for itch.io and
for hosts that serve the game under a sub-path). The build log streams into the panel, and a
finished build lists its files with their sizes.
A project created without the desktop variant gets an Enable desktop action, which adds the
template's Electron files and development dependencies, as the --desktop flag of the command line
does.
Build and Run#
File → Build and Run (Ctrl+B) builds and then runs the result: a web build from a local
server in your default browser, a desktop build as a normal application. File → Run Last Build
(Alt+Ctrl+B) runs the previous output without building again. Installers are not run.
Each platform builds for itself#
Desktop builds and installers are made for the computer you are on: a Windows computer builds the
Windows app, a Mac the macOS app, a Linux computer the Linux app. Anyone can make the web build.
electron-builder cannot make a .dmg anywhere but macOS, so the editor refuses another OS's
installer up front and points at the three-OS workflow instead.
The three-OS workflow is for teams who want all three from GitHub Actions. The editor writes
the file from your package.json (the same manifest always gives the same file) and stops there: it
never commits, pushes or runs it. It gates nothing.
Everything is unsigned for now: macOS and Windows warn players the first time they open an unsigned app. Signing and notarisation are planned for a later release.
Publishing the web build#
Publishing uploads the last successful web build of this session to one target at a time. Nothing is bundled or downloaded to do it:
| Target | How | Credential |
|---|---|---|
| Cloudflare Pages | Cloudflare's Direct Upload API, as wrangler pages deploy uses | CLOUDFLARE_API_TOKEN |
| Netlify | Netlify's file-digest deploy API: only changed files are uploaded | NETLIFY_AUTH_TOKEN |
| GitHub Pages | A commit of the build on the project's gh-pages branch, pushed with your own git (never force-pushed) | Your existing git credentials |
| itch.io | butler push, with the butler you installed (the editor never downloads it) | BUTLER_API_KEY |
A credential comes from that environment variable or is typed in for the session. It lives only in
the editor's memory, is never written to disk and is removed from every log line. The target's
settings (account, project or site, branch, remote) are saved in ignifx.project.json, which holds
names and ids only. GitHub Pages and itch.io need the build's base set to ./.
A coding agent can start builds over MCP, but a publish always waits for your yes in the editor, every time.