You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Manual release flow for claude-code-chat-browser. A release is an annotated git tag and a GitHub Release with notes. There is no CI publish workflow, and no wheel, npm package, or other artifact is attached.
3
+
Manual release flow for claude-code-chat-browser. A release is an annotated git tag plus a GitHub Release with notes. No CI publish workflow, and no wheel, npm package, or other artifact.
4
4
5
-
`v0.1.0` (2026-06-18) is the only shipped tag so far. `v0.2.0` is in progress; these steps describe how it is being cut.
5
+
`v0.1.0` (2026-06-18) is the only shipped tag so far. `v0.2.0` is in progress; these steps describe that cut.
6
6
7
7
## Version source
8
8
9
-
The only version string is `__version__` in `app.py`(line 3). There is no `pyproject.toml` version field.
9
+
The release version is `__version__` in `app.py` line 3. There is no `pyproject.toml` version field.
10
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 drops `.dev0`.
11
+
`SECURITY.md` line 5 names the version again in the supported-versions blurb (`(currently \`...\`)`). Keep it in sync with `app.py` on every release. `README.md` links to that page for supported versions.
12
+
13
+
Between tagged releases, `master` may use a `.dev0` suffix (for example `0.2.0.dev0` while `0.2.0` was in development). The shipped tag drops `.dev0`.
12
14
13
15
## Pre-release checklist
14
16
@@ -21,36 +23,47 @@ Between tagged releases, `master` may carry a `.dev0` suffix (for example `0.2.0
21
23
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
24
23
25
1. 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.
26
+
- Move everything under `## [Unreleased]` into a new `## [X.Y.Z] - YYYY-MM-DD` section with `### Added`, `### Changed`, `### Deprecated`, `### Fixed`, `### Removed`, or `### Security` as needed.
2. On a branch from current `master`, set `app.py` line 3 to the release version without `.dev0` (for example `"0.2.0"`).
28
-
3. From the repo root, grep for the old `.dev0` suffix you are replacing:
30
+
3. Update [SECURITY.md](SECURITY.md) line 5 so `(currently \`...\`)` matches that version (for example `(currently \`0.2.0\`)`). Leave the table at lines 7-10 unchanged.
31
+
4. From the repo root, grep for stale version strings (the previous `.dev0` suffix, the old `SECURITY.md` parenthetical, or any other doc that still names the prior release):
29
32
```sh
30
-
git grep -n "\.dev0"
33
+
git grep -nE '\.dev0|\(currently `'
31
34
```
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 the merge commit:
35
+
Update any hits that should name the new release (for example `docs/deprecation-policy.md`).
36
+
5. Open a PR, get review, merge to `master`.
37
+
6. Tag the merge commit:
35
38
```sh
36
39
git checkout master
37
40
git pull
38
41
git tag -a vX.Y.Z -m "vX.Y.Z"
39
42
git push origin vX.Y.Z
40
43
```
41
44
Tag format: `vMAJOR.MINOR.PATCH` (for example `v0.2.0`).
42
-
6. Publish a GitHub Release, not just the tag. Pull the `## [X.Y.Z]` section from `CHANGELOG.md` and pass it to `gh`:
45
+
7. Cut the GitHub Release after the tag. From the repo root, extract the body from `CHANGELOG.md`:
43
46
```sh
44
-
VERSION=X.Y.Z
47
+
cd"$(git rev-parse --show-toplevel)"
48
+
VERSION=0.2.0 # no leading v; not the literal X.Y.Z placeholder
49
+
VERSION="${VERSION#v}"
50
+
case"$VERSION"in
51
+
*[!0-9.]*|*.*.*.*|'') echo"error: VERSION must look like 0.2.0">&2;exit 1 ;;
52
+
esac
53
+
NOTES="$(mktemp)"
54
+
trap'rm -f "$NOTES"' EXIT
45
55
awk -v ver="$VERSION"'
46
-
$0 ~ "^## \\[" ver "\\]" {found=1}
47
-
found && $0 ~ "^## \\[" && $0 !~ "^## \\[" ver "\\]" {exit}
On macOS, Linux, and Git Bash, `/tmp/release-notes.md` works. You can also create the release in the GitHub UI and paste the section there.
53
-
7. Optional: if the project later adds a supported-version table in [SECURITY.md](SECURITY.md), update it when you cut a release. `SECURITY.md` today only says fixes land on latest `master`.
66
+
On macOS, Linux, and Git Bash, `mktemp` works. Or paste the section in the GitHub UI (skip the `## [X.Y.Z]` heading; the title is already set).
54
67
55
68
## After release
56
69
@@ -63,6 +76,7 @@ Do the changelog in one PR and the version bump in a second PR, or combine them
63
76
|-------|----------|
64
77
| Changelog format |[CHANGELOG.md](CHANGELOG.md)|
65
78
| Version bump |`app.py` line 3 |
79
+
| Supported versions blurb |`SECURITY.md` line 5 |
0 commit comments