UnityLeanMcp v0.8.0-preview.9
Pre-releasefeat: Bumo VERSION to 0.8.0-preview.9
fix(diagnostics): handle cross-platform path rooting in BuildFileUri on Unix
test: modernize test strategy for faster execution and sub-3s local loop
- Add static test assets (DummyTest.cs, DummyExecuteClass.cs) to eliminate dynamic fixture swapping and 22+ domain reloads
- Reuse SharedClient in UnityIntegrationFixture to eliminate 70+ dotnet.exe child process spawns
- Add BusyGracePeriod to UnityClient to accelerate mock tiered autowaiting tests
- Partition tests into Unit, Subsystem, and UnityIntegration xUnit traits for fast local loops
- Record test performance learnings in FINDINGS.md
fix(runner): eliminate NTFS completion race condition via operation-scoped result files (#87)
feat(diagnostics): wire compiler diagnostic parser, cap warnings, and add file URIs (#86)
- Implement unified diagnostic formatting in DiagnosticFormatter with RFC 8089 file URIs
- Cap warnings at 10 to preserve agent context window and omit truncation notice when <= 10
- Position unfiltered compilation errors at the end of the message for LLM recency attention
- Display category headers (Warnings: and Errors:) only when both categories exist
- Unify compilation diagnostics formatting across unity_refresh, unity_run_tests, and unity_eval
- Add comprehensive test cases and record learnings in FINDINGS.md
refactor(mcp): resolve issues #88, #89, and #90
-
Replace hardcoded mutating command checks in UnityLeanMcpServer with polymorphic ICommandHandler properties (IsMutating, RequiresCompilationSettled) (#88)
-
Decompose UnityClient and UnityProcessManager to respect Single Responsibility Principle by extracting UnityLogScanner, UnitySocketTransport, and OperationPoller (#89)
-
Remove unused Structured* response models in Models.cs and deprecate ExecuteMethodAsync (#90)
-
Add DecomposedComponentsTests test suite and update documentation / FINDINGS.md
refactor(mcp): optimize agent workflow and eliminate dual payload returns
- Eliminate dual payload returns (human text + JSON) across all MCP tools to halve token consumption
- Disambiguate void statement completions from explicit null returns in unity_eval
- Clarify unity_refresh tool descriptions and server instructions regarding auto-refresh
- Protect interactive Unity GUI Editor instances from accidental termination in unity_stop via force parameter
- Update build.sh to handle Windows locked DLL publishing using .old fallback
refactor(mcp): retire unity_status and implement tiered autowaiting (#84)
- Remove unity_status from the public MCP tool catalog to reduce prompt token overhead and eliminate redundant pre-flight LLM reasoning turns, while preserving IUnityClient.GetStatusAsync internally for testing and status inspection.
- Implement tiered autowaiting across all mutating operations (refresh, eval, run_tests):
- Autowait without arbitrary timeouts for transient compilation/updating states (BUSY compile, COMPILING, UPDATING) while streaming progress notifications.
- Observe a 3-second grace period for foreign mutating operations (BUSY ) before failing fast with an actionable recovery message directing users/agents to unity_stop.
- Add early worker-thread rejection for mutating commands in UnityLeanMcpServer to prevent main-thread dispatching deadlocks and queue pollution during active operations.
- Update PollRefreshHandler and GetStatusAsync to prioritize durable operation records.
- Update README.md and record architectural learnings in FINDINGS.md.
- Add comprehensive TieredAutowaitingTests test suite and update existing test fixtures.
feat(eval): support multiline C# snippets with using hoisting and zero default usings
-
Detect and extract top-level using statements to file scope outside runner method
-
Blank out extracted using characters with spaces to preserve line offsets for Roslyn diagnostics
-
Preserve IDisposable using statements and using var declarations inside method body
-
Remove implicit default using statements from EvalHandler.cs to eliminate namespace collisions
-
Fully qualify runner method signature with System.Threading.Tasks types so zero-using snippets compile cleanly
-
Update unity_eval tool and parameter descriptions to clarify raw multiline statements and no default imports
-
Add defensive unwrapping for JSON-encoded string inputs
-
Update test suite and documentation; all 206 tests passing
refactor(eval): require explicit returns and enable single-pass AST classification
-
Require explicit 'return ;' statements when returning values to the caller
-
Support natural void completion and early exits with 'return;' without code modification
-
Compile user snippets verbatim as valid C# in a single pass without speculative wrapping
-
Inspect snippet syntax trees via lightweight Roslyn reflection (<0.05ms) in HasTopLevelValueReturn
-
Update MCP tool descriptions, unit tests, and integration tests accordingly
-
Record Roslyn reflection quirks and dynamic evaluation findings in FINDINGS.md
refactor(mcp): retire unity_execute_method in favor of unity_eval
refactor(mcp): merge unity_recompile into unity_refresh with optional clean flag
refactor: rename project from UnityCliRunner to UnityLeanMcp
- Rename Unity package to com.pereviader.unityleanmcp and Editor assembly to UnityLeanMcp.Editor
- Rename .NET MCP server project, assembly, and namespaces to UnityLeanMcp.Mcp
- Update server identifier to unity-lean-mcp across configs, workflows, and documentation
- Remove legacy unity-cli fallbacks
refactor(mcp): streamline unity_status output to concise raw state token
feat(install): Update install api to allow not displaying the success popup
feat: auto-refresh in eval and guide AI tools to avoid redundant refresh calls