Skip to content

Fix cross-repo inbound deeplinks and iOS HTTPS send-to-Mac#383

Draft
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/critical-correctness-bugs-13a3
Draft

Fix cross-repo inbound deeplinks and iOS HTTPS send-to-Mac#383
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/critical-correctness-bugs-13a3

Conversation

@cursor
Copy link
Copy Markdown
Contributor

@cursor cursor Bot commented May 28, 2026

Bug and impact

Wrong-project lane creation from inbound branch/PR deeplinks

When multiple projects are open, OS-routed deeplinks (ade:// / second-instance) dispatch to the focused window. InboundDeeplinkModal can create a lane from a PR in repo A while the active project’s origin points at repo B. If the wrong checkout has a colliding branch name on origin, preflight could pass and import the wrong branch into the wrong workspace.

iOS “Send to Mac” broken for HTTPS open links

iOS forwards both ade:// and https://ade.app/open?... URLs, but deeplinks.open rejected non-ade: protocols. Users saw “Sent” on iOS while desktop never navigated.

Local runtime stale connection after child exit

When an app-owned ade serve child exited without a socket disconnect callback, activeClient and projectsByRoot were left populated while connection was cleared, so status could read “connected” while RPC failed.

Root cause

  • createLaneFromPrBranch preflight fetched PR metadata for the deeplink repo but ran git checks against the active projectRoot without verifying the project’s GitHub remote matched.
  • syncRemoteCommandService used a raw URL.protocol === "ade:" gate instead of shared parseDeeplink (which already accepts HTTPS open URLs).
  • localRuntimeConnectionPool child exit handler only nulled connection.

Fix and validation

  • Block preflight with new project_repo_mismatch when getRepoOrThrow() disagrees with explicit deeplink repo args.
  • Validate deeplinks.open URLs via parseDeeplink; pass the original URL through to desktop dispatch.
  • Clear activeClient and projectsByRoot on owned-child exit/error.
  • Tests: prService.createLaneFromPrBranch cross-repo block case; existing pool tests pass.
  • npm run typecheck in apps/desktop and apps/ade-cli.
Open in Web View Automation 

Block createLaneFromPrBranch when the requested GitHub repo does not match
the active project's origin remote, preventing lane imports into the wrong
checkout when a deeplink targets another repository.

Accept https://ade.app/open URLs in sync deeplinks.open (iOS Send to Mac)
by validating with parseDeeplink instead of requiring ade:// only.

Clear local runtime client state when an owned child process exits.

Co-authored-by: Arul Sharma <arul28@users.noreply.github.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 28, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
ade Ignored Ignored May 28, 2026 2:13pm

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