diff --git a/packages/app/e2e/file-explorer-collapse.spec.ts b/packages/app/e2e/file-explorer-collapse.spec.ts index 97fcd9e30..67ed4cc3a 100644 --- a/packages/app/e2e/file-explorer-collapse.spec.ts +++ b/packages/app/e2e/file-explorer-collapse.spec.ts @@ -31,7 +31,7 @@ test.beforeAll(async () => { if (!result.workspace) { throw new Error(result.error ?? "Failed to seed workspace"); } - workspaceId = String(result.workspace.id); + workspaceId = result.workspace.id; }); test.afterAll(async () => { diff --git a/packages/app/e2e/helpers/workspace-setup.ts b/packages/app/e2e/helpers/workspace-setup.ts index d821057bb..f542c1534 100644 --- a/packages/app/e2e/helpers/workspace-setup.ts +++ b/packages/app/e2e/helpers/workspace-setup.ts @@ -265,7 +265,7 @@ export async function createWorkspaceThroughDaemon( throw new Error(result.error ?? `Failed to create workspace for ${input.cwd}`); } return { - id: String(result.workspace.id), + id: result.workspace.id, name: result.workspace.name, }; } @@ -291,7 +291,7 @@ export async function findWorktreeWorkspaceForProject( throw new Error(`Failed to find created worktree workspace for ${repoPath}`); } return { - id: String(workspace.id), + id: workspace.id, name: workspace.name, projectRootPath: workspace.projectRootPath, workspaceDirectory: workspace.workspaceDirectory, @@ -308,7 +308,7 @@ export async function fetchWorkspaceById( projectRootPath: string; }> { const payload = await client.fetchWorkspaces(); - const workspace = payload.entries.find((entry) => String(entry.id) === workspaceId) ?? null; + const workspace = payload.entries.find((entry) => entry.id === workspaceId) ?? null; if (!workspace) { throw new Error(`Workspace not found: ${workspaceId}`); } diff --git a/packages/app/e2e/launcher-tab.spec.ts b/packages/app/e2e/launcher-tab.spec.ts index 84b839350..35cdce0e9 100644 --- a/packages/app/e2e/launcher-tab.spec.ts +++ b/packages/app/e2e/launcher-tab.spec.ts @@ -32,7 +32,7 @@ test.beforeAll(async () => { seedClient = await connectTerminalClient(); const result = await seedClient.openProject(tempRepo.path); if (!result.workspace) throw new Error(result.error ?? "Failed to seed workspace"); - workspaceId = String(result.workspace.id); + workspaceId = result.workspace.id; }); test.afterAll(async () => { diff --git a/packages/app/e2e/sidebar-workspace.spec.ts b/packages/app/e2e/sidebar-workspace.spec.ts index 19fbce129..a4e2a2509 100644 --- a/packages/app/e2e/sidebar-workspace.spec.ts +++ b/packages/app/e2e/sidebar-workspace.spec.ts @@ -52,7 +52,7 @@ async function openProjectViaDaemon( throw new Error(result.error ?? `Failed to open project ${cwd}`); } return { - id: String(result.workspace.id), + id: result.workspace.id, name: result.workspace.name, }; } diff --git a/packages/app/e2e/workspace-cwd.spec.ts b/packages/app/e2e/workspace-cwd.spec.ts index 5090e18ae..9c3703bf1 100644 --- a/packages/app/e2e/workspace-cwd.spec.ts +++ b/packages/app/e2e/workspace-cwd.spec.ts @@ -45,7 +45,7 @@ test.describe("Workspace cwd correctness", () => { if (!workspaceResult.workspace) { throw new Error(workspaceResult.error ?? `Failed to open project ${repo.path}`); } - const workspaceId = String(workspaceResult.workspace.id); + const workspaceId = workspaceResult.workspace.id; // Use sidebar navigation to avoid Expo Router hydration issues await openHomeWithProject(page, repo.path); @@ -95,7 +95,7 @@ test.describe("Workspace cwd correctness", () => { if (!workspaceResult.workspace) { throw new Error(workspaceResult.error ?? `Failed to open project ${worktreePath}`); } - const workspaceId = String(workspaceResult.workspace.id); + const workspaceId = workspaceResult.workspace.id; // Use sidebar navigation to avoid Expo Router hydration issues // with direct URL navigation to the 2nd+ workspace. diff --git a/packages/app/e2e/workspace-lifecycle.spec.ts b/packages/app/e2e/workspace-lifecycle.spec.ts index ce2591199..8aba73fad 100644 --- a/packages/app/e2e/workspace-lifecycle.spec.ts +++ b/packages/app/e2e/workspace-lifecycle.spec.ts @@ -54,7 +54,7 @@ test.describe("Workspace lifecycle", () => { if (!workspaceResult.workspace) { throw new Error(workspaceResult.error ?? `Failed to open project ${repo.path}`); } - const workspaceId = String(workspaceResult.workspace.id); + const workspaceId = workspaceResult.workspace.id; await openHomeWithProject(page, repo.path); await navigateToWorkspaceViaSidebar(page, workspaceId); @@ -77,7 +77,7 @@ test.describe("Workspace lifecycle", () => { if (!workspaceResult.workspace) { throw new Error(workspaceResult.error ?? `Failed to open project ${repo.path}`); } - const workspaceId = String(workspaceResult.workspace.id); + const workspaceId = workspaceResult.workspace.id; await openHomeWithProject(page, repo.path); await navigateToWorkspaceViaSidebar(page, workspaceId); @@ -120,7 +120,7 @@ test.describe("Workspace lifecycle", () => { if (!workspaceResult.workspace) { throw new Error(workspaceResult.error ?? `Failed to open project ${worktreePath}`); } - const workspaceId = String(workspaceResult.workspace.id); + const workspaceId = workspaceResult.workspace.id; await openHomeWithProject(page, repo.path); await navigateToWorkspaceViaSidebar(page, workspaceId); @@ -170,7 +170,7 @@ test.describe("Workspace lifecycle", () => { if (!workspaceResult.workspace) { throw new Error(workspaceResult.error ?? `Failed to open project ${worktreePath}`); } - const workspaceId = String(workspaceResult.workspace.id); + const workspaceId = workspaceResult.workspace.id; await openHomeWithProject(page, repo.path); await navigateToWorkspaceViaSidebar(page, workspaceId); diff --git a/packages/app/e2e/workspace-setup-runtime.spec.ts b/packages/app/e2e/workspace-setup-runtime.spec.ts index 3315f6f5a..41f0e34ab 100644 --- a/packages/app/e2e/workspace-setup-runtime.spec.ts +++ b/packages/app/e2e/workspace-setup-runtime.spec.ts @@ -42,7 +42,7 @@ test.describe("Workspace setup runtime authority", () => { cwd: repo.path, worktreeSlug: `setup-chat-${Date.now()}`, }); - const workspaceId = String(workspace.id); + const workspaceId = workspace.id; const wsInfo = await findWorktreeWorkspaceForProject(client, repo.path); expect(wsInfo.workspaceDirectory).not.toBe(repo.path); @@ -78,7 +78,7 @@ test.describe("Workspace setup runtime authority", () => { throw new Error(result.error ?? "Failed to create workspace"); } const workspaceDir = result.workspace.workspaceDirectory; - const workspaceId = String(result.workspace.id); + const workspaceId = result.workspace.id; // Navigate to the worktree workspace via sidebar click (direct URL // navigation for freshly created worktree workspaces can race with diff --git a/packages/app/e2e/workspace-setup-streaming.spec.ts b/packages/app/e2e/workspace-setup-streaming.spec.ts index 8eb895b03..24ddd71c6 100644 --- a/packages/app/e2e/workspace-setup-streaming.spec.ts +++ b/packages/app/e2e/workspace-setup-streaming.spec.ts @@ -337,7 +337,7 @@ test.describe("Workspace setup streaming", () => { throw new Error(result.error ?? "Failed to create workspace"); } const workspaceDir = result.workspace.workspaceDirectory; - const workspaceId = String(result.workspace.id); + const workspaceId = result.workspace.id; await completed; diff --git a/packages/app/src/components/ui/combobox.tsx b/packages/app/src/components/ui/combobox.tsx index 06ba818f1..f5f042009 100644 --- a/packages/app/src/components/ui/combobox.tsx +++ b/packages/app/src/components/ui/combobox.tsx @@ -228,8 +228,7 @@ export function ComboboxItem({ const itemPressableStyle = useCallback( ({ pressed, hovered = false }: PressableStateCallbackType & { hovered?: boolean }) => [ styles.comboboxItem, - Boolean(hovered) && - (elevated ? styles.comboboxItemHoveredElevated : styles.comboboxItemHovered), + hovered && (elevated ? styles.comboboxItemHoveredElevated : styles.comboboxItemHovered), pressed && (elevated ? styles.comboboxItemPressedElevated : styles.comboboxItemPressed), active && styles.comboboxItemActive, disabled && styles.comboboxItemDisabled, diff --git a/packages/app/src/components/ui/dropdown-menu.tsx b/packages/app/src/components/ui/dropdown-menu.tsx index eb2288d08..64942832a 100644 --- a/packages/app/src/components/ui/dropdown-menu.tsx +++ b/packages/app/src/components/ui/dropdown-menu.tsx @@ -86,7 +86,7 @@ function useControllableOpenState({ }): [boolean, (next: boolean) => void] { const [internalOpen, setInternalOpen] = useState(Boolean(defaultOpen)); const isControlled = typeof open === "boolean"; - const value = isControlled ? Boolean(open) : internalOpen; + const value = isControlled ? open : internalOpen; const setValue = useCallback( (next: boolean) => { if (!isControlled) setInternalOpen(next); @@ -748,12 +748,12 @@ export function DropdownMenuItem({ return [ styles.item, selectedStyle, - selected && (Boolean(hovered) || pressed) && selectedVariant !== "accent" + selected && (hovered || pressed) && selectedVariant !== "accent" ? styles.itemSelectedInteractive : null, isDisabled ? styles.itemDisabled : null, muted && !isDisabled ? styles.itemMuted : null, - Boolean(hovered) && !pressed && !isDisabled ? styles.itemHovered : null, + hovered && !pressed && !isDisabled ? styles.itemHovered : null, pressed && !isDisabled ? styles.itemPressed : null, ]; }, diff --git a/packages/app/src/components/ui/tooltip.tsx b/packages/app/src/components/ui/tooltip.tsx index df841e3f9..c47506d83 100644 --- a/packages/app/src/components/ui/tooltip.tsx +++ b/packages/app/src/components/ui/tooltip.tsx @@ -113,7 +113,7 @@ function useControllableOpenState({ }): [boolean, (next: boolean) => void] { const [internalOpen, setInternalOpen] = useState(Boolean(defaultOpen)); const isControlled = typeof open === "boolean"; - const value = isControlled ? Boolean(open) : internalOpen; + const value = isControlled ? open : internalOpen; const setValue = useCallback( (next: boolean) => { if (!isControlled) setInternalOpen(next); diff --git a/packages/app/src/polyfills/crypto.ts b/packages/app/src/polyfills/crypto.ts index c214cc2e1..15f3c89b9 100644 --- a/packages/app/src/polyfills/crypto.ts +++ b/packages/app/src/polyfills/crypto.ts @@ -21,7 +21,7 @@ export function polyfillCrypto(): void { if (typeof g.TextEncoder !== "function") { class BufferTextEncoder { encode(input = ""): Uint8Array { - return Uint8Array.from(Buffer.from(String(input), "utf8")); + return Uint8Array.from(Buffer.from(input, "utf8")); } } g.TextEncoder = BufferTextEncoder as unknown as typeof TextEncoder; diff --git a/packages/app/src/stores/session-store.ts b/packages/app/src/stores/session-store.ts index 1f35e9871..fdffe15e3 100644 --- a/packages/app/src/stores/session-store.ts +++ b/packages/app/src/stores/session-store.ts @@ -130,8 +130,8 @@ export function normalizeWorkspaceDescriptor( payload: WorkspaceDescriptorPayload, ): WorkspaceDescriptor { return { - id: normalizeWorkspaceOpaqueId(String(payload.id)) ?? String(payload.id), - projectId: String(payload.projectId), + id: normalizeWorkspaceOpaqueId(payload.id) ?? payload.id, + projectId: payload.projectId, projectDisplayName: payload.projectDisplayName, projectRootPath: payload.projectRootPath, workspaceDirectory: payload.workspaceDirectory, diff --git a/packages/app/src/types/stream.ts b/packages/app/src/types/stream.ts index c8439e720..f1f9ce83a 100644 --- a/packages/app/src/types/stream.ts +++ b/packages/app/src/types/stream.ts @@ -514,7 +514,7 @@ function appendTodoList( ): StreamItem[] { const normalizedItems = items.map((item) => ({ text: item.text, - completed: Boolean(item.completed), + completed: item.completed, })); const lastItem = state[state.length - 1]; @@ -658,7 +658,7 @@ function reduceTimelineEvent( } const items: TodoEntry[] = (item.items ?? []).map((todo) => ({ text: todo.text, - completed: Boolean(todo.completed), + completed: todo.completed, })); return finalizeActiveThoughts(appendTodoList(state, event.provider, items, timestamp)); }