OpenTag packages are versioned and published as a coordinated package family.
Public packages:
@opentag/core@opentag/client@opentag/dispatcher@opentag/github@opentag/slack@opentag/runner@opentag/store
Private runnable apps are not published:
@opentag/dispatcher-app@opentag/github-probot@opentag/slack-events@opentag/opentagd
The current public release is 0.1.0. The public API is still settling, so all releases remain in the 0.x line until the package contracts are stable enough for 1.0.0.
The first npm release was published as the coordinated 0.1.0 package family.
For each npm release:
- Set every public package to the same version.
- Keep
private: trueonly on runnable apps and the root workspace. - Verify
pnpm lint,pnpm typecheck,pnpm test, andpnpm build. - Run
npm pack --dry-run --jsonin every public package directory and inspect included files.
For 0.x releases:
- Patch versions fix bugs without changing public TypeScript contracts or HTTP semantics.
- Minor versions may add optional fields, new functions, new adapters, or carefully documented breaking changes.
- Every breaking change must be called out in release notes because SemVer treats
0.xas unstable but users still need migration guidance.
After 1.0.0, follow SemVer:
- Patch: bug fixes and documentation updates that do not change public behavior.
- Minor: backward-compatible additions such as optional fields, new adapters, and new helper functions.
- Major: breaking changes to exported types, function signatures, endpoint semantics, storage requirements, or package layout.
- Prefer additive changes over modifying existing fields.
- Keep
@opentag/coreas the compatibility anchor for protocol objects. - Avoid leaking app-only environment variable behavior into package APIs.
- Treat callback message shape, executor contracts, and dispatcher client method signatures as public API.
- If a storage change requires migration behavior, document it in release notes and keep
migrateSchemaidempotent.
- Update package versions consistently across public packages.
- Update changelog or release notes with package-specific changes.
- Run
pnpm installto refreshpnpm-lock.yaml. - Run
pnpm lint. - Run
pnpm typecheck. - Run
pnpm test. - Run
pnpm build. - Run
npm pack --dry-run --jsonin each public package directory. - Publish public packages with
publishConfig.access=public.