|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## [Unreleased] |
| 3 | +## [2.0.0] |
4 | 4 |
|
5 | | -### Added |
6 | | -- Added optional `xcode-ide` workflow to proxy Xcode IDE MCP tools via `xcrun mcpbridge`. |
7 | | - |
8 | | -### Changed |
9 | | -- Hide `xcode_tools_bridge_{status,sync,disconnect}` unless `debug: true` is enabled (these are troubleshooting tools). |
10 | | -- Simplified CLI daemon routing: stateless tools now always execute directly, stateful tools route through daemon with auto-start, and dynamic `xcode-ide` bridge tools remain an explicit daemon-backed special-case. |
11 | | -- Removed manifest daemon routing knobs `availability.daemon` and `routing.daemonAffinity`; manifests now use `availability.{mcp,cli}` plus optional `routing.stateful`. |
12 | | -- Removed hidden CLI daemon-routing flags; stateful routing is now automatic and only hidden `--socket` remains for advanced socket override workflows. |
13 | | -- Added daemon idle shutdown in CLI mode: per-workspace daemons now auto-exit after 10 minutes of inactivity when no active stateful sessions exist. |
14 | | -- Inverted idle activity tracking to a generic daemon activity registry so long-running tools report lifecycle activity without hardcoded daemon imports. |
15 | | - |
16 | | -### Fixed |
17 | | -- Fix Xcode IDE state discovery fallback to check parent directories only up to the resolved workspace root boundary when started from a nested working directory without explicit `projectPath`/`workspacePath`. |
18 | | - |
19 | | -## [2.0.0] - 2026-02-02 |
20 | | - |
21 | | -### Breaking |
22 | | - |
23 | | -#### Workflow selection |
| 5 | +### New! CLI |
24 | 6 |
|
25 | | -- By default when the `enabledWorkflows` configuration option or `XCODEBUILDMCP_ENABLED_WORKFLOWS` environment variable is not set or empty, XcodeBuildMCP will default to loading only the `simulator` workflow. This is a change in behaviour; previously it would load all workflows and therefore tools by default. |
| 7 | +XcodeBuildMCP now includes a first-class CLI for direct terminal usage, scripting, and CI workflows. All the same tools available via MCP are accessible from the command line. |
26 | 8 |
|
27 | | -This change reduces the number of tools loaded by default and requires the user to opt in to enable additional sets of tools based on their project or workflow requirements. |
28 | | - |
29 | | -The simulator workflow is the default because it is the most common use case based on opt-in analytics data. |
30 | | - |
31 | | -For more information see the [CONFIGURATION.md](docs/CONFIGURATION.md) documentation. |
32 | | - |
33 | | -- Tool names and descriptions have been made more concise to reduce token consumption. Tool argument names that are self-explanatory have had their descriptions removed entirely. |
| 9 | +```bash |
| 10 | +npm install -g xcodebuildmcp@beta |
| 11 | +xcodebuildmcp tools # List available tools |
| 12 | +xcodebuildmcp simulator build-and-run --scheme MyApp --project-path ./MyApp.xcodeproj |
| 13 | +``` |
34 | 14 |
|
35 | | -#### XcodeBuildMCP is now a first-class CLI |
| 15 | +Stateful operations (log capture, debugging, video recording) are backed by a per-workspace background process that starts automatically and shuts down after idle. See [docs/CLI.md](docs/CLI.md) for full documentation. |
36 | 16 |
|
37 | | -- XcodeBuildMCP now has a first class CLI interface. This allows you or your agent to invoke tools directly from the terminal which can help reduce the upfront context costs of MCP. |
| 17 | +### New! Configuration File |
38 | 18 |
|
39 | | -- When calling `xcodebuildmcp` without any arguments it will default to CLI mode, this is a **breaking** change, you must update your mcp client's configuration to pass the `mcp` argument: |
| 19 | +Project-level configuration via `.xcodebuildmcp/config.yaml` replaces the need for environment variables. Set your project path, scheme, simulator, enabled workflows, debug settings, and more in one place. Environment variables still work but the config file takes precedence. |
40 | 20 |
|
41 | | -From: |
42 | | -```json |
43 | | -"XcodeBuildMCP": { |
44 | | - "command": "npx", |
45 | | - "args": [ |
46 | | - "-y", |
47 | | - "xcodebuildmcp@latest" |
48 | | - ] |
49 | | -} |
| 21 | +```yaml |
| 22 | +schemaVersion: 1 |
| 23 | +enabledWorkflows: |
| 24 | + - simulator |
| 25 | + - ui-automation |
| 26 | + - debugging |
| 27 | +sessionDefaults: |
| 28 | + scheme: MyApp |
| 29 | + projectPath: ./MyApp.xcodeproj |
| 30 | + simulatorName: iPhone 16 |
50 | 31 | ``` |
51 | 32 |
|
52 | | -To: |
53 | | -```json |
54 | | -"XcodeBuildMCP": { |
55 | | - "command": "npx", |
56 | | - "args": [ |
57 | | - "-y", |
58 | | - "xcodebuildmcp@latest", |
59 | | - "mcp" // <--- add this argument |
60 | | - ] |
61 | | -} |
62 | | -``` |
| 33 | +See [docs/CONFIGURATION.md](docs/CONFIGURATION.md) for the full reference. |
63 | 34 |
|
64 | | -To lean more about the CLI interface see the [CLI.md](docs/CLI.md) documentation. |
| 35 | +### New! Xcode IDE Integration |
65 | 36 |
|
66 | | -### New! |
67 | | -- Add DAP-based debugger backend and simulator debugging toolset (attach, breakpoints, stack, variables, LLDB command). |
68 | | -- XcodeBuildMCP uses a new project config file at `.xcodebuildmcp/config.yaml` for runtime configuration, this is a more flexible and powerful way to configure XcodeBuildMCP than environment variables. |
| 37 | +XcodeBuildMCP can now proxy tools from Xcode 26.3's built-in MCP bridge, giving your agent access to Xcode IDE capabilities like Preview rendering, the Issue Navigator, and documentation search. Enable the `xcode-ide` workflow to use this. Setup instructions for both Codex Agent and Claude Code Agent in Xcode are included. See [docs/XCODE_IDE_MCPBRIDGE.md](docs/XCODE_IDE_MCPBRIDGE.md) for details. |
69 | 38 |
|
70 | 39 | ### Added |
71 | | -- Add session-status MCP resource with session identifiers. |
72 | | -- Add UI automation guard that blocks UI tools when the debugger is paused. |
73 | | -- Add `manage-workflows` tool to allow agents to change the workflows enable/disabling tools at runtime. This requires clients to support tools changed notifications. (opt-in only) |
74 | | -- Add XcodeBuildMCP skill to improve MCP client tool use/discovery, this needs to be installed see [README.md](README.md) for more information. |
75 | | -- Added support for session-aware defaults that are persisted between sessions in the config file. |
| 40 | + |
| 41 | +- **LLDB Debugging**: Attach a debugger to simulator apps, set breakpoints, inspect variables, view the call stack, and run LLDB commands — all through your agent. Supports both DAP and LLDB-CLI backends. See [docs/TOOLS.md](docs/TOOLS.md) for the debugging tools. |
| 42 | +- **Session default persistence**: Session defaults can now be saved to the config file with `persist: true`, so your preferred project, scheme, and simulator are remembered across sessions. |
| 43 | +- **Log subsystem filtering**: Filter simulator log capture by subsystem — choose `app` (default), `all`, `swiftui` (for `Self._printChanges()` output), or a custom list of subsystems. |
| 44 | +- **Agent skills**: Optional skill files that prime your agent with usage instructions for the MCP server or CLI. Install via the provided shell script or manually. See [docs/SKILLS.md](docs/SKILLS.md). |
| 45 | +- **MCP tool annotations**: All tools now include MCP-standard annotations (read-only vs. destructive, idempotent, etc.) for clients that support them. |
| 46 | +- **Simulator name resolution**: Session defaults now accept a simulator name and automatically resolve it to a device ID. |
76 | 47 |
|
77 | 48 | ### Changed |
78 | | -- Migrate to Zod v4. |
79 | | -- Remove dynamic tool discovery (`discover_tools`) and `XCODEBUILDMCP_DYNAMIC_TOOLS`. Use `XCODEBUILDMCP_ENABLED_WORKFLOWS` to limit startup tool registration. |
80 | | -- Add MCP tool annotations to all tools. |
| 49 | + |
| 50 | +- Simulator tools are now the default workflow. Previously all workflows loaded by default, increasing context usage. |
| 51 | +- Bundled AXe updated to 1.3.0. |
| 52 | +- Landscape screenshots now orient correctly. |
81 | 53 |
|
82 | 54 | ### Fixed |
83 | | -- Update UI automation guard guidance to point at `debug_continue` when paused. |
84 | | -- Fix tool loading bugs in static tool registration. |
85 | | -- Fix xcodemake command argument corruption when project directory path appears as substring in non-path arguments. |
86 | | -- Fix snapshot_ui warning state being isolated per UI automation tool, causing false warnings. |
87 | | -- Fixed screenshot tool capturing rotated images when simulator is in landscape orientation by detecting window dimensions and applying +90° rotation to correct the framebuffer capture. ([`#186`](https://github.com/cameroncooke/XcodeBuildMCP/pull/186) by [`@VincentStark`](https://github.com/VincentStark)) |
88 | | -- Fixed Sentry ESM compatibility by upgrading `@sentry/node` from 10.5.0 to 10.37.0 and `@sentry/cli` from 2.43.1 to 3.1.0 (Fixes XCODEBUILD-MCP-13SX) |
| 55 | + |
| 56 | +- Fixed incremental builds corrupting arguments when strings contained substrings matching build flags. |
89 | 57 |
|
90 | 58 | ## [1.15.1] - 2025-12-20 |
91 | 59 |
|
|
0 commit comments