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
Copy file name to clipboardExpand all lines: .roo/commands/release.md
+24-35Lines changed: 24 additions & 35 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,16 +36,9 @@ mode: code
36
36
- Do not manually edit `src/README.md`; the extension bundle step copies root `README.md` into `src/README.md`.
37
37
- Check for stale upstream Roo Code wording that should now say Zoo Code.
38
38
39
-
6. Create the release notes as a changeset file at `.changeset/v[version].md`, then run `pnpm changeset:version` on the release branch before opening the PR.
40
-
41
-
```md
42
-
---
43
-
"zoo-code": patch|minor|major
44
-
---
45
-
46
-
[list of changes]
47
-
```
39
+
6. Write the release notes directly into `CHANGELOG.md` on the release branch.
48
40
41
+
- Use the heading format `## [version]` (with square brackets) — e.g. `## [3.58.1]`. The publish workflow at `.github/workflows/marketplace-publish.yml` extracts release notes by matching this exact pattern; headings without brackets will be missed and the GitHub release will fall back to a generic message.
49
42
- Always include contributor attribution and the PR number: use `(PR #<prNumber> by @username)`.
50
43
- For PRs that close issues, include both issue and PR authors: `- Fix: Description (#123 by @reporter, PR #456 by @contributor)`.
51
44
- For PRs without linked issues, include the PR number and author: `- Add support for feature (PR #456 by @contributor)`.
@@ -67,13 +60,10 @@ mode: code
67
60
git checkout -b release/v[version]
68
61
```
69
62
70
-
9. Generate the final release state on that branch:
71
-
72
-
```bash
73
-
pnpm changeset:version
74
-
```
63
+
9. Bump the version in`src/package.json` to the target release version and ensure `CHANGELOG.md` and `src/CHANGELOG.md` are up to date.
75
64
76
-
- This should update `src/package.json`, `CHANGELOG.md`, and `src/CHANGELOG.md`, then consume the `.changeset` file.
65
+
- Verify the `CHANGELOG.md` heading uses `## [version]` (with brackets).
66
+
- Copy or sync `CHANGELOG.md` to `src/CHANGELOG.md`if the project keeps both.
77
67
- Review the generated version and changelog before opening the PR.
78
68
79
69
10. Open a single release PR with the fully generated release state.
@@ -92,32 +82,31 @@ mode: code
92
82
- If the release includes translated README or package-localization updates, include those files in the same PR.
93
83
- Let the release validation workflow and normal PR checks run before merge.
94
84
95
-
11. After the release PR is merged, stop for a release review on the resulting `main` commit.
96
-
97
-
```bash
98
-
git switch main
99
-
git pull origin main
100
-
REVIEWED_SHA=$(git rev-parse HEAD)
101
-
git rev-parse --short "$REVIEWED_SHA"
102
-
```
85
+
11. Once the release PR is open and passing checks, get it approved by a reviewer before proceeding.
103
86
104
-
- Review the merged release state before any publish step.
105
-
- Confirm that `src/package.json`, `CHANGELOG.md`, `src/CHANGELOG.md`, and the Marketplace-facing `README.md` all reflect the intended release.
106
-
- Check that the release PR checks passed and that the merged commit is the one you want to ship.
107
-
- Share that review summary, including `REVIEWED_SHA`, with the user and waitfor explicit confirmation before creating the tag.
108
-
- Do not create the tag or trigger publishing until the user says to proceed.
87
+
- Do not create the tag until the PR has at least one approval — the publish workflow enforces this automatically and will fail if no approved PR is found for the tagged commit.
109
88
110
-
12. Only after explicit confirmation, create the release tag on that reviewed `main` commit:
89
+
12. After the PR is approved, create the release tag on the release branch tip and push it:
111
90
112
91
```bash
113
-
git tag v[version]"$REVIEWED_SHA"
92
+
git tag v[version]
114
93
git push origin v[version]
115
94
```
116
95
117
-
- If `main` advances after the review pause, keep using the pinned `REVIEWED_SHA`for the tag instead of silently tagging a newer commit.
96
+
- Tag the branch tip as-is. Do not rebase or merge additional commits into the release branch before tagging — doing so changes the commit SHA and may pull in unreviewed changes that weren't part of the approval.
97
+
- The publish workflow validates that the tag version matches `src/package.json`.
98
+
99
+
13. The tag push triggers the stable publish workflow.
118
100
119
-
13. The stable publish workflow runs from the `v[version]` tag.
101
+
- The workflow first checks that the tagged commit belongs to an approved PR. If the PR is not yet approved this step fails — approve the PR first, then retrigger by recreating and pushing the tag: `git tag -d v[version] && git push origin :refs/tags/v[version] && git tag v[version] && git push origin v[version]`.
102
+
- Once the approval check passes, the `marketplace-production` environment gate fires and notifies the configured approvers.
103
+
- A human approver must then approve the deployment before the extension is published to VS Code Marketplace and Open VSX.
120
104
121
-
- Do not create the tag before the release PR is merged.
122
-
- The publish workflow validates that the tag version matches `src/package.json`.
123
-
- Marketplace and Open VSX publishing use the configured CI secrets.
105
+
14. After a successful deployment, add the release PR to the merge queue.
106
+
107
+
```bash
108
+
gh pr merge [pr-number] --auto --squash
109
+
```
110
+
111
+
- Do not merge before the deployment succeeds — merging first and then discovering a publish failure leaves `main` ahead of what was actually shipped.
112
+
- The merge queue runs all required checks against the release branch before merging to `main`.
constSUBTASK_CHILD_PROMPT=`${SUBTASK_CHILD_MARKER}: Ask the user exactly this follow-up question: What is the square root of 81? After the user answers, complete with only the answer.`
10
15
exportconstSUBTASK_PARENT_PROMPT=`${SUBTASK_PARENT_MARKER}: Use the new_task tool exactly once. Create an ask-mode subtask with this exact message: "${SUBTASK_CHILD_PROMPT}" Do not answer directly.`
11
16
exportconstSUBTASK_CHILD_FOLLOWUP_ANSWER="9"
17
+
constSUBTASK_FAST_CHILD_PROMPT=`${SUBTASK_FAST_CHILD_MARKER}: Complete immediately with the exact result "Fast child completed".`
18
+
exportconstSUBTASK_FAST_PARENT_PROMPT=`${SUBTASK_FAST_PARENT_MARKER}: Use the new_task tool exactly once. Create an ask-mode subtask with this exact message: "${SUBTASK_FAST_CHILD_PROMPT}" Do not answer directly.`
19
+
20
+
constSUBTASK_XPROFILE_SAME_CHILD_PROMPT=`${SUBTASK_XPROFILE_SAME_CHILD_MARKER}: Complete immediately with the exact result "Same-profile child completed".`
21
+
constSUBTASK_XPROFILE_DIFFERENT_CHILD_PROMPT=`${SUBTASK_XPROFILE_DIFFERENT_CHILD_MARKER}: Complete immediately with the exact result "Different-profile child completed".`
22
+
exportconstSUBTASK_XPROFILE_PARENT_PROMPT=`${SUBTASK_XPROFILE_PARENT_MARKER}: First use new_task to create a code-mode subtask with this exact message: "${SUBTASK_XPROFILE_SAME_CHILD_PROMPT}" After it returns, create an ask-mode subtask with the next instructions you receive.`
0 commit comments