Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
3e8e974
feat(go): add Go Teams plan and limits to /go (#60308)
adamdotdevin Oct 29, 2026
149767c
fix(tui): match the empty dialog search cursor to the highlighted row…
jlongster Oct 29, 2026
b2bd02e
feat(core): integration.connect and integration.use policies (#60315)
thdxr Oct 29, 2026
b6f82bf
fix(core): send execute progress at most every 100 ms (#60120)
rekram1-node Oct 29, 2026
b653a62
fix(core): keep permission reasons and feedback in MCP tool failures …
rekram1-node Oct 29, 2026
4efad23
release: v2.2.2 (#60337)
github-actions[bot] Oct 29, 2026
bc7da10
fix(app): keep question options and submit controls reachable on mobi…
neriousy Oct 29, 2026
085d6f7
fix(tui): resolve default cursor style across config reloads (#60302)
neriousy Oct 29, 2026
3c55edd
fix(console): polish Go plan cards and audience switch (#60345)
iamdavidhill Oct 29, 2026
7130211
fix(tui): keep # in file search base when not followed by a line rang…
neriousy Oct 29, 2026
c24c5af
feat(core): add Code Mode checks with static tool scanning to schedul…
kitlangton Oct 29, 2026
8609cc5
refactor(core): finish moving shell permission checks off tree-sitter…
kitlangton Oct 29, 2026
055a2a9
fix(core): fail schedule creation when a code check throws and pause …
kitlangton Oct 29, 2026
84aed13
feat(tui): load stored images by reference, like desktop (#60116)
kitlangton Oct 29, 2026
c24760c
fix(tui): highlight PHP code blocks without opening tag (#60359)
neriousy Oct 29, 2026
51625f7
fix(app): keep inbox scroll position when opening a session (#60356)
thdxr Oct 29, 2026
b19d143
chore(console): move console and stats to released solid-start (#60077)
rekram1-node Oct 29, 2026
d09e2c6
feat(app): add question notifications and sounds (#60358)
usrnk1 Oct 29, 2026
06bf854
fix(core): remove a session's terminals when it is deleted (#60322)
jlongster Oct 29, 2026
33e495a
fix(app): preserve command selection under a stationary pointer (#60368)
usrnk1 Oct 29, 2026
53ad857
fix(app): preserve simultaneous request notifications (#60378)
usrnk1 Oct 29, 2026
7ed1f96
feat(app): allow selecting question answer text (#60372)
usrnk1 Oct 29, 2026
17f4634
chore(release): announce releases in Discord again (#60371)
rekram1-node Oct 29, 2026
6b11312
feat(process-daemon): rename terminals (#60324)
jlongster Oct 29, 2026
5e6ee37
chore(process-daemon): release 0.4.0 (#60325)
jlongster Oct 29, 2026
83e3999
feat(app): group added projects in settings (#60221)
usrnk1 Oct 29, 2026
067b741
refactor(client): share the persistent pty protocol (#60323)
jlongster Oct 29, 2026
dc0bfc5
fix(core): check redirects, PowerShell method calls, and dynamic dire…
kitlangton Oct 29, 2026
a070e11
test(app): mock persistent pty routes (#60327)
jlongster Oct 29, 2026
237a847
fix(console): use default OG image on /go (#60397)
opencode-agent[bot] Oct 29, 2026
b5c2231
fix(core): run dynamic provider npm fallback after external sdk hooks…
rekram1-node Oct 30, 2026
4d9e4de
fix(ai): accept typed tools in loop (#60390)
rekram1-node Oct 30, 2026
e761e26
feat(tui): mark the selected composer suggestion under new designs (#…
opencode-agent[bot] Oct 30, 2026
e705b56
feat(ai): type OpenRouter options on the Responses route (#60044)
rekram1-node Oct 30, 2026
0349120
fix(ai): don't send filename with file_url on Responses (#60382)
rekram1-node Oct 30, 2026
4785478
fix(app): tidy the Extensions submenus (#59468)
kitlangton Oct 30, 2026
c45aae7
chore(release): require notes for stable releases and remove old chan…
rekram1-node Oct 30, 2026
cbe52d2
fix(core): show Code Mode programs the same failure text as direct ca…
rekram1-node Oct 30, 2026
bbd8535
fix(app): ⌘W closes the side panel when nothing in it is left to clos…
kitlangton Oct 30, 2026
50ea8d5
fix(app): keep the mobile drawer open while a session loads (#59427)
kitlangton Oct 30, 2026
96c5c3a
fix(codemode): preserve null in text encoding (#57639)
xiajiahang Oct 30, 2026
f1e475e
fix(app): keep the @ menu's highlight and Enter on current results (#…
kitlangton Oct 30, 2026
7a82f3a
refactor(ai): one tool() for both clients (#60407)
rekram1-node Oct 30, 2026
c81b223
fix(ai): keep polling queued generations through unknown statuses (#5…
rekram1-node Oct 30, 2026
d9be713
fix(codemode): copy extension results without trusting their own meth…
rekram1-node Oct 30, 2026
2c49a18
fix(desktop): prevent main bundle require collision (#60430)
Hona Oct 30, 2026
653650d
fix(app): stabilize side-panel click targets across reactive updates …
Hona Oct 30, 2026
8f11d59
fix(core): preserve plugin-supplied model variants (#60097)
rekram1-node Oct 30, 2026
1a5cd8b
fix(app): give focus back when ⌘W closes the side panel's last New ta…
kitlangton Oct 30, 2026
0da727d
fix(app): feather the sidebar list's scroll edges (#59467)
kitlangton Oct 30, 2026
0bf67d5
feat(app): page the timeline from the composer (#59426)
kitlangton Oct 30, 2026
57c7b70
fix(cli): allow blob frames and objects in web UI CSP (#60453)
Hona Oct 30, 2026
fbd8aec
fix(ai): keep tools with a throwing execute runnable (#60431)
rekram1-node Oct 30, 2026
85699b5
fix(app): derive model reasoning capability from variants and compati…
Hona Oct 30, 2026
1f67129
fix(desktop): sign zip data descriptors in debug log export (#60456)
Hona Oct 30, 2026
a88d3ca
fix(app): match own server loopback port before treating http servers…
Hona Oct 30, 2026
bf94de9
feat(desktop): spellcheck toggle and system-language dictionaries (#5…
opencode-agent[bot] Oct 30, 2026
f1627d9
fix(app): insert consecutive dropped file mentions in composer (#60463)
Hona Oct 30, 2026
78f8dff
fix(app): render inline content for built-in skills (#60464)
Hona Oct 30, 2026
f807ffe
fix(desktop): retain renderer permissions across shared-session windo…
Hona Oct 30, 2026
2e64b9f
fix(client): evict missing sessions on 404 instead of retrying or toa…
Hona Oct 30, 2026
cf69a0c
fix(app): keep project avatars on busy session rows (#60384)
opencode-agent[bot] Oct 30, 2026
8251673
fix(app): keep sidebar search muted on hover and show its shortcut (#…
opencode-agent[bot] Oct 30, 2026
1bf8210
fix(desktop): ship the Icon Composer app icon on macOS (#60020)
opencode-agent[bot] Oct 30, 2026
6a3d7a7
fix(app): tidy the pairing dialog's layout (#59659)
opencode-agent[bot] Oct 30, 2026
a08b40e
fix(ai): match the Promise client to the Effect API (#60465)
rekram1-node Oct 30, 2026
13e8186
chore(tui): use OpenTUI 0.8.0 (#60385)
simonklee Oct 30, 2026
8fdf2e5
feat(app): fit the session header at narrow timeline widths (#59512)
opencode-agent[bot] Oct 30, 2026
2273b60
fix(app): match the Context tab's close button to other side panel ta…
opencode-agent[bot] Oct 30, 2026
d5bee9e
fix(app): remove context tab indicator tooltip (#59505)
opencode-agent[bot] Oct 30, 2026
1dddb81
fix(app): show the review icon on the files changed tab (#58358)
opencode-agent[bot] Oct 30, 2026
fdb588a
fix(app): size the agent menu to its options (#60026)
opencode-agent[bot] Oct 30, 2026
fef2323
fix(app,gui-plugins): port renderer UUID generation to HTTP-safe uuid…
Hona Oct 30, 2026
ac5aae4
fix(app): fade home project list edges on scroll (#52358)
iamdavidhill Oct 30, 2026
cd6551f
feat(app): copy version from about settings (#52356)
iamdavidhill Oct 30, 2026
c9ba395
fix(app): tighten tab preview spacing and wrap paths between folders …
arvsrn Oct 30, 2026
f71cee9
fix(app): never hide every server from Home (#60454)
opencode-agent[bot] Oct 30, 2026
2d96b0f
feat(ai): keep partial output on errors (#60477)
rekram1-node Oct 30, 2026
dbd7202
fix(cli): report usage for steps that end after run goes idle (#60475)
rekram1-node Oct 30, 2026
fe8cd65
fix(core): keep inner tool progress from replacing execute's call row…
rekram1-node Oct 30, 2026
9425a65
fix(app): align queue row action buttons (#60485)
arvsrn Oct 30, 2026
e377cf1
fix(app): stop the ResizeObserver loop error while timeline rows grow…
Hona Oct 30, 2026
e505852
fix(session-ui): compare timeline rows without Effect structural hash…
Hona Oct 30, 2026
ec64c18
refactor(ai): move speech, transcription, video and realtime to exper…
rekram1-node Oct 30, 2026
2339bda
fix(app): stop scrolling toward an end that page zoom cannot reach (#…
Hona Oct 30, 2026
a97ed5c
fix(app): make the session details popover match menus (#60494)
arvsrn Oct 30, 2026
7b67adf
fix(desktop): restore maximized windows on their saved display (#60482)
Hona Oct 30, 2026
ab60ee2
feat(app): split new session project and worktree triggers (#60486)
arvsrn Oct 30, 2026
bdca40a
fix(core): apply webfetch permissions to Code Mode fetch (#59954)
rekram1-node Oct 30, 2026
a36eab6
fix(ui): remove select dropdown animation (#60499)
arvsrn Oct 30, 2026
a6212cb
fix(desktop): describe macOS folder access in the app bundle (#60503)
Hona Oct 30, 2026
986221a
fix(app): keep models with unknown release dates visible (#60496)
joe-ieta Oct 30, 2026
fa96f42
fix(app): keep settings nav scroll inside the list (#60504)
arvsrn Oct 30, 2026
f29e281
feat(core): add Claude Agent provider (#58782)
Tarquinen Oct 30, 2026
66c278b
fix(session-ui): compute highlight styles once per subtree in Chromiu…
Hona Oct 30, 2026
34aaa90
docs(go): raise DeepSeek V4.1 Flash limits to $100/$200/$105 (#60515)
opencode-agent[bot] Oct 30, 2026
ca68fde
docs(go): revert DeepSeek V4.1 Flash limits to $80/$160/$85 (#60532)
opencode-agent[bot] Oct 30, 2026
5ff0ede
fix(ui): watch the toast portal instead of the whole page (#60537)
Hona Oct 30, 2026
1e03c36
fix(session-ui): relabel code copy buttons only when the language cha…
Hona Oct 30, 2026
92b2ca0
fix(app): stop :has() rules restyling every ancestor on DOM insertion…
Hona Oct 30, 2026
082ac62
release: v2.2.3
github-actions[bot] Oct 30, 2026
56880cb
fix(session-ui): send and render only the markdown blocks a delta cha…
Hona Oct 30, 2026
cfdb9da
fix(session-ui): allocate less per streamed markdown delta (#60549)
Hona Oct 30, 2026
b44b716
release: v2.2.3 (#60564)
github-actions[bot] Oct 30, 2026
d050a2f
chore(sync): merge upstream v2 through v2.2.3
cursoragent Oct 30, 2026
ef4ad69
ci(hygiene): allowlist Claude Agent fixture recordings
cursoragent Oct 30, 2026
c6c5d36
fix(tui): span vertical session tab pulse across full tab width (#60338)
neriousy Oct 30, 2026
ad2e082
test(tui): drop PHP highlighting test (#60408)
neriousy Oct 30, 2026
eeb3c19
fix(app): simplify the session location popover (#60492)
arvsrn Oct 30, 2026
eff7264
fix(session-ui): stop re-checking the timeline projection on every st…
Hona Oct 30, 2026
95fc3c8
fix(session-ui): copy user messages from the actions menu (#60576)
arvsrn Oct 30, 2026
ef3a7f1
fix(core): drop Claude Code's /login hint from login errors (#60592)
Tarquinen Oct 30, 2026
8505041
feat(app): guide Claude Agent setup before connecting (#60603)
usrnk1 Oct 30, 2026
1e28374
feat(app): add base branch picker shortcut (#60579)
usrnk1 Oct 30, 2026
8f0fc21
feat(core): add experimental artifacts with pluggable providers (#60351)
kitlangton Oct 30, 2026
65c0d83
feat(core): rename persistent terminals (#60329)
jlongster Oct 30, 2026
6b4329c
fix(tui): add right padding to edit and patch diffs (#60614)
opencode-agent[bot] Oct 30, 2026
df39a70
fix(app): list commands above sessions in command palette search (#60…
opencode-agent[bot] Oct 30, 2026
bb6769c
fix(tui): keep plugin-set prompt cursor styles (#60599)
opencode-agent[bot] Oct 30, 2026
4e7d369
chore(core): use @opencode/pty 0.4.0 (#60387)
jlongster Oct 30, 2026
e76c67a
feat(core,server): enable schedules by default and run loop in openco…
kitlangton Oct 30, 2026
4fdea64
docs(go): raise DeepSeek V4.1 Flash limits to $100/$200/$105 (#60625)
opencode-agent[bot] Oct 30, 2026
f0944f0
refactor(ai): one ai object for Promise and Effect (#60516)
rekram1-node Oct 30, 2026
fed4cfc
chore(release): leave AI package changes out of the changelog (#60631)
rekram1-node Oct 30, 2026
dca643f
Update CHANGELOG.md to remove breaking changes
rekram1-node Oct 30, 2026
c6f2f81
Update CHANGELOG with new features and breaking changes
rekram1-node Oct 30, 2026
664c8f0
refactor(core): store background job markers in a SQLite job table (#…
kitlangton Oct 30, 2026
ef712d3
feat(app): move the desktop terminal to persistent PTYs (#60346)
jlongster Oct 30, 2026
78dda62
fix(cli): keep loopback requests off environment proxies (#60441)
rekram1-node Oct 30, 2026
5759491
fix(core): allow local config to override Console-supplied providers
thdxr Oct 30, 2026
e7acf85
fix(app): keep terminal tab clicks and renames on the right tab (#60645)
jlongster Oct 30, 2026
85d7397
chore: update nix node_modules hashes (#60187)
github-actions[bot] Oct 30, 2026
da87c47
fix(core): keep schedules off unless experimental.schedules is enabled
thdxr Oct 30, 2026
45898d0
release: v2.2.4
github-actions[bot] Oct 30, 2026
aacf7be
chore(sync): merge upstream v2 through v2.2.4
cursoragent Oct 30, 2026
efc26ba
fix(sync): resolve v2.2.4 merge follow-ups
cursoragent Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 5 additions & 1 deletion .github/release/plan-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# (INPUT_BUMP, INPUT_VERSION) only, and writes them to $GITHUB_OUTPUT. Nothing here reads repository files.
#
# push or dispatch on dev -> dev 0.0.0-dev-<run> npm tag dev, desktop
# dispatch on dev with bump/version -> latest x.y.z npm tag latest, releasers only
# dispatch on dev with bump/version -> latest x.y.z npm tag latest, releasers only, notes required
# push or dispatch on beta -> beta 0.0.0-beta-<run> desktop only
# pull_request -> pr 0.0.0-pr-<run> everything, dry run
#
Expand All @@ -22,6 +22,10 @@ case "$GITHUB_EVENT_NAME:$GITHUB_REF:$versioned" in
*) die "$GITHUB_EVENT_NAME on $GITHUB_REF cannot publish (versioned: $versioned)" ;;
esac

if [ "$channel" = latest ] && [ -z "${INPUT_RELEASE_NOTES//[[:space:]]/}" ]; then
die "Stable releases need release notes; generate them with ./script/release.ts --print"
fi

if [ "$channel" = latest ]; then
actor=${GITHUB_TRIGGERING_ACTOR:-${GITHUB_ACTOR:-}}
[ -n "$actor" ] || die "Stable releases can only be started by releasers; the triggering actor is unknown"
Expand Down
18 changes: 18 additions & 0 deletions .github/release/publish-discord.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
# publish-discord.sh: announces the v<version> release in Discord with OPENCODE_RELEASE_NOTES (DISCORD_WEBHOOK).
# Discord caps an embed description at 4096 characters, so longer notes are cut and link to the GitHub release.
. "$(dirname "$0")/lib.sh"

tag="v$OPENCODE_VERSION"
payload=$(jq -n --arg tag "$tag" --arg notes "${OPENCODE_RELEASE_NOTES:-}" \
--arg url "https://github.com/$GITHUB_REPOSITORY/releases/tag/$tag" '
($notes | if length > 4000 then .[:4000] + "\n\n[Full release notes](\($url))" else . end) as $description |
{
allowed_mentions: {parse: []},
embeds: [{title: "OpenCode V2 \($tag)", url: $url, description: $description, color: 2829099}]
}')
echo "$payload" | jq .
if dry_run; then exit 0; fi

test -n "${DISCORD_WEBHOOK:-}" || die "DISCORD_WEBHOOK is not set"
curl -fsS --retry 3 -H "Content-Type: application/json" -d "$payload" "$DISCORD_WEBHOOK"
3 changes: 2 additions & 1 deletion .github/release/tag-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
. "$(dirname "$0")/lib.sh"

tag="v$OPENCODE_VERSION"
git ls-files -z -- '*package.json' bun.lock | xargs -0 sed -i -E "s/\"version\": \"[^\"]+\"/\"version\": \"$OPENCODE_VERSION\"/g"
# @opencode/pty is versioned separately, by process-daemon-v<version> tags.
git ls-files -z -- '*package.json' bun.lock ':!packages/process-daemon/**' | xargs -0 sed -i -E "s/\"version\": \"[^\"]+\"/\"version\": \"$OPENCODE_VERSION\"/g"

if [ -n "${OPENCODE_RELEASE_NOTES:-}" ] && ! grep -qF -x "## $tag" CHANGELOG.md && ! grep -qF "## $tag " CHANGELOG.md; then
notes=$(mktemp)
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ target

# Local dev files
opencode-dev
UPCOMING_CHANGELOG.md
RELEASE_REVIEW.md
logs/
*.bun-build
Expand Down
3 changes: 3 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,7 @@ paths = [
'''^packages/http\-recorder/test/http\.test\.ts$''',
'''^packages/http\-recorder/test/redaction\.test\.ts$''',
'''^packages/session\-ui/src/components/tool\-count\-summary\.tsx$''',
# Upstream v2.2.3 Claude Agent HTTP fixtures: generic-api-key matches
# api_message_id + literal REDACTED (not credentials).
'''^packages/core/test/plugin/provider/claude\-agent/fixtures/recordings/.*\.jsonl$''',
]
49 changes: 0 additions & 49 deletions .opencode/command/changelog.md

This file was deleted.

Loading
Loading