diff --git a/README.md b/README.md index d4d5dba..a90b7cb 100644 --- a/README.md +++ b/README.md @@ -284,6 +284,22 @@ npm run build lettabot server ``` +## Releases + +Releases are automated via GitHub Actions. When a version tag is pushed, the workflow builds, tests, generates release notes from merged PRs, and creates a GitHub Release. + +```bash +# Create a release +git tag v0.2.0 +git push origin v0.2.0 + +# Create a pre-release (alpha/beta/rc are auto-detected) +git tag v0.2.0-alpha.1 +git push origin v0.2.0-alpha.1 +``` + +See all releases: [GitHub Releases](https://github.com/letta-ai/lettabot/releases) + ## Troubleshooting ### WhatsApp diff --git a/docs/README.md b/docs/README.md index 8a9b1cb..0a532cf 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,6 +11,7 @@ LettaBot is a multi-channel AI assistant powered by [Letta](https://letta.com) t - [Scheduling Tasks](./cron-setup.md) - Cron jobs and heartbeats - [Gmail Pub/Sub](./gmail-pubsub.md) - Email notifications integration - [Railway Deployment](./railway-deploy.md) - Deploy to Railway +- [Releasing](./releasing.md) - How to create releases ### Channel Setup - [Telegram Setup](./telegram-setup.md) - BotFather token setup diff --git a/docs/releasing.md b/docs/releasing.md new file mode 100644 index 0000000..134d889 --- /dev/null +++ b/docs/releasing.md @@ -0,0 +1,72 @@ +# Releasing + +LettaBot uses GitHub Releases with automated release notes. + +## How to Release + +### 1. Tag the commit + +```bash +git checkout main +git pull origin main +git tag v0.2.0 +git push origin v0.2.0 +``` + +### 2. What happens automatically + +The [release workflow](../.github/workflows/release.yml) runs on every `v*` tag push: + +1. **Build gate** - `npm ci && npm run build` +2. **Test gate** - `npm run test:run` (all unit tests must pass) +3. **Release notes** - Auto-generated from merged PRs since the last tag +4. **GitHub Release** - Created with the notes, linked to the tag + +### 3. Pre-releases + +Tags containing `alpha`, `beta`, or `rc` are automatically marked as pre-release: + +```bash +git tag v0.2.0-alpha.1 # marked as pre-release +git tag v0.2.0-beta.2 # marked as pre-release +git tag v0.2.0-rc.1 # marked as pre-release +git tag v0.2.0 # marked as stable release +``` + +## Versioning + +We follow [Semantic Versioning](https://semver.org/): + +- **Major** (`v1.0.0`) - Breaking changes to config format, channel API, or CLI +- **Minor** (`v0.2.0`) - New features, new channels, new config options +- **Patch** (`v0.1.1`) - Bug fixes, dependency updates, docs + +While in `0.x`, minor versions may include breaking changes. + +## Release Checklist + +Before tagging a release: + +- [ ] All PRs for this release are merged to `main` +- [ ] `npm run build` passes locally +- [ ] `npm run test:run` passes locally +- [ ] README and docs are up to date +- [ ] No known critical bugs (check open issues) + +## npm Publishing + +Not yet available. Tracked in [#174](https://github.com/letta-ai/lettabot/issues/174). + +Currently, users install from source: + +```bash +git clone https://github.com/letta-ai/lettabot.git +cd lettabot +git checkout v0.2.0 # or latest tag +npm install && npm run build && npm link +``` + +## Viewing Releases + +- [All releases](https://github.com/letta-ai/lettabot/releases) +- [Latest release](https://github.com/letta-ai/lettabot/releases/latest)