Skip to content

Commit 088be14

Browse files
committed
Merge remote-tracking branch 'upstream/dev' into feat/continue-command
2 parents c600ac6 + e187918 commit 088be14

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1194
-147
lines changed
File renamed without changes.

bun.lock

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@
242242
"@opencode-ai/sdk": "workspace:*",
243243
"@opencode-ai/util": "workspace:*",
244244
"@openrouter/ai-sdk-provider": "1.2.8",
245-
"@opentui/core": "0.1.56",
246-
"@opentui/solid": "0.1.56",
245+
"@opentui/core": "0.1.58",
246+
"@opentui/solid": "0.1.58",
247247
"@parcel/watcher": "2.5.1",
248248
"@pierre/precision-diffs": "catalog:",
249249
"@solid-primitives/event-bus": "1.1.2",
@@ -285,7 +285,9 @@
285285
"@parcel/watcher-darwin-arm64": "2.5.1",
286286
"@parcel/watcher-darwin-x64": "2.5.1",
287287
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
288+
"@parcel/watcher-linux-arm64-musl": "2.5.1",
288289
"@parcel/watcher-linux-x64-glibc": "2.5.1",
290+
"@parcel/watcher-linux-x64-musl": "2.5.1",
289291
"@parcel/watcher-win32-x64": "2.5.1",
290292
"@standard-schema/spec": "1.0.0",
291293
"@tsconfig/bun": "catalog:",
@@ -1143,21 +1145,21 @@
11431145

11441146
"@opentelemetry/api": ["@opentelemetry/[email protected]", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],
11451147

1146-
"@opentui/core": ["@opentui/[email protected].56", "", { "dependencies": { "bun-ffi-structs": "0.1.2", "diff": "8.0.2", "jimp": "1.6.0", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@dimforge/rapier2d-simd-compat": "^0.17.3", "@opentui/core-darwin-arm64": "0.1.56", "@opentui/core-darwin-x64": "0.1.56", "@opentui/core-linux-arm64": "0.1.56", "@opentui/core-linux-x64": "0.1.56", "@opentui/core-win32-arm64": "0.1.56", "@opentui/core-win32-x64": "0.1.56", "bun-webgpu": "0.1.4", "planck": "^1.4.2", "three": "0.177.0" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-TI5cSCPYythHIQYpAEdXyZhewGACn2TfnfC1qZmrSyEq33zFo4W7zpQ4EZNpy9xZJFCI+elAUVJFARwhudp9EQ=="],
1148+
"@opentui/core": ["@opentui/[email protected].58", "", { "dependencies": { "bun-ffi-structs": "0.1.2", "diff": "8.0.2", "jimp": "1.6.0", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@dimforge/rapier2d-simd-compat": "^0.17.3", "@opentui/core-darwin-arm64": "0.1.58", "@opentui/core-darwin-x64": "0.1.58", "@opentui/core-linux-arm64": "0.1.58", "@opentui/core-linux-x64": "0.1.58", "@opentui/core-win32-arm64": "0.1.58", "@opentui/core-win32-x64": "0.1.58", "bun-webgpu": "0.1.4", "planck": "^1.4.2", "three": "0.177.0" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-U0wnR4eo95anwdGbWZhbC9/zGaoj2DDUXRiGAQeXCacdpH/SgFzPZ0ZbJKIrM0g90VXYWVBOAG5Ih0H5QK3nMg=="],
11471149

1148-
"@opentui/core-darwin-arm64": ["@opentui/[email protected].56", "", { "os": "darwin", "cpu": "arm64" }, "sha512-x5U9J2k1Fmbb9Mdh1nOd/yZVpg4ARCrV5pFngpaeKrIWDhs8RLpQW3ap+r7uyFLGFkSn4h5wBR0jj6Dg+Tyw+A=="],
1150+
"@opentui/core-darwin-arm64": ["@opentui/[email protected].58", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zlOdbzzFwNMqBqiWCvzDC/VMs1Gsjgp7Wogoh3bZYYxYyjpCVGcEjP38hY7Db36HezYhPiUnlgg9hK9Tby7hHQ=="],
11491151

1150-
"@opentui/core-darwin-x64": ["@opentui/[email protected].56", "", { "os": "darwin", "cpu": "x64" }, "sha512-7swq9rV/SaNVBWoUbC7mlP1VNyKBl7SSwmyVMkcaBP71lkm95zWuh4pgGj82fLgZ9gITRBD95TJVDmTovOyW0A=="],
1152+
"@opentui/core-darwin-x64": ["@opentui/[email protected].58", "", { "os": "darwin", "cpu": "x64" }, "sha512-GBLbF4rvDToZoLTIV5GTWElXulAdirz52YOrfEOMkpub2DTXaXidqyJTVrNrbc+qq4ca8jzYmTeZTnZ9pPd6NQ=="],
11511153

1152-
"@opentui/core-linux-arm64": ["@opentui/[email protected].56", "", { "os": "linux", "cpu": "arm64" }, "sha512-v8b+kiTlynAJzR0hFeVpGFzVi5PGqXAe3Zql9iTiQqTExkm/sR34sfC/P6rBOUhuAnos8ovPDKWtDb6eCTSm9g=="],
1154+
"@opentui/core-linux-arm64": ["@opentui/[email protected].58", "", { "os": "linux", "cpu": "arm64" }, "sha512-sVv6PbOxZsZLqSSwJ9R51SQaurvRUzoGJslGWickpxk5QaGHDDxj01H4gR8LfVsRK0HeEdLGvPZLFI7csRn/5A=="],
11531155

1154-
"@opentui/core-linux-x64": ["@opentui/[email protected].56", "", { "os": "linux", "cpu": "x64" }, "sha512-lbxgvAi5SBswK/2hoMPtLhPvJxASgquPUwvGTRHqzDkCvrOChP/loTjBQpL09/nAFc3jbM3SAbZtnEgA2SGYVw=="],
1156+
"@opentui/core-linux-x64": ["@opentui/[email protected].58", "", { "os": "linux", "cpu": "x64" }, "sha512-7fM7V1SKY3iYa1kDMmOHaDskziOzFFnEzkHcfuoLBK4qxJX196GNfH3xi5URQl/JBhavzHqctmv4KvMPOE5PMQ=="],
11551157

1156-
"@opentui/core-win32-arm64": ["@opentui/[email protected].56", "", { "os": "win32", "cpu": "arm64" }, "sha512-RoCAbvDo+59OevX+6GrEGbaueERiBVnTaWJkrS41hRAD2fFS3CZpW7UuS5jIg7zn5clHmOGyfvCiBkTRXmgkhw=="],
1158+
"@opentui/core-win32-arm64": ["@opentui/[email protected].58", "", { "os": "win32", "cpu": "arm64" }, "sha512-oUzb43lv8dx0oijLE2WItciAcE4+c+p78Cl922T3UDyYXUqNP0r3sZDV+Fo3j8XrgpmRWXBj1s7P5igIEGjMUw=="],
11571159

1158-
"@opentui/core-win32-x64": ["@opentui/[email protected].56", "", { "os": "win32", "cpu": "x64" }, "sha512-i6N5TjZU5gRkJsKmH8e/qY9vwSk0rh6A5t37mHDGlzN4E5yO/MbBrYH4ppLp5stps9Zfi1Re51ofJX1s2hZY/Q=="],
1160+
"@opentui/core-win32-x64": ["@opentui/[email protected].58", "", { "os": "win32", "cpu": "x64" }, "sha512-oxx55mF6pbC9ARqy4gAmchqFXvCLsEOGQmwMrF5xS8KsBGp5As9tB1ZEYRa6zqiPhAHyp/dAv5OgO6Xvcy2Hew=="],
11591161

1160-
"@opentui/solid": ["@opentui/[email protected].56", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.1.56", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.9", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-3R7AfxsYHUyehwJK98rt5dI9u2WCT/uH/CYvddZIgXPHyfFm1SHJekMdy3DUoiQTCUllt68eFGKMv9zRi6Laww=="],
1162+
"@opentui/solid": ["@opentui/[email protected].58", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.1.58", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.9", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-dRUmNuiobntS8ll8tLiUQKKPMxJvHKDsu4rCKAwSyzBZIINfn9+pg88CEbsL2mIfBXvAKmVk1ITS7mHH3aZPdQ=="],
11611163

11621164
"@oslojs/asn1": ["@oslojs/[email protected]", "", { "dependencies": { "@oslojs/binary": "1.0.0" } }, "sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA=="],
11631165

nix/hashes.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"nodeModules": "sha256-/9WkIslv8hWlQSS4n8R45GmKPyDYZXBkb88AOuFUE9s="
2+
"nodeModules": "sha256-m+aD5cTLKJoK+iyw64vhz2v2Fi0nUXevx68gA1xLvm0="
33
}

packages/desktop/src/context/session.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
2626
const params = useParams()
2727
const sync = useSync()
2828
const name = createMemo(
29-
() => `${base64Encode(sync.data.project.worktree)}/session${params.id ? "/" + params.id : ""}.v1`,
29+
() => `${base64Encode(sync.data.project.worktree)}/session${params.id ? "/" + params.id : ""}.v2`,
3030
)
3131

3232
const [store, setStore] = makePersisted(

packages/desktop/src/pages/layout.tsx

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useLayout } from "@/context/layout"
55
import { useGlobalSync } from "@/context/global-sync"
66
import { base64Decode, base64Encode } from "@opencode-ai/util/encode"
77
import { Mark } from "@opencode-ai/ui/logo"
8+
import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
89
import { Button } from "@opencode-ai/ui/button"
910
import { Icon } from "@opencode-ai/ui/icon"
1011
import { IconButton } from "@opencode-ai/ui/icon-button"
@@ -65,7 +66,7 @@ export default function Layout(props: ParentProps) {
6566
label={(x) => x.title}
6667
value={(x) => x.id}
6768
onSelect={navigateToSession}
68-
class="text-14-regular text-text-base max-w-3xs"
69+
class="text-14-regular text-text-base max-w-md"
6970
variant="ghost"
7071
/>
7172
</div>
@@ -116,41 +117,14 @@ export default function Layout(props: ParentProps) {
116117
style={{ width: layout.sidebar.opened() ? `${layout.sidebar.width()}px` : undefined }}
117118
>
118119
<Show when={layout.sidebar.opened()}>
119-
<div
120-
class="absolute inset-y-0 right-0 z-10 w-2 translate-x-1/2 cursor-ew-resize"
121-
onMouseDown={(e) => {
122-
e.preventDefault()
123-
const startX = e.clientX
124-
const startWidth = layout.sidebar.width()
125-
const maxWidth = window.innerWidth * 0.3
126-
const minWidth = 150
127-
const collapseThreshold = 80
128-
let currentWidth = startWidth
129-
130-
document.body.style.userSelect = "none"
131-
document.body.style.overflow = "hidden"
132-
133-
const onMouseMove = (moveEvent: MouseEvent) => {
134-
const deltaX = moveEvent.clientX - startX
135-
currentWidth = startWidth + deltaX
136-
const clampedWidth = Math.min(maxWidth, Math.max(minWidth, currentWidth))
137-
layout.sidebar.resize(clampedWidth)
138-
}
139-
140-
const onMouseUp = () => {
141-
document.body.style.userSelect = ""
142-
document.body.style.overflow = ""
143-
document.removeEventListener("mousemove", onMouseMove)
144-
document.removeEventListener("mouseup", onMouseUp)
145-
146-
if (currentWidth < collapseThreshold) {
147-
layout.sidebar.close()
148-
}
149-
}
150-
151-
document.addEventListener("mousemove", onMouseMove)
152-
document.addEventListener("mouseup", onMouseUp)
153-
}}
120+
<ResizeHandle
121+
direction="horizontal"
122+
size={layout.sidebar.width()}
123+
min={150}
124+
max={window.innerWidth * 0.3}
125+
collapseThreshold={80}
126+
onResize={layout.sidebar.resize}
127+
onCollapse={layout.sidebar.close}
154128
/>
155129
</Show>
156130
<div class="grow flex flex-col items-start self-stretch gap-4 p-2 min-h-0">

packages/desktop/src/pages/session.tsx

Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { Icon } from "@opencode-ai/ui/icon"
99
import { Tooltip } from "@opencode-ai/ui/tooltip"
1010
import { DiffChanges } from "@opencode-ai/ui/diff-changes"
1111
import { ProgressCircle } from "@opencode-ai/ui/progress-circle"
12+
import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
1213
import { Tabs } from "@opencode-ai/ui/tabs"
1314
import { Code } from "@opencode-ai/ui/code"
1415
import { SessionTurn } from "@opencode-ai/ui/session-turn"
@@ -606,41 +607,14 @@ export default function Page() {
606607
class="relative w-full flex flex-col shrink-0 border-t border-border-weak-base"
607608
style={{ height: `${layout.terminal.height()}px` }}
608609
>
609-
<div
610-
class="absolute inset-x-0 top-0 z-10 h-2 -translate-y-1/2 cursor-ns-resize"
611-
onMouseDown={(e) => {
612-
e.preventDefault()
613-
const startY = e.clientY
614-
const startHeight = layout.terminal.height()
615-
const maxHeight = window.innerHeight * 0.6
616-
const minHeight = 100
617-
const collapseThreshold = 50
618-
let currentHeight = startHeight
619-
620-
document.body.style.userSelect = "none"
621-
document.body.style.overflow = "hidden"
622-
623-
const onMouseMove = (moveEvent: MouseEvent) => {
624-
const deltaY = startY - moveEvent.clientY
625-
currentHeight = startHeight + deltaY
626-
const clampedHeight = Math.min(maxHeight, Math.max(minHeight, currentHeight))
627-
layout.terminal.resize(clampedHeight)
628-
}
629-
630-
const onMouseUp = () => {
631-
document.body.style.userSelect = ""
632-
document.body.style.overflow = ""
633-
document.removeEventListener("mousemove", onMouseMove)
634-
document.removeEventListener("mouseup", onMouseUp)
635-
636-
if (currentHeight < collapseThreshold) {
637-
layout.terminal.close()
638-
}
639-
}
640-
641-
document.addEventListener("mousemove", onMouseMove)
642-
document.addEventListener("mouseup", onMouseUp)
643-
}}
610+
<ResizeHandle
611+
direction="vertical"
612+
size={layout.terminal.height()}
613+
min={100}
614+
max={window.innerHeight * 0.6}
615+
collapseThreshold={50}
616+
onResize={layout.terminal.resize}
617+
onCollapse={layout.terminal.close}
644618
/>
645619
<Tabs variant="alt" value={session.terminal.active()} onChange={session.terminal.open}>
646620
<Tabs.List class="h-10">

packages/opencode/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
"@parcel/watcher-darwin-arm64": "2.5.1",
2424
"@parcel/watcher-darwin-x64": "2.5.1",
2525
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
26+
"@parcel/watcher-linux-arm64-musl": "2.5.1",
2627
"@parcel/watcher-linux-x64-glibc": "2.5.1",
28+
"@parcel/watcher-linux-x64-musl": "2.5.1",
2729
"@parcel/watcher-win32-x64": "2.5.1",
2830
"@standard-schema/spec": "1.0.0",
2931
"@tsconfig/bun": "catalog:",
@@ -64,8 +66,8 @@
6466
"@opencode-ai/sdk": "workspace:*",
6567
"@opencode-ai/util": "workspace:*",
6668
"@openrouter/ai-sdk-provider": "1.2.8",
67-
"@opentui/core": "0.1.56",
68-
"@opentui/solid": "0.1.56",
69+
"@opentui/core": "0.1.58",
70+
"@opentui/solid": "0.1.58",
6971
"@parcel/watcher": "2.5.1",
7072
"@pierre/precision-diffs": "catalog:",
7173
"@solid-primitives/event-bus": "1.1.2",

packages/opencode/script/build.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ for (const item of targets) {
128128
OTUI_TREE_SITTER_WORKER_PATH: bunfsRoot + workerRelativePath,
129129
OPENCODE_WORKER_PATH: workerPath,
130130
OPENCODE_CHANNEL: `'${Script.channel}'`,
131+
OPENCODE_LIBC: item.os === "linux" ? `'${item.abi ?? "glibc"}'` : "",
131132
},
132133
})
133134

packages/opencode/script/publish.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,8 @@ if (!Script.preview) {
199199
` homepage "https://github.com/sst/opencode"`,
200200
` version "${Script.version.split("-")[0]}"`,
201201
"",
202+
` depends_on "ripgrep"`,
203+
"",
202204
" on_macos do",
203205
" if Hardware::CPU.intel?",
204206
` url "https://github.com/sst/opencode/releases/download/v${Script.version}/opencode-darwin-x64.zip"`,

packages/opencode/src/cli/cmd/auth.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,10 @@ export const AuthLoginCommand = cmd({
143143
map((x) => ({
144144
label: x.name,
145145
value: x.id,
146-
hint: priority[x.id] <= 1 ? "recommended" : undefined,
146+
hint: {
147+
opencode: "recommended",
148+
anthropic: "Claude Max or API key",
149+
}[x.id],
147150
})),
148151
),
149152
{

0 commit comments

Comments
 (0)