From ad971747b16a13ba77ef2bb4bd2dc9b6a31d2fa8 Mon Sep 17 00:00:00 2001 From: brennanb2025 Date: Sun, 31 May 2026 23:30:17 -0700 Subject: [PATCH] Refine setup guide completion states Co-authored-by: Orca --- .../feature-wall/AgentCapabilitiesSetupAction.tsx | 10 +++++----- .../feature-wall/FeatureWallSetupChecklist.tsx | 4 ++++ .../feature-wall-setup-progress.test.ts | 14 ++++++++++++++ .../feature-wall/feature-wall-setup-progress.ts | 3 ++- .../setup-guide/use-setup-guide-progress.ts | 5 +++++ 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/renderer/src/components/feature-wall/AgentCapabilitiesSetupAction.tsx b/src/renderer/src/components/feature-wall/AgentCapabilitiesSetupAction.tsx index de000515346..596e7d706c3 100644 --- a/src/renderer/src/components/feature-wall/AgentCapabilitiesSetupAction.tsx +++ b/src/renderer/src/components/feature-wall/AgentCapabilitiesSetupAction.tsx @@ -132,6 +132,11 @@ type AgentCapabilitySlide = { } const AGENT_CAPABILITY_SETUP_ROWS: readonly AgentCapabilitySetupRow[] = [ + { + id: 'orchestration', + title: 'Agent Orchestration', + icon: + }, { id: 'browserUse', title: 'Agent Browser Use', @@ -141,11 +146,6 @@ const AGENT_CAPABILITY_SETUP_ROWS: readonly AgentCapabilitySetupRow[] = [ id: 'computerUse', title: 'Computer Use', icon: - }, - { - id: 'orchestration', - title: 'Agent Orchestration', - icon: } ] diff --git a/src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx b/src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx index 1c4004b291b..936c1c57f5a 100644 --- a/src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx +++ b/src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx @@ -106,6 +106,7 @@ function SelectedStepAction(props: FeatureWallSetupChecklistProps): React.JSX.El if (!activeStep) { return null } + const activeDone = props.progress.stepDone[activeStep.id] if (activeStep.id === 'default-agent') { return } @@ -119,6 +120,9 @@ function SelectedStepAction(props: FeatureWallSetupChecklistProps): React.JSX.El return } if (activeStep.id === 'two-worktrees') { + if (activeDone) { + return null + } return } if (activeStep.id === 'task-sources') { diff --git a/src/renderer/src/components/feature-wall/feature-wall-setup-progress.test.ts b/src/renderer/src/components/feature-wall/feature-wall-setup-progress.test.ts index 153fe1e29da..93863a3eadb 100644 --- a/src/renderer/src/components/feature-wall/feature-wall-setup-progress.test.ts +++ b/src/renderer/src/components/feature-wall/feature-wall-setup-progress.test.ts @@ -265,4 +265,18 @@ describe('getFeatureWallSetupProgress', () => { expect(progress.stepDone['agent-capabilities']).toBe(true) }) + + it('does not block agent capabilities on unavailable Computer Use access', () => { + const progress = getFeatureWallSetupProgress( + makeInput({ + browserUseSkillInstalled: true, + computerUseSkillInstalled: true, + computerUsePermissionsReady: false, + computerUseUnavailable: true, + orchestrationSkillInstalled: true + }) + ) + + expect(progress.stepDone['agent-capabilities']).toBe(true) + }) }) diff --git a/src/renderer/src/components/feature-wall/feature-wall-setup-progress.ts b/src/renderer/src/components/feature-wall/feature-wall-setup-progress.ts index 1164231b770..930aa168905 100644 --- a/src/renderer/src/components/feature-wall/feature-wall-setup-progress.ts +++ b/src/renderer/src/components/feature-wall/feature-wall-setup-progress.ts @@ -18,6 +18,7 @@ export type FeatureWallSetupProgressInput = { browserUseSkillInstalled: boolean computerUseSkillInstalled: boolean computerUsePermissionsReady: boolean + computerUseUnavailable?: boolean orchestrationSkillInstalled: boolean gitRepoCount: number worktreesByRepo: Record @@ -75,7 +76,7 @@ export function getFeatureWallSetupProgress( const agentCapabilitiesDone = input.browserUseSkillInstalled && input.computerUseSkillInstalled && - input.computerUsePermissionsReady && + (input.computerUsePermissionsReady || input.computerUseUnavailable === true) && input.orchestrationSkillInstalled const stepDone: Record = { 'default-agent': diff --git a/src/renderer/src/components/setup-guide/use-setup-guide-progress.ts b/src/renderer/src/components/setup-guide/use-setup-guide-progress.ts index 4169731cef3..1c21ad6788f 100644 --- a/src/renderer/src/components/setup-guide/use-setup-guide-progress.ts +++ b/src/renderer/src/components/setup-guide/use-setup-guide-progress.ts @@ -37,6 +37,7 @@ export function useSetupGuideProgress( const activeRepoId = useAppStore((s) => s.activeRepoId) const [hasSetupScript, setHasSetupScript] = useState(false) const [computerUsePermissionsReady, setComputerUsePermissionsReady] = useState(false) + const [computerUseUnavailable, setComputerUseUnavailable] = useState(false) const { installed: detectedBrowserUseSkillInstalled } = useInstalledAgentSkill( ORCA_CLI_SKILL_NAME, { @@ -117,11 +118,13 @@ export function useSetupGuideProgress( status.helperUnavailableReason === null && status.permissions.every((permission) => permission.status !== 'not-granted') ) + setComputerUseUnavailable(status?.helperUnavailableReason !== null) }, []) useEffect(() => { if (!shouldRefreshCoreState || !computerUseSkillInstalled) { setComputerUsePermissionsReady(false) + setComputerUseUnavailable(false) return } let stale = false @@ -163,6 +166,7 @@ export function useSetupGuideProgress( browserUseSkillInstalled: browserUseSkillInstalled || detectedBrowserUseSkillInstalled, computerUseSkillInstalled, computerUsePermissionsReady, + computerUseUnavailable, orchestrationSkillInstalled: orchestrationSkillInstalled || detectedOrchestrationSkillInstalled, gitRepoCount, @@ -173,6 +177,7 @@ export function useSetupGuideProgress( }), [ browserUseSkillInstalled, + computerUseUnavailable, computerUsePermissionsReady, computerUseSkillInstalled, detectedBrowserUseSkillInstalled,