Release Checklist
Update local state:
git checkout main && git pullgit status --porcelain=v1(must be clean)
Prepare a code PR (feature/fix changes):
- Create branch from
main - Make changes
- If you touched
packages/node(or anything that affects the legacytransloaditclone):- Run
corepack yarn check(this may reformat files and/or auto-fix Knip findings) - Run
corepack yarn verify:fulllocally once before pushing.- This is the fastest way to catch the common CI-only failure: transloadit parity drift in
Verify (full).
- This is the fastest way to catch the common CI-only failure: transloadit parity drift in
- If
verify:full(or CIVerify (full)) fails with transloadit parity drift, apply the “Parity drift playbook” below, then re-runcorepack yarn verify:full.
- Run
- If you add a changeset for
@transloadit/node, also add a similar changeset for@transloadit/mcp-serverif it could affect its workings. The chances are, they are, since the latter is mostly a thin wrapper around the former.- This repo enforces a one-way coupling: node releases should also publish a new mcp-server version (but mcp-server releases do not require node releases).
yarn check/yarn verifywill fail fast if you forget.
- Commit + push branch
- Open PR, wait for CI green
- Squash-merge the PR
Notes:
- When creating PRs with
gh pr createfrom a shell, avoid unescaped backticks in the--bodystring. Prefer--body-fileto prevent accidental command substitution. - If you use
gh run watchheavily, GitHub may throttle with HTTP 429. Prefergh pr checks <PR_NUMBER>with occasional polling (or use the web UI) if you hit throttling.
Parity drift playbook (when
Verify (full)fails):- Update the parity baseline:
node scripts/fingerprint-pack.ts ./packages/transloadit --ignore-scripts --quiet --out ./docs/fingerprint/transloadit-baseline.jsoncp ./packages/transloadit/package.json ./docs/fingerprint/transloadit-baseline.package.json
- Immediately reformat the baseline (required for CI
Verify (fast)/yarn verify, which does not auto-fix formatting):corepack yarn fix:js- (or
corepack yarn check, but only if you run it after generating the baseline files)
- Run
corepack yarn parity:transloadit - Commit + push, then re-run
corepack yarn verify:full
- Create branch from
Merge the "Version Packages" PR (changesets action):
- Wait for the
Version PackagesPR to appear (or update) - Checkout that branch locally:
git fetch origin changeset-release/maingit checkout changeset-release/main
- Ensure
yarn.lockis up to date (CI will fail otherwise):corepack yarn- If
yarn.lockchanged:git add yarn.lock && git commit -m "chore: update yarn.lock for release" && git push
- Verify the Version Packages PR includes all expected linked/versioned packages:
- Read the
# Releasessection (this is the authoritative "what will publish") - If you expect a linked package to bump (e.g.
@transloadit/nodeandtransloadit), ensure the PR updates both. If it doesn't, fix before merging (otherwise tags/releases can drift).
- Read the
- Ensure CI is green for the PR
- Squash-merge the PR
Notes:
- The Version Packages PR may show no required checks in the PR UI in some setups; verify by checking recent runs:
gh run list --branch changeset-release/main --limit 3
- Wait for the
Immediately after merging the Version Packages PR:
git checkout main && git pull- Update the lockfile (required for the Release workflow):
corepack yarn- If
yarn.lockchanged:git add yarn.lock && git commit -m "chore: update yarn.lock for release" && git push - Reason: the Release workflow runs
corepack yarnwith immutable installs and will fail if it would modifyyarn.lock.
- Run
corepack yarn check(catches formatting/knip/ts/unit drift early)
Prevent the
packages/transloaditclone from drifting (special case):- If the
transloaditpackage exists in this repo, keep it in sync with@transloadit/nodeby running:git checkout main && git pullnode scripts/prepare-transloadit.ts- Refresh parity baselines (if they changed):
node scripts/fingerprint-pack.ts ./packages/transloadit --ignore-scripts --quiet --out ./docs/fingerprint/transloadit-baseline.jsoncp ./packages/transloadit/package.json ./docs/fingerprint/transloadit-baseline.package.json
corepack yarn check- If anything changed, commit + push to
main
- If the
Monitor the
Releaseworkflow onmain:gh run list --workflow Release --branch main --limit 5gh run watch <run_id>- If it fails after publishing due to a missing tag:
- Identify the missing tag in the job logs (it will look like
<pkg>@<version>) - Create/push the missing tag from
main:git checkout main && git pullgit tag <pkg>@<version>git push origin <pkg>@<version>
- If needed, create a GitHub release:
gh release create <pkg>@<version> --generate-notes
- Identify the missing tag in the job logs (it will look like
Verify what should have been published:
- In the merged
Version PackagesPR, read the# Releasessection to get the authoritative list.
- In the merged
Verify npm publish for each released package:
- For each
<pkg>@<version>in the# Releasessection:npm view <pkg> version(should match)git tag -l '<pkg>@<version>'(tag should exist)
- If npm versions look stale, wait ~60s and retry (registry propagation)
- For each
Converted and distributed by TomeVault — claim your Tome and manage your conversions.