@atelierai/uco 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/README.md +3 -3
  3. package/dist/codegen/emit.js +1 -1
  4. package/dist/codegen/fetch.js +1 -1
  5. package/dist/codegen/fetch.js.map +1 -1
  6. package/dist/commands/devops/login.js +1 -1
  7. package/dist/commands/devops/login.js.map +1 -1
  8. package/dist/commands/devops/setup-mcp.js +1 -1
  9. package/dist/commands/devops/setup-mcp.js.map +1 -1
  10. package/dist/commands/gen.js +2 -2
  11. package/dist/commands/gen.js.map +1 -1
  12. package/dist/commands/init.js +31 -10
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/ping.js +2 -2
  15. package/dist/commands/ping.js.map +1 -1
  16. package/dist/config/resolve.js +1 -1
  17. package/dist/config/resolve.js.map +1 -1
  18. package/dist/devops/utils/agents.js +1 -1
  19. package/dist/devops/utils/agents.js.map +1 -1
  20. package/dist/generated/tools.js +1 -1
  21. package/dist/generated/tools.js.map +1 -1
  22. package/docs/INSTALL.zh-CN.md +1 -1
  23. package/package.json +13 -4
  24. package/skills/uco-setup/SKILL.md +2 -2
  25. package/skills/uco-setup/references/recovery.md +26 -2
  26. package/skills/unity-editor/SKILL.md +1 -1
  27. package/vendor/plugin/com.atelierai.unity.copilot/CHANGELOG.md +48 -15
  28. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetResolverMenu.cs +3 -1
  29. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Branding/ProductInfo.cs +4 -5
  30. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/CopilotServerManager.cs +32 -42
  31. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Skills/Skill_InitialSetup.cs +1 -1
  32. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/MenuItems.cs +7 -66
  33. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Overlay/OpenWindowButton.cs +2 -2
  34. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/UnityCopilotProjectSettingsProvider.cs +5 -5
  35. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.Connection.cs +177 -409
  36. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CreateGUI.cs +3 -10
  37. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.cs +2 -71
  38. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/UpdatePopupWindow.cs +2 -2
  39. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Config.cs +6 -1
  40. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Static.cs +9 -12
  41. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.cs +1 -1
  42. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolsManifestGenerator.cs +1 -1
  43. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityCopilotUpdateProjectSettings.cs +2 -2
  44. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UpdateChecker.cs +3 -3
  45. package/vendor/plugin/com.atelierai.unity.copilot/README.md +2 -2
  46. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Config.cs +11 -62
  47. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +1 -1
  48. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Utils/EnvironmentUtils.cs +7 -25
  49. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +260 -320
  50. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Tool/ToolSetEnabledStateTests.cs +1 -1
  51. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/UI/MainWindowEditor.StatusLogicTests.cs +0 -125
  52. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/UI/SceneViewToolbarOverlayTests.cs +1 -1
  53. package/vendor/plugin/com.atelierai.unity.copilot/package.json +3 -3
  54. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Services/DeviceAuthFlow.cs +0 -133
  55. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Services/DeviceAuthFlow.cs.meta +0 -11
  56. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/CopilotServerManagerAutoStartTests.cs +0 -43
  57. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/CopilotServerManagerAutoStartTests.cs.meta +0 -11
@@ -58,7 +58,7 @@ uco --help
58
58
  ```bash
59
59
  uco init # 把三个 uco Skills 装进 ./.claude/skills(Claude Code)
60
60
  # uco init <目录> # 指定别的工作目录
61
- # uco init --agent codex # 用别的助手的 skills 目录(.agents/skills)
61
+ # uco init --agent codex # 用别的助手的 skills 目录(codex 为 .codex/skills)
62
62
  # uco init --agent claude-code,cursor # 一次给多个助手安装
63
63
  # uco init --list # 查看所有支持的助手(含检测路径)
64
64
  ```
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@atelierai/uco",
3
- "version": "1.0.1",
4
- "description": "uco — Unity Co-Pilot CLI. Drive Unity Editor (and runtime game builds) from any AI agent via plain HTTP. No MCP protocol on the wire.",
3
+ "version": "1.0.3",
4
+ "description": "uco — Unity Copilot CLI. Drive Unity Editor (and runtime game builds) from any AI agent via plain HTTP. No MCP protocol on the wire.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "uco": "./bin/uco.mjs",
@@ -40,6 +40,7 @@
40
40
  "LICENSE"
41
41
  ],
42
42
  "dependencies": {
43
+ "@inquirer/prompts": "^8.7.2",
43
44
  "chalk": "^5.6.2",
44
45
  "commander": "^12.1.0",
45
46
  "kleur": "^4.1.5",
@@ -51,7 +52,8 @@
51
52
  "commander",
52
53
  "kleur",
53
54
  "ws",
54
- "yocto-spinner"
55
+ "yocto-spinner",
56
+ "@inquirer/prompts"
55
57
  ],
56
58
  "devDependencies": {
57
59
  "@types/node": "^20.14.0",
@@ -79,5 +81,12 @@
79
81
  "bugs": "https://github.com/DumoeDss/uco/issues",
80
82
  "publishConfig": {
81
83
  "access": "public"
82
- }
84
+ },
85
+ "bundleDependencies": [
86
+ "chalk",
87
+ "commander",
88
+ "kleur",
89
+ "ws",
90
+ "yocto-spinner"
91
+ ]
83
92
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: uco-setup
3
- description: Bootstrap or repair uco integration in a Unity project. Use for Unity Co-Pilot plugin installation or updates, NuGet/config staging, agent Skill generation or migration, project wrapper repair, and bridge readiness failures. Not for routine Editor changes or official Unity lifecycle commands.
3
+ description: Bootstrap or repair uco integration in a Unity project. Use for Unity Copilot plugin installation or updates, NuGet/config staging, agent Skill generation or migration, project wrapper repair, and bridge readiness failures. Not for routine Editor changes or official Unity lifecycle commands.
4
4
  ---
5
5
 
6
6
  # uco setup
@@ -23,7 +23,7 @@ uco install-plugin <project> --dry-run
23
23
  uco install <project> --dry-run
24
24
  ```
25
25
 
26
- 3. Install the Unity Co-Pilot package alone with `install-plugin`, or use `install` when NuGet and configuration staging are also required.
26
+ 3. Install the Unity Copilot package alone with `install-plugin`, or use `install` when NuGet and configuration staging are also required.
27
27
  4. Open the project and wait for package resolution/compilation.
28
28
  5. Require runtime readiness before reading the live catalog:
29
29
 
@@ -2,12 +2,36 @@
2
2
 
3
3
  Read this only after the bootstrap happy path fails.
4
4
 
5
+ ## Bridge not running (`uco ping` fails / connection refused)
6
+
7
+ The bridge is a plain Node process (`bin/server.mjs` from the `@atelierai/uco`
8
+ npm package) listening on a per-project deterministic port. Bring it up in any
9
+ of these ways:
10
+
11
+ - `uco open <project> --start-server true` — the CLI starts a uco-owned bridge
12
+ before Unity launches.
13
+ - Open the Unity Editor: the plugin auto-starts the bridge in Custom mode when
14
+ `keepServerRunning` is true (the default) — discovery looks for the
15
+ `@atelierai/uco` package (project `node_modules` first, then the npm global).
16
+ - Start it manually with the exact same arguments the plugin would use:
17
+
18
+ ```bash
19
+ node <npm-global>/node_modules/@atelierai/uco/bin/server.mjs \
20
+ --port <port> --authorization required --token <token from UserSettings/uco-config.json>
21
+ ```
22
+
23
+ The plugin detects an already-running server on its port and connects to it.
24
+
25
+ If the plugin still refuses to start it: `nodeServerPath` in
26
+ `UserSettings/uco-config.json` may point at a dead path (it must exist or be
27
+ cleared), or the npm package is missing (`npm i -g @atelierai/uco`).
28
+
5
29
  ## Diagnose by layer
6
30
 
7
31
  1. Verify `Packages/manifest.json` contains `com.atelierai.unity.copilot` and inspect its source/version without rewriting unrelated dependencies.
8
32
  2. Check the OpenUPM scopes required by the package and preserve an active local package source.
9
- 3. Check that `Assets/Plugins/NuGet` is present when using full `uco install`. (No server directory is staged — the Unity plugin launches its Node server itself.)
10
- 4. Check `UserSettings/AI-Game-Developer-Config.json` exists, but never print its token.
33
+ 3. Check `Assets/Plugins/NuGet` is present when using full `uco install`. (No server directory is staged — the Unity plugin launches its Node server itself.)
34
+ 4. Check `UserSettings/uco-config.json` exists, but never print its token.
11
35
  5. Confirm the expected Unity Editor process owns this exact project before diagnosing REST readiness.
12
36
  6. Use `uco status`, then `open` plus `wait-for-ready`; only then run `ping` and `instance-get-current`.
13
37
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: unity-editor
3
- description: Inspect or change a running Unity Editor through uco tools. Use for scenes, GameObjects, components, assets, scripts, packages, UI, graphics, physics, screenshots, console, profiler, live build jobs, or in-Editor tests. Requires a ready Unity Co-Pilot project bridge.
3
+ description: Inspect or change a running Unity Editor through uco tools. Use for scenes, GameObjects, components, assets, scripts, packages, UI, graphics, physics, screenshots, console, profiler, live build jobs, or in-Editor tests. Requires a ready Unity Copilot project bridge.
4
4
  ---
5
5
 
6
6
  # Running Unity Editor
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.3] - 2026-09-17 — Cloud mode removed; bridge finds the published npm package
4
+
5
+ - **Cloud connection mode deleted.** The upstream remnant connected to a dead
6
+ third-party endpoint (ai-game.dev), silently prevented the local bridge from
7
+ auto-starting (its gate only allowed Custom), and confused every session that
8
+ hit a config without an explicit mode. ConnectionMode now has a single value
9
+ (Custom), the default is Custom, the device-code auth flow and its UI are
10
+ gone, and old configs carrying "Cloud" are mapped to Custom on load.
11
+ - **Node bridge discovery follows the published package.** npm rejected the
12
+ bare name "uco" (typosquatting policy), so the package publishes as
13
+ @atelierai/uco — but discovery still looked for node_modules/uco, which
14
+ stopped existing the moment the pre-scope global install was removed.
15
+ Discovery now probes @atelierai/uco, then the legacy uco and cocli layouts,
16
+ project-local and npm-global.
17
+ - Token env overrides route straight to the local token (no mode routing);
18
+ UNITY_MCP_CLOUD_URL is gone, --url/UNITY_MCP_HOST keep working.
19
+
20
+ ## [1.0.2] - 2026-09-15 — one menu tree, one name: Unity Copilot
21
+
22
+ - The product is named **Unity Copilot** (no hyphen). All menus, window
23
+ titles, the Project Settings page, the scene-view overlay button, and
24
+ generated skill docs now read from the single `ProductInfo` source.
25
+ - The leftover "AI Game Developer" menu tree (NuGet resolver items) is
26
+ merged into **Tools ▸ Unity Copilot**; the stray root-level
27
+ "Generate Tools Manifest" item moves under it too.
28
+ - Removed the dead **Launch MCP Inspector** item and the legacy
29
+ `Commands/` folder (`start_mcp_inspector.bat`, `copy_readme.bat`) — the
30
+ bridge speaks plain REST, there is no MCP endpoint to inspect.
31
+ - Team update kill-switch asset renamed to
32
+ `ProjectSettings/Copilot-UpdateSettings.asset` (the old
33
+ AI-Game-Developer-named file is no longer read; the toggle resets to
34
+ enabled once).
35
+
3
36
  ## [1.0.1] - 2026-09-15 — self-contained package (framework DLLs move inside)
4
37
 
5
38
  The three locally-built framework DLLs (ReflectorNet.dll, Uco.Framework.dll,
@@ -13,18 +46,18 @@ packages) on first import, and the framework trio travels with the package.
13
46
  on upgrade — duplicates would collide with the embedded assemblies.
14
47
  `build-framework-dlls` now deploys into the package.
15
48
 
16
-
17
- ## [1.0.0] - 2026-09-14 — first public release
18
-
19
- Inaugural version under the `com.atelierai.unity.copilot` identity. The
20
- 0.7x line was the private fork era; the version counter restarts here with
21
- the public repository.
22
-
23
- ### Fixed
24
-
25
- - Node server auto-discovery now looks for the `uco` npm package (the
26
- package was renamed cocli -> uco in 0.76.0, but discovery still looked
27
- only for `node_modules/cocli`, which on machines with a pre-rename global
28
- install resolved to stale 0.2.x server code — or to nothing at all on
29
- clean machines). An explicit `nodeServerPath` in the plugin config still
30
- wins over auto-discovery.
49
+
50
+ ## [1.0.0] - 2026-09-14 — first public release
51
+
52
+ Inaugural version under the `com.atelierai.unity.copilot` identity. The
53
+ 0.7x line was the private fork era; the version counter restarts here with
54
+ the public repository.
55
+
56
+ ### Fixed
57
+
58
+ - Node server auto-discovery now looks for the `uco` npm package (the
59
+ package was renamed cocli -> uco in 0.76.0, but discovery still looked
60
+ only for `node_modules/cocli`, which on machines with a pre-rename global
61
+ install resolved to stale 0.2.x server code — or to nothing at all on
62
+ clean machines). An explicit `nodeServerPath` in the plugin config still
63
+ wins over auto-discovery.
@@ -25,7 +25,9 @@ namespace com.AtelierAI.Unity.Copilot.Editor.DependencyResolver
25
25
  static class NuGetResolverMenu
26
26
  {
27
27
  const string Tag = NuGetConfig.LogTag;
28
- const string MenuPath = "Tools/AI Game Developer/Dependencies/Force Resolve NuGet DLLs";
28
+ // Literal, not ProductInfo: the resolver is the bootstrap assembly and must
29
+ // not reference the main Editor assembly (circular dependency).
30
+ const string MenuPath = "Tools/Unity Copilot/Dependencies/Force Resolve NuGet DLLs";
29
31
 
30
32
  [MenuItem(MenuPath, priority = 1050)]
31
33
  public static void ForceResolve()
@@ -21,8 +21,7 @@ namespace com.AtelierAI.Unity.Copilot.Editor.Branding
21
21
  public static class ProductInfo
22
22
  {
23
23
  public const string ProductName = "Unity Copilot";
24
- public const string ParentBrand = "AI Game Developer";
25
- public const string ProductLong = ParentBrand + " — " + ProductName;
24
+ public const string ProductLong = ProductName;
26
25
 
27
26
  // Stable package id used for EditorPrefs key namespacing. Decoupled from the UPM
28
27
  // package name on disk so a UPM rename doesn't silently wipe per-user state — the
@@ -32,7 +31,7 @@ namespace com.AtelierAI.Unity.Copilot.Editor.Branding
32
31
 
33
32
  // Menu item paths (passed to Unity's [MenuItem] attribute).
34
33
  public const string MainWindowMenu = "Window/" + ProductLong + " %&a";
35
- public const string ToolsMenuRoot = "Tools/" + ParentBrand;
34
+ public const string ToolsMenuRoot = "Tools/" + ProductName;
36
35
  public const string ServerMenuRoot = ToolsMenuRoot + "/Server";
37
36
 
38
37
  // EditorWindow titleContent / GetWindow titles.
@@ -52,8 +51,8 @@ namespace com.AtelierAI.Unity.Copilot.Editor.Branding
52
51
  // status directly in the Editor console.)
53
52
 
54
53
  // Project Settings provider — path users see under Edit > Project Settings.
55
- public const string SettingsPath = "Project/" + ParentBrand;
56
- public const string SettingsKeywords = "AI Copilot Unity " + ParentBrand;
54
+ public const string SettingsPath = "Project/" + ProductName;
55
+ public const string SettingsKeywords = "Copilot Unity uco";
57
56
 
58
57
  // SessionState / EditorPrefs key prefixes for transient + persistent state.
59
58
  // The hash suffix is appended by callers using Application.dataPath FNV-1a.
@@ -85,12 +85,15 @@ namespace com.AtelierAI.Unity.Copilot.Editor
85
85
  #region Node Server Discovery
86
86
 
87
87
  /// <summary>
88
- /// Name of the npm package that ships the Node.js server.
88
+ /// npm package directories that ship the Node.js server, newest first: the
89
+ /// published scoped package (@atelierai/uco — the registry rejected the bare
90
+ /// short name), the pre-scope local layout, and the deprecated cocli install
91
+ /// from the private era.
89
92
  /// </summary>
90
- public const string NodeServerPackageName = "uco";
93
+ public static readonly string[] NodeServerPackageNames = { "@atelierai/uco", "uco", "cocli" };
91
94
 
92
95
  /// <summary>
93
- /// Path of the server entry script inside the <see cref="NodeServerPackageName"/> package.
96
+ /// Path of the server entry script inside a <see cref="NodeServerPackageNames"/> package.
94
97
  /// </summary>
95
98
  public const string NodeServerEntryRelativePath = "bin/server.mjs";
96
99
 
@@ -124,28 +127,33 @@ namespace com.AtelierAI.Unity.Copilot.Editor
124
127
  return null;
125
128
  }
126
129
 
127
- // 2) Installed in the Unity project (uco first, legacy cocli as fallback)
128
- // 2) uco installed in the Unity project
129
- var projectLocal = Path.GetFullPath(Path.Combine(
130
- UnityCopilotPluginEditor.ProjectRootPath,
131
- "node_modules",
132
- NodeServerPackageName,
133
- NodeServerEntryRelativePath));
134
- if (File.Exists(projectLocal))
135
- return projectLocal;
136
-
137
- // 3) uco installed globally via npm
130
+ // 2) Installed in the Unity project (@atelierai/uco first, legacy names after)
131
+ foreach (var packageName in NodeServerPackageNames)
132
+ {
133
+ var projectLocal = Path.GetFullPath(Path.Combine(
134
+ UnityCopilotPluginEditor.ProjectRootPath,
135
+ "node_modules",
136
+ packageName,
137
+ NodeServerEntryRelativePath));
138
+ if (File.Exists(projectLocal))
139
+ return projectLocal;
140
+ }
141
+
142
+ // 3) Installed globally via npm (@atelierai/uco first, legacy names after)
138
143
  foreach (var globalRoot in GetNpmGlobalRoots())
139
144
  {
140
- try
141
- {
142
- var globalPath = Path.Combine(globalRoot, NodeServerPackageName, NodeServerEntryRelativePath);
143
- if (File.Exists(globalPath))
144
- return Path.GetFullPath(globalPath);
145
- }
146
- catch
145
+ foreach (var packageName in NodeServerPackageNames)
147
146
  {
148
- // Inaccessible candidate — skip it.
147
+ try
148
+ {
149
+ var globalPath = Path.Combine(globalRoot, packageName, NodeServerEntryRelativePath);
150
+ if (File.Exists(globalPath))
151
+ return Path.GetFullPath(globalPath);
152
+ }
153
+ catch
154
+ {
155
+ // Inaccessible candidate — skip it.
156
+ }
149
157
  }
150
158
  }
151
159
 
@@ -249,7 +257,7 @@ namespace com.AtelierAI.Unity.Copilot.Editor
249
257
  // documented project-local install location so the generated config is
250
258
  // still a valid, copy-pasteable starting point.
251
259
  var serverEntry = ResolveNodeServerEntry()
252
- ?? Path.Combine("node_modules", NodeServerPackageName, NodeServerEntryRelativePath);
260
+ ?? Path.Combine("node_modules", NodeServerPackageNames[0], NodeServerEntryRelativePath);
253
261
 
254
262
  serverConfig["command"] = ResolveNodeExecutable().Replace('\\', '/');
255
263
 
@@ -381,7 +389,7 @@ namespace com.AtelierAI.Unity.Copilot.Editor
381
389
  // The server runs as a "node" process, and PIDs get reused, so also
382
390
  // verify the process still owns this project's port before
383
391
  // re-attaching — otherwise we might adopt an unrelated node process
384
- // (MCP Inspector, dev server, ...) that recycled our PID.
392
+ // (dev server, ...) that recycled our PID.
385
393
  if (processName.Contains(NodeProcessName) &&
386
394
  GetPidListeningOnPort(UnityCopilotPluginEditor.Port) == savedPid)
387
395
  {
@@ -951,17 +959,6 @@ namespace com.AtelierAI.Unity.Copilot.Editor
951
959
  }
952
960
  }
953
961
 
954
- /// <summary>
955
- /// Returns true when the local server may be auto-started for the given connection mode.
956
- /// Only Custom mode targets the local server, so auto-start is allowed there (subject to
957
- /// other gates such as <see cref="UnityCopilotPluginEditor.KeepServerRunning"/>). Every other
958
- /// mode (Cloud today, plus any future addition) connects to a remote endpoint and must
959
- /// never auto-start the local server on Editor launch or after a binary update.
960
- /// Pure (no Unity API access) so it can be unit-tested in EditMode.
961
- /// </summary>
962
- public static bool IsAutoStartAllowedForMode(ConnectionMode mode)
963
- => mode == ConnectionMode.Custom;
964
-
965
962
  /// <summary>
966
963
  /// Starts the server if KeepServerRunning is enabled and no external server is detected.
967
964
  /// This method is called during Unity Editor startup to auto-start the server based on user preference.
@@ -971,13 +968,6 @@ namespace com.AtelierAI.Unity.Copilot.Editor
971
968
  {
972
969
  EditorApplication.update -= StartServerIfNeeded;
973
970
 
974
- // Skip local server auto-start in Cloud mode — Unity connects to the cloud server instead
975
- if (!IsAutoStartAllowedForMode(UnityCopilotPluginEditor.ConnectionMode))
976
- {
977
- _logger.LogDebug("StartServerIfNeeded: Cloud mode active, skipping local server auto-start");
978
- return;
979
- }
980
-
981
971
  // Check if user wants the server to keep running
982
972
  if (!UnityCopilotPluginEditor.KeepServerRunning)
983
973
  {
@@ -31,7 +31,7 @@ and basic configurations.")]
31
31
  var globalInstallNote = GetGlobalInstallNote();
32
32
 
33
33
  return $@"
34
- # AI Game Developer — Initial Setup
34
+ # Unity Copilot — Initial Setup
35
35
 
36
36
  This guide walks through installing the `unity-mcp-cli` command-line tool and using it to set
37
37
  up a Unity project with AI Skills and MCP integration.
@@ -22,14 +22,14 @@ namespace com.AtelierAI.Unity.Copilot.Editor.UI
22
22
  [MenuItem(ProductInfo.MainWindowMenu, priority = 1006)]
23
23
  public static void ShowWindow() => MainWindowEditor.ShowWindow();
24
24
 
25
- [MenuItem("Tools/Unity Co-Pilot/Updates/Check for Updates", priority = 999)]
25
+ [MenuItem(ProductInfo.ToolsMenuRoot + "/Updates/Check for Updates", priority = 999)]
26
26
  public static void CheckForUpdates() => _ = UpdateChecker.CheckForUpdatesAsync(forceCheck: true);
27
27
 
28
28
  // Team-shared kill-switch for the update popup. Toggling this writes through to
29
- // ProjectSettings/AI-Game-Developer-UpdateSettings.asset (intended to be committed
29
+ // ProjectSettings/Copilot-UpdateSettings.asset (intended to be committed
30
30
  // to VCS). The validate method renders the menu's check-mark to match current state.
31
31
  // See https://github.com/IvanMurzak/uco-plugin/issues/768.
32
- private const string DisableUpdatesMenu = "Tools/Unity Co-Pilot/Updates/Disable Update Notifications (Team)";
32
+ private const string DisableUpdatesMenu = ProductInfo.ToolsMenuRoot + "/Updates/Disable Update Notifications (Team)";
33
33
 
34
34
  [MenuItem(DisableUpdatesMenu, priority = 1000)]
35
35
  public static void ToggleDisableUpdatesForTeam()
@@ -48,79 +48,20 @@ namespace com.AtelierAI.Unity.Copilot.Editor.UI
48
48
  // (cocli) launched directly by CopilotServerManager; its stdout/stderr is
49
49
  // surfaced in the Editor console.
50
50
 
51
- [MenuItem("Tools/Unity Co-Pilot/Server/Launch MCP Inspector", priority = 1004)]
52
- public static void LaunchMcpInspector()
53
- {
54
- // Run command in a terminal window: npx @modelcontextprotocol/inspector http://localhost:8080 --transport http
55
- var npxArgs = $"-y @modelcontextprotocol/inspector {UnityCopilotPluginEditor.Host} --transport http";
56
- Debug.Log($"Launching MCP Inspector with command: npx {npxArgs}");
57
-
58
- var processInfo = new System.Diagnostics.ProcessStartInfo
59
- {
60
- FileName = "npx",
61
- Arguments = npxArgs,
62
- UseShellExecute = true,
63
- CreateNoWindow = false,
64
- };
65
-
66
- try
67
- {
68
- System.Diagnostics.Process.Start(processInfo);
69
- }
70
- catch (System.ComponentModel.Win32Exception ex)
71
- {
72
- var command = $"{processInfo.FileName} {processInfo.Arguments}";
73
- NotificationPopupWindow.Show(
74
- windowTitle: "Launch Failed",
75
- title: "Unable to start MCP Inspector",
76
- message:
77
- "The MCP Inspector could not be started from Unity.\n\n" +
78
- "This usually means that Node.js (and npx) is not installed, or 'npx' is not available on your PATH.\n\n" +
79
- "Prerequisites:\n" +
80
- " - Install Node.js (which includes npx)\n" +
81
- " - Ensure 'npx' is available from your terminal/command prompt\n\n" +
82
- "You can try running the following command manually in a terminal:\n" +
83
- command + "\n\n" +
84
- "System error:\n" +
85
- ex.Message,
86
- width: 450,
87
- minWidth: 450,
88
- height: 460,
89
- minHeight: 460);
90
- }
91
- catch (System.Exception ex)
92
- {
93
- var command = $"{processInfo.FileName} {processInfo.Arguments}";
94
- NotificationPopupWindow.Show(
95
- windowTitle: "Launch Failed",
96
- title: "Unexpected error starting MCP Inspector",
97
- message:
98
- "An unexpected error occurred while trying to start the MCP Inspector.\n\n" +
99
- "You can try running the following command manually in a terminal:\n" +
100
- command + "\n\n" +
101
- "Error details:\n" +
102
- ex.Message,
103
- width: 450,
104
- minWidth: 450,
105
- height: 460,
106
- minHeight: 460);
107
- }
108
- }
109
-
110
- [MenuItem("Tools/Unity Co-Pilot/Debug/Show Update Popup", priority = 2000)]
51
+ [MenuItem(ProductInfo.ToolsMenuRoot + "/Debug/Show Update Popup", priority = 2000)]
111
52
  public static void ShowUpdatePopup() => UpdatePopupWindow.ShowWindow(UnityCopilotPlugin.Version, "99.99.99");
112
53
 
113
- [MenuItem("Tools/Unity Co-Pilot/Debug/Reset Update Preferences", priority = 2001)]
54
+ [MenuItem(ProductInfo.ToolsMenuRoot + "/Debug/Reset Update Preferences", priority = 2001)]
114
55
  public static void ResetUpdatePreferences()
115
56
  {
116
57
  UpdateChecker.ClearPreferences();
117
58
  Debug.Log("Update preferences have been reset.");
118
59
  }
119
60
 
120
- [MenuItem("Tools/Unity Co-Pilot/Debug/Serialization Check", priority = 2002)]
61
+ [MenuItem(ProductInfo.ToolsMenuRoot + "/Debug/Serialization Check", priority = 2002)]
121
62
  public static void ShowSerializationCheck() => SerializationCheckWindow.ShowWindow();
122
63
 
123
- [MenuItem("Tools/Unity Co-Pilot/Reset Config", priority = 2020)]
64
+ [MenuItem(ProductInfo.ToolsMenuRoot + "/Reset Config", priority = 2020)]
124
65
  public static void ResetConfig()
125
66
  {
126
67
  UnityCopilotPluginEditor.ResetConfig();
@@ -24,9 +24,9 @@ namespace com.AtelierAI.Unity.Copilot.Editor.UI
24
24
 
25
25
  public OpenWindowButton()
26
26
  {
27
- text = "Unity Co-Pilot";
27
+ text = "Unity Copilot";
28
28
  icon = EditorAssetLoader.LoadAssetAtPath<Texture2D>(EditorAssetLoader.PackageLogoIcon);
29
- tooltip = "Open Unity Co-Pilot window";
29
+ tooltip = "Open Unity Copilot window";
30
30
  clicked += MainWindowEditor.ShowWindowVoid;
31
31
  RegisterCallback<DetachFromPanelEvent>(OnDetachFromPanel);
32
32
  }
@@ -18,21 +18,21 @@ namespace com.AtelierAI.Unity.Copilot.Editor.UI
18
18
  {
19
19
  /// <summary>
20
20
  /// Exposes Unity-MCP's team-shared update settings under
21
- /// <c>Edit ▸ Project Settings ▸ Unity Co-Pilot</c>.
21
+ /// <c>Edit ▸ Project Settings ▸ Unity Copilot</c>.
22
22
  /// </summary>
23
23
  /// <remarks>
24
24
  /// Mutations write through to <see cref="UnityCopilotUpdateProjectSettings"/>, whose backing
25
- /// asset (<c>ProjectSettings/AI-Game-Developer-UpdateSettings.asset</c>) is intended to be
25
+ /// asset (<c>ProjectSettings/Copilot-UpdateSettings.asset</c>) is intended to be
26
26
  /// committed to VCS. See https://github.com/IvanMurzak/uco-plugin/issues/768.
27
27
  /// </remarks>
28
28
  internal static class UnityCopilotProjectSettingsProvider
29
29
  {
30
- private const string SettingsPath = "Project/Unity Co-Pilot";
30
+ private const string SettingsPath = "Project/Unity Copilot";
31
31
 
32
32
  [SettingsProvider]
33
33
  public static SettingsProvider Create() => new SettingsProvider(SettingsPath, SettingsScope.Project)
34
34
  {
35
- label = "Unity Co-Pilot",
35
+ label = "Unity Copilot",
36
36
  guiHandler = _ =>
37
37
  {
38
38
  EditorGUILayout.LabelField("Update Notifications", EditorStyles.boldLabel);
@@ -50,7 +50,7 @@ namespace com.AtelierAI.Unity.Copilot.Editor.UI
50
50
 
51
51
  EditorGUILayout.Space();
52
52
  EditorGUILayout.HelpBox(
53
- "This setting is stored in ProjectSettings/AI-Game-Developer-UpdateSettings.asset " +
53
+ "This setting is stored in ProjectSettings/Copilot-UpdateSettings.asset " +
54
54
  "and is shared with everyone who clones this project. The per-user 'Do not show again' " +
55
55
  "button on the update popup is unaffected by this setting.",
56
56
  MessageType.Info);