# Windows Release

Build and verify the Windows desktop build (NSIS installer + latest.yml) for the...

- Repository: https://github.com/milind-soni/OpenMausBot (10439 stars)
- Category: Engineering
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add milind-soni/OpenMausBot --skill windows-release -g -a claude-code -y`
Codex: `npx skills add milind-soni/OpenMausBot --skill windows-release -g -a codex -y`
Cursor: `npx skills add milind-soni/OpenMausBot --skill windows-release -g -a cursor -y`
Gemini CLI: `npx skills add milind-soni/OpenMausBot --skill windows-release -g -a gemini-cli -y`

## Description

Build and verify the Windows desktop build (NSIS installer + latest.yml) for the canonical OpenMausBot release and its legacy updater mirror. Use when cutting a release, shipping a new version to Windows users, or when a Windows user reports they are stuck on an old version. Windows only, does not cover the macOS dmg/notarization flow.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Windows release

Ships `OpenMausBot-<version>-setup.exe` and its update feed to
[milind-soni/OpenMausBot](https://github.com/milind-soni/OpenMausBot/releases).
The unified release workflow mirrors the same bytes to the legacy releases
repository for apps installed before the updater migration.

**Scope: Windows only.** The macOS build is a separate flow (dmg + notarytool +
staple) that must run on a Mac. This skill never touches mac artifacts, but see
[Every release ships both](#every-release-ships-both) before you finish.

## Preconditions

- **Run on Windows.** NSIS packaging from macOS needs Wine; don't.
- **Node 24+** (`package.json` `engines`). Node 23 builds fine but pnpm warns on
  every step and CI runs 24, don't debug a runtime oddity on the wrong major.
- **pnpm** via `corepack pnpm`. If `corepack enable` fails with EPERM (no admin),
  drop a `pnpm.cmd` shim containing `@echo off` / `corepack pnpm %*` somewhere on
  PATH, `package:win` chains `pnpm build && …` and needs bare `pnpm` to resolve.

## 1. Version

Bump `version` in `package.json`. It must match the tag on the GitHub release you
upload to, and it becomes the version electron-updater compares against.

## 2. Build

```powershell
pnpm install
pnpm typecheck
pnpm package:win
```

`package:win` deliberately omits `build:speech`, the dictation helper is a signed
macOS Swift binary and has no Windows counterpart.

Output in `release/`:

| File | Purpose |
|---|---|
| `OpenMausBot-<version>-setup.exe` | the installer |
| `latest.yml` | **the update feed**, see step 4 |
| `OpenMausBot-<version>-setup.exe.blockmap` | differential updates |
| `OpenMausBot-<version>-x64.zip` | portable, not used by the updater |

## 3. Verify before uploading

Three things silently produce a broken app if wrong. Check all three:

The rest: https://github.com/milind-soni/OpenMausBot/blob/HEAD/.claude/skills/windows-release/SKILL.md
