chore: bump version to 9.4.4#720
Merged
github-actions[bot] merged 39 commits intomainfrom Feb 11, 2026
Merged
Conversation
Updated the Git URL for the MCPForUnity package to include the branch name.
…rver (#664) (#667) * Fix Git URL in README for package installation Updated the Git URL for adding the package to include the branch name. * fix: Clean up Claude Code config from all scopes to prevent stale config conflicts (#664) - Add RemoveFromAllScopes helper to remove from local/user/project scopes - Use explicit --scope local when registering - Update manual snippets to show multi-scope cleanup - Handle legacy 'unityMCP' naming in all scopes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: Make Claude Code status check thread-safe (#664) The background thread status check was accessing main-thread-only Unity APIs (Application.platform, EditorPrefs via HttpEndpointUtility and AssetPathUtility), causing "GetString can only be called from main thread" errors. Now all main-thread-only values are captured before Task.Run() and passed as parameters to CheckStatusWithProjectDir(). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: Persist client dropdown selection and remove dead IO code - Remember last selected client in EditorPrefs so it restores on window reopen (prevents hiding config issues by defaulting to first client) - Remove dead Outbound class, _outbox BlockingCollection, and writer thread that was never used (nothing ever enqueued to outbox) - Keep only failure IO logs, remove verbose success logging Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: Auto-detect beta package to enable UseBetaServer + workflow updates - Add IsPreReleaseVersion() helper to detect beta/alpha/rc package versions - UseBetaServer now defaults to true only for prerelease package versions - Main branch users get false default, beta branch users get true default - Update beta-release.yml to set Unity package version with -beta.1 suffix - Update release.yml to merge beta → main and strip beta suffix - Fix CodexConfigHelperTests to explicitly set UseBetaServer for determinism - Use EditorConfigurationCache consistently for UseBetaServer access Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: Address code review feedback for thread-safety and validation - Add thread-safe overloads for GetBetaServerFromArgs/List that accept pre-captured useBetaServer and gitUrlOverride parameters - Use EditorConfigurationCache.SetUseBetaServer() in McpAdvancedSection for atomic cache + EditorPrefs update - Add semver validation guard in beta-release.yml before version arithmetic - Add semver validation guard in release.yml after stripping prerelease suffix Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: Complete thread-safety for GetBetaServerFromArgs overloads - Add packageSource parameter to thread-safe overloads to avoid calling GetMcpServerPackageSource() (which uses EditorPrefs) from background threads - Apply quoteFromPath logic to gitUrlOverride and packageSource paths to handle local paths with spaces correctly Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: Patch legacy connection pool in transport tests to prevent real Unity discovery The auto-select tests were failing because they only patched PluginHub but not the fallback legacy connection pool discovery. When PluginHub returns no results, the middleware falls back to discovering instances via get_unity_connection_pool(), which found the real running Unity. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Replace direct push with PR creation to bypass branch protection rules - Add bot check to both jobs to prevent loops and double-publish - Remove needs dependency so PyPI publish runs in parallel - Simplify by not auto-merging the version PR Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…4965734 chore: update Unity package to beta version 9.4.0-beta.1
…#671) * fix: Use beta server args for Claude Code registration Claude Code registration was still using gitUrl directly instead of GetBetaServerFromArgs(), meaning the beta server toggle had no effect on registration. Now uses GetBetaServerFromArgs(quoteFromPath: true) to properly generate --prerelease args for beta users. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: EditorPrefs Manager shows 'Unset' for keys that haven't been set - Show "Unset. Default: [value]" for EditorPrefs that haven't been explicitly set - Disable value field and save button for unset items (grayed out at 60% opacity) - Fix search filter bug where reloading window showed filtered results with empty search field Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: Claude Code status check now accounts for beta server mode The version validation was comparing the registered package source (mcpforunityserver>=0.0.0a0 for beta) against the exact package version (mcpforunityserver==9.4.0-beta.1), causing false "Incorrect Path" status. Now both CheckStatus paths (main thread and background thread) use the same logic that considers: - Explicit GitUrlOverride - UseBetaServer setting (with dynamic default for prerelease packages) - Standard pinned version as fallback Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Initial Upload for Skills * Update unity-mcp-skill/SKILL.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Refine language in Unity-MCP Operator Guide Updated wording for clarity and consistency in the guide. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: beta workflow no longer auto-bumps minor version Changes to beta-release.yml: - Beta now bumps patch instead of minor (9.3.1 → 9.3.2-beta.1) - Allows patch releases without being forced into minor bumps - Increment beta number if already a beta version Changes to release.yml: - Added "none" bump option to release beta version as-is - Added version status display showing main/beta versions and what the release version will be Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: remove redundant β character from version badge The version string now includes "-beta.N" suffix, making the separate β indicator redundant. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: improve version consistency in release workflows beta-release.yml: - Changed from already_beta to needs_update flag - Only skip updates when computed version matches current - PyPI versioning now detects existing prereleases and keeps the same base version instead of always bumping patch release.yml: - Preview step outputs stripped_version to GITHUB_OUTPUT - Compute step uses previewed value for "none" bump option - Added sanity check warning if versions diverge unexpectedly This ensures the released version matches what was shown to the user and prevents unnecessary patch bumps on consecutive beta runs. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: GitHub Actions <actions@github.com>
chore: sync main (v9.4.0) into beta
Added --no-delete-branch flag to gh pr merge commands in the sync_beta job. This prevents GitHub's auto-delete feature from removing the main branch when the sync PR (main -> beta) merges. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
fix: prevent main branch deletion in sync_beta step
* fix: speed up Claude Code config check by reading JSON directly Instead of running `claude mcp list` (15+ seconds due to health checks), read the config directly from ~/.claude.json (instant). Changes: - Add ReadClaudeCodeConfig() to parse Claude's JSON config file - Walk up directory tree to find config at parent directories - Handle duplicate path entries (forward/backslash variants) - Add beta/stable version mismatch detection with clear messages - Add IsBetaPackageSource() to detect PyPI beta versions and prerelease ranges - Change button label from "Register" to "Configure" for consistency Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: speed up Claude Code config check by reading JSON directly Instead of running `claude mcp list` (15+ seconds due to health checks), read the config directly from ~/.claude.json (instant). Changes: - Add ReadClaudeCodeConfig() to parse Claude's JSON config file - Walk up directory tree to find config at parent directories - Handle duplicate path entries (forward/backslash variants) - Add beta/stable version mismatch detection with clear messages - Add IsBetaPackageSource() to detect PyPI beta versions and prerelease ranges - Change button label from "Register" to "Configure" for consistency - Refresh client status when switching to Connect tab or toggling beta mode Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: add VersionMismatch status for Claude Code config detection - Add McpStatus.VersionMismatch enum value for version mismatch cases - Show "Version Mismatch" with yellow warning indicator instead of "Error" - Use VersionMismatch for beta/stable package source mismatches - Keep Error status for transport mismatches and general errors Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: add version mismatch warning banner in Server section - Add version-mismatch-warning banner to McpConnectionSection.uxml - Add UpdateVersionMismatchWarning method to show/hide the banner - Fire OnClientConfigMismatch event when VersionMismatch status detected - Wire up event in main window to update the warning banner - Store mismatch details in configStatus for both Error and VersionMismatch Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: simplify version mismatch messages for non-technical users Before: "Beta/stable mismatch: registered with beta 'mcpforunityserver>=0.0.0a0' but plugin is stable 'mcpforunityserver==9.4.0'." After: "Configured for beta server, but 'Use Beta Server' is disabled in Advanced settings." Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: address PR review feedback - Treat missing ~/.claude.json as "not configured" instead of error (distinguishes "no Claude Code installed" from actual read failures) - Handle --from=VALUE format in ExtractPackageSourceFromConfig (in addition to existing --from VALUE format) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: add beta/stable version mismatch detection to all JSON-based clients - Move GetExpectedPackageSourceForValidation() and IsBetaPackageSource() to base class so all configurators can use them - Update JsonFileMcpConfigurator.CheckStatus() to use beta-aware comparison - Show VersionMismatch status with clear messaging for Claude Desktop, Cursor, Windsurf, VS Code, and other JSON-based clients - Auto-rewrite still attempts to fix mismatches automatically Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: add beta-aware validation to CodexMcpConfigurator CodexMcpConfigurator was still using the non-beta-aware package source comparison. Now uses GetExpectedPackageSourceForValidation() and shows VersionMismatch status with clear messaging like other configurators. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: GitHub Actions <actions@github.com>
…d arrays (#690) * fix(run_tests): support snake_case params and handle double-serialized arrays The MCP tool schema defines filter parameters in snake_case (test_names, group_names, etc.) but GetFilterOptions() only checked camelCase keys, causing test filtering to silently fail — all tests would run instead of the filtered subset. Additionally, some MCP clients serialize array parameters as a stringified JSON array inside an outer array (e.g. ["[\"name1\"]"]), which was not handled by ParseStringArray(). Changes: - Add snake_case fallback to all ParseStringArray calls in RunTests.cs - Handle stringified JSON arrays in String token branch - Handle double-serialized arrays in Array token branch - Handle nested arrays ([[name1, name2]]) in Array token branch - Add snake_case fallback for include_details/include_failed_tests in both RunTests.cs and GetTestJob.cs Fixes #689 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: extract GetParam and CoerceStringArray into ParamCoercion Address code review feedback: - Extract snake_case/camelCase param lookup into ParamCoercion.GetParam() - Extract string array coercion (with double-serialization handling) into ParamCoercion.CoerceStringArray() - Narrow catch clauses from bare catch to JsonException - Add explicit comment clarifying nested array unwrapping limitation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: move CoerceStringArray to ToolParams and use GetRaw for snake_case fallback Remove GetParam from ParamCoercion — ToolParams.GetRaw() already handles snake_case/camelCase fallback via StringCaseUtility. Move CoerceStringArray into ToolParams as GetStringArray() to centralize parameter handling. Update RunTests and GetTestJob to use ToolParams instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
) * fix: remove vestigial find/component params from manage_gameobject tool The manage_gameobject tool retained parameters (search_term, find_all, search_in_children, search_inactive, component_name, page_size, cursor, max_components, include_properties, includeNonPublicSerialized) from when it was a monolith tool. These params now belong to the separate find_gameobjects tool, manage_components tool, and gameobject_components resource. Their presence on manage_gameobject caused LLMs to hallucinate non-existent actions (e.g. action="find", action="get_components"), leading to ~46 failed tool calls in a single session. Also tightens search_method Literal to only values relevant for target resolution (by_id, by_name, by_path) and improves the tool description to explicitly cross-reference the correct tools and resources. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update search_method Literal and docstring per review Expand search_method to include by_tag, by_layer, by_component and clarify that Unity infers the method when omitted. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: HivemindOverlord <80588752+HivemindOverlord@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: GitHub Actions <actions@github.com>
* feat: auto-merge version bump PRs in beta release workflow Add auto-merge step for version bump PRs created during beta releases. After creating the PR, enable auto-merge and poll for up to 2 minutes for merge completion. If auto-merge fails, attempt direct merge. Add cleanup step to delete the version bump branch after workflow completes. * Simplify version bump PR merge in beta release workflow * fix: simplify sync PR merge in release workflow * fix: add --auto flag to PR merge commands in release workflows * fix: set pr_number output for existing version bump PRs
Co-authored-by: GitHub Actions <actions@github.com>
Co-authored-by: GitHub Actions <actions@github.com>
…6154473 chore: update Unity package to beta version 9.4.1-beta.5
1. Some fixes I made during a very comprehensive scene generation, including VFX generating magenta due to lack of renderer material 2. I put the skills right in the .claude now, so us (developers who actually pull this repo) can directly use it. I still keep the skills under the parent folder in case users wants to download it.
…3152004 chore: update Unity package to beta version 9.4.1-beta.6
…713) * fix: make release sync to beta deterministic and bump next beta version * feat: restore client persistence and update notifications * chore: address reviewer nits in sync workflow and update check
…4540280 chore: update Unity package to beta version 9.4.1-beta.7
…o-beta chore: sync main (v9.4.2) into beta + set 9.4.3-beta.1
…5719046 chore: update Unity package to beta version 9.4.3-beta.2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated version bump to 9.4.4.