Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
f0160a1
refactor(process-daemon): route stop and ownership through Control (#…
jlongster Oct 28, 2026
0610a81
fix(process-daemon): wait for readiness instead of polling (#59701)
jlongster Oct 28, 2026
86ce19d
fix(process-daemon): poll every 25 ms on Windows (#59702)
jlongster Oct 28, 2026
0416987
feat(ai): make provider model() settings optional and rename configur…
rekram1-node Oct 28, 2026
fc6922f
chore(core): remove bundled cohere, vercel and perplexity AI SDK pack…
rekram1-node Oct 28, 2026
9adc42b
chore(deps): bump zod to 4.6.7 (#59763)
rekram1-node Oct 28, 2026
fa1260d
fix(tui): send pasted image and PDF paths to local servers (#59833)
rekram1-node Oct 28, 2026
587f2cb
fix(stats): show the current language in the footer select (#59772)
opencode-agent[bot] Oct 28, 2026
62ae125
fix(stats): ignore requests rejected before routing (#59773)
opencode-agent[bot] Oct 28, 2026
d6867f2
fix(stats): dismiss mobile chart tooltips on scroll-away and outside …
opencode-agent[bot] Oct 28, 2026
950111f
feat(app): simplify composer model labels (#59735)
usrnk1 Oct 28, 2026
b94a305
fix(gui-plugins): align file tree guides with chevrons (#59884)
usrnk1 Oct 28, 2026
ecf1d36
fix(app): stop side panel close from restyling the whole transcript (…
usrnk1 Oct 28, 2026
3d7eceb
fix(desktop): regenerate macOS icon sizes without edge halo (#59900)
opencode-agent[bot] Oct 28, 2026
1e7ba46
fix(app): polish recently closed files (#59876)
usrnk1 Oct 28, 2026
8d083cb
fix(tui): pad the empty /usage dialog message (#59918)
Tarquinen Oct 28, 2026
d1bd20f
fix(ui): show panel toggle tooltip when expanded (#59894)
usrnk1 Oct 28, 2026
8c2e163
fix(core): skip image models without an image package (#59926)
rekram1-node Oct 28, 2026
4d33928
chore(process-daemon): release 0.3.2 under the @opencode scope (#59879)
jlongster Oct 28, 2026
c96d200
fix(codemode): report parse errors with a location and a hint (#59834)
rekram1-node Oct 28, 2026
4aba9a6
chore(deps): bump vite to 7.3.7 (#59828)
rekram1-node Oct 28, 2026
b6c43a5
chore(deps): bump vite to 8.2.4 (#59830)
rekram1-node Oct 28, 2026
35a4a68
feat(app): add /reload to reload configuration (#59887)
opencode-agent[bot] Oct 28, 2026
629d9e2
docs(console): document Go Teams and the billing drawer (#59960)
adamdotdevin Oct 28, 2026
f822b10
feat(app): opt into experimental-media-uri and keep draft media bytes…
kitlangton Oct 28, 2026
06d3c06
docs(go): list MiniMax M3's price above 512K tokens (#59964)
vimtor Oct 28, 2026
45713a3
feat(ai): freeform tools (#59963)
rekram1-node Oct 28, 2026
71d3556
fix(tui): show spinner while a continued subagent runs (#59950)
rekram1-node Oct 28, 2026
506ac20
fix(ai): request inline image bytes by default (#59947)
rekram1-node Oct 28, 2026
7461d15
feat(ai): add MiniMax image generation (#59929)
rekram1-node Oct 28, 2026
a882cf9
feat(codemode): let extension globals return Effects (#59948)
rekram1-node Oct 28, 2026
da702a8
fix(core): leave headroom when fitting output to the context window (…
neriousy Oct 28, 2026
dd35fbc
feat(ai): Responses routes for OpenRouter, DigitalOcean and Venice (#…
rekram1-node Oct 28, 2026
dfa6329
refactor(ai): remove fal, Black Forest Labs, Replicate and Stability …
rekram1-node Oct 28, 2026
3364bf5
feat(ai): add test clients for image, video, speech, transcription an…
rekram1-node Oct 28, 2026
ced73dc
feat(ai): expose compaction on the Promise client (#59987)
rekram1-node Oct 28, 2026
6f80292
fix(app): calmer background shell pill (#59480)
kitlangton Oct 28, 2026
4585c31
feat(core): scheduled tasks storage and time triggers (experimental) …
kitlangton Oct 28, 2026
651032b
feat(app): fold long user messages behind an experimental setting (#5…
kitlangton Oct 28, 2026
711802c
fix(codemode): let search be awaited or chained like a Promise (#59981)
rekram1-node Oct 28, 2026
a97dc23
chore(web): upgrade docs site to astro 7 (#59845)
rekram1-node Oct 28, 2026
97fd7ac
feat(app): show a background shell's output from the pill (#59496)
kitlangton Oct 28, 2026
b799259
feat(theme): lay out migrated V1 themes on opencode2 steps under new …
jlongster Oct 28, 2026
76243df
chore(deps): bump hono to 4.13.13 (#60022)
rekram1-node Oct 28, 2026
1c49e51
fix(codemode): run extension before hooks before the host call (#60024)
rekram1-node Oct 28, 2026
410644a
fix(ai): document Bedrock Mantle base URL per model (#59990)
rekram1-node Oct 28, 2026
fe04f0e
fix(app): treat the reachable end as the end under desktop zoom (#60034)
Hona Oct 28, 2026
9a9386e
refactor(client): group experimental SDK methods under client.experim…
kitlangton Oct 28, 2026
c63a939
docs(console): note that Go Teams starts with Extra Usage on (#60043)
adamdotdevin Oct 28, 2026
0e10290
fix(core): tell agents they can message running subagents (#60045)
rekram1-node Oct 28, 2026
77a0fd6
fix(app): always list OpenCode free models in the model picker (#60047)
Hona Oct 28, 2026
f43563b
fix(theme): give migrated V1 dialogs an opaque background (#60016)
jlongster Oct 29, 2026
8de0323
feat(core): add /goal with a client-side done check (#59437)
neriousy Oct 29, 2026
e85207b
chore(deps): bump katex to 0.18.11 (#60037)
rekram1-node Oct 29, 2026
01abece
chore(deps): bump @ai-sdk/provider-utils to 4.0.62 (#60036)
rekram1-node Oct 29, 2026
c5d9c30
fix(core): stop merging credential metadata into model settings (#60057)
rekram1-node Oct 29, 2026
7c47eb7
fix(session-ui): stop shell text showing through the copy button (#59…
opencode-agent[bot] Oct 29, 2026
89f3ac1
feat(core): add image_generate tool (#59939)
rekram1-node Oct 29, 2026
9039a2a
chore: add Hona as GUI plugin SDK codeowner (#60071)
Hona Oct 29, 2026
aaa0d7c
fix(core): tell Code Mode models built-in tools stay top-level (#57627)
rekram1-node Oct 29, 2026
78c31ea
fix(ai): send image sizes the way OpenRouter, Vercel Grok and Google …
rekram1-node Oct 29, 2026
6a0acd1
fix(tui): show execution failures that happen before any step (#60079)
rekram1-node Oct 29, 2026
27641b3
fix(ai): send OpenRouter image edits as input references (#60067)
rekram1-node Oct 29, 2026
eb06c3c
feat(app): redesign the integrations dialog (#59976)
arvsrn Oct 29, 2026
085a891
feat(ai): load Meta Muse Image through a meta/images entrypoint (#60081)
rekram1-node Oct 29, 2026
fbb47c9
feat(core): schedule prompts from agents, /schedule and the experimen…
kitlangton Oct 29, 2026
d142014
feat(core): offer gpt-image-2 on the Codex login (#60085)
rekram1-node Oct 29, 2026
2f3e56d
fix(core): rewrite the image_generate description (#60090)
rekram1-node Oct 29, 2026
5c0376f
fix(app): let a plugin server's event stream follow its endpoint (#60…
Hona Oct 29, 2026
a9caf6d
feat(app): make the new model picker the default (#59997)
arvsrn Oct 29, 2026
f023f7c
feat(core): make image_generate opt-in with one experimental config f…
rekram1-node Oct 29, 2026
79349e8
chore: update nix node_modules hashes (#59827)
github-actions[bot] Oct 29, 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
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
packages/app/ @Hona @Brendonovich
packages/desktop/ @Hona @Brendonovich

# GUI plugin SDK
# changes here must be meticulous - pls chat first :)
packages/plugin/src/gui/ @Hona

# CI and releases. Release jobs that hold secrets run only .github/workflows/release.yml and .github/release/,
# which makes this path the release security boundary.
/.github/ @anomalyco/releasers
6 changes: 3 additions & 3 deletions .github/workflows/release-process-daemon.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Process daemon release

# Publishes the opencode-pty binaries and the @opencode-ai/pty npm packages from packages/process-daemon.
# Publishes the opencode-pty binaries and the @opencode/pty npm packages from packages/process-daemon.
# Only process-daemon-v<version> tags publish; pull requests that touch the release pipeline build and pack
# without publishing.

Expand Down Expand Up @@ -301,7 +301,7 @@ jobs:
gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1 ||
gh release create "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" --draft --verify-tag --latest=false \
--title "process-daemon v$version" \
--notes "opencode-pty $version (protocol $PROTOCOL_VERSION) from packages/process-daemon, published to npm as @opencode-ai/pty@$version."
--notes "opencode-pty $version (protocol $PROTOCOL_VERSION) from packages/process-daemon, published to npm as @opencode/pty@$version."
gh release upload "$GITHUB_REF_NAME" dist/*.tar.gz dist/SHA256SUMS dist/release-manifest.json --clobber --repo "$GITHUB_REPOSITORY"
gh release edit "$GITHUB_REF_NAME" --draft=false --latest=false --repo "$GITHUB_REPOSITORY"
- name: Publish npm packages
Expand All @@ -314,7 +314,7 @@ jobs:
npm publish "$package" --access public --provenance
fi
done
name="@opencode-ai/pty"
name="@opencode/pty"
if ! npm view "$name@$version" version >/dev/null 2>&1; then
npm publish dist/npm/opencode-pty --access public --provenance
fi
11 changes: 11 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,17 @@ const table = sqliteTable("session", {
})
```

### Experimental API

- An experimental endpoint lives at `/api/experimental/<group>/...`, its OpenAPI identifier is `experimental.<group>.<method>`, and it lands in the SDK as `client.experimental.<group>.<method>`. Its description says "Experimental: may change without compatibility guarantees."
- `packages/protocol/test/experimental-identifiers.test.ts` enforces the path and identifier match in both directions; the SDK namespace follows from the path.
- An experimental field or parameter on a stable endpoint goes under an `experimental` key (`experimental.<name>`), the same way config does (`config.experimental.*`).
- New endpoints and new default behaviors start experimental.
- To graduate one, move the route out of `/api/experimental`, drop the `experimental.` prefix, and note it in `CHANGELOG.md`.
- Experimental HTTP routes change without aliases: rename or remove the route, then update the callers.
- A breaking move of shipped SDK or plugin API (including moving it under `experimental`) keeps the old path and type names as deprecated aliases of the new ones until the next minor, each marked `@deprecated` with the replacement and "Removed in the next minor". Generated SDK moves get them from the codegen (`compile(..., { aliases: true })` in `packages/client/script/generate.ts`), not by hand.
- Experimental plugin hooks are named `experimental.*` (`experimental.ws.handshake`).

## Testing

- Avoid mocks as much as possible, you shouldn't be using globalThis.\* at all unless it's the only option.
Expand Down
533 changes: 208 additions & 325 deletions bun.lock

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions nix/hashes.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"nodeModules": {
"x86_64-linux": "sha256-WTBGUXIj/+CCJMQxunNpRfFY+0f3QyEoRUACwlnXMTU=",
"aarch64-linux": "sha256-pSqYZoivYt6j6JDsDXyeMu+l5RasikBtsgAKw8NsMC8=",
"aarch64-darwin": "sha256-IWZzoFucmt4YkoRKCH2kakrcRDbtOcHai+Xl/nVJmJA="
"x86_64-linux": "sha256-ZeDwprKqzVEm/8IkD7D/EkwAGSy9HR8yQnGUMoae1Kc=",
"aarch64-linux": "sha256-DUkIdnwsQ2p+vqVFCRtQwMCYlETJl1QV8OxVsen273g=",
"aarch64-darwin": "sha256-ie3dihmkL/U4kPw+hKyVNj8uryed9mxGEiq8VpxMMIc="
}
}
12 changes: 8 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,11 @@
"@types/semver": "7.7.1",
"@tsconfig/node22": "22.0.2",
"@tsconfig/bun": "1.0.9",
"@astrojs/starlight": "0.41.11",
"@cloudflare/workers-types": "4.20251008.0",
"@pierre/diffs": "1.6.1",
"@pierre/highlights": "0.2.0",
"astro": "7.3.8",
"@solid-primitives/event-listener": "2.4.6",
"@solid-primitives/media": "2.3.6",
"@solid-primitives/resize-observer": "2.2.0",
Expand All @@ -80,7 +82,7 @@
"effect": "4.0.1",
"fast-check": "4.9.0",
"cross-spawn": "7.0.6",
"hono": "4.10.7",
"hono": "4.13.13",
"fuzzysort": "3.1.0",
"get-east-asian-width": "1.6.0",
"luxon": "3.6.1",
Expand All @@ -90,14 +92,14 @@
"semver": "7.7.4",
"typescript": "npm:@typescript/typescript6@6.0.2",
"@typescript/native": "npm:typescript@7.1.0-beta",
"zod": "4.1.8",
"zod": "4.6.7",
"remeda": "2.26.0",
"sst": "4.13.1",
"shiki": "4.4.3",
"solid-list": "0.3.0",
"string-width": "7.2.0",
"tailwindcss": "4.1.11",
"vite": "7.3.6",
"vite": "7.3.7",
"@solidjs/meta": "0.29.4",
"@solidjs/router": "1.0.0",
"@solidjs/start": "https://pkg.pr.new/@solidjs/start@dfb2020",
Expand Down Expand Up @@ -156,6 +158,8 @@
"bun-types": "1.4.4",
"effect": "catalog:",
"open": "11.0.4",
"astro": "catalog:",
"@astrojs/starlight": "catalog:",
"solid-js": "catalog:"
},
"patchedDependencies": {
Expand All @@ -171,7 +175,7 @@
"@ai-sdk/google@3.0.73": "patches/@ai-sdk%2Fgoogle@3.0.73.patch",
"@tanstack/virtual-core@3.17.8": "patches/@tanstack%2Fvirtual-core@3.17.8.patch",
"@ff-labs/fff-bun@0.10.5": "patches/@ff-labs%2Ffff-bun@0.10.5.patch",
"vite@8.2.2": "patches/vite@8.2.2.patch",
"vite@8.2.4": "patches/vite@8.2.4.patch",
"@modelcontextprotocol/client@2.3.1": "patches/@modelcontextprotocol%2Fclient@2.3.1.patch",
"@corvu/drawer@0.2.4": "patches/@corvu%2Fdrawer@0.2.4.patch",
"app-builder-lib@26.15.7": "patches/app-builder-lib@26.15.7.patch",
Expand Down
Loading
Loading