UnityLeanMcp v0.8.0-preview.16
Pre-releasefix(process): support batchmode auto-start via UNITY_BATCHMODE environment variable
docs: streamline MCP tools documentation in README
feat: Bump version to 0.8.0-preview.16
fix(eval): support unreferenced assemblies, add dynamic assembly resolve, and clean build sync
feat(coverage): extract recursive method discovery and add comprehensive coverage type tests
fix(coverage): harden path normalization, fail-fast on Release mode, and retire obsolete test mode default
- Normalize '.' and './' to empty string in GetCoverageHandler to match all project files on whole-project queries.
- Add TryResolveExistingPath to resolve leading slash paths (e.g. '/Assets/...') relative to projectRoot cross-platform.
- Add fail-fast check in GetCoverageHandler when CompilationPipeline.codeOptimization is Release mode.
- Retire obsolete 'all' default in RunTestsArgs.Mode in Models.cs, aligning with canonical enum validation.
- Refactor UnityClient.GetCoverageAsync to use typed deserialization instead of manual JSON DOM enumeration.
- Add regression and validation tests across Mcp.Tests and Unity3d Editor tests.
- Update DESIGN.md and LEARNINGS.md.
fix(coverage): harden profiler lifecycle, deduplicate nested types, and remove bounded query timeout
- Defer coverage initialization in RunTestsHandler until operation ownership is acquired and tests are ready to run, preventing counter wipes on BUSY responses and profiler leaks.
- Guarantee Coverage.enabled = false is restored on early exits (--failed-only with 0 failed tests) and dispatch exceptions.
- Deduplicate nested types via visitedTypes set and skipping nested types in outer assembly scan in GetCoverageHandler.
- Harvest static constructor (.cctor) sequence points via type.TypeInitializer.
- Align empty compiled paths by returning SUCCESS with empty files, presenting informational results in MCP layer.
- Enforce strict array element validation across MCP, client, and Editor boundaries.
- Support unbounded timeoutSeconds <= 0 in UnitySocketTransport and remove arbitrary 15s timeout from GET_COVERAGE.
- Centralize path normalization and project root resolution in GetCoverageHandler, removing redundant IUnityClient interface overload.
- Add regression tests covering array validation, empty files, and unbounded socket commands.
fix(coverage): handle busy compile and active operations with fail-fast diagnostics and grace periods
- Fail fast on BUSY compile with actionable message explaining in-memory coverage invalidation
- Add BusyGracePeriod handling and retry loop on GetCoverageAsync for active operations
- Evaluate RequiresCompilationSettled and active operations on worker threads for non-worker handlers
- Add IProgress parameter to GetCoverageAsync and UnityCoverageAsync
- Update DESIGN.md and LEARNINGS.md with coverage lifecycle documentation
- Add subsystem tests for coverage busy handling and progress notifications
feat(coverage): add in-memory code coverage tool and rename unity_run_tests to unity_test
refactor(mcp): remove unity_stop MCP command and streamline tool surface
- Remove unity_stop tool from UnityTools, reducing public catalog to 3 tools
- Update foreign operation busy diagnostic in UnityClient to instruct killing the project-owned Unity process if hung
- Update UnityIntegrationFixture teardown to use UnityProcessManager directly
- Update McpProtocolTests, TieredAutowaitingTests, and ToolFormattingTests
- Update README.md and record the architectural decision in DESIGN.md
feat(process): auto-start Unity in interactive GUI mode instead of batchmode