@atelierai/uco 1.0.3 → 1.0.5

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 (41) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/commands/devops/status.js +1 -1
  3. package/dist/config/resolve.js +1 -1
  4. package/dist/devops/commands-upstream/status.js +1 -1
  5. package/dist/devops/commands-upstream/wait-for-ready.js +1 -1
  6. package/dist/devops/lib/install.d.ts +3 -1
  7. package/dist/devops/lib/install.js +51 -4
  8. package/dist/devops/lib/install.js.map +1 -1
  9. package/dist/devops/lib/owned-node-server.js +4 -1
  10. package/dist/devops/lib/owned-node-server.js.map +1 -1
  11. package/dist/devops/lib/run-tool.js +1 -1
  12. package/dist/devops/lib/setup-mcp.js +1 -1
  13. package/dist/devops/utils/config.js +1 -1
  14. package/dist/devops/utils/connection.js +1 -1
  15. package/dist/devops/utils/probe.d.ts +1 -1
  16. package/dist/devops/utils/probe.js +5 -1
  17. package/dist/devops/utils/probe.js.map +1 -1
  18. package/dist/server/app.js +1 -1
  19. package/dist/server/app.js.map +1 -1
  20. package/dist/server/config.d.ts +9 -1
  21. package/dist/server/config.js +19 -1
  22. package/dist/server/config.js.map +1 -1
  23. package/dist/server/index.d.ts +1 -1
  24. package/dist/server/index.js +2 -2
  25. package/dist/server/index.js.map +1 -1
  26. package/dist/server/rest/help.js +1 -1
  27. package/dist/server/rest/help.js.map +1 -1
  28. package/dist/skills/bundle.js +11 -2
  29. package/dist/skills/bundle.js.map +1 -1
  30. package/dist/transport/loopback.d.ts +21 -0
  31. package/dist/transport/loopback.js +73 -0
  32. package/dist/transport/loopback.js.map +1 -0
  33. package/dist/transport/rest.js +32 -3
  34. package/dist/transport/rest.js.map +1 -1
  35. package/package.json +1 -1
  36. package/skills/unity-editor/SKILL.md +50 -50
  37. package/skills/unity-editor/references/diagnostics.md +24 -7
  38. package/vendor/plugin/com.atelierai.unity.copilot/CHANGELOG.md +7 -0
  39. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/UpdatePopupWindow.cs +30 -0
  40. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +1 -1
  41. package/vendor/plugin/com.atelierai.unity.copilot/package.json +1 -1
@@ -1,7 +1,24 @@
1
- # Console, profiler, frame debugger, instances, and tool diagnostics
2
-
3
- Capture the smallest relevant evidence before changing anything: new console entries, bounded counters/traces, frame events, or instance state. Test one hypothesis at a time and repeat the same measurement after an authorized fix.
4
-
5
- Profiler and frame-debugger capture can perturb results. Record capture conditions and keep output bounded. Unknown third-party prefixes remain reachable here with a generation warning.
6
-
7
- ## Live tool groups
1
+ # Console, profiler, frame debugger, instances, and tool diagnostics
2
+
3
+ Capture the smallest relevant evidence before changing anything: new console entries, bounded counters/traces, frame events, or instance state. Test one hypothesis at a time and repeat the same measurement after an authorized fix.
4
+
5
+ Profiler and frame-debugger capture can perturb results. Record capture conditions and keep output bounded. Unknown third-party prefixes remain reachable here with a generation warning.
6
+
7
+ ## Editor log files on multi-instance machines
8
+
9
+ Unity keeps one machine-global log — Windows `%LOCALAPPDATA%\Unity\Editor\Editor.log`, macOS `~/Library/Logs/Unity/Editor.log`, Linux `~/.config/unity3d/Editor.log` — owned by whichever Editor instance started most recently (older content rotates to `Editor-prev.log`). With several Editors open, that file usually diagnoses the wrong project.
10
+
11
+ Newer Editors (verified on 6000.5) also write a project-local `<project>/Logs/Editor.log` that belongs to this project's instance regardless of what else is running (`AssetImportWorker*.log`, `upm.log`, and `Packages-Update.log` there are per-project too) — prefer it when it exists. Older Editors (verified on 2022.3) write no project-local `Editor.log`; on those, identify the owning instance before trusting the global file, or verify by artifacts below.
12
+
13
+ Reliable compile-status signals when the bridge is not yet usable (still importing, or plugin not connected) — version-independent:
14
+
15
+ - `<project>/Library/ScriptAssemblies/<Assembly>.dll` timestamps — a failed compile writes no DLL, so a DLL newer than the last script edit proves that edit compiled clean.
16
+ - `grep "error CS"` in the project-local log (6000.x) or in the global log after confirming its owning instance (202.3/older; check the head of the file for this instance's `-projectPath` in `COMMAND LINE ARGUMENTS`).
17
+
18
+ Prefer `console-get-logs` through the bridge once it is connected. To pin a private log per instance, launch with `-logFile <path>` (batch-mode gates already do this); a running instance cannot be redirected.
19
+
20
+ ## Loopback and per-process proxies
21
+
22
+ uco dials its own bridge at the `127.0.0.1` literal even when a config says `localhost` — Node's fetch may resolve `localhost` to `::1` while the bridge binds IPv4 loopback, and per-process proxy rules (Proxifier/TUN configurations matching `node.exe`) commonly hijack that path. When a bridge is genuinely down on such a machine, the failure still classifies as `connection-refused` (uco re-checks with a raw TCP probe), so trust that diagnosis. What uco cannot work around: a proxy rule that also breaks traffic to live loopback ports — if `uco ping` fails while the bridge process is demonstrably listening, ask the user to exclude loopback (`127.0.0.0/8`, `localhost`) from their proxy rules. Agent MCP configs (`.mcp.json`) pin `127.0.0.1` for the same reason; other clients dialing a `localhost` URL on a proxified machine may need the same rewrite.
23
+
24
+ ## Live tool groups
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.4] - 2026-09-17 — embedded-install update fix
4
+
5
+ The in-editor updater no longer attempts (and fails with an opaque UPM
6
+ error) to update embedded packages installed by uco install. It now
7
+ detects the embedded layout and directs the user to run
8
+ `uco install <project>` instead.
9
+
3
10
  ## [1.0.3] - 2026-09-17 — Cloud mode removed; bridge finds the published npm package
4
11
 
5
12
  - **Cloud connection mode deleted.** The upstream remnant connected to a dead
@@ -11,6 +11,7 @@
11
11
  #nullable enable
12
12
 
13
13
  using System;
14
+ using System.IO;
14
15
  using com.AtelierAI.Unity.Copilot.Editor.DependencyResolver;
15
16
  using com.AtelierAI.Unity.Copilot.Editor.Utils;
16
17
  using R3;
@@ -170,6 +171,20 @@ namespace com.AtelierAI.Unity.Copilot.Editor.UI
170
171
  if (installButton != null)
171
172
  installButton.text = "Installing...";
172
173
 
174
+ // Embedded packages (installed by `uco install` as a physical copy into
175
+ // Packages/) cannot be updated through the registry — Unity refuses
176
+ // Client.Add on an embedded id. Detect this and direct the user to
177
+ // the CLI instead of failing with an opaque UPM error.
178
+ if (IsEmbeddedInstall())
179
+ {
180
+ if (installButton != null)
181
+ installButton.text = "Use: uco install";
182
+ Debug.Log("[Unity Copilot] This project uses an embedded install (uco install). " +
183
+ "Run `uco install <project-path>` from a terminal to upgrade — the in-editor " +
184
+ "updater cannot replace embedded packages.");
185
+ return;
186
+ }
187
+
173
188
  // Force a clean post-install recompile so an unrelated user-asmdef
174
189
  // error can't leave the OLD plugin AppDomain loaded with the new
175
190
  // package files on disk.
@@ -179,6 +194,21 @@ namespace com.AtelierAI.Unity.Copilot.Editor.UI
179
194
  EditorApplication.update += OnPackageInstallProgress;
180
195
  }
181
196
 
197
+ /// <summary>
198
+ /// True when this package is physically embedded in the project's
199
+ /// Packages folder (installed via `uco install`), as opposed to
200
+ /// resolved from a registry or git URL. Embedded packages cannot be
201
+ /// updated through Unity's package manager.
202
+ /// </summary>
203
+ private static bool IsEmbeddedInstall()
204
+ {
205
+ return Directory.Exists(
206
+ Path.Combine(ProjectRootPath, "Packages", "com.atelierai.unity.copilot"));
207
+ }
208
+
209
+ private static string ProjectRootPath =>
210
+ Path.GetDirectoryName(Application.dataPath);
211
+
182
212
  private void OnPackageInstallProgress()
183
213
  {
184
214
  if (addRequest == null)
@@ -26,7 +26,7 @@ namespace com.AtelierAI.Unity.Copilot
26
26
 
27
27
  public partial class UnityCopilotPlugin : IDisposable
28
28
  {
29
- public const string Version = "1.0.3";
29
+ public const string Version = "1.0.4";
30
30
 
31
31
  private static int _singletonCount = 0;
32
32
  public static bool HasAnyInstance => _singletonCount > 0;
@@ -15,7 +15,7 @@
15
15
  "Unity Skills",
16
16
  "uco"
17
17
  ],
18
- "version": "1.0.3",
18
+ "version": "1.0.4",
19
19
  "unity": "2022.3",
20
20
  "description": "uco — Unity Copilot: AI Skills, Tools, and CLI for the Unity Engine, driven over plain REST + WebSocket. Any C# method may be turned into a tool by a single line. Derived from IvanMurzak/Unity-MCP (Apache-2.0).",
21
21
  "documentationUrl": "https://github.com/DumoeDss/uco-plugin/tree/main/uco-unity-project/Packages/com.atelierai.unity.copilot#readme",