Repository navigation
fix: keep Codecov outages out of the release gate; log unknown commands as a warning; fill manifest and CLI doc gaps - #1429
Conversation
Beta Release run 37259884024 (the #1428 merge) failed with every test green: "Upload coverage reports" died on a TLS error reaching cli.codecov.io (Codecov's *.codecov.io certificate expired 2026-10-04 23:59:59 GMT). fail_ci_if_error: false did not help, because codecov-action v4 crashes on the https error before it reads that input. This job gates both release pipelines, so the beta was not published. continue-on-error on the upload step keeps a Codecov failure out of the job result. tools/tests/test_python_tests_workflow.py pins that.
A server or CLI newer than the package (or a mistyped raw command) sends a command the package has no handler for. CommandRegistry threw, and the dispatcher logged it as "Error processing command: Unknown or unsupported command type" with a stack trace, as if the Editor broke. The dispatcher now checks CommandRegistry.HasHandler first. It replies with an error that names the command and says to update the package if the server or CLI is newer, and logs that one line as a warning. Both transports (WebSocket and stdio) go through this dispatcher. TransportCommandDispatcherTests fails on the old code with the same unhandled error log and passes with this change.
manifest.json had no entry for the six asset_gen tools (blender_bridge, generate_audio, generate_image, generate_model, import_model, import_model_file). Server/tests/test_manifest_tools.py now compares it with the tool registry, so the next new tool cannot be missed. The CLI guides showed `animation play` and `animation set-parameter`, which are `animation animator ...` now, and had no examples for build, physics, profiler, reflect, docs, asset-gen or blender. The "Complete Command Reference" table in website/docs/guides/cli.md is rebuilt from the Click command tree: 38 rows, one per group or subgroup (it had 27, several of them stale).
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. 🧰 Additional context used📚 Code guidelines (1)No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (11)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe dispatcher now handles commands without registered handlers. The manifest and CLI guides add tool entries, command examples, and reference information. The Python test workflow allows Codecov upload errors to continue without failing the job. ChangesUnregistered command handling
CLI tools and documentation
Coverage upload workflow
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to No actionable issue remains from this review; the change is ready for normal merge checks. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The inspected changes do not demonstrate a new command-execution or authorization bypass. Unknown commands are rejected, existing tools are advertised, and coverage-upload failures become nonfatal without making test failures nonfatal. External catalog-client behavior and inherited shutdown cleanup remain partly uncertain. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 5 files. (6 skipped: 6 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The focused fixes are consistent with existing architecture and have targeted regression coverage.
Review effort: Balanced
Findings: None
What changed in this PR
Prevents external Codecov failures from blocking releases, improves unknown-command handling, and synchronizes tool/CLI documentation.
Changes:
- Makes Codecov uploads non-blocking.
- Returns and logs unknown commands as warnings.
- Completes manifest entries and CLI documentation.
| File | Description |
|---|---|
.github/workflows/python-tests.yml |
Makes Codecov upload failures non-blocking. |
tools/tests/test_python_tests_workflow.py |
Guards the non-blocking workflow setting. |
MCPForUnity/Editor/Tools/CommandRegistry.cs |
Adds handler-existence lookup. |
MCPForUnity/Editor/Services/Transport/TransportCommandDispatcher.cs |
Handles unknown commands without error logs. |
TestProjects/UnityMCPTests/Assets/Tests/EditMode/Services/TransportCommandDispatcherTests.cs |
Tests unknown-command responses and warnings. |
TestProjects/UnityMCPTests/Assets/Tests/EditMode/Services/TransportCommandDispatcherTests.cs.meta |
Adds Unity metadata for the test. |
manifest.json |
Adds six asset-generation tools. |
Server/tests/test_manifest_tools.py |
Enforces manifest/registry parity. |
Server/src/cli/CLI_USAGE_GUIDE.md |
Corrects and expands CLI examples. |
website/docs/guides/cli.md |
Updates examples and command reference. |
website/docs/guides/cli-examples.md |
Adds examples for newly documented command groups. |
Files not reviewed (1)
- TestProjects/UnityMCPTests/Assets/Tests/EditMode/Services/TransportCommandDispatcherTests.cs.meta: Generated file
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
CoplayDev#1429 rebuilt the "Complete Command Reference" table in website/docs/guides/cli.md from the Click command tree, before this branch's `sprite` group was on beta. Rebuilt from this branch's tree, the only change is the one `sprite` row. Both CLI guides also get a short sprite section next to the texture one.
Three small fixes, one commit each.
1. A Codecov outage fails the release gate (
ci)Beta Release run 37259884024 (the #1428 merge) failed with every test green:
cli.codecov.io, because Codecov's*.codecov.iocertificate expired at 2026-10-04 23:59:59 GMT.fail_ci_if_error: falsedid not help.codecov-action@v4(v4.6.0) crashes on the https error before it reads that input.c96a3b34got no beta version bump and no PyPI pre-release.Fix:
continue-on-error: trueon the upload step.tools/tests/test_python_tests_workflow.pypins it.Notes:
betapushes the upload never worked anyway. The passing run loggedToken required because branch is protected.release.ymlrunsmain's copy ofpython-tests.yml, so stable releases stay exposed until this reachesmain.2. An unknown command shows up as a red error in the Unity console (
fix(transport))A client can send a command the package has no handler for. This happens when the server or CLI is newer than the package (for example,
manage_spriteagainst a package without it), or when arawcommand has a typo.Before:
CommandRegistrythrew, and the dispatcher loggedError processing command: Unknown or unsupported command type: …with a stack trace. To the user this reads as an Editor failure.Now the dispatcher checks the new
CommandRegistry.HasHandlerfirst. It then:Both transports (WebSocket and stdio) go through this dispatcher.
TransportCommandDispatcherTestsfails on the old code with the same unhandled error log, and passes now.3. Doc gaps (
docs)manifest.jsonhad no entries for the six asset_gen tools (blender_bridge,generate_audio,generate_image,generate_model,import_model,import_model_file).Server/tests/test_manifest_tools.pynow compares the manifest with the tool registry.website/docs/guides/cli.md,cli-examples.md,Server/src/cli/CLI_USAGE_GUIDE.md):animation playandanimation set-parameter, which areanimation animator …now.Interaction with #1338
de2840ef) in either order.manage_spritetomanifest.json, so the new manifest test stays green.spriterow yet, because that group does not exist onbeta. Whichever PR merges second should add the one row.Verification
TransportCommandDispatcherTestsandCommandRegistryTests, 4/4.Summary by CodeRabbit