Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
da5ca18
WIP
cameroncooke Mar 17, 2026
278b1ca
refactor: Unify pipeline architecture, rendering, and output formatting
cameroncooke Mar 21, 2026
3890d9b
refactor: Migrate all tool output to unified PipelineEvent system
cameroncooke Mar 25, 2026
ab55874
chore(test): Separate unit, snapshot, and smoke test scripts
cameroncooke Mar 26, 2026
e8c602c
refactor: Simplify and deduplicate post-migration code
cameroncooke Mar 26, 2026
77dac20
fix: Improve pipeline output consistency and snapshot coverage
cameroncooke Mar 26, 2026
da01971
WIP
cameroncooke Mar 26, 2026
5178dc3
WIP
cameroncooke Mar 27, 2026
abfd1b1
WIP
cameroncooke Mar 28, 2026
a3eefb3
WIP
cameroncooke Mar 30, 2026
1474029
WIP
cameroncooke Mar 30, 2026
6e9f3ef
WIP
cameroncooke Mar 31, 2026
ac961c3
refactor: deduplicate error handling across 54 tool Logic functions
cameroncooke Mar 31, 2026
944fe65
refactor: migrate all tool handlers to typed factories and remove leg…
cameroncooke Mar 31, 2026
b9167ee
feat: make resources manifest-driven with predicate-aware registration
cameroncooke Mar 31, 2026
d09addc
refactor: move executor test guards from production code into vitest …
cameroncooke Mar 31, 2026
f795bff
docs: add output formatting consistency investigation report
cameroncooke Mar 31, 2026
cde9688
refactor: re-migrate 6 holdout tools to structured PipelineEvent pipe…
cameroncooke Mar 31, 2026
8200ea1
refactor: rename XcodebuildRenderer to PipelineRenderer and split eve…
cameroncooke Apr 1, 2026
6c5cb78
fix: stabilize resource snapshot tests against environment variance
cameroncooke Apr 1, 2026
a62cfe6
refactor: extract shared step primitives from build_run_* orchestrators
cameroncooke Apr 1, 2026
7e2d4b2
Refactor
cameroncooke Apr 1, 2026
ac18c7c
refactor: integrate log capture into build/run tools and remove stand…
cameroncooke Apr 3, 2026
18abc9f
remove: delete flowdeck and designed snapshot fixture systems
cameroncooke Apr 3, 2026
7607d36
chore: update Calculator example project
cameroncooke Apr 3, 2026
9eb0ee5
remove: delete leftover logging snapshot fixtures
cameroncooke Apr 3, 2026
aff0b7f
feat: collapse home directory paths to ~/ in tool output
cameroncooke Apr 3, 2026
60c7562
checkpoint: pre-existing WIP state before rendering pipeline refactor
cameroncooke Apr 5, 2026
3e7a0f2
refactor: add render session module (step 1)
cameroncooke Apr 5, 2026
878012e
refactor: core infrastructure for rendering pipeline (steps 2-4)
cameroncooke Apr 6, 2026
ec5536b
WIP: migrate all non-pipeline tool handlers to ctx.emit (step 3)
cameroncooke Apr 6, 2026
7f9a739
WIP: suppress CLI streaming in toolResponse inside handler context
cameroncooke Apr 6, 2026
8cb4bd7
refactor: complete tool handler migration with CLI boundary fix (step…
cameroncooke Apr 6, 2026
36d5ddc
WIP: pipeline refactor with error fallback fix (step 5)
cameroncooke Apr 7, 2026
5f7f29e
refactor: complete pipeline refactor and fix snapshot output (step 5)
cameroncooke Apr 7, 2026
e489bae
refactor: stabilize doctor snapshot with system-agnostic normalization
cameroncooke Apr 7, 2026
d5bc77e
chore: update docs and stabilize debugging stack fixture
cameroncooke Apr 7, 2026
5520f90
docs: document remaining rendering pipeline cleanup items
cameroncooke Apr 7, 2026
2884383
refactor: remove hybrid toolResponse pattern from tool handlers (step 8)
cameroncooke Apr 7, 2026
6b32bbf
refactor: eliminate toolResponse from tool handlers (steps 8-10)
cameroncooke Apr 7, 2026
6c3ea92
refactor: eliminate toolResponse from ALL tool handlers
cameroncooke Apr 7, 2026
175dbdc
refactor: delete toolResponse, mcp-renderer, cli-jsonl-renderer (step…
cameroncooke Apr 7, 2026
d32025f
refactor: remove ToolResponse type from build tool handler signatures
cameroncooke Apr 7, 2026
947ba20
refactor: remove ToolResponse from all tool handlers except bridge (f…
cameroncooke Apr 7, 2026
e6fcfd7
refactor: remove ToolResponse from xcode-tools-bridge
cameroncooke Apr 8, 2026
da1da39
refactor: confine ToolResponse to MCP/daemon boundaries only
cameroncooke Apr 8, 2026
41f3544
refactor: unify rendering pipeline and daemon protocol v2
cameroncooke Apr 8, 2026
db7877d
fix(types): properly type ToolHandler return for test-mode invocations
cameroncooke Apr 8, 2026
dd4727b
fix(simulator): restrict PID parsing to colon pattern on first line
cameroncooke Apr 8, 2026
8c3b1d9
fix(snapshot): normalize bare ~ to <HOME> in snapshot output
cameroncooke Apr 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ Use these sections under `## [Unreleased]`:
- Append to existing subsections (e.g., `### Fixed`), do not create duplicates
- NEVER modify already-released version sections (e.g., `## [0.12.2]`)
- Each version section is immutable once released
- NEVER update snapshot fixtures unless asked to do so, these are integration tests, on failure assume code is wrong before questioning the fixture
-
#### Attribution
- **Internal changes (from issues)**: `Fixed foo bar ([#123](https://github.com/cameroncook/XcodeBuildMCP/issues/123))`
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
^DUsing scheme test configuration: Debug
🧪 Test: CalculatorApp
Workspace: /Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/example_projects/iOS_Calculator/CalculatorApp.xcworkspace
Configuration: Debug
Target: iPhone 17 Pro
🧪 Finding available tests...
Resolved to 21 test(s):
- CalculatorAppTests/CalculatorAppTests/testAppLaunch
- CalculatorAppTests/CalculatorAppTests/testCalculationPerformance
- CalculatorAppTests/CalculatorAppTests/testCalculatorOperationsEnum
- CalculatorAppTests/CalculatorAppTests/testCalculatorServiceBasicOperation
- CalculatorAppTests/CalculatorAppTests/testCalculatorServiceChainedOperations
... and 16 more
🧪 Running tests (0, 0 failures)
🧪 Running tests (1, 0 failures)
🧪 Running tests (2, 0 failures)
🧪 Running tests (3, 0 failures)
🧪 Running tests (4, 0 failures)
🧪 Running tests (5, 0 failures)
🧪 Running tests (6, 0 failures)
🧪 Running tests (7, 0 failures)/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/example_projects/iOS_Calculator/CalculatorAppTests/CalculatorAppTests.swift:52: error: -[CalculatorAppTests.CalculatorAppTests testCalculatorServiceFailure] : XCTAssertEqual failed: ("0") is not equal to ("999") - This test should fail - display should be 0, not 999
🧪 Running tests (8, 1 failure)
🧪 Running tests (9, 1 failure)
🧪 Running tests (10, 1 failure)
🧪 Running tests (11, 1 failure)
🧪 Running tests (12, 1 failure)
🧪 Running tests (13, 1 failure)
🧪 Running tests (14, 1 failure)
🧪 Running tests (15, 1 failure)
🧪 Running tests (16, 1 failure)
🧪 Running tests (17, 1 failure)
🧪 Running tests (18, 1 failure)
🧪 Running tests (19, 1 failure)
🧪 Running tests (20, 1 failure)
🧪 Running tests (21, 1 failure)
Failed Tests
CalculatorAppTests
✗ testCalculatorServiceFailure (0.003s)
└─ XCTAssertEqual failed: ("0") is not
equal to ("999") - This test should fail
- display should be 0, not 999
(CalculatorAppTests.swift:52)
Test Summary
╭───────────────────────────────────────╮
│ Total: 21 │
│ Passed: 20 │
│ Failed: 1 │
│ Skipped: 0 │
│ Duration: 27.96s │
╰───────────────────────────────────────╯
✗ 1 test(s) failed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
^DUsing scheme test configuration: Debug
🧪 Test: CalculatorApp
Workspace: /Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/example_projects/iOS_Calculator/CalculatorApp.xcworkspace
Configuration: Debug
Target: iPhone 17 Pro
🧪 Finding available tests...
Resolved to 21 test(s):
- CalculatorAppTests/CalculatorAppTests/testAppLaunch
- CalculatorAppTests/CalculatorAppTests/testCalculationPerformance
- CalculatorAppTests/CalculatorAppTests/testCalculatorOperationsEnum
- CalculatorAppTests/CalculatorAppTests/testCalculatorServiceBasicOperation
- CalculatorAppTests/CalculatorAppTests/testCalculatorServiceChainedOperations
... and 16 more
🧪 Running tests (0, 0 failures)
🧪 Running tests (1, 0 failures)
🧪 Running tests (2, 0 failures)
🧪 Running tests (3, 0 failures)
🧪 Running tests (4, 0 failures)
🧪 Running tests (5, 0 failures)
🧪 Running tests (6, 0 failures)
🧪 Running tests (7, 0 failures)/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/example_projects/iOS_Calculator/CalculatorAppTests/CalculatorAppTests.swift:52: error: -[CalculatorAppTests.CalculatorAppTests testCalculatorServiceFailure] : XCTAssertEqual failed: ("0") is not equal to ("999") - This test should fail - display should be 0, not 999
🧪 Running tests (8, 1 failure)
🧪 Running tests (9, 1 failure)
🧪 Running tests (10, 1 failure)
🧪 Running tests (11, 1 failure)
🧪 Running tests (12, 1 failure)
🧪 Running tests (13, 1 failure)
🧪 Running tests (14, 1 failure)
🧪 Running tests (15, 1 failure)
🧪 Running tests (16, 1 failure)
🧪 Running tests (17, 1 failure)
🧪 Running tests (18, 1 failure)
🧪 Running tests (19, 1 failure)
🧪 Running tests (20, 1 failure)
🧪 Running tests (21, 1 failure)
Failed Tests
CalculatorAppTests
✗ testCalculatorServiceFailure (0.009s)
└─ XCTAssertEqual failed: ("0") is not
equal to ("999") - This test should fail
- display should be 0, not 999
(CalculatorAppTests.swift:52)
Test Summary
╭───────────────────────────────────────╮
│ Total: 21 │
│ Passed: 20 │
│ Failed: 1 │
│ Skipped: 0 │
│ Duration: 20.31s │
╰───────────────────────────────────────╯
✗ 1 test(s) failed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
^DUsing scheme test configuration: Debug
🧪 Test: CalculatorApp
Workspace: /Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/example_projects/iOS_Calculator/CalculatorApp.xcworkspace
Configuration: Debug
Target: iPhone 17 Pro
🧪 Finding available tests...
Resolved to 21 test(s):
- CalculatorAppTests/CalculatorAppTests/testAppLaunch
- CalculatorAppTests/CalculatorAppTests/testCalculationPerformance
- CalculatorAppTests/CalculatorAppTests/testCalculatorOperationsEnum
- CalculatorAppTests/CalculatorAppTests/testCalculatorServiceBasicOperation
- CalculatorAppTests/CalculatorAppTests/testCalculatorServiceChainedOperations
... and 16 more
🧪 Running tests (0, 0 failures)
🧪 Running tests (1, 0 failures)
🧪 Running tests (2, 0 failures)
🧪 Running tests (3, 0 failures)
🧪 Running tests (4, 0 failures)
🧪 Running tests (5, 0 failures)
🧪 Running tests (6, 0 failures)
🧪 Running tests (7, 0 failures)/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/example_projects/iOS_Calculator/CalculatorAppTests/CalculatorAppTests.swift:52: error: -[CalculatorAppTests.CalculatorAppTests testCalculatorServiceFailure] : XCTAssertEqual failed: ("0") is not equal to ("999") - This test should fail - display should be 0, not 999
🧪 Running tests (8, 1 failure)
🧪 Running tests (9, 1 failure)
🧪 Running tests (10, 1 failure)
🧪 Running tests (11, 1 failure)
🧪 Running tests (12, 1 failure)
🧪 Running tests (13, 1 failure)
🧪 Running tests (14, 1 failure)
🧪 Running tests (15, 1 failure)
🧪 Running tests (16, 1 failure)
🧪 Running tests (17, 1 failure)
🧪 Running tests (18, 1 failure)
🧪 Running tests (19, 1 failure)
🧪 Running tests (20, 1 failure)
🧪 Running tests (21, 1 failure)
Failed Tests
CalculatorAppTests
✗ testCalculatorServiceFailure (0.009s)
└─ XCTAssertEqual failed: ("0") is not
equal to ("999") - This test should fail
- display should be 0, not 999
(CalculatorAppTests.swift:52)
Test Summary
╭───────────────────────────────────────╮
│ Total: 21 │
│ Passed: 20 │
│ Failed: 1 │
│ Skipped: 0 │
│ Duration: 16.44s │
╰───────────────────────────────────────╯
✗ 1 test(s) failed.
74 changes: 74 additions & 0 deletions benchmarks/simulator-test/2026-03-17T14-18-19-390Z/summary.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{
"generatedAt": "2026-03-17T14:20:36.285Z",
"mode": "warm",
"iterations": 3,
"workspacePath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/example_projects/iOS_Calculator/CalculatorApp.xcworkspace",
"results": [
{
"tool": "xcodebuildmcp",
"iteration": 1,
"exitCode": 1,
"wallClockMs": 29067.379917000002,
"firstStdoutMs": 2.148291999999998,
"firstMilestoneMs": 2152.612708,
"startupToFirstStreamedTestProgressMs": 13020.933500000001,
"stdoutPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/xcodebuildmcp-run-1.stdout.txt",
"stderrPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/xcodebuildmcp-run-1.stderr.txt"
},
{
"tool": "flowdeck",
"iteration": 1,
"exitCode": 1,
"wallClockMs": 28296.29575,
"firstStdoutMs": 3.5727919999990263,
"firstMilestoneMs": 12480.404625,
"startupToFirstStreamedTestProgressMs": 12480.409000000003,
"stdoutPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/flowdeck-run-1.stdout.txt",
"stderrPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/flowdeck-run-1.stderr.txt"
},
{
"tool": "xcodebuildmcp",
"iteration": 2,
"exitCode": 1,
"wallClockMs": 20358.631999999998,
"firstStdoutMs": 3.855666999996174,
"firstMilestoneMs": 1894.4525829999984,
"startupToFirstStreamedTestProgressMs": 6474.262499999997,
"stdoutPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/xcodebuildmcp-run-2.stdout.txt",
"stderrPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/xcodebuildmcp-run-2.stderr.txt"
},
{
"tool": "flowdeck",
"iteration": 2,
"exitCode": 1,
"wallClockMs": 20567.050875,
"firstStdoutMs": 3.934166000006371,
"firstMilestoneMs": 5885.525833000007,
"startupToFirstStreamedTestProgressMs": 5885.5267500000045,
"stdoutPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/flowdeck-run-2.stdout.txt",
"stderrPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/flowdeck-run-2.stderr.txt"
},
{
"tool": "xcodebuildmcp",
"iteration": 3,
"exitCode": 1,
"wallClockMs": 21910.729708,
"firstStdoutMs": 3.3832499999989523,
"firstMilestoneMs": 2140.4143329999933,
"startupToFirstStreamedTestProgressMs": 6239.000874999998,
"stdoutPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/xcodebuildmcp-run-3.stdout.txt",
"stderrPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/xcodebuildmcp-run-3.stderr.txt"
},
{
"tool": "flowdeck",
"iteration": 3,
"exitCode": 1,
"wallClockMs": 16693.48666699999,
"firstStdoutMs": 3.411791999998968,
"firstMilestoneMs": 5152.938666999995,
"startupToFirstStreamedTestProgressMs": 5152.9394579999935,
"stdoutPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/flowdeck-run-3.stdout.txt",
"stderrPath": "/Users/cameroncooke/.codex/worktrees/43f4/XcodeBuildMCP/benchmarks/simulator-test/2026-03-17T14-18-19-390Z/flowdeck-run-3.stderr.txt"
}
]
}
Loading
Loading