feat(tools)!: Standardize launch arguments#403
Conversation
Add launchArgs to build-and-run tools and use it as the canonical launch-argument parameter for launch-only tools. Keep extraArgs scoped to xcodebuild and build settings so app runtime arguments cannot leak into build commands. BREAKING CHANGE: launch-only tools now use launchArgs instead of args for app launch arguments. Co-Authored-By: Codex <noreply@openai.com>
commit: |
| - Added configurable file artifact text rendering with CLI output defaulting to labeled `Files:` lists, MCP text preserving compact trees, and `filePathRenderStyle` / `XCODEBUILDMCP_FILE_PATH_RENDER_STYLE` / `--file-path-render-style` overrides. | ||
| - Added workspace-scoped default xcresult bundles for simulator, device, and macOS test tools so test artifacts are available in structured and text output even when callers do not pass `-resultBundlePath`. | ||
| - Added opt-in MCP server idle shutdown via `XCODEBUILDMCP_MCP_IDLE_TIMEOUT_MS`, allowing unused MCP server processes to gracefully exit after a configured idle period ([#394](https://github.com/getsentry/XcodeBuildMCP/issues/394)). | ||
| - Added canonical `launchArgs` launch-argument input across build-and-run tools (`build_run_sim`, `build_run_device`, `build_run_macos`) and launch-only tools (`launch_app_sim`, `launch_app_device`, `launch_mac_app`) so runtime launch arguments are passed only to app launch steps; `extraArgs` remains build-system-only and launch-only tools no longer use generic `args`. |
There was a problem hiding this comment.
Breaking removal of args input on launch-only tools not recorded under a Breaking section
The PR title declares a breaking tool contract change (feat(tools)!:) and the entry itself states launch-only tools no longer use generic args, which removes a previously supported input field. The [Unreleased] section only contains Added/Fixed/Changed, while the prior [2.5.0-beta.1] release uses a ### Breaking subsection for analogous tool-contract changes. Release notes generated from this section via scripts/generate-github-release-notes.mjs will not surface this as a breaking change, leaving users unaware that callers passing args to launch_app_sim/launch_app_device/launch_mac_app will break.
Verification
Read CHANGELOG.md lines 1-60 to confirm the [Unreleased] section lacks a ### Breaking subsection and compared against the [2.5.0-beta.1] section which uses ### Breaking for removed tool inputs. Cross-referenced the PR title feat(tools)!: (conventional-commit breaking marker) and the entry text stating launch-only tools no longer use generic args, which is a removal of a previously accepted input.
Identified by Warden xcodebuildmcp-docs-release-review · REY-VM5
There was a problem hiding this comment.
Fix attempt detected (commit 402f423)
The commit added documentation about the breaking change (removal of generic args from launch-only tools) to the Added section at line 10, but failed to create a dedicated ### Breaking subsection in the [Unreleased] section as required to properly surface this as a breaking change in generated release notes.
The original issue appears unresolved. Please review and try again.
Evaluated by Warden
Standardize launch arguments across XcodeBuildMCP tools with a single
launchArgsinput.Build-and-run tools now accept
launchArgsfor app runtime arguments while keepingextraArgsscoped toxcodebuildand build settings. Launch-only tools uselaunchArgsas their canonical launch-argument input instead of the previous genericargsfield, avoiding ambiguity between build-time and app runtime argument surfaces.This is an intentional tool contract change for launch-only tools. The device launch primitive now appends launch arguments after the bundle identifier so they are delivered to the app process rather than the build command.
Docs update: getsentry/xcodebuildmcp.com#14.
Validated with typecheck, focused affected tests, lint, format check, and build.