From 6359c312018f6e0fa45730ea2e2d4852a732fba3 Mon Sep 17 00:00:00 2001 From: eggfriedrice Date: Sat, 14 Mar 2026 13:09:01 +0000 Subject: [PATCH 1/2] fix(web): show text input for adding projects on Linux desktop --- apps/web/src/components/Sidebar.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index beacd1d943..b0c0f36df9 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -305,7 +305,8 @@ export default function Sidebar() { const clearSelection = useThreadSelectionStore((s) => s.clearSelection); const removeFromSelection = useThreadSelectionStore((s) => s.removeFromSelection); const setSelectionAnchor = useThreadSelectionStore((s) => s.setAnchor); - const shouldBrowseForProjectImmediately = isElectron; + const isLinuxDesktop = isElectron && /linux/i.test(navigator.platform); + const shouldBrowseForProjectImmediately = isElectron && !isLinuxDesktop; const shouldShowProjectPathEntry = addingProject && !shouldBrowseForProjectImmediately; const projectCwdById = useMemo( () => new Map(projects.map((project) => [project.id, project.cwd] as const)), From 9757ff5cb675175bfc830789da7d6991510a7aed Mon Sep 17 00:00:00 2001 From: eggfriedrice Date: Wed, 18 Mar 2026 01:50:47 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=1B[38;2;216;222;233mrefactor:=20extract=20?= =?UTF-8?q?isLinuxPlatform=20helper=20to=20match=20existing=20platform=20u?= =?UTF-8?q?tils=1B[0m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/components/Sidebar.tsx | 4 ++-- apps/web/src/lib/utils.ts | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index b0c0f36df9..bcef110c1b 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -39,7 +39,7 @@ import { useLocation, useNavigate, useParams } from "@tanstack/react-router"; import { useAppSettings } from "../appSettings"; import { isElectron } from "../env"; import { APP_STAGE_LABEL, APP_VERSION } from "../branding"; -import { isMacPlatform, newCommandId, newProjectId } from "../lib/utils"; +import { isLinuxPlatform, isMacPlatform, newCommandId, newProjectId } from "../lib/utils"; import { useStore } from "../store"; import { shortcutLabelForCommand } from "../keybindings"; import { derivePendingApprovals, derivePendingUserInputs } from "../session-logic"; @@ -305,7 +305,7 @@ export default function Sidebar() { const clearSelection = useThreadSelectionStore((s) => s.clearSelection); const removeFromSelection = useThreadSelectionStore((s) => s.removeFromSelection); const setSelectionAnchor = useThreadSelectionStore((s) => s.setAnchor); - const isLinuxDesktop = isElectron && /linux/i.test(navigator.platform); + const isLinuxDesktop = isElectron && isLinuxPlatform(navigator.platform); const shouldBrowseForProjectImmediately = isElectron && !isLinuxDesktop; const shouldShowProjectPathEntry = addingProject && !shouldBrowseForProjectImmediately; const projectCwdById = useMemo( diff --git a/apps/web/src/lib/utils.ts b/apps/web/src/lib/utils.ts index 08a5de91e6..b5834606b1 100644 --- a/apps/web/src/lib/utils.ts +++ b/apps/web/src/lib/utils.ts @@ -16,6 +16,10 @@ export function isWindowsPlatform(platform: string): boolean { return /^win(dows)?/i.test(platform); } +export function isLinuxPlatform(platform: string): boolean { + return /linux/i.test(platform); +} + export function randomUUID(): string { if (typeof crypto.randomUUID === "function") { return crypto.randomUUID();