Skip to content

M6: Desktop endpoints/mounts + project multi-mount#159

Merged
DeadWaveWave merged 30 commits intomainfrom
feat/m6-desktop-endpoints-mounts
Apr 15, 2026
Merged

M6: Desktop endpoints/mounts + project multi-mount#159
DeadWaveWave merged 30 commits intomainfrom
feat/m6-desktop-endpoints-mounts

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?

Adds Desktop Endpoint/Mount management and makes Projects/Spaces mount-aware:

  • Add Endpoint/Mount management entry in Desktop settings and project UI
  • Allow creating a Project with multiple mounts (local + remote), including remote-only
  • Hide directory paths from Project list (show worker label/summary instead)
  • Add Space target mount selection (v1: single target mount)
  • Enable Agent running inside remote mounts (web nodes remain local-only for now)
  • Route core runtime paths (filesystem ops / terminal spawn / agent launch) via mount-aware control surface

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

1. Context & Business Logic

  • Users can register remote endpoints, create mounts (local or remote), and attach mounts to a Project.
  • A Space chooses one target mount (v1). Terminal/Agent in that Space runs against the target mount.
  • Project list no longer surfaces absolute directory paths.

2. State Ownership & Invariants

  • Persistence owner: SQLite workspace state.
  • Invariants:
    • A Space has at most one targetMountId (v1).
    • Terminal/Agent mount routing must be derived from targetMountId (not from UI-only state).
    • When target mount is remote, Agent launch must be routed through the selected endpoint.

3. Verification Plan & Regression Layer

  • pnpm pre-commit (typecheck/lint/format/unit/contract + Playwright E2E) is green.
  • Added E2E seeding to ensure mounts exist when UI queries mount data.

✅ 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

TODO: attach screen recording in PR UI.

…ints-mounts

# Conflicts:
#	tests/e2e/workspace-canvas.helpers.ts
…ints-mounts

# Conflicts:
#	src/app/main/controlSurface/handlers/sessionHandlers.ts
#	src/app/main/index.ts
#	src/app/renderer/i18n/locales/en.ts
#	src/app/renderer/shell/AppShell.tsx
#	src/app/renderer/shell/components/AppShellModals.tsx
#	src/app/renderer/shell/store/useAppStore.ts
#	src/contexts/settings/presentation/renderer/SettingsPanel.tsx
#	src/contexts/workspace/presentation/renderer/components/WorkspaceCanvasInner.tsx
#	src/contexts/workspace/presentation/renderer/components/workspaceCanvas/hooks/useAgentLauncher.ts
#	src/contexts/workspace/presentation/renderer/components/workspaceCanvas/hooks/useAgentNodeLifecycle.ts
#	src/contexts/workspace/presentation/renderer/components/workspaceCanvas/hooks/useInteractions.paneNodeCreation.ts
#	src/contexts/workspace/presentation/renderer/components/workspaceCanvas/hooks/useTaskActions.agentSession.resume.ts
#	src/contexts/workspace/presentation/renderer/components/workspaceCanvas/hooks/useTaskActions.agentSession.run.ts
#	tests/unit/contexts/agentLayoutSync.spec.tsx
#	tests/unit/contexts/agentSettings.spec.ts
@DeadWaveWave DeadWaveWave merged commit 0b9076b into main Apr 15, 2026
7 checks passed
@DeadWaveWave DeadWaveWave deleted the feat/m6-desktop-endpoints-mounts branch April 15, 2026 13:15
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