Skip to content

Commit 2f3e9ec

Browse files
committed
Merge remote-tracking branch 'origin/main' into claude/message-summarization-feedback-4lpb90
# Conflicts: # CHANGELOG.md # src/tui/route.tsx # test/e2e/tui.test.ts
2 parents e985709 + 6445940 commit 2f3e9ec

3 files changed

Lines changed: 22 additions & 13 deletions

File tree

‎.github/workflows/publish.yml‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,16 @@ jobs:
3535
- run: bun run typecheck
3636
- run: bun test
3737

38-
# The tag is the version: stamp it into package.json in this checkout only.
38+
# The tag is the version: stamp it into package.json in this checkout only. A prerelease
39+
# (0.3.0-beta.1) goes under the `beta` dist-tag so `latest` keeps pointing at the last stable.
3940
- name: Version from the release tag
41+
id: version
4042
run: |
4143
tag="${GITHUB_REF_NAME#v}"
4244
echo "$tag" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?$' || { echo "ref '$GITHUB_REF_NAME' is not a version tag" >&2; exit 1; }
4345
npm version "$tag" --no-git-tag-version --allow-same-version
46+
case "$tag" in *-*) echo "dist_tag=beta" ;; *) echo "dist_tag=latest" ;; esac >> "$GITHUB_OUTPUT"
4447
4548
# OIDC trusted publishing needs the package to already exist on npm: the very first
4649
# version of a new package is published once by hand, every later one lands here.
47-
- run: npm publish --provenance --access public
50+
- run: npm publish --provenance --access public --tag "${{ steps.version.outputs.dist_tag }}"

‎.github/workflows/release.yml‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ jobs:
8181
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
8282
git tag -a "v$v" -m "v$v"
8383
git push origin "v$v"
84-
gh release create "v$v" --title "v$v" --generate-notes
84+
prerelease=""; case "$v" in *-*) prerelease="--prerelease" ;; esac
85+
gh release create "v$v" --title "v$v" --generate-notes $prerelease
8586
gh workflow run publish.yml --ref "v$v"
8687
echo "Released v$v; publish workflow dispatched on the tag."
8788

‎CHANGELOG.md‎

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
# Changelog
22

3-
## Unreleased
3+
## 0.3.0-beta.2 — 2026-09-09
44

55
- **The status line now asks OpenCode for a frame when it changes.** OpenCode's renderer draws
6-
on demand, so a signal changed from inside an `await` — every progress update, and every
7-
notice raised by a slow action — reached the buffer and then waited there for something else
8-
to trigger a repaint. While a draft is running the route also holds the renderer's own
9-
refcounted `requestLive()`, the same thing an animation asks for, and drops it when the draft
10-
ends. On the two OpenCode versions the e2e suite can drive (1.18.26 and 1.18.29) the line was
11-
already being painted promptly without this, so it is a robustness fix rather than a
12-
confirmed cure for a report of no feedback at all — but nothing should depend on someone
13-
else's render loop to be visible.
6+
on demand, and nothing here ever called `requestRender()`: a signal changed from inside an
7+
`await` — every progress update, and every notice raised by a slow action — reached the
8+
render buffer and then waited there for something else to trigger a repaint. While a draft
9+
runs the route also holds the renderer's own refcounted `requestLive()`, the same thing an
10+
animation asks for, and drops it when the draft ends.
11+
12+
This is the one difference between 0.3.0-beta.1 and the branch summary reading as "no
13+
feedback at all": beta.1 carries the progress line but never asks to be drawn. On the two
14+
OpenCode versions the e2e suite can drive (1.18.26 and 1.18.29) the line was already being
15+
painted promptly without it, so the fix is unconfirmed against a report rather than proven —
16+
but nothing should depend on another component's render loop to be visible.
1417

1518
- **The e2e suite can now watch a draft while it runs.** `startMock({ slowSummaryMs })` holds
1619
back the branch-summary request only (the setup turns stay fast), and a new test samples the
1720
tree 0.3s after you choose *Summarize* and three more times half a second apart: the line
1821
must be up on all four, and the spinner must have turned between them. Every earlier test
19-
used a mock that answered instantly, so nothing ever looked at the screen mid-draft.
22+
used a mock that answered instantly, so nothing had ever looked at the screen mid-draft.
2023

2124
- `CTREE_OPENCODE_VERSION` picks the OpenCode the e2e suite installs and drives (default
2225
1.18.26), so a report against a newer release can be reproduced without editing the harness.
2326

27+
## 0.3.0-beta.1 — 2026-09-08
28+
2429
### Breaking: the keymap is now vim-aligned
2530

2631
A key inside `/tree` should mean what it means in vim. Seven bindings did not, and they have

0 commit comments

Comments
 (0)