Skip to content

Commit ba2b3a5

Browse files
authored
Prepare v0.3.0 (#132)
Comment commands address the adopter's own App. v0.2.0's fixed prefix fixed the multi-tenant bug and gave up GitHub's autocomplete, which only offers accounts with repository access and is the whole reason a handle beats a prefix. Also fixes the release check itself: it matched the Go version pin as a fixed string, so gofmt realigning that constant made it fail on this very release. A check a formatter can invalidate is worse than none.
1 parent a02b65f commit ba2b3a5

7 files changed

Lines changed: 60 additions & 11 deletions

File tree

.github/workflows/simplycubed.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ on:
4848
type: string
4949
version:
5050
description: SimplyCubed CLI tag to install.
51-
default: v0.2.0
51+
default: v0.3.0
5252
required: false
5353
type: string
5454
secrets:

CHANGELOG.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,51 @@
33
All notable changes are recorded here and summarized again in the matching
44
GitHub release notes for each tag.
55

6+
## v0.3.0
7+
8+
**Comment commands address your own App.** v0.2.0 replaced `@simplycubed-code`
9+
with `/simplycubed`, which fixed the multi-tenant bug and gave up the only thing
10+
that makes a handle worth having. GitHub offers accounts **with repository
11+
access** in its autocomplete, so a real mention completes after someone types
12+
`@a` without them knowing the bot's name. A prefix that is not an account cannot
13+
do that, and typing `/` opens GitHub's own menu, which is a fixed set of five
14+
built-ins and matches nothing.
15+
16+
**Breaking.** `.github/simplycubed.yml` gains a required `appName:`,
17+
`simplycubed init` requires `--app-name`, and the comment prefix changes again.
18+
Re-run `simplycubed init --workflow --app-name <your-app>` to regenerate both
19+
files.
20+
21+
- **`appName:` is the source of truth**, and the parser, help text,
22+
unknown-command reply, and wrong-surface replies all render from it. The agent
23+
can no longer tell anyone to mention a different account. It accepts
24+
`acme-code`, `@acme-code`, or `acme-code[bot]`, because all three are how
25+
people write the same App.
26+
- **The workflow trigger stays a literal**, written by `init` from that same
27+
value. A workflow decides whether to start before any code runs, so matching
28+
loosely there would mint a token, check out, install Go, install the CLI and
29+
start a sandbox — roughly thirty seconds — every time someone mentioned a
30+
colleague, to then do nothing.
31+
- **`preflight` fails when the two disagree.** The handle necessarily lives in
32+
two files and the App can push only one of them, since it holds no `workflows`
33+
permission by design. Drift is silent in the worst way: comments stop working
34+
with no error anywhere. The check names both values and says to re-run `init`.
35+
- **`--app-name` is required at first install**, with an error that explains the
36+
name is yours rather than merely demanding a flag. Re-running `init` without
37+
it keeps whatever the config already says, so upgrading cannot silently change
38+
the handle a team already types.
39+
- The install commands in the README and `docs/setup.md` show `<release-tag>`
40+
with a link to Releases, and `scripts/verify-release.sh` now also pins the
41+
README's "Current release" banner. v0.2.0 shipped with that banner still
42+
announcing v0.1.9, because it was prose rather than a checked pin.
43+
- **`scripts/verify-release.sh` no longer breaks on formatting.** It matched the
44+
Go version pin as a fixed string, so gofmt realigning that constant made the
45+
check fail on the very release it was meant to guard. It now matches with a
46+
regex that tolerates the alignment.
47+
- The README leads with what the product is. It opened with a dry run, ten lines
48+
before the overview, and carried three consecutive install sections that all
49+
pointed at `docs/setup.md`.
50+
651
## v0.2.0
752

853
**This release makes the product installable by someone who is not us.** Every

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
SimplyCubed Code is an autonomous coding agent you install into your own GitHub. Your team files an issue, the agent prepares a pull request in your repository, and one of your reviewers decides whether it ships.
66

7-
> Beta. Current release: `v0.2.0`. Product overview: [simplycubed.com/code](https://simplycubed.com/code?utm_source=github&utm_medium=readme&utm_campaign=code). See [Status](#status).
7+
> Beta. Current release: `v0.3.0`. Product overview: [simplycubed.com/code](https://simplycubed.com/code?utm_source=github&utm_medium=readme&utm_campaign=code). See [Status](#status).
88
99
## Product overview
1010

@@ -36,7 +36,7 @@ go install github.com/simplycubed/code/cmd/simplycubed@<release-tag>
3636
simplycubed version
3737
```
3838

39-
With `v0.2.0`, that prints `0.2.0`. Pre-1.0 releases follow semver with the
39+
With `v0.3.0`, that prints `0.3.0`. Pre-1.0 releases follow semver with the
4040
usual caveat: minor versions may still change behavior. Pin the tag you have
4141
validated rather than floating on `@latest`.
4242

@@ -227,7 +227,7 @@ The GitHub App identity is your own App's `[bot]` account. That bot is the singl
227227

228228
## Status
229229

230-
Beta, and honest about it. Two loops run end to end via the CLI on the Codex-on-Azure engine: issue to pull request, and fix-on-request (a human requests changes, the fixer addresses them and pushes back). `v0.2.0` is the latest release and you should still expect rough edges.
230+
Beta, and honest about it. Two loops run end to end via the CLI on the Codex-on-Azure engine: issue to pull request, and fix-on-request (a human requests changes, the fixer addresses them and pushes back). `v0.3.0` is the latest release and you should still expect rough edges.
231231

232232
Roadmap, roughly in order:
233233

cmd/simplycubed/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ gate:
150150
`
151151

152152
const (
153-
latestKnownWorkflowTag = "v0.2.0"
153+
latestKnownWorkflowTag = "v0.3.0"
154154
callerWorkflowTagToken = "__SIMPLYCUBED_TAG__"
155155
callerWorkflowAppNameToken = "__SIMPLYCUBED_APP_NAME__"
156156
)

docs/setup.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ go install github.com/simplycubed/code/cmd/simplycubed@<release-tag>
3030
simplycubed version
3131
```
3232

33-
With `v0.2.0`, `simplycubed version` prints `0.2.0`.
33+
With `v0.3.0`, `simplycubed version` prints `0.3.0`.
3434

3535
2. In the target repository, generate the setup files and labels:
3636

docs/templates/simplycubed-caller.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on:
1111
jobs:
1212
run:
1313
if: ${{ github.event_name == 'issues' && github.event.label.name == 'sc:go' }}
14-
uses: simplycubed/code/.github/workflows/simplycubed.yml@v0.2.0
14+
uses: simplycubed/code/.github/workflows/simplycubed.yml@v0.3.0
1515
with:
1616
ref: ${{ github.event.issue.number }}
1717
github-app-client-id: ${{ vars.SIMPLYCUBED_GH_APP_CLIENT_ID }}
@@ -27,7 +27,7 @@ jobs:
2727
if: >-
2828
github.event_name == 'pull_request_review' &&
2929
contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.review.author_association)
30-
uses: simplycubed/code/.github/workflows/simplycubed.yml@v0.2.0
30+
uses: simplycubed/code/.github/workflows/simplycubed.yml@v0.3.0
3131
with:
3232
ref: ${{ github.event.pull_request.number }}
3333
github-app-client-id: ${{ vars.SIMPLYCUBED_GH_APP_CLIENT_ID }}
@@ -50,7 +50,7 @@ jobs:
5050
github.event.comment.user.type != 'Bot' &&
5151
startsWith(github.event.comment.body, '@your-app-name') &&
5252
contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.comment.author_association)
53-
uses: simplycubed/code/.github/workflows/simplycubed.yml@v0.2.0
53+
uses: simplycubed/code/.github/workflows/simplycubed.yml@v0.3.0
5454
with:
5555
ref: ${{ github.event.issue.number }}
5656
github-app-client-id: ${{ vars.SIMPLYCUBED_GH_APP_CLIENT_ID }}

scripts/verify-release.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,18 @@ fi
3030
# <release-tag> with a link to Releases, so they are not pinned here.
3131
fail=0
3232
for pin in \
33-
"cmd/simplycubed/main.go:latestKnownWorkflowTag = \"${version}\"" \
33+
"cmd/simplycubed/main.go:latestKnownWorkflowTag[[:space:]]*= \"${version}\"" \
3434
"docs/templates/simplycubed-caller.yml:simplycubed.yml@${version}" \
3535
".github/workflows/simplycubed.yml:default: ${version}" \
3636
"README.md:Current release: \`${version}\`"
3737
do
3838
file="${pin%%:*}"
3939
needle="${pin#*:}"
40-
if ! grep -qF "${needle}" "${file}"; then
40+
# Extended regex, not a fixed string: the Go pin is a constant whose alignment
41+
# gofmt controls, so adding another constant to the same block silently broke
42+
# an exact match. A release check that a formatter can invalidate is worse
43+
# than none, because it fails on the one change it was meant to guard.
44+
if ! grep -qE "${needle}" "${file}"; then
4145
echo "${file} does not pin ${version} (expected to find: ${needle})" >&2
4246
fail=1
4347
fi

0 commit comments

Comments
 (0)