summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChangeHow <[email protected]>2026-02-08 03:35:46 +0800
committerGitHub <[email protected]>2026-02-07 13:35:46 -0600
commit805207e096a174083f06e5426d31b7a0f37b15ca (patch)
tree1fa34448c7cf2ea36169468943382453a000929b
parent0e1f5436465b17eed0ca1a4b11e63c549f691ecd (diff)
downloadopencode-805207e096a174083f06e5426d31b7a0f37b15ca.tar.gz
opencode-805207e096a174083f06e5426d31b7a0f37b15ca.zip
feat(app): add web input focus shortcut (#12493)
-rw-r--r--bun.lock1
-rw-r--r--packages/app/src/i18n/ar.ts1
-rw-r--r--packages/app/src/i18n/br.ts1
-rw-r--r--packages/app/src/i18n/bs.ts1
-rw-r--r--packages/app/src/i18n/da.ts1
-rw-r--r--packages/app/src/i18n/de.ts1
-rw-r--r--packages/app/src/i18n/en.ts1
-rw-r--r--packages/app/src/i18n/es.ts1
-rw-r--r--packages/app/src/i18n/fr.ts1
-rw-r--r--packages/app/src/i18n/ja.ts1
-rw-r--r--packages/app/src/i18n/ko.ts1
-rw-r--r--packages/app/src/i18n/no.ts1
-rw-r--r--packages/app/src/i18n/pl.ts1
-rw-r--r--packages/app/src/i18n/ru.ts1
-rw-r--r--packages/app/src/i18n/th.ts1
-rw-r--r--packages/app/src/i18n/zh.ts1
-rw-r--r--packages/app/src/i18n/zht.ts1
-rw-r--r--packages/app/src/pages/session.tsx3
-rw-r--r--packages/app/src/pages/session/use-session-commands.tsx8
-rwxr-xr-xpackages/opencode/script/build.ts2
20 files changed, 28 insertions, 2 deletions
diff --git a/bun.lock b/bun.lock
index fcb2f8f0c..13d80a73c 100644
--- a/bun.lock
+++ b/bun.lock
@@ -1,6 +1,5 @@
{
"lockfileVersion": 1,
- "configVersion": 1,
"workspaces": {
"": {
"name": "opencode",
diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts
index 22ee3e998..8b3ad7223 100644
--- a/packages/app/src/i18n/ar.ts
+++ b/packages/app/src/i18n/ar.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "فتح ملف",
"command.context.addSelection": "إضافة التحديد إلى السياق",
"command.context.addSelection.description": "إضافة الأسطر المحددة من الملف الحالي",
+ "command.input.focus": "التركيز على حقل الإدخال",
"command.terminal.toggle": "تبديل المحطة الطرفية",
"command.fileTree.toggle": "تبديل شجرة الملفات",
"command.review.toggle": "تبديل المراجعة",
diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts
index b1544e0a6..654443bc7 100644
--- a/packages/app/src/i18n/br.ts
+++ b/packages/app/src/i18n/br.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "Abrir arquivo",
"command.context.addSelection": "Adicionar seleção ao contexto",
"command.context.addSelection.description": "Adicionar as linhas selecionadas do arquivo atual",
+ "command.input.focus": "Focar entrada",
"command.terminal.toggle": "Alternar terminal",
"command.fileTree.toggle": "Alternar árvore de arquivos",
"command.review.toggle": "Alternar revisão",
diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts
index ddfd31048..475842911 100644
--- a/packages/app/src/i18n/bs.ts
+++ b/packages/app/src/i18n/bs.ts
@@ -47,6 +47,7 @@ export const dict = {
"command.tab.close": "Zatvori karticu",
"command.context.addSelection": "Dodaj odabir u kontekst",
"command.context.addSelection.description": "Dodaj odabrane linije iz trenutne datoteke",
+ "command.input.focus": "Fokusiraj polje za unos",
"command.terminal.toggle": "Prikaži/sakrij terminal",
"command.fileTree.toggle": "Prikaži/sakrij stablo datoteka",
"command.review.toggle": "Prikaži/sakrij pregled",
diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts
index d8860b16b..e80b4d5d3 100644
--- a/packages/app/src/i18n/da.ts
+++ b/packages/app/src/i18n/da.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "Åbn fil",
"command.context.addSelection": "Tilføj markering til kontekst",
"command.context.addSelection.description": "Tilføj markerede linjer fra den aktuelle fil",
+ "command.input.focus": "Fokuser inputfelt",
"command.terminal.toggle": "Skift terminal",
"command.fileTree.toggle": "Skift filtræ",
"command.review.toggle": "Skift gennemgang",
diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts
index f1ff6e8c0..a62b9cb99 100644
--- a/packages/app/src/i18n/de.ts
+++ b/packages/app/src/i18n/de.ts
@@ -50,6 +50,7 @@ export const dict = {
"command.file.open": "Datei öffnen",
"command.context.addSelection": "Auswahl zum Kontext hinzufügen",
"command.context.addSelection.description": "Ausgewählte Zeilen aus der aktuellen Datei hinzufügen",
+ "command.input.focus": "Eingabefeld fokussieren",
"command.terminal.toggle": "Terminal umschalten",
"command.fileTree.toggle": "Dateibaum umschalten",
"command.review.toggle": "Überprüfung umschalten",
diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts
index 9e6dd35de..62dc35eae 100644
--- a/packages/app/src/i18n/en.ts
+++ b/packages/app/src/i18n/en.ts
@@ -47,6 +47,7 @@ export const dict = {
"command.tab.close": "Close tab",
"command.context.addSelection": "Add selection to context",
"command.context.addSelection.description": "Add selected lines from the current file",
+ "command.input.focus": "Focus input",
"command.terminal.toggle": "Toggle terminal",
"command.fileTree.toggle": "Toggle file tree",
"command.review.toggle": "Toggle review",
diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts
index 0d095c1ea..8c48bd9d0 100644
--- a/packages/app/src/i18n/es.ts
+++ b/packages/app/src/i18n/es.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "Abrir archivo",
"command.context.addSelection": "Añadir selección al contexto",
"command.context.addSelection.description": "Añadir las líneas seleccionadas del archivo actual",
+ "command.input.focus": "Enfocar entrada",
"command.terminal.toggle": "Alternar terminal",
"command.fileTree.toggle": "Alternar árbol de archivos",
"command.review.toggle": "Alternar revisión",
diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts
index 06f18f063..5f9c2f498 100644
--- a/packages/app/src/i18n/fr.ts
+++ b/packages/app/src/i18n/fr.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "Ouvrir un fichier",
"command.context.addSelection": "Ajouter la sélection au contexte",
"command.context.addSelection.description": "Ajouter les lignes sélectionnées du fichier actuel",
+ "command.input.focus": "Focus input",
"command.terminal.toggle": "Basculer le terminal",
"command.fileTree.toggle": "Basculer l'arborescence des fichiers",
"command.review.toggle": "Basculer la revue",
diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts
index c4bd09b71..776968e1a 100644
--- a/packages/app/src/i18n/ja.ts
+++ b/packages/app/src/i18n/ja.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "ファイルを開く",
"command.context.addSelection": "選択範囲をコンテキストに追加",
"command.context.addSelection.description": "現在のファイルから選択した行を追加",
+ "command.input.focus": "入力欄にフォーカス",
"command.terminal.toggle": "ターミナルの切り替え",
"command.fileTree.toggle": "ファイルツリーを切り替え",
"command.review.toggle": "レビューの切り替え",
diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts
index 5b1ac21e2..4194dfdfe 100644
--- a/packages/app/src/i18n/ko.ts
+++ b/packages/app/src/i18n/ko.ts
@@ -50,6 +50,7 @@ export const dict = {
"command.file.open": "파일 열기",
"command.context.addSelection": "선택 영역을 컨텍스트에 추가",
"command.context.addSelection.description": "현재 파일에서 선택한 줄을 추가",
+ "command.input.focus": "입력창 포커스",
"command.terminal.toggle": "터미널 토글",
"command.fileTree.toggle": "파일 트리 토글",
"command.review.toggle": "검토 토글",
diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts
index d167d7d9c..a7826fce2 100644
--- a/packages/app/src/i18n/no.ts
+++ b/packages/app/src/i18n/no.ts
@@ -49,6 +49,7 @@ export const dict = {
"command.file.open": "Åpne fil",
"command.context.addSelection": "Legg til markering i kontekst",
"command.context.addSelection.description": "Legg til valgte linjer fra gjeldende fil",
+ "command.input.focus": "Fokuser inndata",
"command.terminal.toggle": "Veksle terminal",
"command.fileTree.toggle": "Veksle filtre",
"command.review.toggle": "Veksle gjennomgang",
diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts
index 90a1aa230..960321495 100644
--- a/packages/app/src/i18n/pl.ts
+++ b/packages/app/src/i18n/pl.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "Otwórz plik",
"command.context.addSelection": "Dodaj zaznaczenie do kontekstu",
"command.context.addSelection.description": "Dodaj zaznaczone linie z bieżącego pliku",
+ "command.input.focus": "Fokus na pole wejściowe",
"command.terminal.toggle": "Przełącz terminal",
"command.fileTree.toggle": "Przełącz drzewo plików",
"command.review.toggle": "Przełącz przegląd",
diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts
index 22f1af639..ce66b1781 100644
--- a/packages/app/src/i18n/ru.ts
+++ b/packages/app/src/i18n/ru.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "Открыть файл",
"command.context.addSelection": "Добавить выделение в контекст",
"command.context.addSelection.description": "Добавить выбранные строки из текущего файла",
+ "command.input.focus": "Фокус на поле ввода",
"command.terminal.toggle": "Переключить терминал",
"command.fileTree.toggle": "Переключить дерево файлов",
"command.review.toggle": "Переключить обзор",
diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts
index f7f1ad261..816d844c0 100644
--- a/packages/app/src/i18n/th.ts
+++ b/packages/app/src/i18n/th.ts
@@ -46,6 +46,7 @@ export const dict = {
"command.file.open": "เปิดไฟล์",
"command.context.addSelection": "เพิ่มส่วนที่เลือกไปยังบริบท",
"command.context.addSelection.description": "เพิ่มบรรทัดที่เลือกจากไฟล์ปัจจุบัน",
+ "command.input.focus": "โฟกัสช่องป้อนข้อมูล",
"command.terminal.toggle": "สลับเทอร์มินัล",
"command.fileTree.toggle": "สลับต้นไม้ไฟล์",
"command.review.toggle": "สลับการตรวจสอบ",
diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts
index e86f9aa5d..fbce17837 100644
--- a/packages/app/src/i18n/zh.ts
+++ b/packages/app/src/i18n/zh.ts
@@ -50,6 +50,7 @@ export const dict = {
"command.file.open": "打开文件",
"command.context.addSelection": "将所选内容添加到上下文",
"command.context.addSelection.description": "添加当前文件中选中的行",
+ "command.input.focus": "聚焦输入框",
"command.terminal.toggle": "切换终端",
"command.fileTree.toggle": "切换文件树",
"command.review.toggle": "切换审查",
diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts
index 458000fa4..bb0821f88 100644
--- a/packages/app/src/i18n/zht.ts
+++ b/packages/app/src/i18n/zht.ts
@@ -50,6 +50,7 @@ export const dict = {
"command.file.open": "開啟檔案",
"command.context.addSelection": "將選取內容加入上下文",
"command.context.addSelection.description": "加入目前檔案中選取的行",
+ "command.input.focus": "聚焦輸入框",
"command.terminal.toggle": "切換終端機",
"command.fileTree.toggle": "切換檔案樹",
"command.review.toggle": "切換審查",
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 31f9e3fb7..98f8bdbcd 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -917,6 +917,8 @@ export default function Page() {
setFileTreeTab("all")
}
+ const focusInput = () => inputRef?.focus()
+
useSessionCommands({
command,
dialog,
@@ -943,6 +945,7 @@ export default function Page() {
setExpanded: (id, fn) => setStore("expanded", id, fn),
setActiveMessage,
addSelectionToContext,
+ focusInput,
})
const openReviewFile = createOpenReviewFile({
diff --git a/packages/app/src/pages/session/use-session-commands.tsx b/packages/app/src/pages/session/use-session-commands.tsx
index 0fe2c6044..09c0fd17c 100644
--- a/packages/app/src/pages/session/use-session-commands.tsx
+++ b/packages/app/src/pages/session/use-session-commands.tsx
@@ -48,6 +48,7 @@ export const useSessionCommands = (input: {
setExpanded: (id: string, fn: (open: boolean | undefined) => boolean) => void
setActiveMessage: (message: UserMessage | undefined) => void
addSelectionToContext: (path: string, selection: FileSelection) => void
+ focusInput: () => void
}) => {
const sessionCommands = createMemo(() => [
{
@@ -143,6 +144,13 @@ export const useSessionCommands = (input: {
onSelect: () => input.layout.fileTree.toggle(),
},
{
+ id: "input.focus",
+ title: input.language.t("command.input.focus"),
+ category: input.language.t("command.category.view"),
+ keybind: "ctrl+l",
+ onSelect: () => input.focusInput(),
+ },
+ {
id: "terminal.new",
title: input.language.t("command.terminal.new"),
description: input.language.t("command.terminal.new.description"),
diff --git a/packages/opencode/script/build.ts b/packages/opencode/script/build.ts
index f0b3fa828..b55f04d87 100755
--- a/packages/opencode/script/build.ts
+++ b/packages/opencode/script/build.ts
@@ -1,6 +1,6 @@
#!/usr/bin/env bun
-import solidPlugin from "../node_modules/@opentui/solid/scripts/solid-plugin"
+import solidPlugin from "../../../node_modules/@opentui/solid/scripts/solid-plugin"
import path from "path"
import fs from "fs"
import { $ } from "bun"