---
name: adom-mouser-build
description: Build and release a new version of adom-mouser. Use when the user says "release adom-mouser", "publish adom-mouser", "cut a new adom-mouser version", "bump adom-mouser", "ship adom-mouser", or "push adom-mouser to the wiki".
---

# Release adom-mouser

A release syncs five places to the same version X.Y.Z:
`VERSION`, `Cargo.toml`, `adom-mouser --version`, wiki page `metadata.version`, running `/health` on the service container.

## Steps

1. **Bump** — decide X.Y.Z (semver). Then:
   ```bash
   echo "X.Y.Z" > VERSION
   sed -i 's/^version = .*/version = "X.Y.Z"/' Cargo.toml
   ```

2. **Local build + smoke test**:
   ```bash
   ./build.sh
   adom-mouser --version                    # must print "adom-mouser X.Y.Z"
   adom-mouser health                       # backend reachable
   adom-mouser search "STM32F103RBT6" --limit 1 | jq '.components[0].mouser_pn'
   ```

3. **Ralph loop the UI** (per app-creator): open in pup, drive a real search, screenshot, check `/console` for errors.
   ```bash
   MOUSER_API=<backend> adom-mouser app --no-tab &
   adom-desktop browser_open_window '{"sessionId":"mouser","profile":"mouser","url":"http://127.0.0.1:8789"}'
   # drive a search, screenshot, verify 0 console errors
   ```

4. **Show the user a screenshot and wait for explicit approval** before publishing. The app-creator skill is hard about this.

5. **Publish**:
   ```bash
   ./publish.sh
   ```
   Runs: git commit + tag `vX.Y.Z`, `git push origin main --tags`, `gh release create`, `adom-wiki asset upload` (replaces the prior `docker_binary`), `adom-wiki page update`, and a final curl of the wiki binary to check `--version` returns X.Y.Z.

6. **Service container picks it up automatically** — `service/watchdog.sh` runs every 2 min, `git fetch`es origin/main, and rebuilds + restarts when HEAD moves. Verify within ~5 min:
   ```bash
   curl -s https://mouser-<slug>.adom.cloud/health | jq '.version'   # → "X.Y.Z"
   ```

7. **Verify on a fresh user container** (optional, but catches install regressions):
   ```bash
   # on a fresh container:
   adompkg install --refresh                 # Tier A block fetches from the registry
   adom-mouser --version                     # → "adom-mouser X.Y.Z"
   ```

## Pre-release checklist

- [ ] `VERSION`, `Cargo.toml`, `adom-mouser --version`, wiki `metadata.version`, `/health` all return X.Y.Z
- [ ] Wiki page at `apps/adom-mouser` renders the new `install_hint` one-liner
- [ ] User has seen a working screenshot of the webview
- [ ] No console errors via `GET /console`
- [ ] `adompkg install --refresh` still pulls + installs the new version (Tier A)
- [ ] **Brand audit — in-app icons are monochrome white.** Run:
      ```
      grep -nE 'fill="#00b8b0"|stroke="#00b8b0"|color: var\(--accent\)' src/app/*.html src/app/*.svg 2>/dev/null
      ```
      Expected result: empty, OR only the text-color rules (`.mouser-pn`,
      `<a>`, focus-rings) on non-SVG elements. Any match on an `<svg>` or
      a `.logo` / `.icon` class CSS rule is a bug — the brand skill
      requires monochrome white for in-app icons. See
      `app-creator` §1b and §Checklist.

## Notes

- **Never skip the ralph loop** — a green `cargo build` is not proof the UI works. Fonts, search, card rendering must be seen working.
- **Wiki upload is idempotent** — `adom-wiki asset upload --asset-type docker_binary` replaces the prior binary for this app automatically.
- **Version discipline is load-bearing** — `refresh-wiki-catalog.mjs` uses semver comparison to surface stale installs; inconsistent versions silently break that.
