From f0d00d2d293aa508e0fc1a1f5809ee003be9ad4f Mon Sep 17 00:00:00 2001 From: "qodo-code-review[bot]" <151058649+qodo-code-review[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 05:42:00 +0000 Subject: [PATCH 1/5] fix: Preserve elevation metadata on macOS --- QuickShell.Raycast/src/components/workspace-form.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/QuickShell.Raycast/src/components/workspace-form.tsx b/QuickShell.Raycast/src/components/workspace-form.tsx index 3a535811..a97520d6 100644 --- a/QuickShell.Raycast/src/components/workspace-form.tsx +++ b/QuickShell.Raycast/src/components/workspace-form.tsx @@ -521,8 +521,8 @@ export default function WorkspaceForm({ terminal: selectedTerminal?.terminal ?? "default", wtProfile: selectedTerminal?.wtProfile ?? null, isPinned: formValues.isPinned, - runAsAdmin: isMacPlatform() ? false : formValues.runAsAdmin, - launches: isMacPlatform() ? launches.map((launch) => ({ ...launch, runAsAdmin: false })) : launches, + runAsAdmin: isMacPlatform() ? initialWorkspace.runAsAdmin : formValues.runAsAdmin, + launches, companions, devServerUrl: formValues.devServerUrl, openDevServerOnLaunch: formValues.openDevServerOnLaunch, From 7c8054da1928ddf9fe1f34f6d992b467bb2f20cf Mon Sep 17 00:00:00 2001 From: "qodo-code-review[bot]" <151058649+qodo-code-review[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 05:42:07 +0000 Subject: [PATCH 2/5] =?UTF-8?q?fix:=202=20findings=20=E2=80=94=20Ignore=20?= =?UTF-8?q?separator-only=20remapped=20layouts;=20Validate=20layou?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ignore separator-only remapped layouts - Validate layout envelope versions --- QuickShell.Raycast/src/lib/import-export.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/QuickShell.Raycast/src/lib/import-export.ts b/QuickShell.Raycast/src/lib/import-export.ts index e284f1ab..b9845d02 100644 --- a/QuickShell.Raycast/src/lib/import-export.ts +++ b/QuickShell.Raycast/src/lib/import-export.ts @@ -1,7 +1,7 @@ import { createStableId, isStableWorkspaceId } from "./ids"; import { migrateStoredData } from "./migration"; import type { LayoutEntry, StoredData, Workspace } from "./schema"; -import { createEmptyStoredData } from "./schema"; +import { SCHEMA_VERSION, createEmptyStoredData } from "./schema"; import { createIngressSecurity } from "./security"; type UnknownRecord = Record; @@ -80,6 +80,9 @@ export function importParsedPayload(parsed: unknown, existing?: StoredData): Imp // CmdPal / Core layout envelope: { version, entries: [ shortcut | { Workspace } | separator ] } if (Array.isArray(record.entries)) { + if (typeof record.version === "number" && record.version > SCHEMA_VERSION) { + throw new Error(`Unsupported Quick Shell data version: ${record.version}`); + } return importCmdPalLayoutEnvelope(record.entries, existing); } @@ -213,7 +216,7 @@ function mergeImportedData(imported: StoredData, existing?: StoredData): ImportR ...(base.layoutEntries ?? []), // Prefer remapped imported layout (keeps CmdPal separators). Fall back to // appending workspace rows when the payload had no layout entries. - ...(remappedImportLayout.length > 0 + ...(remappedImportLayout.some((entry) => entry.type === "workspace") ? remappedImportLayout : newlyImported.map((workspace) => ({ type: "workspace" as const, workspaceId: workspace.id }))), ]; From a7beaab5cff80cc3c68e279425a78499d396a4af Mon Sep 17 00:00:00 2001 From: "qodo-code-review[bot]" <151058649+qodo-code-review[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 05:42:13 +0000 Subject: [PATCH 3/5] =?UTF-8?q?fix:=202=20findings=20=E2=80=94=20Keep=20la?= =?UTF-8?q?unch=20group=20type=20private;=20Preserve=20inherited=20Mac?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Keep launch group type private - Preserve inherited Mac terminal hosts --- QuickShell.Raycast/src/lib/mac-launch.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/QuickShell.Raycast/src/lib/mac-launch.ts b/QuickShell.Raycast/src/lib/mac-launch.ts index 6f68cbbd..3d1042ae 100644 --- a/QuickShell.Raycast/src/lib/mac-launch.ts +++ b/QuickShell.Raycast/src/lib/mac-launch.ts @@ -10,7 +10,7 @@ export type MacLaunchInvocation = { displayName: string; }; -export type MacLaunchEntryGroup = { +type MacLaunchEntryGroup = { hostId: MacTerminalHostId; entries: LaunchPlanEntry[]; }; @@ -90,9 +90,13 @@ export function groupMacLaunchEntries( const groups: MacLaunchEntryGroup[] = []; const groupIndexByHost = new Map(); + let previousHostId: MacTerminalHostId | undefined; for (const entry of entries) { - const hostId = resolveMacTerminalHostId(entry.launch.terminal, settings); + const hostId = entry.launch.terminal?.trim().toLowerCase() === "same-as-previous" && previousHostId + ? previousHostId + : resolveMacTerminalHostId(entry.launch.terminal, settings); + previousHostId = hostId; const existingIndex = groupIndexByHost.get(hostId); if (existingIndex !== undefined) { groups[existingIndex].entries.push(entry); From 5e35c7b9b597b97cd81f2ee091a0184772d7e354 Mon Sep 17 00:00:00 2001 From: "qodo-code-review[bot]" <151058649+qodo-code-review[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 05:42:17 +0000 Subject: [PATCH 4/5] fix: Propagate unexpected transfer failures --- .../src/lib/workspace-transfer-files.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/QuickShell.Raycast/src/lib/workspace-transfer-files.ts b/QuickShell.Raycast/src/lib/workspace-transfer-files.ts index 9fc2a3fa..de46ef48 100644 --- a/QuickShell.Raycast/src/lib/workspace-transfer-files.ts +++ b/QuickShell.Raycast/src/lib/workspace-transfer-files.ts @@ -109,13 +109,15 @@ async function pickWindowsTransferJsonPath(kind: DialogKind): Promise if (fromStdout) { return fromStdout; } - console.error("macOS transfer dialog script failed:", error); return null; } } From 76d6a0000504174cd30d4bf07d4b0be5dd2389d8 Mon Sep 17 00:00:00 2001 From: "qodo-code-review[bot]" <151058649+qodo-code-review[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 05:42:22 +0000 Subject: [PATCH 5/5] fix: Detach debounced flush from lock context --- QuickShell.Raycast/src/lib/storage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QuickShell.Raycast/src/lib/storage.ts b/QuickShell.Raycast/src/lib/storage.ts index ef999b3a..d0a6e47e 100644 --- a/QuickShell.Raycast/src/lib/storage.ts +++ b/QuickShell.Raycast/src/lib/storage.ts @@ -796,7 +796,7 @@ export class QuickShellStorage { clearTimeout(this.recentWriteTimer); } this.recentWriteTimer = setTimeout(() => { - void this.flushRecentWrites().catch(() => { + void writeLockContext.run(undefined, () => this.flushRecentWrites()).catch(() => { this.recentWriteDirty = true; }); }, RECENT_WRITE_DEBOUNCE_MS);