Release policy
The rules that keep PyColors releases predictable, ecosystem weekly updates + package semver with Changesets.
PyColors uses two release layers on purpose:
- Packages ship with Semantic Versioning (precise + technical truth).
- The website ships weekly ecosystem releases (clear narrative + trust).
This keeps momentum high while staying accurate for developers and customers.
What should be public?
Yes — this policy should be public.
It improves trust (predictable shipping), reduces confusion (UI vs ecosystem), and makes contributions easier.
What stays private is the internal runbook (credentials, deployment secrets, and step-by-step CI ops).
Two-level versioning
1) UI library — SemVer
@pycolors/ui follows Semantic Versioning.
MAJOR (x.0.0) → breaking changes
MINOR (0.x.0) → new features (backward compatible)
PATCH (0.0.x) → fixes & small improvements1.0.3 → patch: bug fixes, minor polish
1.1.0 → minor: new components or capabilities
2.0.0 → major: breaking API changesSource of truth
- GitHub Releases for
pycolors-ui CHANGELOG.mdgenerated by Changesets
2) Ecosystem release — Weekly cadence
The website communicates a weekly release for the overall ecosystem:
- UI
- Starters (Free → Pro)
- Templates
ECOSYSTEM_RELEASE is a narrative version (weekly).
It must never block package releases.Key idea
- Packages ship when ready
- The website ships every week with honest progress
The non-negotiables (ONE THING rules)
These are the rules that make everything else easier:
- Development happens only in the core monorepo (
pycolors). - Product repos are distribution surfaces (mirrors for releases + consumption).
- All public packages use Changesets (no manual versioning).
- GitHub Releases = technical truth.
- Website changelog = product narrative.
Changesets workflow (minimum bar)
1) Make changes in monorepo
2) Add a changeset (patch/minor/major)
3) Merge to main
4) CI bumps version + updates changelog
5) CI publishes to npm + creates GitHub ReleaseWhere each changelog lives
| Surface | Purpose | Source of truth |
|---|---|---|
pycolors.io/changelog | Weekly ecosystem updates | Product narrative |
pycolors-ui/CHANGELOG.md | Package-level details | Changesets output |
GitHub Releases (pycolors-ui) | Release artifacts | Tags + notes |