This project uses date-based versions with daily sequence:
-
First release of a day:
YYYY.M.D -
Additional releases that same day:
YYYY.M.D-N -
YYYY.M.D: release date (no zero-padding; SemVer compatible) -
N: release sequence number for that calendar day onmaster(2, 3, 4, ...)
Examples:
- First release on March 4, 2026:
2026.3.4 - Third release on March 4, 2026:
2026.3.4-3
Latest public release: v2026.3.6 (2026-03-06).
CHANGELOG.mdcontains release notes and current unreleased changes.docs/PROJECT_HISTORY.mdpreserves pre-release implementation history and audit notes.
- Prepare version fields:
bun run release:prepare
- Verify quality and security gates:
bun run release:verify
- Validate package launchers from packed tarball:
bun run release:dry-run
- Generate release notes draft:
bun run release:notes
Equivalent npm commands are available (npm run release:prepare, npm run release:verify, npm run release:dry-run, npm run release:notes), but Bun remains the primary package manager for this repository.
CI(.github/workflows/ci.yml)- lint, typecheck, build, unit tests
- coverage artifact upload
- packaged launcher smoke test (
npx+bunx)
Security(.github/workflows/security.yml)- full history secret signature scan
- CodeQL analysis for JS/TS
Release Dry Run(.github/workflows/release-dry-run.yml)- full release-quality gates + release notes preview artifact
Publish to npm(.github/workflows/publish.yml)- manual trigger only
- supports dry-run and real publish
- enforces
masterbranch, validYYYY.M.D[-N]version, and non-existing release tag - publishes with npm provenance
- creates GitHub release notes for non-dry-run
Commit Quality(.github/workflows/commit-quality.yml)- enforces Conventional Commit-style PR titles
NPM_TOKENrepository secret (required for real publish)releaseGitHub Environment with approvers (recommended)- Branch protection on
master(required checks: CI + Security)
Compatibility is enforced in automation:
scripts/release/dry-run.shpacks the package and tests:npx --no-install hassio --helpbunx hassio --help
- Run
bun run release:verifylocally. - Trigger
Release Dry Runworkflow. - Run
bun run release:prepareand commit:chore(release): vYYYY.M.D[-N] - Push
master. - Trigger
Publish to npmwithdry_run=true. - Trigger
Publish to npmwithdry_run=false.
Before pushing release commits:
git diff --cached -U0 | rg -n '^\+.*(ghp_[A-Za-z0-9]{36}|github_pat_[A-Za-z0-9_]{40,}|npm_[A-Za-z0-9]{36}|eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9._-]{10,}\.[A-Za-z0-9._-]{10,}|-----BEGIN (RSA|OPENSSH|EC|DSA|PGP) PRIVATE KEY-----|_authToken\s*=)'
bun run security:scan:history
bun run commit:audit