)
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
index 8762d2f884..545eee827a 100644
--- a/packages/app/src/pages/layout.tsx
+++ b/packages/app/src/pages/layout.tsx
@@ -54,7 +54,7 @@ import { useTheme, type ColorScheme } from "@opencode-ai/ui/theme/context"
import { useCommand, type CommandOption } from "@/context/command"
import { ConstrainDragXAxis, getDraggableId } from "@/utils/solid-dnd"
import { DebugBar } from "@/components/debug-bar"
-import { HelpButton, TabsInfoPopup } from "@/components/help-button"
+import { TabsInfoPopup } from "@/components/help-button"
import { Titlebar, type TitlebarUpdate } from "@/components/titlebar"
import { useDirectoryPicker } from "@/components/directory-picker"
import { ServerConnection, useServer } from "@/context/server"
@@ -2396,7 +2396,6 @@ export default function LegacyLayout(props: ParentProps) {
{import.meta.env.DEV && import.meta.env.VITE_DISABLE_DEBUG_BAR !== "1" && }
-
)
diff --git a/packages/app/src/pages/session/composer/session-composer-controls.ts b/packages/app/src/pages/session/composer/session-composer-controls.ts
index 745bc42e5c..3ead9599bb 100644
--- a/packages/app/src/pages/session/composer/session-composer-controls.ts
+++ b/packages/app/src/pages/session/composer/session-composer-controls.ts
@@ -41,7 +41,7 @@ export function createPromptInputController(input: {
options: local.agent.list().map((agent) => agent.name),
current: local.agent.current()?.name ?? "",
loading: agentsQuery.isLoading,
- visible: settings.visibility.customAgents() || local.agent.hasCustom(),
+ visible: local.agent.visible(),
select: local.agent.set,
},
model: {
diff --git a/packages/app/src/pages/session/use-composer-commands.tsx b/packages/app/src/pages/session/use-composer-commands.tsx
index 4cc3f039ff..e7e51489ee 100644
--- a/packages/app/src/pages/session/use-composer-commands.tsx
+++ b/packages/app/src/pages/session/use-composer-commands.tsx
@@ -1,7 +1,6 @@
import { useCommand, type CommandOption } from "@/context/command"
import { useLanguage } from "@/context/language"
import { useLocal, type ModelSelection } from "@/context/local"
-import { useSettings } from "@/context/settings"
import { useDialog } from "@opencode-ai/ui/context/dialog"
import { getCursorPosition, setCursorPosition } from "@/components/prompt-input/editor-dom"
import { useSessionLayout } from "./session-layout"
@@ -19,7 +18,6 @@ export const useComposerCommands = (input: { model?: ModelSelection } = {}) => {
const dialog = useDialog()
const language = useLanguage()
const local = useLocal()
- const settings = useSettings()
const { sessionKey } = useSessionLayout()
const sessionOwnership = createSessionOwnership(sessionKey)
const model = input.model ?? local.model
@@ -70,7 +68,7 @@ export const useComposerCommands = (input: { model?: ModelSelection } = {}) => {
description: language.t("command.agent.cycle.description"),
keybind: "mod+.",
slash: "agent",
- disabled: !settings.visibility.customAgents() && !local.agent.hasCustom(),
+ disabled: !local.agent.visible(),
onSelect: () => local.agent.move(1),
}),
agentCommand({
@@ -78,7 +76,7 @@ export const useComposerCommands = (input: { model?: ModelSelection } = {}) => {
title: language.t("command.agent.cycle.reverse"),
description: language.t("command.agent.cycle.reverse.description"),
keybind: "shift+mod+.",
- disabled: !settings.visibility.customAgents() && !local.agent.hasCustom(),
+ disabled: !local.agent.visible(),
onSelect: () => local.agent.move(-1),
}),
])
diff --git a/packages/cli/package.json b/packages/cli/package.json
index f453190558..e59c972b25 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/cli",
- "version": "1.18.1",
+ "version": "1.18.2",
"type": "module",
"license": "MIT",
"bin": {
diff --git a/packages/codemode/package.json b/packages/codemode/package.json
index d863faac3f..e6dd1b1ab5 100644
--- a/packages/codemode/package.json
+++ b/packages/codemode/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/codemode",
- "version": "1.18.1",
+ "version": "1.18.2",
"description": "Effect-native confined code execution over schema-described tools",
"private": true,
"type": "module",
diff --git a/packages/console/app/package.json b/packages/console/app/package.json
index ccb58bffc7..9f3123cef5 100644
--- a/packages/console/app/package.json
+++ b/packages/console/app/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-app",
- "version": "1.18.1",
+ "version": "1.18.2",
"type": "module",
"license": "MIT",
"scripts": {
diff --git a/packages/console/core/package.json b/packages/console/core/package.json
index 6cb447d23d..253274497e 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.18.1",
+ "version": "1.18.2",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/console/function/package.json b/packages/console/function/package.json
index 870ccf5471..7fb01ee87d 100644
--- a/packages/console/function/package.json
+++ b/packages/console/function/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-function",
- "version": "1.18.1",
+ "version": "1.18.2",
"$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 c20c05f52c..91cd85adad 100644
--- a/packages/console/mail/package.json
+++ b/packages/console/mail/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-mail",
- "version": "1.18.1",
+ "version": "1.18.2",
"dependencies": {
"@jsx-email/all": "2.2.3",
"@jsx-email/cli": "1.4.3",
diff --git a/packages/console/support/package.json b/packages/console/support/package.json
index 36899f1b2a..fd51aa5d1c 100644
--- a/packages/console/support/package.json
+++ b/packages/console/support/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/console-support",
- "version": "1.18.1",
+ "version": "1.18.2",
"type": "module",
"license": "MIT",
"scripts": {
diff --git a/packages/core/package.json b/packages/core/package.json
index 5de186c7e4..eb5a037f1b 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.18.1",
+ "version": "1.18.2",
"name": "@opencode-ai/core",
"type": "module",
"license": "MIT",
diff --git a/packages/desktop/package.json b/packages/desktop/package.json
index 17e530a601..87c6d75e08 100644
--- a/packages/desktop/package.json
+++ b/packages/desktop/package.json
@@ -1,7 +1,7 @@
{
"name": "@opencode-ai/desktop",
"private": true,
- "version": "1.18.1",
+ "version": "1.18.2",
"type": "module",
"license": "MIT",
"homepage": "https://opencode.ai",
diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json
index 3ac754ed4c..027152d01b 100644
--- a/packages/effect-drizzle-sqlite/package.json
+++ b/packages/effect-drizzle-sqlite/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.18.1",
+ "version": "1.18.2",
"name": "@opencode-ai/effect-drizzle-sqlite",
"type": "module",
"license": "MIT",
diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json
index 492e5b5ca4..5e0b4b5c68 100644
--- a/packages/effect-sqlite-node/package.json
+++ b/packages/effect-sqlite-node/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.18.1",
+ "version": "1.18.2",
"name": "@opencode-ai/effect-sqlite-node",
"type": "module",
"license": "MIT",
diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json
index 78ea998af6..830be9f3f4 100644
--- a/packages/enterprise/package.json
+++ b/packages/enterprise/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/enterprise",
- "version": "1.18.1",
+ "version": "1.18.2",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/function/package.json b/packages/function/package.json
index b12f205aa2..7c26e5370f 100644
--- a/packages/function/package.json
+++ b/packages/function/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/function",
- "version": "1.18.1",
+ "version": "1.18.2",
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"type": "module",
diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json
index 7cf4e2cd0d..40e966efbb 100644
--- a/packages/http-recorder/package.json
+++ b/packages/http-recorder/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.18.1",
+ "version": "1.18.2",
"name": "@opencode-ai/http-recorder",
"description": "Record and replay Effect HTTP client traffic with deterministic cassettes",
"type": "module",
diff --git a/packages/llm/package.json b/packages/llm/package.json
index 97ef00a648..bc998e8201 100644
--- a/packages/llm/package.json
+++ b/packages/llm/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.18.1",
+ "version": "1.18.2",
"name": "@opencode-ai/llm",
"type": "module",
"license": "MIT",
diff --git a/packages/opencode/package.json b/packages/opencode/package.json
index 5e7b9c2a80..ab3d95d76f 100644
--- a/packages/opencode/package.json
+++ b/packages/opencode/package.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "version": "1.18.1",
+ "version": "1.18.2",
"name": "opencode",
"type": "module",
"license": "MIT",
diff --git a/packages/opencode/src/cli/cmd/run/footer.command.tsx b/packages/opencode/src/cli/cmd/run/footer.command.tsx
index c97af0ce09..3176c1724f 100644
--- a/packages/opencode/src/cli/cmd/run/footer.command.tsx
+++ b/packages/opencode/src/cli/cmd/run/footer.command.tsx
@@ -633,6 +633,12 @@ export function RunSubagentSelectBody(props: {
return
}
+ if (event.name.toLowerCase() === "up" && menu.selected() === 0) {
+ event.preventDefault()
+ props.onClose()
+ return
+ }
+
handleKey({ event, menu, field: () => field, setQuery, select, close: props.onClose })
})
diff --git a/packages/opencode/test/cli/run/footer.view.test.tsx b/packages/opencode/test/cli/run/footer.view.test.tsx
index 2e9fd8ef17..d54e2e3fd6 100644
--- a/packages/opencode/test/cli/run/footer.view.test.tsx
+++ b/packages/opencode/test/cli/run/footer.view.test.tsx
@@ -642,6 +642,42 @@ test("direct subagent panel renders active subagents", async () => {
}
})
+test("direct subagent panel closes when moving up from the first item", async () => {
+ const [tabs] = createSignal([
+ subagent({ sessionID: "s-1", label: "Explore", description: "Inspect auth flow" }),
+ subagent({ sessionID: "s-2", label: "General", description: "Write migration plan" }),
+ ])
+ const [current] = createSignal()
+ let closed = 0
+
+ const app = await testRender(
+ () => (
+
+ RUN_THEME_FALLBACK.footer}
+ tabs={tabs}
+ current={current}
+ onClose={() => closed++}
+ onSelect={() => {}}
+ />
+
+ ),
+ { width: 100, height: RUN_SUBAGENT_PANEL_ROWS },
+ )
+
+ try {
+ await app.renderOnce()
+ app.mockInput.pressKey("ARROW_DOWN")
+ app.mockInput.pressKey("ARROW_UP")
+ expect(closed).toBe(0)
+
+ app.mockInput.pressKey("ARROW_UP")
+ expect(closed).toBe(1)
+ } finally {
+ app.renderer.destroy()
+ }
+})
+
test("direct queued prompt panel renders pending prompt actions", async () => {
const [prompts] = createSignal([
{ messageID: "m-1", partID: "p-1", prompt: { text: "fix the auth test", parts: [] } },
diff --git a/packages/plugin/package.json b/packages/plugin/package.json
index 26ee4c399a..103e919f6c 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.18.1",
+ "version": "1.18.2",
"type": "module",
"license": "MIT",
"scripts": {
diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json
index 3853a41a8d..eaa4cdfa0e 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.18.1",
+ "version": "1.18.2",
"type": "module",
"license": "MIT",
"scripts": {
diff --git a/packages/server/package.json b/packages/server/package.json
index bc1305900d..99675528de 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/server",
- "version": "1.18.1",
+ "version": "1.18.2",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json
index 162426431d..e43e2d496e 100644
--- a/packages/session-ui/package.json
+++ b/packages/session-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/session-ui",
- "version": "1.18.1",
+ "version": "1.18.2",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/slack/package.json b/packages/slack/package.json
index cf643baa41..224dc34c2f 100644
--- a/packages/slack/package.json
+++ b/packages/slack/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/slack",
- "version": "1.18.1",
+ "version": "1.18.2",
"type": "module",
"license": "MIT",
"scripts": {
diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json
index 36aab09dfd..c1270fda3e 100644
--- a/packages/stats/app/package.json
+++ b/packages/stats/app/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/stats-app",
- "version": "1.18.1",
+ "version": "1.18.2",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json
index 425a9e1e97..4d40971d76 100644
--- a/packages/stats/core/package.json
+++ b/packages/stats/core/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/stats-core",
- "version": "1.18.1",
+ "version": "1.18.2",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json
index 9b463354f5..a5875742c7 100644
--- a/packages/stats/server/package.json
+++ b/packages/stats/server/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/stats-server",
- "version": "1.18.1",
+ "version": "1.18.2",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/tui/package.json b/packages/tui/package.json
index 2b85d06d07..a669208df8 100644
--- a/packages/tui/package.json
+++ b/packages/tui/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@opencode-ai/tui",
- "version": "1.18.1",
+ "version": "1.18.2",
"private": true,
"type": "module",
"license": "MIT",
diff --git a/packages/ui/package.json b/packages/ui/package.json
index e66e4a0307..5c422b595f 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/ui",
- "version": "1.18.1",
+ "version": "1.18.2",
"type": "module",
"license": "MIT",
"repository": {
diff --git a/packages/web/package.json b/packages/web/package.json
index f5eff14426..37a346f451 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.18.1",
+ "version": "1.18.2",
"scripts": {
"dev": "astro dev",
"dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev",
diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json
index d340bfc29f..7d62f8f598 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.18.1",
+ "version": "1.18.2",
"publisher": "sst-dev",
"repository": {
"type": "git",