From 6574d72c8c829e1732678fae769be5f580a9a733 Mon Sep 17 00:00:00 2001 From: Zeb Piasecki Date: Wed, 18 Mar 2026 18:30:21 -0400 Subject: [PATCH] fix(desktop): add Windsurf to the Open In app list Show Windsurf in the desktop Open In dropdown when it is installed, and use the official Windsurf brand icon so the entry matches the rest of the app picker. --- packages/app/src/components/session/session-header.tsx | 4 ++++ packages/app/src/i18n/ar.ts | 1 + packages/app/src/i18n/br.ts | 1 + packages/app/src/i18n/bs.ts | 1 + packages/app/src/i18n/da.ts | 1 + packages/app/src/i18n/de.ts | 1 + packages/app/src/i18n/en.ts | 1 + packages/app/src/i18n/es.ts | 1 + packages/app/src/i18n/fr.ts | 1 + packages/app/src/i18n/ja.ts | 1 + packages/app/src/i18n/ko.ts | 1 + packages/app/src/i18n/no.ts | 1 + packages/app/src/i18n/pl.ts | 1 + packages/app/src/i18n/ru.ts | 1 + packages/app/src/i18n/th.ts | 1 + packages/app/src/i18n/tr.ts | 1 + packages/app/src/i18n/zh.ts | 1 + packages/app/src/i18n/zht.ts | 1 + packages/ui/src/assets/icons/app/windsurf-dark.svg | 3 +++ packages/ui/src/assets/icons/app/windsurf.svg | 3 +++ packages/ui/src/components/app-icon.tsx | 7 +++++++ packages/ui/src/components/app-icons/types.ts | 1 + 22 files changed, 35 insertions(+) create mode 100644 packages/ui/src/assets/icons/app/windsurf-dark.svg create mode 100644 packages/ui/src/assets/icons/app/windsurf.svg diff --git a/packages/app/src/components/session/session-header.tsx b/packages/app/src/components/session/session-header.tsx index 495b3234058..4f47ed64b36 100644 --- a/packages/app/src/components/session/session-header.tsx +++ b/packages/app/src/components/session/session-header.tsx @@ -28,6 +28,7 @@ import { StatusPopover } from "../status-popover" const OPEN_APPS = [ "vscode", "cursor", + "windsurf", "zed", "textmate", "antigravity", @@ -53,6 +54,7 @@ const MAC_APPS = [ openWith: "Visual Studio Code", }, { id: "cursor", label: "session.header.open.app.cursor", icon: "cursor", openWith: "Cursor" }, + { id: "windsurf", label: "session.header.open.app.windsurf", icon: "windsurf", openWith: "Windsurf" }, { id: "zed", label: "session.header.open.app.zed", icon: "zed", openWith: "Zed" }, { id: "textmate", label: "session.header.open.app.textmate", icon: "textmate", openWith: "TextMate" }, { @@ -83,6 +85,7 @@ const MAC_APPS = [ const WINDOWS_APPS = [ { id: "vscode", label: "session.header.open.app.vscode", icon: "vscode", openWith: "code" }, { id: "cursor", label: "session.header.open.app.cursor", icon: "cursor", openWith: "cursor" }, + { id: "windsurf", label: "session.header.open.app.windsurf", icon: "windsurf", openWith: "windsurf" }, { id: "zed", label: "session.header.open.app.zed", icon: "zed", openWith: "zed" }, { id: "powershell", @@ -101,6 +104,7 @@ const WINDOWS_APPS = [ const LINUX_APPS = [ { id: "vscode", label: "session.header.open.app.vscode", icon: "vscode", openWith: "code" }, { id: "cursor", label: "session.header.open.app.cursor", icon: "cursor", openWith: "cursor" }, + { id: "windsurf", label: "session.header.open.app.windsurf", icon: "windsurf", openWith: "windsurf" }, { id: "zed", label: "session.header.open.app.zed", icon: "zed", openWith: "zed" }, { id: "sublime-text", diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index 720045a4d1c..2b3d4e2f8ad 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -796,6 +796,7 @@ export const dict = { "session.header.open.fileManager": "مدير الملفات", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts index a7d7433b02c..a2ef526c7a8 100644 --- a/packages/app/src/i18n/br.ts +++ b/packages/app/src/i18n/br.ts @@ -806,6 +806,7 @@ export const dict = { "session.header.open.fileManager": "Gerenciador de Arquivos", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts index ccdf2b6044d..defa92b9986 100644 --- a/packages/app/src/i18n/bs.ts +++ b/packages/app/src/i18n/bs.ts @@ -882,6 +882,7 @@ export const dict = { "session.header.open.fileManager": "File Manager", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts index f1701094b56..882b19282eb 100644 --- a/packages/app/src/i18n/da.ts +++ b/packages/app/src/i18n/da.ts @@ -876,6 +876,7 @@ export const dict = { "session.header.open.fileManager": "Filhåndtering", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index 2dfeed72032..7aa6e780d66 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -818,6 +818,7 @@ export const dict = { "session.header.open.fileManager": "Dateimanager", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 7f6816de9e3..5a63ce4f621 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -580,6 +580,7 @@ export const dict = { "session.header.open.fileManager": "File Manager", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index 1cd47dfc796..3f45c11bec9 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -889,6 +889,7 @@ export const dict = { "session.header.open.fileManager": "Gestor de archivos", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index c7d89c3251b..1fed83ed42d 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -815,6 +815,7 @@ export const dict = { "session.header.open.fileManager": "Gestionnaire de fichiers", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index 267411083f4..b0bea796b12 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -801,6 +801,7 @@ export const dict = { "session.header.open.fileManager": "ファイルマネージャー", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index bb57f99396b..6a7e96ba1d8 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -800,6 +800,7 @@ export const dict = { "session.header.open.fileManager": "파일 관리자", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts index 83d6a9903b6..9532beecadf 100644 --- a/packages/app/src/i18n/no.ts +++ b/packages/app/src/i18n/no.ts @@ -883,6 +883,7 @@ export const dict = { "session.header.open.fileManager": "Filbehandler", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index db9ef18003e..22f020d402e 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -803,6 +803,7 @@ export const dict = { "session.header.open.fileManager": "Menedżer plików", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts index e1abb6e6cf6..68f81576e34 100644 --- a/packages/app/src/i18n/ru.ts +++ b/packages/app/src/i18n/ru.ts @@ -885,6 +885,7 @@ export const dict = { "session.header.open.fileManager": "Файловый менеджер", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts index b522e4631b9..a9057c8a120 100644 --- a/packages/app/src/i18n/th.ts +++ b/packages/app/src/i18n/th.ts @@ -872,6 +872,7 @@ export const dict = { "session.header.open.fileManager": "File Manager", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/tr.ts b/packages/app/src/i18n/tr.ts index 8542dff799b..869f493f9e1 100644 --- a/packages/app/src/i18n/tr.ts +++ b/packages/app/src/i18n/tr.ts @@ -892,6 +892,7 @@ export const dict = { "session.header.open.fileManager": "Dosya Yöneticisi", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index e762ba78d9c..77d64924b20 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -871,6 +871,7 @@ export const dict = { "session.header.open.fileManager": "文件管理器", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts index 184c789ce36..05759978829 100644 --- a/packages/app/src/i18n/zht.ts +++ b/packages/app/src/i18n/zht.ts @@ -866,6 +866,7 @@ export const dict = { "session.header.open.fileManager": "檔案管理員", "session.header.open.app.vscode": "VS Code", "session.header.open.app.cursor": "Cursor", + "session.header.open.app.windsurf": "Windsurf", "session.header.open.app.zed": "Zed", "session.header.open.app.textmate": "TextMate", "session.header.open.app.antigravity": "Antigravity", diff --git a/packages/ui/src/assets/icons/app/windsurf-dark.svg b/packages/ui/src/assets/icons/app/windsurf-dark.svg new file mode 100644 index 00000000000..2e4e4e4921d --- /dev/null +++ b/packages/ui/src/assets/icons/app/windsurf-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/app/windsurf.svg b/packages/ui/src/assets/icons/app/windsurf.svg new file mode 100644 index 00000000000..386f8c035dc --- /dev/null +++ b/packages/ui/src/assets/icons/app/windsurf.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/components/app-icon.tsx b/packages/ui/src/components/app-icon.tsx index f8b587ff260..b7afb4c11c1 100644 --- a/packages/ui/src/components/app-icon.tsx +++ b/packages/ui/src/components/app-icon.tsx @@ -10,6 +10,8 @@ import finder from "../assets/icons/app/finder.png" import ghostty from "../assets/icons/app/ghostty.svg" import iterm2 from "../assets/icons/app/iterm2.svg" import powershell from "../assets/icons/app/powershell.svg" +import windsurf from "../assets/icons/app/windsurf.svg" +import windsurfDark from "../assets/icons/app/windsurf-dark.svg" import terminal from "../assets/icons/app/terminal.png" import textmate from "../assets/icons/app/textmate.png" import vscode from "../assets/icons/app/vscode.svg" @@ -22,6 +24,7 @@ import sublimetext from "../assets/icons/app/sublimetext.svg" const icons = { vscode, cursor, + windsurf, zed, "file-explorer": fileExplorer, finder, @@ -38,6 +41,10 @@ const icons = { } satisfies Record const themed: Partial> = { + windsurf: { + light: windsurf, + dark: windsurfDark, + }, zed: { light: zed, dark: zedDark, diff --git a/packages/ui/src/components/app-icons/types.ts b/packages/ui/src/components/app-icons/types.ts index 4fb3abf39c3..bd22457bc23 100644 --- a/packages/ui/src/components/app-icons/types.ts +++ b/packages/ui/src/components/app-icons/types.ts @@ -3,6 +3,7 @@ export const iconNames = [ "vscode", "cursor", + "windsurf", "zed", "file-explorer", "finder",