From eef3ae3e1f73eca103892a758d44e24d3c725d81 Mon Sep 17 00:00:00 2001
From: Filip <34747899+neriousy@users.noreply.github.com>
Date: Wed, 11 Feb 2026 16:18:44 +0100
Subject: Fix/reverception (#13166)
Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com>
---
packages/app/src/app.tsx | 2 +-
.../app/src/components/session/session-header.tsx | 59 +++++++---------------
packages/app/src/components/settings-general.tsx | 28 ++++++++++
packages/app/src/context/platform.tsx | 6 +++
packages/app/src/i18n/ar.ts | 3 ++
packages/app/src/i18n/br.ts | 3 ++
packages/app/src/i18n/bs.ts | 3 ++
packages/app/src/i18n/da.ts | 3 ++
packages/app/src/i18n/de.ts | 3 ++
packages/app/src/i18n/en.ts | 3 ++
packages/app/src/i18n/es.ts | 3 ++
packages/app/src/i18n/fr.ts | 3 ++
packages/app/src/i18n/ja.ts | 3 ++
packages/app/src/i18n/ko.ts | 3 ++
packages/app/src/i18n/no.ts | 3 ++
packages/app/src/i18n/pl.ts | 3 ++
packages/app/src/i18n/ru.ts | 3 ++
packages/app/src/i18n/th.ts | 3 ++
packages/app/src/i18n/zh.ts | 3 ++
packages/app/src/i18n/zht.ts | 3 ++
20 files changed, 100 insertions(+), 43 deletions(-)
(limited to 'packages/app')
diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx
index 5bbe86e20..e49b725a1 100644
--- a/packages/app/src/app.tsx
+++ b/packages/app/src/app.tsx
@@ -43,7 +43,7 @@ function UiI18nBridge(props: ParentProps) {
declare global {
interface Window {
- __OPENCODE__?: { updaterEnabled?: boolean; serverPassword?: string; deepLinks?: string[] }
+ __OPENCODE__?: { updaterEnabled?: boolean; serverPassword?: string; deepLinks?: string[]; wsl?: boolean }
}
}
diff --git a/packages/app/src/components/session/session-header.tsx b/packages/app/src/components/session/session-header.tsx
index 383490f99..54e24a6fb 100644
--- a/packages/app/src/components/session/session-header.tsx
+++ b/packages/app/src/components/session/session-header.tsx
@@ -1,4 +1,4 @@
-import { createEffect, createMemo, createResource, onCleanup, Show } from "solid-js"
+import { createEffect, createMemo, onCleanup, Show } from "solid-js"
import { createStore } from "solid-js/store"
import { Portal } from "solid-js/web"
import { useParams } from "@solidjs/router"
@@ -18,7 +18,6 @@ import { IconButton } from "@opencode-ai/ui/icon-button"
import { Button } from "@opencode-ai/ui/button"
import { AppIcon } from "@opencode-ai/ui/app-icon"
import { DropdownMenu } from "@opencode-ai/ui/dropdown-menu"
-import { Spinner } from "@opencode-ai/ui/spinner"
import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip"
import { Popover } from "@opencode-ai/ui/popover"
import { TextField } from "@opencode-ai/ui/text-field"
@@ -168,7 +167,6 @@ export function SessionHeader() {
const [prefs, setPrefs] = persisted(Persist.global("open.app"), createStore({ app: "finder" as OpenApp }))
const [menu, setMenu] = createStore({ open: false })
- const [openRequest, setOpenRequest] = createStore({ app: undefined as OpenApp | undefined, version: 0 })
const canOpen = createMemo(() => platform.platform === "desktop" && !!platform.openPath && server.isLocal())
const current = createMemo(() => options().find((o) => o.id === prefs.app) ?? options()[0])
@@ -181,32 +179,20 @@ export function SessionHeader() {
setPrefs("app", options()[0]?.id ?? "finder")
})
- const [openTask] = createResource(
- () => openRequest.app && openRequest.version,
- async () => {
- const app = openRequest.app
- const directory = projectDirectory()
- if (!app || !directory || !canOpen()) return
-
- const item = options().find((o) => o.id === app)
- const openWith = item && "openWith" in item ? item.openWith : undefined
- await platform.openPath?.(directory, openWith)
- },
- )
-
- createEffect(() => {
- const err = openTask.error
- if (!err) return
- showToast({
- variant: "error",
- title: language.t("common.requestFailed"),
- description: err instanceof Error ? err.message : String(err),
- })
- })
-
const openDir = (app: OpenApp) => {
- if (openTask.loading) return
- setOpenRequest({ app, version: openRequest.version + 1 })
+ const directory = projectDirectory()
+ if (!directory) return
+ if (!canOpen()) return
+
+ const item = options().find((o) => o.id === app)
+ const openWith = item && "openWith" in item ? item.openWith : undefined
+ Promise.resolve(platform.openPath?.(directory, openWith)).catch((err: unknown) => {
+ showToast({
+ variant: "error",
+ title: language.t("common.requestFailed"),
+ description: err instanceof Error ? err.message : String(err),
+ })
+ })
}
const copyPath = () => {
@@ -362,18 +348,12 @@ export function SessionHeader() {
@@ -388,11 +368,7 @@ export function SessionHeader() {
as={IconButton}
icon="chevron-down"
variant="ghost"
- disabled={openTask.loading}
- class="rounded-none h-full w-[24px] p-0 border-none shadow-none data-[expanded]:bg-surface-raised-base-active disabled:!cursor-default"
- classList={{
- "bg-surface-raised-base-active": openTask.loading,
- }}
+ class="rounded-none h-full w-[24px] p-0 border-none shadow-none data-[expanded]:bg-surface-raised-base-active"
aria-label={language.t("session.header.open.menu")}
/>
@@ -409,7 +385,6 @@ export function SessionHeader() {
{options().map((o) => (
{
setMenu("open", false)
openDir(o.id)
diff --git a/packages/app/src/components/settings-general.tsx b/packages/app/src/components/settings-general.tsx
index db057a4c4..72135c342 100644
--- a/packages/app/src/components/settings-general.tsx
+++ b/packages/app/src/components/settings-general.tsx
@@ -367,6 +367,34 @@ export const SettingsGeneral: Component = () => {
+
+ {(_) => {
+ const [enabledResource, actions] = createResource(() => platform.getWslEnabled?.())
+ const enabled = () => (enabledResource.state === "pending" ? undefined : enabledResource.latest)
+
+ return (
+
+
{language.t("settings.desktop.section.wsl")}
+
+
+
+
+ platform.setWslEnabled?.(checked)?.finally(() => actions.refetch())}
+ />
+
+
+
+
+ )
+ }}
+
+
{/* Updates Section */}
{language.t("settings.general.section.updates")}
diff --git a/packages/app/src/context/platform.tsx b/packages/app/src/context/platform.tsx
index 7aa6c6554..e260c1977 100644
--- a/packages/app/src/context/platform.tsx
+++ b/packages/app/src/context/platform.tsx
@@ -57,6 +57,12 @@ export type Platform = {
/** Set the default server URL to use on app startup (platform-specific) */
setDefaultServerUrl?(url: string | null): Promise | void
+ /** Get the configured WSL integration (desktop only) */
+ getWslEnabled?(): Promise
+
+ /** Set the configured WSL integration (desktop only) */
+ setWslEnabled?(config: boolean): Promise | void
+
/** Get the preferred display backend (desktop only) */
getDisplayBackend?(): Promise | DisplayBackend | null
diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts
index 201d63660..7a09edc51 100644
--- a/packages/app/src/i18n/ar.ts
+++ b/packages/app/src/i18n/ar.ts
@@ -508,6 +508,9 @@ export const dict = {
"settings.section.server": "الخادم",
"settings.tab.general": "عام",
"settings.tab.shortcuts": "اختصارات",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "المظهر",
"settings.general.section.notifications": "إشعارات النظام",
diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts
index b7f2d7485..ba09fbe03 100644
--- a/packages/app/src/i18n/br.ts
+++ b/packages/app/src/i18n/br.ts
@@ -512,6 +512,9 @@ export const dict = {
"settings.section.server": "Servidor",
"settings.tab.general": "Geral",
"settings.tab.shortcuts": "Atalhos",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Aparência",
"settings.general.section.notifications": "Notificações do sistema",
diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts
index 05eca1628..38d6b79c9 100644
--- a/packages/app/src/i18n/bs.ts
+++ b/packages/app/src/i18n/bs.ts
@@ -539,6 +539,9 @@ export const dict = {
"settings.section.server": "Server",
"settings.tab.general": "Opšte",
"settings.tab.shortcuts": "Prečice",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Izgled",
"settings.general.section.notifications": "Sistemske obavijesti",
diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts
index 8ea4907c1..e36fb16d5 100644
--- a/packages/app/src/i18n/da.ts
+++ b/packages/app/src/i18n/da.ts
@@ -512,6 +512,9 @@ export const dict = {
"settings.section.server": "Server",
"settings.tab.general": "Generelt",
"settings.tab.shortcuts": "Genveje",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Udseende",
"settings.general.section.notifications": "Systemmeddelelser",
diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts
index a4884a103..633d51d05 100644
--- a/packages/app/src/i18n/de.ts
+++ b/packages/app/src/i18n/de.ts
@@ -556,6 +556,9 @@ export const dict = {
"settings.section.server": "Server",
"settings.tab.general": "Allgemein",
"settings.tab.shortcuts": "Tastenkombinationen",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Erscheinungsbild",
"settings.general.section.notifications": "Systembenachrichtigungen",
diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts
index b0ffa70f8..c138c7b61 100644
--- a/packages/app/src/i18n/en.ts
+++ b/packages/app/src/i18n/en.ts
@@ -583,6 +583,9 @@ export const dict = {
"settings.section.server": "Server",
"settings.tab.general": "General",
"settings.tab.shortcuts": "Shortcuts",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Appearance",
"settings.general.section.notifications": "System notifications",
diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts
index 50d906070..ff4198228 100644
--- a/packages/app/src/i18n/es.ts
+++ b/packages/app/src/i18n/es.ts
@@ -515,6 +515,9 @@ export const dict = {
"settings.section.server": "Servidor",
"settings.tab.general": "General",
"settings.tab.shortcuts": "Atajos",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Apariencia",
"settings.general.section.notifications": "Notificaciones del sistema",
diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts
index 7ad39f340..402c095ba 100644
--- a/packages/app/src/i18n/fr.ts
+++ b/packages/app/src/i18n/fr.ts
@@ -522,6 +522,9 @@ export const dict = {
"settings.section.server": "Serveur",
"settings.tab.general": "Général",
"settings.tab.shortcuts": "Raccourcis",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Apparence",
"settings.general.section.notifications": "Notifications système",
diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts
index a39bfbaf3..312ac3262 100644
--- a/packages/app/src/i18n/ja.ts
+++ b/packages/app/src/i18n/ja.ts
@@ -507,6 +507,9 @@ export const dict = {
"settings.section.server": "サーバー",
"settings.tab.general": "一般",
"settings.tab.shortcuts": "ショートカット",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "外観",
"settings.general.section.notifications": "システム通知",
diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts
index b5927b210..b162ab391 100644
--- a/packages/app/src/i18n/ko.ts
+++ b/packages/app/src/i18n/ko.ts
@@ -513,6 +513,9 @@ export const dict = {
"settings.section.server": "서버",
"settings.tab.general": "일반",
"settings.tab.shortcuts": "단축키",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "모양",
"settings.general.section.notifications": "시스템 알림",
diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts
index 7d8cdd27f..001b9eda6 100644
--- a/packages/app/src/i18n/no.ts
+++ b/packages/app/src/i18n/no.ts
@@ -515,6 +515,9 @@ export const dict = {
"settings.section.server": "Server",
"settings.tab.general": "Generelt",
"settings.tab.shortcuts": "Snarveier",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Utseende",
"settings.general.section.notifications": "Systemvarsler",
diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts
index 76a47ea26..2a20cd57e 100644
--- a/packages/app/src/i18n/pl.ts
+++ b/packages/app/src/i18n/pl.ts
@@ -514,6 +514,9 @@ export const dict = {
"settings.section.server": "Serwer",
"settings.tab.general": "Ogólne",
"settings.tab.shortcuts": "Skróty",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Wygląd",
"settings.general.section.notifications": "Powiadomienia systemowe",
diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts
index e83ce3761..698c8db58 100644
--- a/packages/app/src/i18n/ru.ts
+++ b/packages/app/src/i18n/ru.ts
@@ -517,6 +517,9 @@ export const dict = {
"settings.section.server": "Сервер",
"settings.tab.general": "Основные",
"settings.tab.shortcuts": "Горячие клавиши",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "Внешний вид",
"settings.general.section.notifications": "Системные уведомления",
diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts
index 2be19d15b..161f37f3b 100644
--- a/packages/app/src/i18n/th.ts
+++ b/packages/app/src/i18n/th.ts
@@ -516,6 +516,9 @@ export const dict = {
"settings.section.server": "เซิร์ฟเวอร์",
"settings.tab.general": "ทั่วไป",
"settings.tab.shortcuts": "ทางลัด",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "รูปลักษณ์",
"settings.general.section.notifications": "การแจ้งเตือนระบบ",
diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts
index a48f9e549..a2931cf98 100644
--- a/packages/app/src/i18n/zh.ts
+++ b/packages/app/src/i18n/zh.ts
@@ -548,6 +548,9 @@ export const dict = {
"settings.section.server": "服务器",
"settings.tab.general": "通用",
"settings.tab.shortcuts": "快捷键",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "外观",
"settings.general.section.notifications": "系统通知",
diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts
index 60363fc99..cae0c75b4 100644
--- a/packages/app/src/i18n/zht.ts
+++ b/packages/app/src/i18n/zht.ts
@@ -545,6 +545,9 @@ export const dict = {
"settings.section.server": "伺服器",
"settings.tab.general": "一般",
"settings.tab.shortcuts": "快速鍵",
+ "settings.desktop.section.wsl": "WSL",
+ "settings.desktop.wsl.title": "WSL integration",
+ "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.",
"settings.general.section.appearance": "外觀",
"settings.general.section.notifications": "系統通知",
--
cgit v1.2.3