fix(app): focus auto-created terminals (#47890)

Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
This commit is contained in:
opencode-agent[bot]
2026-09-08 14:31:06 +08:00
committed by GitHub
parent cab8e39ad5
commit 64684b118f
3 changed files with 8 additions and 8 deletions
@@ -194,7 +194,7 @@ export const useSessionCommands = (actions: SessionCommandContext) => {
const openTerminal = () => {
actions.session.layout.view().terminal.open()
if (terminal.all().length > 0) terminal.new({ focus: true })
if (terminal.all().length > 0) terminal.new()
if (terminal.all().length === 0) terminal.requestFocus()
}
@@ -244,9 +244,9 @@ function createWorkspaceTerminalSession(
setStore("all", [])
})
},
new(options?: { focus?: boolean }) {
new() {
const nextNumber = pickNextTerminalNumber()
const focusRequest = options?.focus ? requestFocus(undefined, true) : undefined
const focusRequest = requestFocus(undefined, true)
const doCreate = async () => {
return serverSDK.api.pty.create({ location, title: defaultTitle(nextNumber) }).then((result) => result.data)
@@ -255,7 +255,7 @@ function createWorkspaceTerminalSession(
.then((data) => {
const id = data?.id
if (!id) {
if (focusRequest !== undefined) cancelFocus(focusRequest)
cancelFocus(focusRequest)
return
}
const newTerminal = {
@@ -266,13 +266,13 @@ function createWorkspaceTerminalSession(
batch(() => {
setStore("all", store.all.length, newTerminal)
setStore("active", id)
if (focusRequest !== undefined && ui.focus?.request === focusRequest) {
if (ui.focus?.request === focusRequest) {
setUi("focus", { request: focusRequest, id, pending: false })
}
})
})
.catch((error: unknown) => {
if (focusRequest !== undefined) cancelFocus(focusRequest)
cancelFocus(focusRequest)
console.error("Failed to create terminal", error)
})
},
@@ -440,7 +440,7 @@ export const { use: useTerminal, provider: TerminalProvider } = createSimpleCont
ready: () => workspace().ready(),
all: () => workspace().all(),
active: () => workspace().active(),
new: (options?: { focus?: boolean }) => workspace().new(options),
new: () => workspace().new(),
update: (pty: Partial<LocalPTY> & { id: string }) => workspace().update(pty),
trim: (id: string) => workspace().trim(id),
trimAll: () => workspace().trimAll(),
+1 -1
View File
@@ -330,7 +330,7 @@ export function TerminalPanel(
<IconButton
icon={<Icon name="plus-small" size="large" />}
variant="ghost"
onClick={() => terminal.new({ focus: true })}
onClick={() => terminal.new()}
aria-label={language.t("command.terminal.new")}
/>
</Tooltip>