Skip to main content

Releasing TestChimp Studio

In brief: Publish dogfood with npm run publish:npm:beta (no version bump). For stable, bump package.json then npm run publish:npm; optionally tag for certified installers.

This is the operator runbook for shipping TestChimp Studio. End-user install steps live in Install and Updates.

Channels

ChannelPackage / feedWhoVersioning
Beta (dogfood)@testchimp/studio-betaInternal dogfood + early testersAuto-stamped; do not bump package.json
Stable npm@testchimp/studioDevelopers (npx)Exact desktop/package.json "version"bump before publish
Certified installerstudio-releasesMost users (DMG / EXE / AppImage)Same package.json version; tag desktop-vX.Y.Z

All three share ~/.testchimp and Electron userData. Typical flow: beta → verify → stable npm (+ optional installer tag).

Versioning rules

Canonical version

desktop/package.json "version" (e.g. 0.1.0) is the stable semver. It appears in Diagnostics for installer and stable npm builds, and must match the Git tag for certified releases (desktop-v0.1.0).

Beta — no bump

npm run publish:npm:beta does not change package.json. The publish script stages a separate package named @testchimp/studio-beta and sets:

<baseVersion>-beta.<UTC stamp>

Example: if package.json is 0.1.0, a beta publish becomes 0.1.0-beta.20260909061259.

  • Publish as often as you want; each stamp is unique on npm.
  • <baseVersion> is the part before any - in package.json (so 0.1.0 stays the lineage label).
  • Testers always take newest with npx @testchimp/studio-beta@latest.

Stable — bump, then publish

  1. Bump "version" in desktop/package.json (semver: patch / minor / major as appropriate).
  2. Commit that bump (and any release notes / compat changes).
  3. Run npm run publish:npm (alias of publish:npm:stable).

Stable publish uses the exact package.json version. npm rejects republishing the same version — bump every stable ship.

Optional: keep resources/compatibility.json in sync when you raise minimum-compat floors.

Publish beta (dogfood)

Prereqs: logged into npm with publish rights on @testchimp/* (or NPM_TOKEN in CI).

cd desktop
npm run publish:npm:beta

Testers:

npx @testchimp/studio-beta@latest

Dry-run (no registry write):

npm run publish:npm:beta:dry

CI: GitHub Actions workflow Desktop npm beta (workflow_dispatch) — no installer matrix, no package.json bump.

Diagnostics install channel: npm-beta.

Publish stable npm

After dogfood looks good:

cd desktop
# 1) Edit package.json "version" — e.g. 0.1.0 → 0.1.1
# 2) Commit the bump
npm run publish:npm

Users:

npx @testchimp/studio@latest

Diagnostics install channel: npm.

publish:npm / publish:npm:stable run scripts/publish-npm-channel.mjs stable (builds unless SKIP_BUILD=1, then publishes @testchimp/studio at the bumped version).

Publish certified installers (DMG / EXE)

Use when you want signed installs + in-app electron-updater (not required for every stable npm ship).

  1. Ensure desktop/package.json "version" is already bumped and committed (same as stable npm).

  2. Tag and push — tag must equal package version:

    git tag desktop-v0.1.1
    git push origin desktop-v0.1.1
  3. Workflow .github/workflows/desktop-release.yml builds platform installers, publishes to TestChimp/studio-releases, and (when NPM_TOKEN is set) also publishes @testchimp/studio via publish:npm:stable.

If you already published stable npm manually, the tag job’s npm step will fail on “version already exists” — that is fine; installers still publish. Prefer either manual npm then tag for installers only, or tag-only and let CI publish both.

Do not ship unsigned public installer builds. Local npm run dist is eng smoke only.

  1. Land code on the branch you ship from (no version bump).
  2. npm run publish:npm:beta → dogfood with npx @testchimp/studio-beta@latest.
  3. Fix issues; repeat beta publishes freely (still no bump).
  4. When ready: bump package.json version, commit, npm run publish:npm.
  5. Optionally git tag desktop-vX.Y.Z + push for certified installers + updater feed.

One-time ops setup

  1. Public repo TestChimp/studio-releases.
  2. Aware secret STUDIO_RELEASES_TOKEN (contents: write on that repo).
  3. Aware secret NPM_TOKEN (publish to @testchimp — covers studio and studio-beta).
  4. Apple signing / notarization secrets (for macOS public installers).
  5. Windows signing secrets (for Windows public installers).

Smoke checks

PathExpect
npx @testchimp/studio-beta@latestDiagnostics: version *-beta.*, channel npm-beta
npx @testchimp/studio@X.Y.ZDiagnostics: version X.Y.Z, channel npm
Certified installDiagnostics: version X.Y.Z, channel installer; later tag shows Update available

Projects / config under ~/.testchimp should survive switching between beta, stable npm, and installer.