|
| 1 | +# Releasing |
| 2 | + |
| 3 | +Manual release flow for **claude-code-chat-browser**. There is **no CI publish workflow**: a release is an annotated git tag plus a GitHub Release with notes. No wheel, npm package, or other artifact is attached. |
| 4 | + |
| 5 | +`v0.1.0` (2026-06-18) is the only shipped tag so far. `v0.2.0` is in progress and these steps describe how it is being cut. |
| 6 | + |
| 7 | +## Version source |
| 8 | + |
| 9 | +The only version string is `__version__` in `app.py` (line 3). There is no `pyproject.toml` version field. |
| 10 | + |
| 11 | +Between tagged releases, `master` may carry a `.dev0` suffix (for example `0.2.0.dev0` while `0.2.0` was in development). The shipped tag always drops `.dev0`. |
| 12 | + |
| 13 | +## Pre-release checklist |
| 14 | + |
| 15 | +1. Confirm `master` is green in GitHub Actions (`.github/workflows/ci.yml`). |
| 16 | +2. Decide the semver bump using [docs/deprecation-policy.md](docs/deprecation-policy.md#versioning) (pre-1.0: patch for safe fixes, minor for additive work and deprecations). |
| 17 | +3. If the release removes or renames a documented API field, confirm the [two-release deprecation window](docs/deprecation-policy.md#removal-criteria) is satisfied. |
| 18 | + |
| 19 | +## Release checklist |
| 20 | + |
| 21 | +Do the changelog in one PR and the version bump in a second PR, or combine them on a `release/vX.Y.Z` branch. The `v0.2.0` cut used two PRs: changelog first (`docs/changelog-0-2-0`), then the bump (`release/v0.2.0`). |
| 22 | + |
| 23 | +1. **Changelog** — edit [CHANGELOG.md](CHANGELOG.md) ([Keep a Changelog](https://keepachangelog.com/en/1.1.0/)): |
| 24 | + - Move everything under `## [Unreleased]` into a new `## [X.Y.Z] - YYYY-MM-DD` section with `### Added`, `### Changed`, `### Fixed`, or `### Removed` as needed. |
| 25 | + - Leave `## [Unreleased]` empty. |
| 26 | + - Update the footer compare links: `[Unreleased]` → `vX.Y.Z...HEAD`, add `[X.Y.Z]` → `vPREVIOUS...vX.Y.Z`. |
| 27 | +2. **Version bump** — on a branch from current `master`, set `app.py` line 3 to the release version without `.dev0` (for example `"0.2.0"`). |
| 28 | +3. **Stale references** — from the repo root, grep for the old `.dev0` suffix you are replacing: |
| 29 | + ```powershell |
| 30 | + git grep -n "\.dev0" |
| 31 | + ``` |
| 32 | + Update any documentation that still names the previous dev version (for example `docs/deprecation-policy.md`). |
| 33 | +4. **Open a PR**, get review, merge to `master`. |
| 34 | +5. **Tag** on the merge commit: |
| 35 | + ```powershell |
| 36 | + git checkout master |
| 37 | + git pull |
| 38 | + git tag -a vX.Y.Z -m "vX.Y.Z" |
| 39 | + git push origin vX.Y.Z |
| 40 | + ``` |
| 41 | + Tag format: `vMAJOR.MINOR.PATCH` (for example `v0.2.0`). |
| 42 | +6. **GitHub Release** — publish a Release object, not just the tag. Copy the `## [X.Y.Z]` section from `CHANGELOG.md` into a scratch file, then: |
| 43 | + ```powershell |
| 44 | + # paste the ## [X.Y.Z] section into this file first |
| 45 | + notepad $env:TEMP\release-notes.md |
| 46 | + gh release create vX.Y.Z --title "vX.Y.Z" --notes-file $env:TEMP\release-notes.md |
| 47 | + ``` |
| 48 | + Or create the release in the GitHub UI and paste the section there. |
| 49 | +7. **Optional** — if the project later adds an explicit supported-version table in [SECURITY.md](SECURITY.md), update it when you cut a release. Today `SECURITY.md` only states that fixes land on latest `master`. |
| 50 | + |
| 51 | +## After release |
| 52 | + |
| 53 | +1. On `master`, bump `app.py` `__version__` to the next development suffix if you are starting the next cycle (for example `0.3.0.dev0` after shipping `0.2.0`). Record that commit in `CHANGELOG.md` under `[Unreleased]` only if there is user-visible work; a bare dev bump can ride with the next feature PR. |
| 54 | +2. New work accumulates under `## [Unreleased]` until the next release. |
| 55 | + |
| 56 | +## References |
| 57 | + |
| 58 | +| Topic | Location | |
| 59 | +|-------|----------| |
| 60 | +| Changelog format | [CHANGELOG.md](CHANGELOG.md) | |
| 61 | +| Version bump | `app.py` line 3 | |
| 62 | +| Deprecation / semver | [docs/deprecation-policy.md](docs/deprecation-policy.md) | |
| 63 | +| Security reporting | [SECURITY.md](SECURITY.md) | |
| 64 | +| CI gates | [CONTRIBUTING.md](CONTRIBUTING.md) | |
0 commit comments