Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
46da801
refactor(effect): drop shell abort signals from runner (#21599)
kitlangton Apr 9, 2026
bd53b65
refactor: fix tool call state handling and clean up imports (#21709)
thdxr Apr 9, 2026
5d3dba6
release: v1.4.2
Apr 9, 2026
a7743e6
feat(mcp): add OAuth redirect URI configuration for MCP servers (#21385)
egze Apr 9, 2026
f73e4d5
chore: generate
opencode-agent[bot] Apr 9, 2026
581a769
fix(tui): restore hidden session scrollbar default (#20947)
kitlangton Apr 9, 2026
b060066
feat: add support for fast modes for claude and gpt models (that supp…
rekram1-node Apr 9, 2026
537160d
opencode: lazy-load top-level CLI commands
simonklee Apr 5, 2026
34b9792
delete unused withALS method (#21723)
kitlangton Apr 9, 2026
02b32e1
Revert "opencode: lazy-load top-level CLI commands" (#21726)
simonklee Apr 9, 2026
2ecc6ae
fix(effect): suspend agent default layer construction (#21732)
kitlangton Apr 9, 2026
9f54115
refactor: remove unused runtime facade exports (#21731)
kitlangton Apr 9, 2026
3199383
fix: finalize interrupted bash via tool result path (#21724)
kitlangton Apr 9, 2026
10441ef
refactor(effect): extract session run state service (#21744)
kitlangton Apr 9, 2026
35b44df
chore: generate
opencode-agent[bot] Apr 9, 2026
7202b3a
fix: ensure that openai oauth works for agent create cmd, use tempora…
rekram1-node Apr 9, 2026
b2f621b
refactor(session): inline init route orchestration (#21754)
kitlangton Apr 9, 2026
bbe4a04
chore: generate
opencode-agent[bot] Apr 9, 2026
1a902b2
ci: skip winget publish on beta and ensure finalize always runs
thdxr Apr 9, 2026
eac50f9
ci: prevent beta branch builds from triggering production release steps
thdxr Apr 9, 2026
877be7e
release: v1.4.3
Apr 10, 2026
98874a0
fix windows e2e backend not stopping on sigterm waiting 10s for no re…
Hona Apr 10, 2026
b16ee08
ci use node 24 in test workflow fixing random ECONNRESET (#21782)
Hona Apr 10, 2026
04074d3
core: enable prod channel to use shared production database
thdxr Apr 10, 2026
0970b10
Merge remote-tracking branch 'origin/dev' into dev
thdxr Apr 10, 2026
16c60c9
refactor(session): extract sharing orchestration (#21759)
kitlangton Apr 10, 2026
17bd166
refactor(effect): move tool descriptions into registry (#21795)
kitlangton Apr 10, 2026
eca11ca
refactor(effect): use SessionRevert service in prompt (#21796)
kitlangton Apr 10, 2026
91786d2
refactor(effect): use Git service in file and storage (#21803)
kitlangton Apr 10, 2026
ce19c05
fix: ts lsp (#21827)
rekram1-node Apr 10, 2026
ec9bab4
chore: upstream sync ce19c051b (2026-04-10)
terisuke Apr 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ permissions:
contents: read
checks: write

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

jobs:
unit:
name: unit (linux)
Expand All @@ -28,6 +31,11 @@ jobs:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "24"

- name: Setup Bun
uses: ./.github/actions/setup-bun

Expand Down Expand Up @@ -80,6 +88,11 @@ jobs:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "24"

- name: Setup Bun
uses: ./.github/actions/setup-bun

Expand Down
32 changes: 16 additions & 16 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 7 additions & 3 deletions packages/app/e2e/backend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,12 @@ async function waitForHealth(url: string, probe = "/global/health") {
throw new Error(`Timed out waiting for backend health at ${url}${probe}${last ? ` (${last})` : ""}`)
}

function done(proc: ReturnType<typeof spawn>) {
return proc.exitCode !== null || proc.signalCode !== null
}

async function waitExit(proc: ReturnType<typeof spawn>, timeout = 10_000) {
if (proc.exitCode !== null) return
if (done(proc)) return
await Promise.race([
new Promise<void>((resolve) => proc.once("exit", () => resolve())),
new Promise<void>((resolve) => setTimeout(resolve, timeout)),
Expand Down Expand Up @@ -123,11 +127,11 @@ export async function startBackend(label: string, input?: { llmUrl?: string }):
return {
url,
async stop() {
if (proc.exitCode === null) {
if (!done(proc)) {
proc.kill("SIGTERM")
await waitExit(proc)
}
if (proc.exitCode === null) {
if (!done(proc)) {
proc.kill("SIGKILL")
await waitExit(proc)
}
Expand Down
2 changes: 1 addition & 1 deletion packages/app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/app",
"version": "1.4.1",
"version": "1.4.3",
"description": "",
"type": "module",
"exports": {
Expand Down
2 changes: 1 addition & 1 deletion packages/console/app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-app",
"version": "1.4.1",
"version": "1.4.3",
"type": "module",
"license": "MIT",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion packages/console/core/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/console-core",
"version": "1.4.1",
"version": "1.4.3",
"private": true,
"type": "module",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion packages/console/function/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-function",
"version": "1.4.1",
"version": "1.4.3",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",
Expand Down
2 changes: 1 addition & 1 deletion packages/console/mail/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-mail",
"version": "1.4.1",
"version": "1.4.3",
"dependencies": {
"@jsx-email/all": "2.2.3",
"@jsx-email/cli": "1.4.3",
Expand Down
2 changes: 1 addition & 1 deletion packages/desktop-electron/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@opencode-ai/desktop-electron",
"private": true,
"version": "1.4.1",
"version": "1.4.3",
"type": "module",
"license": "MIT",
"homepage": "https://opencode.ai",
Expand Down
2 changes: 1 addition & 1 deletion packages/desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@opencode-ai/desktop",
"private": true,
"version": "1.4.1",
"version": "1.4.3",
"type": "module",
"license": "MIT",
"scripts": {
Expand Down
7 changes: 5 additions & 2 deletions packages/desktop/scripts/finalize-latest-json.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const releaseId = process.env.OPENCODE_RELEASE
if (!releaseId) throw new Error("OPENCODE_RELEASE is required")

const version = process.env.OPENCODE_VERSION
if (!releaseId) throw new Error("OPENCODE_VERSION is required")
if (!version) throw new Error("OPENCODE_VERSION is required")

const token = process.env.GH_TOKEN ?? process.env.GITHUB_TOKEN
if (!token) throw new Error("GH_TOKEN or GITHUB_TOKEN is required")
Expand Down Expand Up @@ -54,7 +54,10 @@ const assets = release.assets ?? []
const assetByName = new Map(assets.map((asset) => [asset.name, asset]))

const latestAsset = assetByName.get("latest.json")
if (!latestAsset) throw new Error("latest.json asset not found")
if (!latestAsset) {
console.log("latest.json not found, skipping tauri finalization")
process.exit(0)
}

const latestRes = await fetch(latestAsset.url, {
headers: {
Expand Down
2 changes: 1 addition & 1 deletion packages/enterprise/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/enterprise",
"version": "1.4.1",
"version": "1.4.3",
"private": true,
"type": "module",
"license": "MIT",
Expand Down
12 changes: 6 additions & 6 deletions packages/extensions/zed/extension.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
id = "opencode"
name = "OpenCode"
description = "The open source coding agent."
version = "1.4.1"
version = "1.4.3"
schema_version = 1
authors = ["Anomaly"]
repository = "https://github.com/anomalyco/opencode"
Expand All @@ -11,26 +11,26 @@ name = "OpenCode"
icon = "./icons/opencode.svg"

[agent_servers.opencode.targets.darwin-aarch64]
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.1/opencode-darwin-arm64.zip"
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.3/opencode-darwin-arm64.zip"
cmd = "./opencode"
args = ["acp"]

[agent_servers.opencode.targets.darwin-x86_64]
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.1/opencode-darwin-x64.zip"
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.3/opencode-darwin-x64.zip"
cmd = "./opencode"
args = ["acp"]

[agent_servers.opencode.targets.linux-aarch64]
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.1/opencode-linux-arm64.tar.gz"
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.3/opencode-linux-arm64.tar.gz"
cmd = "./opencode"
args = ["acp"]

[agent_servers.opencode.targets.linux-x86_64]
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.1/opencode-linux-x64.tar.gz"
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.3/opencode-linux-x64.tar.gz"
cmd = "./opencode"
args = ["acp"]

[agent_servers.opencode.targets.windows-x86_64]
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.1/opencode-windows-x64.zip"
archive = "https://github.com/anomalyco/opencode/releases/download/v1.4.3/opencode-windows-x64.zip"
cmd = "./opencode.exe"
args = ["acp"]
2 changes: 1 addition & 1 deletion packages/function/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/function",
"version": "1.4.1",
"version": "1.4.3",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
"version": "1.4.1",
"version": "1.4.3",
"name": "opencode",
"type": "module",
"license": "MIT",
Expand Down
17 changes: 0 additions & 17 deletions packages/opencode/src/account/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -461,28 +461,11 @@ export namespace Account {
return Option.getOrUndefined(await runPromise((service) => service.active()))
}

export async function list(): Promise<Info[]> {
return runPromise((service) => service.list())
}

export async function activeOrg(): Promise<ActiveOrg | undefined> {
return Option.getOrUndefined(await runPromise((service) => service.activeOrg()))
}

export async function orgsByAccount(): Promise<readonly AccountOrgs[]> {
return runPromise((service) => service.orgsByAccount())
}

export async function orgs(accountID: AccountID): Promise<readonly Org[]> {
return runPromise((service) => service.orgs(accountID))
}

export async function switchOrg(accountID: AccountID, orgID: OrgID) {
return runPromise((service) => service.use(accountID, Option.some(orgID)))
}

export async function token(accountID: AccountID): Promise<AccessToken | undefined> {
const t = await runPromise((service) => service.token(accountID))
return Option.getOrUndefined(t)
}
}
Loading
Loading