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

Release adom-jlcpcb

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

Steps

  1. Bump — decide X.Y.Z (semver). Then:

    echo "X.Y.Z" > VERSION
    sed -i 's/^version = .*/version = "X.Y.Z"/' Cargo.toml
    
  2. Local build + smoke test:

    ./build.sh
    adom-jlcpcb --version                    # must print "adom-jlcpcb X.Y.Z"
    adom-jlcpcb health                       # backend reachable
    adom-jlcpcb 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.

    JLCPCB_API=<backend> adom-jlcpcb app --no-tab &
    adom-desktop browser_open_window '{"sessionId":"jlcpcb","profile":"jlcpcb","url":"http://127.0.0.1:8892"}'
    # 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:

    ./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 automaticallyservice/watchdog.sh runs every 2 min, git fetches origin/main, and rebuilds + restarts when HEAD moves. Verify within ~5 min:

    curl -s https://jlcpcb-<slug>.adom.cloud/health | jq '.version'   # → "X.Y.Z"
    
  7. Verify on a fresh user container (optional, but catches install regressions):

    # on a fresh container:
    adompkg install --refresh                 # Tier A block fetches from the registry
    adom-jlcpcb --version                     # → "adom-jlcpcb X.Y.Z"
    

Pre-release checklist

  • VERSION, Cargo.toml, adom-jlcpcb --version, wiki metadata.version, /health all return X.Y.Z
  • Wiki page at apps/adom-jlcpcb 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 (.jlcpcb-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 idempotentadom-wiki asset upload --asset-type docker_binary replaces the prior binary for this app automatically.
  • Version discipline is load-bearingrefresh-wiki-catalog.mjs uses semver comparison to surface stale installs; inconsistent versions silently break that.