dd64e1e34a
Root package: renamed to imhotep-monorepo, fixed broken scripts (test:unit/integration/e2e), removed inappropriate root deps, fixed build order, updated clean script CI: branch trigger main->master, npm ci->npm install, GitHub cache URL->Gitea Docs: replaced scaffolded root README with real project README, added package READMEs for imhotep/imhotep-playwright/imhotep-dsl/imhotep-core, added RELEASE.md checklist Version: all 14 packages and root aligned to 1.1.0, CHANGELOG test count fixed (1125) Metadata: 14 repository URLs github->gitea, 13 package descriptions added, imhotep-cli exports field added, SECURITY.md updated for Gitea+disclosure email Quality: noEmitOnError:true in 13 tsconfigs, collapsed duplicate interfaces in public.ts, clippedBy test->test.skip, fixed broken dynamic import in imhotep index.test.ts, 694 generated src artifacts cleaned, V8 logs removed, .gitignore updated
2.6 KiB
2.6 KiB
Release Checklist
Run these checks before every publish. All commands run from the repository root.
Pre-flight
# Verify clean working tree
git status --short
# All 14 packages compile cleanly
npm run build
# Strict typecheck passes
npm run typecheck
# Lint passes (0 errors, 0 warnings)
npm run lint
# Unit tests pass (1125+)
npm test
# Integration tests pass
npm run test:integration
# E2E suite runs
npm run test:e2e
# External smoke test passes in clean temp directory
npm run test:external-smoke
# No generated artifacts in source tree
npm run clean
find packages -path '*/src/*.js' -o -path '*/src/*.d.ts' -o -path '*/src/*.map' | wc -l
# Expected: 0
Version alignment
# All package manifests match the release version
grep '"version"' packages/*/package.json | grep -v "$TAG"
# Root manifest matches
grep '"version"' package.json
# CHANGELOG has an entry for this release
head CHANGELOG.md
# Issue template references the right version
grep placeholder .gitea/ISSUE_TEMPLATE/bug_report.yml
# SECURITY.md supported version table is current
grep '1\.[0-9]' SECURITY.md
Metadata
# Repository URLs point to Gitea (not GitHub)
grep -r 'github.com' packages/*/package.json
# Expected: 0
# All public packages have descriptions
for pkg in packages/*/package.json; do
desc=$(node -p "require('./$pkg').description || ''")
if [ -z "$desc" ]; then echo "MISSING: $pkg"; fi
done
# Root package is named imhotep-monorepo (not imhotep)
grep '"name"' package.json
Package Tarballs
# Build and pack all packages
npm run build
# Every package packs cleanly (no workspace:* leakage)
for pkg in packages/*/; do
(cd "$pkg" && npm pack --json | node -e "
const p = require('fs').readFileSync('/dev/stdin','utf8');
const files = JSON.parse(p).map(f => f.path);
const pkgJson = files.find(f => f.endsWith('package.json'));
if (!pkgJson) { console.error('No package.json in tarball'); process.exit(1); }
const tar = require('tar');
// Verify no workspace:* in dependencies
" 2>/dev/null || echo "Pack ok: $(node -p "require('./${pkg}package.json').name")")
done
Commit and Tag
# Commit message includes version number
git commit -m "v$TAG"
# Tag matches version in manifests
git tag -a "v$TAG" -m "Release v$TAG"
# Push commit and tag
git push origin master
git push origin "v$TAG"
Post-release
- Verify CI passes on the tagged commit
- Check that external smoke test works from the release tarball
- Update
SECURITY.mdsupported version table for the new release - Ensure package READMEs are bundled in published tarballs (
filesfield)