Skip to content

Commit f7787ec

Browse files
committed
Merge branch 'dev' into feat/configurable-sidebar-overlay-behaviour
2 parents e9f162f + 9c8bc64 commit f7787ec

File tree

35 files changed

+994
-508
lines changed

35 files changed

+994
-508
lines changed

.opencode/agent/docs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
---
22
description: ALWAYS use this when writing docs
3+
color: "#38A3EE"
34
---
45

56
You are an expert technical documentation writer

.opencode/agent/triage.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
mode: primary
33
hidden: true
44
model: opencode/claude-haiku-4-5
5+
color: "#44BA81"
56
tools:
67
"*": false
78
"github-triage": true

bun.lock

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
},
2323
"packages/app": {
2424
"name": "@opencode-ai/app",
25-
"version": "1.0.206",
25+
"version": "1.0.207",
2626
"dependencies": {
2727
"@kobalte/core": "catalog:",
2828
"@opencode-ai/sdk": "workspace:*",
@@ -70,7 +70,7 @@
7070
},
7171
"packages/console/app": {
7272
"name": "@opencode-ai/console-app",
73-
"version": "1.0.206",
73+
"version": "1.0.207",
7474
"dependencies": {
7575
"@cloudflare/vite-plugin": "1.15.2",
7676
"@ibm/plex": "6.4.1",
@@ -98,7 +98,7 @@
9898
},
9999
"packages/console/core": {
100100
"name": "@opencode-ai/console-core",
101-
"version": "1.0.206",
101+
"version": "1.0.207",
102102
"dependencies": {
103103
"@aws-sdk/client-sts": "3.782.0",
104104
"@jsx-email/render": "1.1.1",
@@ -125,7 +125,7 @@
125125
},
126126
"packages/console/function": {
127127
"name": "@opencode-ai/console-function",
128-
"version": "1.0.206",
128+
"version": "1.0.207",
129129
"dependencies": {
130130
"@ai-sdk/anthropic": "2.0.0",
131131
"@ai-sdk/openai": "2.0.2",
@@ -149,7 +149,7 @@
149149
},
150150
"packages/console/mail": {
151151
"name": "@opencode-ai/console-mail",
152-
"version": "1.0.206",
152+
"version": "1.0.207",
153153
"dependencies": {
154154
"@jsx-email/all": "2.2.3",
155155
"@jsx-email/cli": "1.4.3",
@@ -173,7 +173,7 @@
173173
},
174174
"packages/desktop": {
175175
"name": "@opencode-ai/desktop",
176-
"version": "1.0.206",
176+
"version": "1.0.207",
177177
"dependencies": {
178178
"@opencode-ai/app": "workspace:*",
179179
"@solid-primitives/storage": "catalog:",
@@ -200,7 +200,7 @@
200200
},
201201
"packages/enterprise": {
202202
"name": "@opencode-ai/enterprise",
203-
"version": "1.0.206",
203+
"version": "1.0.207",
204204
"dependencies": {
205205
"@opencode-ai/ui": "workspace:*",
206206
"@opencode-ai/util": "workspace:*",
@@ -229,7 +229,7 @@
229229
},
230230
"packages/function": {
231231
"name": "@opencode-ai/function",
232-
"version": "1.0.206",
232+
"version": "1.0.207",
233233
"dependencies": {
234234
"@octokit/auth-app": "8.0.1",
235235
"@octokit/rest": "catalog:",
@@ -245,7 +245,7 @@
245245
},
246246
"packages/opencode": {
247247
"name": "opencode",
248-
"version": "1.0.206",
248+
"version": "1.0.207",
249249
"bin": {
250250
"opencode": "./bin/opencode",
251251
},
@@ -347,7 +347,7 @@
347347
},
348348
"packages/plugin": {
349349
"name": "@opencode-ai/plugin",
350-
"version": "1.0.206",
350+
"version": "1.0.207",
351351
"dependencies": {
352352
"@opencode-ai/sdk": "workspace:*",
353353
"zod": "catalog:",
@@ -367,7 +367,7 @@
367367
},
368368
"packages/sdk/js": {
369369
"name": "@opencode-ai/sdk",
370-
"version": "1.0.206",
370+
"version": "1.0.207",
371371
"devDependencies": {
372372
"@hey-api/openapi-ts": "0.88.1",
373373
"@tsconfig/node22": "catalog:",
@@ -378,7 +378,7 @@
378378
},
379379
"packages/slack": {
380380
"name": "@opencode-ai/slack",
381-
"version": "1.0.206",
381+
"version": "1.0.207",
382382
"dependencies": {
383383
"@opencode-ai/sdk": "workspace:*",
384384
"@slack/bolt": "^3.17.1",
@@ -391,7 +391,7 @@
391391
},
392392
"packages/ui": {
393393
"name": "@opencode-ai/ui",
394-
"version": "1.0.206",
394+
"version": "1.0.207",
395395
"dependencies": {
396396
"@kobalte/core": "catalog:",
397397
"@opencode-ai/sdk": "workspace:*",
@@ -426,7 +426,7 @@
426426
},
427427
"packages/util": {
428428
"name": "@opencode-ai/util",
429-
"version": "1.0.206",
429+
"version": "1.0.207",
430430
"dependencies": {
431431
"zod": "catalog:",
432432
},
@@ -437,7 +437,7 @@
437437
},
438438
"packages/web": {
439439
"name": "@opencode-ai/web",
440-
"version": "1.0.206",
440+
"version": "1.0.207",
441441
"dependencies": {
442442
"@astrojs/cloudflare": "12.6.3",
443443
"@astrojs/markdown-remark": "6.3.1",

packages/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@opencode-ai/app",
3-
"version": "1.0.206",
3+
"version": "1.0.207",
44
"description": "",
55
"type": "module",
66
"exports": {

packages/app/src/components/session-context-usage.tsx

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Tooltip } from "@opencode-ai/ui/tooltip"
33
import { ProgressCircle } from "@opencode-ai/ui/progress-circle"
44
import { useSync } from "@/context/sync"
55
import { useParams } from "@solidjs/router"
6-
import { AssistantMessage } from "@opencode-ai/sdk/v2"
6+
import { AssistantMessage } from "@opencode-ai/sdk/v2/client"
77

88
export function SessionContextUsage() {
99
const sync = useSync()
@@ -35,19 +35,13 @@ export function SessionContextUsage() {
3535
{(ctx) => (
3636
<Tooltip
3737
value={
38-
<div class="flex flex-col gap-1">
39-
<div class="flex gap-3">
40-
<span class="opacity-70 text-right flex-1">Tokens</span>
41-
<span class="text-left flex-1">{ctx().tokens}</span>
42-
</div>
43-
<div class="flex gap-3">
44-
<span class="opacity-70 text-right flex-1">Usage</span>
45-
<span class="text-left flex-1">{ctx().percentage ?? 0}%</span>
46-
</div>
47-
<div class="flex gap-3">
48-
<span class="opacity-70 text-right flex-1">Cost</span>
49-
<span class="text-left flex-1">{cost()}</span>
50-
</div>
38+
<div class="grid grid-cols-2 gap-x-3 gap-y-1">
39+
<span class="opacity-70 text-right">Tokens</span>
40+
<span class="text-left">{ctx().tokens}</span>
41+
<span class="opacity-70 text-right">Usage</span>
42+
<span class="text-left">{ctx().percentage ?? 0}%</span>
43+
<span class="opacity-70 text-right">Cost</span>
44+
<span class="text-left">{cost()}</span>
5145
</div>
5246
}
5347
placement="top"

packages/app/src/context/command.tsx

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { createSimpleContext } from "@opencode-ai/ui/context"
33
import { useDialog } from "@opencode-ai/ui/context/dialog"
44
import { Dialog } from "@opencode-ai/ui/dialog"
55
import { List } from "@opencode-ai/ui/list"
6-
import { useTheme } from "@opencode-ai/ui/theme"
76

87
const IS_MAC = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform)
98

@@ -27,6 +26,7 @@ export interface CommandOption {
2726
suggested?: boolean
2827
disabled?: boolean
2928
onSelect?: (source?: "palette" | "keybind" | "slash") => void
29+
onHighlight?: () => (() => void) | void
3030
}
3131

3232
export function parseKeybind(config: string): Keybind[] {
@@ -116,32 +116,26 @@ export function formatKeybind(config: string): string {
116116

117117
function DialogCommand(props: { options: CommandOption[] }) {
118118
const dialog = useDialog()
119-
const theme = useTheme()
119+
let cleanup: (() => void) | void
120120
let committed = false
121121

122122
const handleMove = (option: CommandOption | undefined) => {
123-
if (!option) return
124-
if (option.id.startsWith("theme.set.")) {
125-
const id = option.id.replace("theme.set.", "")
126-
theme.previewTheme(id)
127-
} else if (option.id.startsWith("theme.scheme.") && !option.id.includes("cycle")) {
128-
const scheme = option.id.replace("theme.scheme.", "") as "light" | "dark" | "system"
129-
theme.previewColorScheme(scheme)
130-
}
123+
cleanup?.()
124+
cleanup = option?.onHighlight?.()
131125
}
132126

133127
const handleSelect = (option: CommandOption | undefined) => {
134128
if (option) {
135-
theme.commitPreview()
136129
committed = true
130+
cleanup = undefined
137131
dialog.close()
138132
option.onSelect?.("palette")
139133
}
140134
}
141135

142136
onCleanup(() => {
143137
if (!committed) {
144-
theme.cancelPreview()
138+
cleanup?.()
145139
}
146140
})
147141

packages/app/src/pages/layout.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ import { Header } from "@/components/header"
4949
import { useDialog } from "@opencode-ai/ui/context/dialog"
5050
import { useTheme, type ColorScheme } from "@opencode-ai/ui/theme"
5151
import { DialogSelectProvider } from "@/components/dialog-select-provider"
52-
import { useCommand } from "@/context/command"
52+
import { useCommand, type CommandOption } from "@/context/command"
5353
import { ConstrainDragXAxis } from "@/utils/solid-dnd"
5454

5555
export default function Layout(props: ParentProps) {
@@ -323,7 +323,7 @@ export default function Layout(props: ParentProps) {
323323
}
324324

325325
command.register(() => {
326-
const commands = [
326+
const commands: CommandOption[] = [
327327
{
328328
id: "sidebar.toggle",
329329
title: "Toggle sidebar",
@@ -387,7 +387,11 @@ export default function Layout(props: ParentProps) {
387387
id: `theme.set.${id}`,
388388
title: `Use theme: ${definition.name ?? id}`,
389389
category: "Theme",
390-
onSelect: () => theme.setTheme(id),
390+
onSelect: () => theme.commitPreview(),
391+
onHighlight: () => {
392+
theme.previewTheme(id)
393+
return () => theme.cancelPreview()
394+
},
391395
})
392396
}
393397

@@ -404,7 +408,11 @@ export default function Layout(props: ParentProps) {
404408
id: `theme.scheme.${scheme}`,
405409
title: `Use color scheme: ${colorSchemeLabel[scheme]}`,
406410
category: "Theme",
407-
onSelect: () => theme.setColorScheme(scheme),
411+
onSelect: () => theme.commitPreview(),
412+
onHighlight: () => {
413+
theme.previewColorScheme(scheme)
414+
return () => theme.cancelPreview()
415+
},
408416
})
409417
}
410418

packages/app/src/pages/session.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,18 @@ export default function Page() {
9191
})
9292
const lastUserMessage = createMemo(() => visibleUserMessages()?.at(-1))
9393

94+
createEffect(
95+
on(
96+
() => lastUserMessage()?.id,
97+
() => {
98+
const msg = lastUserMessage()
99+
if (!msg) return
100+
if (msg.agent) local.agent.set(msg.agent)
101+
if (msg.model) local.model.set(msg.model)
102+
},
103+
),
104+
)
105+
94106
const [store, setStore] = createStore({
95107
clickTimer: undefined as number | undefined,
96108
activeDraggable: undefined as string | undefined,

packages/console/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@opencode-ai/console-app",
3-
"version": "1.0.206",
3+
"version": "1.0.207",
44
"type": "module",
55
"scripts": {
66
"typecheck": "tsgo --noEmit",

0 commit comments

Comments
 (0)