diff --git a/notes/host-context-implementation-checklist.md b/notes/host-context-implementation-checklist.md index d8fda388ef5..027b2519191 100644 --- a/notes/host-context-implementation-checklist.md +++ b/notes/host-context-implementation-checklist.md @@ -275,3 +275,4 @@ Done means: reviewers and future agents can understand the vision, implementatio - [x] 2026-06-13: Replaced the generic remote-server Automation manual-run block with explicit checking, disconnected/unreachable, graph-not-ready, and update-required disabled states derived from saved runtime status before the current unsupported manual-run fallback. Verified with focused automation availability tests, targeted oxlint, and full `pnpm run typecheck`. - [x] 2026-06-13: Guarded backend automation ownership for runtime-host repos: newly saved/updated runtime-owned automations now record `remote_host_service`, and main-process dispatch resolution skips runtime targets before desktop renderer dispatch until durable remote scheduling exists. Verified with persistence and automation service regressions, targeted oxlint, and full `pnpm run typecheck`. - [x] 2026-06-13: Preserved exact GitLab provider identity for item-specific Tasks flows by threading `GitLabWorkItem.projectRef` into the task source context used for detail pages and Start Workspace handoff. Verified with TaskPage source-boundary regression, targeted oxlint, and full `pnpm run typecheck`. +- [x] 2026-06-13: Removed the redundant locked SSH target row from the Add Project remote-path step after the host has already been selected, while preserving a compact reconnect action for disconnected locked hosts. Fresh Electron validation connected a Docker SSH target through Orca's relay IPC, added `/home/orca/host-context-e2e-local` via Add Project, and created a remote SSH worktree at `/home/orca/goldfish`; screenshots were added to the dark-background report. Verified with focused Add Project tests, targeted oxlint, and remote filesystem checks. diff --git a/notes/multihost-remote-verification-report.html b/notes/multihost-remote-verification-report.html index 76635a270ab..2d184beb5be 100644 --- a/notes/multihost-remote-verification-report.html +++ b/notes/multihost-remote-verification-report.html @@ -113,6 +113,11 @@ Add Project host selection now keeps disconnected SSH hosts visible but disabled, and falls back to Local Mac instead of selecting a host that cannot be used. +
  • + The locked SSH Add Project path screen no longer shows a redundant + SSH target row or button-like host field after the host was already + selected on the previous step. +
  • @@ -168,6 +173,16 @@ selected. Restored the SSH status to connected afterward so the app is ready for manual inspection. +
  • + Fresh-profile validation on 2026-06-13 connected a Docker SSH target through Orca's + real ssh.connect IPC/relay path, then added + /home/orca/host-context-e2e-local through the visible Add Project SSH flow. +
  • +
  • + From that SSH project, created a new SSH worktree. The remote filesystem contains + /home/orca/goldfish as a Git worktree on branch goldfish, + and Orca activated repo-id::/home/orca/goldfish. +
  • @@ -191,6 +206,16 @@ branch-routing tests, shared host-model tests, and another full pnpm run typecheck pass. +
  • + Focused locked-SSH Add Project regression test passed: + src/renderer/src/components/sidebar/AddRepoDialogStepContent.test.tsx, + 9 tests. +
  • +
  • + Targeted lint passed for + AddRepoRemoteStep.tsx and + AddRepoDialogStepContent.test.tsx. +
  • Docker/SSH verification intentionally used throwaway paths under /home/orca and an isolated Orca profile; evidence images are uncommitted. @@ -272,6 +297,18 @@ Automations SSH source unavailable
    Automations distinguishes a connected SSH host from an unavailable remote automation source.
    +
    + Fresh profile with SSH connected +
    Fresh profile after connecting the Docker SSH target through Orca's SSH relay path.
    +
    +
    + SSH project added through Add Project +
    Visible Add Project SSH flow added the remote Git repository and activated the primary workspace.
    +
    +
    + SSH worktree created +
    New Worktree from the SSH project created and activated a remote SSH worktree.
    +
    diff --git a/src/renderer/src/components/sidebar/AddRepoDialogStepContent.test.tsx b/src/renderer/src/components/sidebar/AddRepoDialogStepContent.test.tsx index 3240130da49..f120c8756cf 100644 --- a/src/renderer/src/components/sidebar/AddRepoDialogStepContent.test.tsx +++ b/src/renderer/src/components/sidebar/AddRepoDialogStepContent.test.tsx @@ -211,7 +211,7 @@ describe('AddRepoDialogStepContent nested imports', () => { expect(html).toContain('Open project on SSH host') expect(html).toContain('openclaw 2') expect(html).toContain('Host path') - expect(html).toContain('SSH target') + expect(html).not.toContain('SSH target') expect(html).not.toContain('github.com') expect(html).not.toContain('Connect') }) @@ -239,7 +239,9 @@ describe('AddRepoDialogStepContent nested imports', () => { }) expect(html).toContain('openclaw 2') + expect(html).toContain('is disconnected') expect(html).toContain('Connect') + expect(html).not.toContain('SSH target') expect(html).toContain('placeholder="/home/user/project"') expect(html).toContain('disabled=""') }) diff --git a/src/renderer/src/components/sidebar/AddRepoRemoteStep.tsx b/src/renderer/src/components/sidebar/AddRepoRemoteStep.tsx index a5fdf9ffc7d..e8e5f816769 100644 --- a/src/renderer/src/components/sidebar/AddRepoRemoteStep.tsx +++ b/src/renderer/src/components/sidebar/AddRepoRemoteStep.tsx @@ -143,17 +143,23 @@ export function RemoteStep({ )} - ) : selectedTarget ? ( -
    - - undefined} - onConnect={onConnectTarget} - /> + ) : selectedTarget && !selectedTargetConnected ? ( +
    +

    + {translate( + 'auto.components.sidebar.AddRepoRemoteStep.lockedDisconnected', + '{{value0}} is disconnected.', + { value0: selectedTargetLabel ?? 'This SSH host' } + )} +

    +
    ) : null}