diff --git a/.opencode/command/changelog.md b/.opencode/command/changelog.md index 8a8e57d1bf..85dbf9b97b 100644 --- a/.opencode/command/changelog.md +++ b/.opencode/command/changelog.md @@ -1,5 +1,21 @@ +--- +model: opencode/kimi-k2.5 +--- + +create UPCOMING_CHANGELOG.md + +it should have sections + +``` +# TUI + +# Desktop + +# Core + +# Misc +``` + go through each PR merged since the last tag -for each PR spawn a subagent to summarize what the PR was about. focus on user facing changes. if it was entirely internal or code related you can ignore it. also skip docs updates. each subagent should append its summary to UPCOMING_CHANGELOG.md - -once that is done, read UPCOMING_CHANGELOG.md and group it into sections for better readability. make sure all PR references are preserved +for each PR spawn a subagent to summarize what the PR was about. focus on user facing changes. if it was entirely internal or code related you can ignore it. also skip docs updates. each subagent should append its summary to UPCOMING_CHANGELOG.md into the appropriate section. diff --git a/bun.lock b/bun.lock index 5a6f696f7f..c666f846a4 100644 --- a/bun.lock +++ b/bun.lock @@ -26,7 +26,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/sdk": "workspace:*", @@ -79,7 +79,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -113,7 +113,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -140,7 +140,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@ai-sdk/anthropic": "3.0.58", "@ai-sdk/openai": "3.0.41", @@ -164,7 +164,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -188,7 +188,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@opencode-ai/app": "workspace:*", "@opencode-ai/ui": "workspace:*", @@ -221,7 +221,7 @@ }, "packages/desktop-electron": { "name": "@opencode-ai/desktop-electron", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@opencode-ai/app": "workspace:*", "@opencode-ai/ui": "workspace:*", @@ -252,7 +252,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@opencode-ai/ui": "workspace:*", "@opencode-ai/util": "workspace:*", @@ -281,7 +281,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -297,7 +297,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.3.0", + "version": "1.3.1", "bin": { "opencode": "./bin/opencode", }, @@ -422,7 +422,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@opencode-ai/sdk": "workspace:*", "zod": "catalog:", @@ -446,7 +446,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.3.0", + "version": "1.3.1", "devDependencies": { "@hey-api/openapi-ts": "0.90.10", "@tsconfig/node22": "catalog:", @@ -457,7 +457,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -492,7 +492,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/sdk": "workspace:*", @@ -538,7 +538,7 @@ }, "packages/util": { "name": "@opencode-ai/util", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "zod": "catalog:", }, @@ -549,7 +549,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index 61265c28aa..759dbfa5ed 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.3.0", + "version": "1.3.1", "description": "", "type": "module", "exports": { diff --git a/packages/console/app/package.json b/packages/console/app/package.json index b90d77f405..c994dbe988 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.3.0", + "version": "1.3.1", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index f2bb6ac745..05b8926a06 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.3.0", + "version": "1.3.1", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 09156c33f9..6f888d755b 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.3.0", + "version": "1.3.1", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index e0c677446c..11ae779c2e 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.3.0", + "version": "1.3.1", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/desktop-electron/package.json b/packages/desktop-electron/package.json index b7872acc98..f7d022454a 100644 --- a/packages/desktop-electron/package.json +++ b/packages/desktop-electron/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop-electron", "private": true, - "version": "1.3.0", + "version": "1.3.1", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index c98e037be6..d1c6a87627 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.3.0", + "version": "1.3.1", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index 724cc59493..086174bfef 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.3.0", + "version": "1.3.1", "private": true, "type": "module", "license": "MIT", diff --git a/packages/extensions/zed/extension.toml b/packages/extensions/zed/extension.toml index 9842aa49be..798862643b 100644 --- a/packages/extensions/zed/extension.toml +++ b/packages/extensions/zed/extension.toml @@ -1,7 +1,7 @@ id = "opencode" name = "OpenCode" description = "The open source coding agent." -version = "1.3.0" +version = "1.3.1" schema_version = 1 authors = ["Anomaly"] repository = "https://github.com/anomalyco/opencode" @@ -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.3.0/opencode-darwin-arm64.zip" +archive = "https://github.com/anomalyco/opencode/releases/download/v1.3.1/opencode-darwin-arm64.zip" cmd = "./opencode" args = ["acp"] [agent_servers.opencode.targets.darwin-x86_64] -archive = "https://github.com/anomalyco/opencode/releases/download/v1.3.0/opencode-darwin-x64.zip" +archive = "https://github.com/anomalyco/opencode/releases/download/v1.3.1/opencode-darwin-x64.zip" cmd = "./opencode" args = ["acp"] [agent_servers.opencode.targets.linux-aarch64] -archive = "https://github.com/anomalyco/opencode/releases/download/v1.3.0/opencode-linux-arm64.tar.gz" +archive = "https://github.com/anomalyco/opencode/releases/download/v1.3.1/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.3.0/opencode-linux-x64.tar.gz" +archive = "https://github.com/anomalyco/opencode/releases/download/v1.3.1/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.3.0/opencode-windows-x64.zip" +archive = "https://github.com/anomalyco/opencode/releases/download/v1.3.1/opencode-windows-x64.zip" cmd = "./opencode.exe" args = ["acp"] diff --git a/packages/function/package.json b/packages/function/package.json index e8651be720..08b84c4a19 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.3.0", + "version": "1.3.1", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 9d7c8c6b80..737f941587 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.3.0", + "version": "1.3.1", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx index 549c7c34a7..8aabafd080 100644 --- a/packages/opencode/src/cli/cmd/tui/app.tsx +++ b/packages/opencode/src/cli/cmd/tui/app.tsx @@ -110,6 +110,7 @@ export function tui(input: { url: string args: Args config: TuiConfig.Info + onSnapshot?: () => Promise directory?: string fetch?: typeof fetch headers?: RequestInit["headers"] @@ -160,7 +161,7 @@ export function tui(input: { - + @@ -201,7 +202,7 @@ export function tui(input: { }) } -function App() { +function App(props: { onSnapshot?: () => Promise }) { const route = useRoute() const dimensions = useTerminalDimensions() const renderer = useRenderer() @@ -627,11 +628,11 @@ function App() { title: "Write heap snapshot", category: "System", value: "app.heap_snapshot", - onSelect: (dialog) => { - const path = writeHeapSnapshot() + onSelect: async (dialog) => { + const files = await props.onSnapshot?.() toast.show({ variant: "info", - message: `Heap snapshot written to ${path}`, + message: `Heap snapshot written to ${files?.join(", ")}`, duration: 5000, }) dialog.clear() diff --git a/packages/opencode/src/cli/cmd/tui/thread.ts b/packages/opencode/src/cli/cmd/tui/thread.ts index 6e787c7afd..d984dc6f3f 100644 --- a/packages/opencode/src/cli/cmd/tui/thread.ts +++ b/packages/opencode/src/cli/cmd/tui/thread.ts @@ -14,6 +14,7 @@ import type { EventSource } from "./context/sdk" import { win32DisableProcessedInput, win32InstallCtrlCGuard } from "./win32" import { TuiConfig } from "@/config/tui" import { Instance } from "@/project/instance" +import { writeHeapSnapshot } from "v8" declare global { const OPENCODE_WORKER_PATH: string @@ -201,6 +202,11 @@ export const TuiThreadCommand = cmd({ try { await tui({ url: transport.url, + async onSnapshot() { + const tui = writeHeapSnapshot("tui.heapsnapshot") + const server = await client.call("snapshot", undefined) + return [tui, server] + }, config, directory: cwd, fetch: transport.fetch, diff --git a/packages/opencode/src/cli/cmd/tui/worker.ts b/packages/opencode/src/cli/cmd/tui/worker.ts index 511182fe85..06cb179e93 100644 --- a/packages/opencode/src/cli/cmd/tui/worker.ts +++ b/packages/opencode/src/cli/cmd/tui/worker.ts @@ -10,6 +10,7 @@ import { GlobalBus } from "@/bus/global" import { createOpencodeClient, type Event } from "@opencode-ai/sdk/v2" import { Flag } from "@/flag/flag" import { setTimeout as sleep } from "node:timers/promises" +import { writeHeapSnapshot } from "node:v8" await Log.init({ print: process.argv.includes("--print-logs"), @@ -117,6 +118,10 @@ export const rpc = { body, } }, + snapshot() { + const result = writeHeapSnapshot("server.heapsnapshot") + return result + }, async server(input: { port: number; hostname: string; mdns?: boolean; cors?: string[] }) { if (server) await server.stop(true) server = await Server.listen(input) diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 6907f2a332..00ee6cee16 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.3.0", + "version": "1.3.1", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index bcc035d4bb..41911166bd 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.3.0", + "version": "1.3.1", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/slack/package.json b/packages/slack/package.json index 732b452280..9d581f256c 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.3.0", + "version": "1.3.1", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/ui/package.json b/packages/ui/package.json index e68dab396b..ce33703ca6 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.3.0", + "version": "1.3.1", "type": "module", "license": "MIT", "exports": { diff --git a/packages/util/package.json b/packages/util/package.json index 0f6a3c31ff..4f27cff3d9 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/util", - "version": "1.3.0", + "version": "1.3.1", "private": true, "type": "module", "license": "MIT", diff --git a/packages/web/package.json b/packages/web/package.json index 051ae6402d..8ba8267bf0 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.3.0", + "version": "1.3.1", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/script/version.ts b/script/version.ts index 71619f4618..7bed6d3a9a 100755 --- a/script/version.ts +++ b/script/version.ts @@ -2,18 +2,19 @@ import { Script } from "@opencode-ai/script" import { $ } from "bun" -import { buildNotes, getLatestRelease } from "./changelog" const output = [`version=${Script.version}`] if (!Script.preview) { - const previous = await getLatestRelease() - const notes = await buildNotes(previous, "HEAD") - const body = notes.join("\n") || "No notable changes" + await $`opencode run --command changelog`.cwd(process.cwd()) + const file = `${process.cwd()}/UPCOMING_CHANGELOG.md` + const body = await Bun.file(file) + .text() + .catch(() => "No notable changes") const dir = process.env.RUNNER_TEMP ?? "/tmp" - const file = `${dir}/opencode-release-notes.txt` - await Bun.write(file, body) - await $`gh release create v${Script.version} -d --title "v${Script.version}" --notes-file ${file}` + const notesFile = `${dir}/opencode-release-notes.txt` + await Bun.write(notesFile, body) + await $`gh release create v${Script.version} -d --title "v${Script.version}" --notes-file ${notesFile}` const release = await $`gh release view v${Script.version} --json tagName,databaseId`.json() output.push(`release=${release.databaseId}`) output.push(`tag=${release.tagName}`) diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index ee9307de1a..1df2f667d1 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.3.0", + "version": "1.3.1", "publisher": "sst-dev", "repository": { "type": "git",