Skip to content

fix(#136 sub-3): cdp_dismiss_dev_client_picker + Android deep-link auto-dismiss#196

Merged
Lykhoyda merged 9 commits into
mainfrom
feat/gh-136-devclient-picker-dismiss
May 31, 2026
Merged

fix(#136 sub-3): cdp_dismiss_dev_client_picker + Android deep-link auto-dismiss#196
Lykhoyda merged 9 commits into
mainfrom
feat/gh-136-devclient-picker-dismiss

Conversation

@Lykhoyda

Copy link
Copy Markdown
Owner

What & why

Completes the last open piece of #136sub-3: on-demand Dev Client picker dismissal. (sub-1 shipped in #174, sub-2 in #187.)

The Expo Dev Client "Development servers" picker is a native expo-dev-menu screen that blocks the JS bundle after deep links / restarts / clearState. The dismissal logic already existed internally (handleDevClientPicker()) but was unreachable on demand and lacked an MCP surface.

Changes

  • New MCP tool cdp_dismiss_dev_client_picker (tool count 75 → 76) — wraps the existing Android handleDevClientPicker() via a single guarded seam clearDevClientPickerIfPresent(platform?).
  • iOS is guarded: returns an actionable "select the Metro server manually" message without calling the Android agent-device find path (which would respawn the legacy AgentDeviceRunner and fight rn-fast-runner — D1219). The load-bearing test asserts runAgentDevice is never called on iOS.
  • device_deeplink now best-effort dismisses the picker after a successful Android deep link (meta.pickerDismissed / pickerChecked); never fails the deeplink; iOS and session-less paths are no-ops.
  • Result envelope mapping: okResult / warnResult / typed failResult('DEV_CLIENT_PICKER_NO_SESSION'), each with meta.timings_ms.

Scope decisions (from brainstorm)

Tests

  • New test/unit/gh-136-dismiss-picker-tool.test.js (11 cases: iOS guard, 4 result mappings, annotatePicker).
  • Full unit suite: 1631/1631 passing, 0 regressions.

Release

  • Changeset added (rn-dev-agent-plugin + rn-dev-agent-cdp, patch). Run npm run version-packages at merge to cut the installable bump (0.44.45 → 0.44.46; also consumes the two already-pending changesets).
  • dist/ recompiled and committed (the plugin ships dist/).

Design: docs/superpowers/specs/2026-05-31-devclient-picker-dismiss-sub3-design.md · Plan: docs/superpowers/plans/2026-05-31-devclient-picker-dismiss-sub3.md

Closes #136

🤖 Generated with Claude Code

Lykhoyda and others added 9 commits May 31, 2026 19:25
…iring (sub-3)

Approach B: cdp_dismiss_dev_client_picker MCP tool (Android-as-is) + iOS guard
+ best-effort device_deeplink dismissal, routed through one shared helper.
Sub-1/sub-2 already shipped (#174/#187); this covers the remaining sub-3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Wraps the unchanged Android handleDevClientPicker(); iOS short-circuits
with an actionable message and never touches the legacy agent-device path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…links (sub-3)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…5->76 (sub-3)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Lykhoyda Lykhoyda merged commit c4804dc into main May 31, 2026
9 checks passed
@Lykhoyda Lykhoyda mentioned this pull request May 31, 2026
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.

Multi-device routing + dev-client picker hangs (combined session feedback)

1 participant