+ {/* Every card as if hovered: the trash only shows on the card under the pointer. */}
+
+
+ {worktrees.map((worktree) => (
+
+ ))}
+
+
+ )
+})
diff --git a/src/renderer/src/components/sidebar/workspace-card/surface/worktree-card-option-delete-cloud.test.tsx b/src/renderer/src/components/sidebar/workspace-card/surface/worktree-card-option-delete-cloud.test.tsx
new file mode 100644
index 00000000000..41f1559d5f6
--- /dev/null
+++ b/src/renderer/src/components/sidebar/workspace-card/surface/worktree-card-option-delete-cloud.test.tsx
@@ -0,0 +1,123 @@
+// @vitest-environment happy-dom
+// OPTION-TRASH-CLOUD: holding Option shows the trash on a cloud workspace's own row (owned or
+// paired), the live card's DeleteQuickAction, and it opens the cloud delete (sandbox), never the
+// local "Remove Project". A local repo's primary checkout still gets no trash.
+import { act, cleanup, fireEvent, render } from '@testing-library/react'
+import { afterEach, describe, expect, it, vi } from 'vitest'
+import { useAppStore } from '@/store'
+import { TooltipProvider } from '@/components/ui/tooltip'
+import { seedCloudWorkspaceSnapshot } from '@/lib/orca-cloud/orca-cloud-workspace-store'
+import { makeRepo, makeWorktree } from '../../../worktree-jump/worktree-jump-palette-test-fixtures'
+import { canShowWorkspaceDeleteQuickAction } from '../../workspace-actions/deletion/workspace-delete-quick-action'
+import WorktreeCard from './WorktreeCard'
+
+const mocks = vi.hoisted(() => ({ cloudDelete: vi.fn() }))
+vi.mock('@/lib/orca-cloud/cloud-primary-delete-request', () => ({
+ requestCloudPrimaryDelete: mocks.cloudDelete
+}))
+vi.mock('@/components/sidebar/workspace-actions/sleep/use-worktree-sleep-state', () => ({
+ useIsSleepingWorktree: () => false,
+ selectIsSleepingWorktree: () => false
+}))
+vi.mock('@/components/sidebar/workspace-card/activity/use-worktree-activity-status', () => ({
+ useWorktreeActivityStatus: () => 'inactive'
+}))
+
+const repo = makeRepo()
+const ownedCloud = makeWorktree('cloud-owned', 'Owned cloud', { isMainWorktree: true })
+const pairedCloud = makeWorktree('cloud-paired', 'Paired cloud', {
+ isMainWorktree: true,
+ hostId: 'runtime:env-paired'
+})
+const localPrimary = makeWorktree('local-main', 'Local primary', { isMainWorktree: true })
+const localWorktree = makeWorktree('local-wt', 'Local worktree')
+
+function seed(): void {
+ act(() => {
+ useAppStore.setState({
+ repos: [repo],
+ worktreesByRepo: { [repo.id]: [ownedCloud, pairedCloud, localPrimary, localWorktree] },
+ // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the cloud row check reads only id and orcaCloudPaired.
+ runtimeEnvironments: [
+ { id: 'env-paired', name: 'web (cloud)', orcaCloudPaired: true }
+ ] as never
+ })
+ seedCloudWorkspaceSnapshot({ ids: new Set(['cloud-owned']), idsLoaded: true })
+ })
+}
+
+function card(worktree: ReturnType