This repo uses Changesets for semver, changelogs, GitHub releases, and npm publish.
| Branch | Role |
|---|---|
dev |
Integration — features, Dependabot, Version Packages PRs |
main |
Release line — merge dev here to ship to npm |
flowchart LR
A[Feature + changeset → dev] --> B[CI on dev]
B --> C[Version Packages PR → dev]
C --> D[Merge Version PR]
D --> E[Merge dev → main]
E --> F[CI on main]
F --> G[Publish to npm]
Phase 1 — version (on dev)
Merge feature work with a .changeset/*.md file to dev. After CI passes, Publish → Version packages (dev) opens a “Version Packages” PR against dev (bumps package.json, updates CHANGELOG.md).
Phase 2 — ship (merge to main)
Review and merge the Version Packages PR on dev, then merge dev → main only when the version in package.json is not yet on npm. After CI on main, Publish → Publish to npm runs only for unpublished versions (strict npm publish — fails if the version already exists).
Changelog entries come from changeset summaries and @changesets/changelog-github (links PRs/issues). You do not edit CHANGELOG.md by hand for releases.
dev (each user-facing change includes a changeset).dev → review CHANGELOG.md → merge it.dev → main when ready to release.main succeeds.| Changeset type | When to use | Example |
|---|---|---|
| patch | Bug fix, internal refactor, docs-only in package | Fix arc radius parsing |
| minor | New entity, new API, backward compatible | Add type 102 composite curve |
| major | Breaking API or behavior | Remove export, change parse() return type |
Pre-1.0 (0.x) packages may use minor for breaking changes if you prefer — document in the changeset summary.
pnpm changeset # add a new changeset (interactive)
pnpm changeset status # see pending releases
pnpm version-packages # bump versions locally (usually let CI do this)
| Package | npm | Notes |
|---|---|---|
three-iges-loader |
✅ npm | Public; bundles iges-core |
iges-core |
❌ | private: true workspace package |
To publish iges-core separately later: remove private from packages/iges-core/package.json and add a linked or fixed group in .changeset/config.json.
One-time configuration: docs/GITHUB_SETUP.md.
| Problem | Check |
|---|---|
| Version PR never opens | Changeset merged to dev? CI passed on dev? |
| Publish fails with “already published” | main has a version already on npm — merge a Version Packages bump on dev first, then merge dev → main again |
Publish job skipped on main |
Expected when merging dev → main without a new version (e.g. workflow-only changes); check Check unpublished version job summary |
ENEEDAUTH / 401 |
Trusted Publishing: workflow publish.yml, repo match, id-token: write |
| Wrong version bumped | Changeset type in .changeset/*.md |
pnpm install
pnpm changeset version # if versions not bumped yet
pnpm build && pnpm test
npm publish --access public
git tag vX.Y.Z && git push origin vX.Y.Z
Prefer fixing CI so provenance and changelogs stay consistent.