Skip to content

feat(remote): productize endpoint health and browse flows#227

Merged
DeadWaveWave merged 4 commits intomainfrom
feat/m6post-remote
May 4, 2026
Merged

feat(remote): productize endpoint health and browse flows#227
DeadWaveWave merged 4 commits intomainfrom
feat/m6post-remote

Conversation

@DeadWaveWave
Copy link
Copy Markdown
Owner

💡 Change Scope

  • Small Change: Fast feedback, localized UI/logic, low-risk.
  • Large Change: New feature, cross-boundary logic, runtime-risk (persistence, IPC, lifecycle, recovery).

📝 What Does This PR Do?

This PR productizes the post-M6 remote workflow within a deliberately bounded scope: endpoint UX, topology health, SSH/bootstrap, and remote browse.

It keeps endpoint.list as the durable topology truth, adds runtime-only health/prepare/repair projections for remote endpoints, and unifies the user path across Settings, Add Project, Manage Locations, and Remote Directory Picker into a single mental model:

select endpoint -> inspect health -> browse/select path -> bind location

Key outcomes:

  • add managed SSH endpoint metadata plus runtime tunnel/bootstrap/repair orchestration
  • surface topology health as explicit endpoint overviews with recommended actions instead of hidden side effects
  • make managed SSH the default registration path while keeping manual endpoint registration as the advanced fallback
  • unify remote UI structure and styling across endpoint registration, endpoint settings, project creation, mount management, and remote directory browsing
  • add screenshot-audit coverage for the new remote surfaces and update remote mount E2E coverage after the UI refactor

🏗️ Large Change Spec (Required if "Large Change" is checked)

1. Context & Business Logic

Remote support after M6 still worked like a set of low-level building blocks rather than a coherent product flow. Users needed one stable path for registering a remote target, understanding whether it was ready, repairing/bootstraping it when needed, browsing a remote directory, and binding that directory to a project.

This PR productizes that path while staying inside the agreed scope:

  • endpoint UX
  • topology health
  • SSH/bootstrap
  • remote browse

Managed SSH is the default path. Manual endpoint registration remains available as the advanced path.

2. State Ownership & Invariants

State ownership:

  • durable endpoint topology remains owned by the topology store / endpoint.list
  • runtime tunnel/bootstrap state remains owned by managedSshEndpointRuntime
  • runtime endpoint health / prepare / repair projection remains owned by endpointHealthService
  • renderer windows only consume overview/action results and do not become additional owners of remote truth

Invariants:

  • endpoint.list remains the single durable topology truth; overview.list, prepare, and repair remain runtime projection/action paths.
  • Remote browse / project location flows may prepare an endpoint before browsing, but they do not change terminal attach/geometry/resize semantics.
  • Managed SSH failures must surface as explicit endpoint health states and recommended actions inside the UI rather than through hidden background mutation.

3. Verification Plan & Regression Layer

Lowest meaningful regression layers used here:

  • unit
    • tests/unit/contexts/endpointsSection.spec.tsx
    • tests/unit/contexts/controlSurface.topologyHandlers.spec.ts
  • contract
    • tests/contract/controlSurface/controlSurfaceHttpServer.multiEndpoint.controlPlane.spec.ts
  • e2e
    • tests/e2e/m6.endpoints-mounts.remote-worktree.integration.spec.ts
    • tests/e2e/remote-ui-audit.spec.ts
  • final gate
    • pnpm pre-commit

Final validation used for this PR:

  • pnpm pre-commit fully green
  • test:staged: 23 files / 62 tests passed
  • test:e2e:pre-commit: Playwright 211 passed / 46 skipped

✅ Delivery & Compliance Checklist

  • My code passes the ultimate gatekeeper: pnpm pre-commit is completely green.
  • I have signed the CLA if required (see CLA.md).
  • I have included new tests to lock down the behavior (or explicitly stated why it's untestable).
  • I have strictly adhered to the DEVELOPMENT.md architectural boundaries.
  • I have attached a screenshot or screen recording (if this touches the UI).
  • I have updated the documentation accordingly (if adding a feature or changing a contract).

📸 Screenshots / Visual Evidence

UI visual evidence was captured locally through tests/e2e/remote-ui-audit.spec.ts for:

  • endpoint register dialog (managed/manual)
  • settings endpoints page
  • add-project remote flows
  • remote directory picker
  • manage locations / mount manager

I will upload the screenshots directly in the GitHub PR UI to satisfy the review-material requirement.

@DeadWaveWave DeadWaveWave merged commit 4fd51f5 into main May 4, 2026
8 checks passed
@DeadWaveWave DeadWaveWave deleted the feat/m6post-remote branch May 4, 2026 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant