Skip to content

Media upload for callstackincubator/codex-mobile-dev-plugin T3 Code PR (do not merge) - #1

Closed
thiagobrez wants to merge 5 commits into
mainfrom
feat/t3-code
Closed

thiagobrez wants to merge 5 commits into
mainfrom
feat/t3-code

Conversation

@thiagobrez

Copy link
Copy Markdown
Owner

Why

T3 Code runs Claude Code and Codex and renders MCP Apps in the chat. Claude threads already work, because the agent opens Mobile Dev's browser page in T3 Code's Browser. Codex threads did not. T3 Code asks the user to confirm every app tool call that is not read-only, so the inline panel prompts on each device-list poll and on each tap. The panel raised 57 prompts in about a minute before any input. T3 Code's Codex advertises the same MCP Apps support as Codex desktop, so the server cannot tell the two hosts apart.

What changed

  • MOBILE_DEV_PANEL=browser gives the Codex and shared servers the browser panel that Claude's server uses. Codex's .mcp.json forwards the variable, and T3 Code users set it on their Codex provider. Defaults stay the same. An unknown value logs a warning.
  • The browser link's instructions and the skills tell agents to open the page with the host's own preview tool, to keep the tab open, and to drive devices with Mobile Dev's own device_* tools.
  • Two fixes that the T3 Code pass found. Claude's server ran Baguette from beside the server instead of from the downloaded panel runtime, so Logs could not follow the foreground app and Performance found no app. Cards also offered Open in Mobile Dev where mobile_open_performance_recording is not registered.

Scope

  • The README, CONTRIBUTING, website, architecture, and telemetry docs now cover T3 Code.
  • This PR leaves out T3 Code's own confirm policy, a T3 profile in the host regression tests, and a telemetry attribute for the placement.

Tradeoffs

  • Marking the panel's tools read-only would silence T3 Code's prompts, but taps and stream sessions change the device, so the annotations stay honest.
  • Detecting T3 Code by name breaks the repository's capability rule, and its capabilities match Codex desktop.

Blast Radius

With the variable unset, each server registers the same tools as main. Claude's cards lose an Open in Mobile Dev action that never worked there, and Claude's server now finds the foreground app through its downloaded Baguette.

Verification

  • T3 Code desktop dev build at pingdotgg/t3code 337c5858c3, iOS 27 simulator. Claude Haiku 5.5 and Codex GPT-6-Astra threads opened the panel with preview_open, docked it, and drove the test app. Claude recorded CPU and memory into an inline card. A feature pass covered input, the device picker, app tools, device settings, logs, storage, App Flow, TraceSift detection, panel context, and an Android H.264 stream.
  • npm test (1238 pass, 1 opt-in skip), npm run test:package (now also checks the browser placement), npm run test:claude, and npm run check:mcp-budget (108 tools, unchanged).
  • Open from the T3 Code pass: a test push failed because the test app does not request notifications, Android taps registered as long presses on a heavily loaded Mac, an Android boot error rendered as a 1 px notice, and Fix in chat is disabled in browser panels because the page has no chat message bridge.

Media

Codex thread in T3 Code, before and after MOBILE_DEV_PANEL=browser:

Before: inline panel, T3 Code asks to confirm each call After: browser panel beside the chat
Before: T3 Code asks to confirm mobile_list_simulators After: Codex thread with Mobile Dev docked beside the chat

Claude thread in T3 Code with the docked panel and a CPU and memory recording card:

Claude thread with Mobile Dev docked and a recording card in the chat

Before: Codex inline panel, where the prompt returns after every Confirm:

before-codex-inline-prompts.mp4

After: Codex opens the browser panel with preview_open, then it is docked (2× speed):

after-codex-browser-panel.mp4

Claude thread: open, dock, tap in the app, and Logs:

claude-open-tap-logs.mp4

Claude thread: CPU and memory recording into an inline card (2× speed):

claude-panel-and-recording.mp4

🤖 Generated with Claude Code

thiagobrez and others added 5 commits November 5, 2026 12:08
Cards marked themselves data-workspace whenever the server had a panel,
but only an inline panel registers mobile_open_performance_recording. A
browser panel, as Claude's server uses, gave cards an Open in Mobile Dev
action that asked the agent to call a tool that does not exist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…'s Baguette

foregroundSimulatorPid ran Baguette from beside the server, but Claude's
package downloads Baguette into the panel runtime instead. Its check
failed, and the error blamed the selected Xcode, so Logs could not follow
the foreground app and Performance found no app in Claude Code and Claude
Desktop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
T3 Code renders MCP Apps in the chat but asks the user to confirm every
app tool call that is not read-only, so the inline panel prompts on each
frame poll and tap. Its Codex advertises the same MCP Apps support as
Codex desktop, so the server cannot tell the hosts apart.

MOBILE_DEV_PANEL=browser gives the Codex and shared servers the same panel
as Claude's server. The opening tools carry no ui.resourceUri and return a
loopback browser page instead. Codex's manifest forwards the variable.
Defaults are unchanged, an unknown value logs a warning, and the package
smoke checks both placements.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agents in T3 Code left the panel's link in the chat or tried a
computer-use tool. Tell them to open the page with the host's own browser
or preview tool, to keep the tab open, to treat a floating preview as
shown, and to drive Mobile Dev's devices with its own device_* tools. The
Claude skill names T3 Code's preview_open and its separate Device panel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
T3 Code runs the Claude Code and Codex plugins. Claude threads work as
they are. Codex threads need MOBILE_DEV_PANEL=browser on T3 Code's Codex
instance.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@thiagobrez

Copy link
Copy Markdown
Owner Author

Used only to host media for callstackincubator#89. Closing; keep the branch.

@thiagobrez thiagobrez closed this Nov 5, 2026
@thiagobrez

Copy link
Copy Markdown
Owner Author

Re-cut media for callstackincubator#89, without the test driver's light-mode flashes.

before-codex-inline-prompt

before-codex-inline-prompts.mp4
after-codex-browser-panel.mp4
claude-open-tap-logs.mp4
claude-panel-and-recording.mp4

@thiagobrez

Copy link
Copy Markdown
Owner Author

Install picker screenshot for callstackincubator#89.

website-install-picker-t3

@thiagobrez

Copy link
Copy Markdown
Owner Author

Codex desktop regression screenshots for callstackincubator#89.

codex-desktop-sidebar-panel

codex-desktop-open-recording

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