@atelierai/uco 1.0.7 → 1.0.9

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 (107) hide show
  1. package/CHANGELOG.md +29 -8
  2. package/package.json +2 -2
  3. package/vendor/plugin/com.atelierai.unity.copilot/CHANGELOG.md +4 -4
  4. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetConfig.cs +132 -132
  5. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDependencyResolver.cs +237 -237
  6. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDownloader.cs +82 -82
  7. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/MenuItems.cs +247 -247
  8. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/ToolGroups.cs +153 -153
  9. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/SystemTool/Skills.Create.SkillBody.cs +155 -155
  10. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Console.GetLogs.cs +95 -95
  11. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Docs.HttpFetcher.cs +139 -139
  12. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Instance.ListAll.cs +72 -72
  13. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/PathReadHelper.cs +106 -106
  14. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Script.Validate.cs +252 -252
  15. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests/TestResultCollector.cs +537 -537
  16. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests.cs +400 -400
  17. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/ToolGroups.SetEnabled.cs +92 -92
  18. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Branding/ProductInfo.cs +62 -62
  19. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/CopilotServerManager.cs +887 -1034
  20. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Skills/Skill_InitialSetup.cs +197 -197
  21. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.Editor.cs +201 -201
  22. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.cs +67 -67
  23. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotListWindowBase.cs +393 -393
  24. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotWindowBase.cs +113 -113
  25. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.Connection.cs +3 -3
  26. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotFeatures.cs +195 -195
  27. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotServer.cs +22 -22
  28. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CreateGUI.cs +354 -354
  29. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.cs +78 -78
  30. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowInitializer.cs +47 -47
  31. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/SerializationCheckWindow.cs +190 -190
  32. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Build.cs +91 -91
  33. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Config.cs +298 -298
  34. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Static.cs +296 -296
  35. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.cs +69 -69
  36. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PackageUtils.cs +168 -168
  37. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PrefsKeyMigration.cs +119 -119
  38. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/SafeDefaultsGuard.cs +180 -180
  39. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ScriptUtils.cs +229 -229
  40. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolGroupRegistry.cs +461 -460
  41. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolsManifestGenerator.cs +200 -200
  42. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringAdapters.cs +1467 -1467
  43. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringSafetyReloadGuard.cs +65 -65
  44. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityCopilotUpdateProjectSettings.cs +66 -66
  45. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotPromptsWindow.uss +11 -11
  46. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotResourcesWindow.uss +16 -16
  47. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotToolsWindow.uss +36 -36
  48. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/MainWindow.uss +183 -183
  49. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/{_mcp-list-window.uss → _copilot-list-window.uss} +18 -18
  50. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/_list-view.uss +77 -77
  51. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotPromptsWindow.uxml +18 -18
  52. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotResourcesWindow.uxml +18 -18
  53. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotToolsWindow.uxml +18 -18
  54. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/MainWindow.uxml +115 -115
  55. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/ReflectorNet.dll +0 -0
  56. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.Common.dll +0 -0
  57. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.dll +0 -0
  58. package/vendor/plugin/com.atelierai.unity.copilot/README.md +88 -88
  59. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Converter/Json/Structures/EntityIdConverter.cs +120 -120
  60. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.cs +110 -110
  61. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.pre-Unity.6.5.cs +110 -110
  62. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Unity/Logs/FileLogStorage.cs +547 -547
  63. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Build.cs +243 -243
  64. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Config.cs +3 -3
  65. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +295 -295
  66. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginBuilder.cs +105 -105
  67. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.Static.cs +155 -155
  68. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.cs +59 -59
  69. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Utils/EnvironmentUtils.cs +11 -11
  70. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/AtomicApiTestFixtures.cs +99 -99
  71. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/TryModifyAtTests.cs +227 -227
  72. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AuthoringSafetyPilotTests.cs +1050 -1050
  73. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetExtractorDevelopmentDependencyTests.cs +148 -148
  74. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetExtractorFlatLayoutTests.cs +166 -166
  75. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetInstallManifestTests.cs +436 -436
  76. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetLegacyMigrationTests.cs +304 -304
  77. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetPackageInstallerStaleVersionCleanupTests.cs +200 -200
  78. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +2 -2
  79. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/BlacklistTypeTests.cs +416 -416
  80. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.cs +172 -172
  81. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.pre-Unity.6.5.cs +169 -169
  82. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.cs +182 -182
  83. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.pre-Unity.6.5.cs +179 -179
  84. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.cs +175 -175
  85. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.pre-Unity.6.5.cs +174 -174
  86. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.cs +171 -171
  87. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.pre-Unity.6.5.cs +170 -170
  88. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsCreateFolderTests.cs +243 -243
  89. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsMaterialTests.cs +101 -101
  90. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.cs +348 -348
  91. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.pre-Unity.6.5.cs +348 -348
  92. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsShaderTests.cs +194 -194
  93. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/GameObject/TestJsonSchema.cs +199 -199
  94. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.cs +573 -573
  95. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.pre-Unity.6.5.cs +513 -513
  96. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.cs +154 -154
  97. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.pre-Unity.6.5.cs +154 -154
  98. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotGameViewTests.cs +164 -164
  99. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotSceneViewTests.cs +155 -155
  100. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolParameterTests.cs +56 -56
  101. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.cs +651 -651
  102. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.pre-Unity.6.5.cs +651 -651
  103. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ToolBatchExecutionIntegrationTests.cs +407 -407
  104. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs → UcoPluginTests.cs} +105 -105
  105. package/vendor/plugin/com.atelierai.unity.copilot/package.json +1 -1
  106. /package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/{_mcp-list-window.uss.meta → _copilot-list-window.uss.meta} +0 -0
  107. /package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs.meta → UcoPluginTests.cs.meta} +0 -0
@@ -1,65 +1,65 @@
1
- /*
2
- ┌──────────────────────────────────────────────────────────────────┐
3
- │ Author: AtelierAI │
4
- │ Copyright (c) 2025 AtelierAI │
5
- │ Licensed under the MIT License. │
6
- └──────────────────────────────────────────────────────────────────┘
7
- */
8
- #nullable enable
9
-
10
- using System.Linq;
11
- using com.AtelierAI.Uco.Framework;
12
- using UnityEditor;
13
-
14
- namespace com.AtelierAI.Unity.Copilot.Editor.Utils
15
- {
16
- /// <summary>
17
- /// Invalidates every in-memory confirmation plan before a domain reload
18
- /// or Editor quit. The plan store is process-local by design; scripts,
19
- /// objects, and policy code may change across a reload, so a token that
20
- /// was issued by the previous AppDomain must not authorise an execution
21
- /// afterwards. It is deliberately not a durable operation registry hook.
22
- /// </summary>
23
- [InitializeOnLoad]
24
- public static class UnityAuthoringSafetyReloadGuard
25
- {
26
- static UnityAuthoringSafetyReloadGuard()
27
- {
28
- AssemblyReloadEvents.beforeAssemblyReload += InvalidateConfirmationPlansHandler;
29
- EditorApplication.quitting += InvalidateConfirmationPlansHandler;
30
- }
31
-
32
- /// <summary>
33
- /// Forgets every issued plan on the live pipeline. Returns the number
34
- /// of policy stores that were invalidated (tests assert on it).
35
- /// </summary>
36
- public static int InvalidateConfirmationPlans()
37
- {
38
- if (!UnityCopilotPluginEditor.HasInstance || !UnityCopilotPluginEditor.Instance.HasMcpPluginInstance)
39
- return 0;
40
-
41
- var invalidated = 0;
42
- foreach (var pipeline in Pipelines())
43
- {
44
- foreach (var middleware in pipeline.Middleware.OfType<AuthoringSafetyMiddleware>())
45
- {
46
- middleware.Policy.ConfirmationPlans.Invalidate();
47
- invalidated++;
48
- }
49
- }
50
- return invalidated;
51
- }
52
-
53
- private static System.Collections.Generic.IEnumerable<ToolExecutionPipeline> Pipelines()
54
- {
55
- var plugin = UnityCopilotPluginEditor.Instance;
56
- if (plugin.Tools is UcoToolManager tools)
57
- yield return tools.ExecutionPipeline;
58
- if (plugin.UcoPluginInstance?.UcoManager.SystemToolManager is UcoSystemToolManager systemTools
59
- && !(plugin.Tools is UcoToolManager regular && ReferenceEquals(regular.ExecutionPipeline, systemTools.ExecutionPipeline)))
60
- yield return systemTools.ExecutionPipeline;
61
- }
62
-
63
- private static void InvalidateConfirmationPlansHandler() => InvalidateConfirmationPlans();
64
- }
65
- }
1
+ /*
2
+ ┌──────────────────────────────────────────────────────────────────┐
3
+ │ Author: AtelierAI │
4
+ │ Copyright (c) 2025 AtelierAI │
5
+ │ Licensed under the MIT License. │
6
+ └──────────────────────────────────────────────────────────────────┘
7
+ */
8
+ #nullable enable
9
+
10
+ using System.Linq;
11
+ using com.AtelierAI.Uco.Framework;
12
+ using UnityEditor;
13
+
14
+ namespace com.AtelierAI.Unity.Copilot.Editor.Utils
15
+ {
16
+ /// <summary>
17
+ /// Invalidates every in-memory confirmation plan before a domain reload
18
+ /// or Editor quit. The plan store is process-local by design; scripts,
19
+ /// objects, and policy code may change across a reload, so a token that
20
+ /// was issued by the previous AppDomain must not authorise an execution
21
+ /// afterwards. It is deliberately not a durable operation registry hook.
22
+ /// </summary>
23
+ [InitializeOnLoad]
24
+ public static class UnityAuthoringSafetyReloadGuard
25
+ {
26
+ static UnityAuthoringSafetyReloadGuard()
27
+ {
28
+ AssemblyReloadEvents.beforeAssemblyReload += InvalidateConfirmationPlansHandler;
29
+ EditorApplication.quitting += InvalidateConfirmationPlansHandler;
30
+ }
31
+
32
+ /// <summary>
33
+ /// Forgets every issued plan on the live pipeline. Returns the number
34
+ /// of policy stores that were invalidated (tests assert on it).
35
+ /// </summary>
36
+ public static int InvalidateConfirmationPlans()
37
+ {
38
+ if (!UnityCopilotPluginEditor.HasInstance || !UnityCopilotPluginEditor.Instance.HasUcoPluginInstance)
39
+ return 0;
40
+
41
+ var invalidated = 0;
42
+ foreach (var pipeline in Pipelines())
43
+ {
44
+ foreach (var middleware in pipeline.Middleware.OfType<AuthoringSafetyMiddleware>())
45
+ {
46
+ middleware.Policy.ConfirmationPlans.Invalidate();
47
+ invalidated++;
48
+ }
49
+ }
50
+ return invalidated;
51
+ }
52
+
53
+ private static System.Collections.Generic.IEnumerable<ToolExecutionPipeline> Pipelines()
54
+ {
55
+ var plugin = UnityCopilotPluginEditor.Instance;
56
+ if (plugin.Tools is UcoToolManager tools)
57
+ yield return tools.ExecutionPipeline;
58
+ if (plugin.UcoPluginInstance?.UcoManager.SystemToolManager is UcoSystemToolManager systemTools
59
+ && !(plugin.Tools is UcoToolManager regular && ReferenceEquals(regular.ExecutionPipeline, systemTools.ExecutionPipeline)))
60
+ yield return systemTools.ExecutionPipeline;
61
+ }
62
+
63
+ private static void InvalidateConfirmationPlansHandler() => InvalidateConfirmationPlans();
64
+ }
65
+ }
@@ -1,66 +1,66 @@
1
- /*
2
- ┌──────────────────────────────────────────────────────────────────┐
3
- │ Author: Ivan Murzak (https://github.com/IvanMurzak) │
4
- │ Repository: GitHub (https://github.com/IvanMurzak/Unity-MCP) │
5
- │ Copyright (c) 2025 Ivan Murzak │
6
- │ Licensed under the Apache License, Version 2.0. │
7
- │ See the LICENSE file in the project root for more information. │
8
- └──────────────────────────────────────────────────────────────────┘
9
- */
10
-
11
- #nullable enable
12
- using UnityEditor;
13
- using UnityEngine;
14
-
15
- namespace com.AtelierAI.Unity.Copilot.Editor.Utils
16
- {
17
- /// <summary>
18
- /// Team-shared settings for the Unity-MCP update checker, persisted under
19
- /// <c>ProjectSettings/Copilot-UpdateSettings.asset</c>.
20
- /// </summary>
21
- /// <remarks>
22
- /// Uses Unity's <see cref="ScriptableSingleton{T}"/> + <see cref="FilePathAttribute"/> pattern
23
- /// for project-scoped editor settings. The asset file is plain YAML, diff-friendly, and
24
- /// lives in the folder teams commit to VCS — so flipping <see cref="DisableUpdateNotificationsForTeam"/>
25
- /// once and committing the resulting asset disables the update popup for every team member
26
- /// who pulls that commit.
27
- ///
28
- /// This complements (does not replace) the per-user "Do not show again" flag stored via
29
- /// <see cref="EditorPrefs"/>. Precedence is enforced in
30
- /// <see cref="UpdateChecker.ShouldCheckForUpdates"/>: the project flag short-circuits
31
- /// the check before the per-user flag is consulted.
32
- ///
33
- /// See <see href="https://github.com/IvanMurzak/uco-plugin/issues/768"/>.
34
- /// </remarks>
35
- /// <remarks>
36
- /// <see cref="FilePathAttribute.Location.ProjectFolder"/> resolves the relative path against
37
- /// the Unity project root (the folder that contains <c>Assets/</c>, <c>Packages/</c>, and
38
- /// <c>ProjectSettings/</c>) — NOT against <c>Assets/</c>. That places the asset alongside
39
- /// other team-shared editor settings such as <c>ProjectSettings/EditorSettings.asset</c>.
40
- /// </remarks>
41
- [FilePath("ProjectSettings/Copilot-UpdateSettings.asset", FilePathAttribute.Location.ProjectFolder)]
42
- internal sealed class UnityCopilotUpdateProjectSettings : ScriptableSingleton<UnityCopilotUpdateProjectSettings>
43
- {
44
- [SerializeField] private bool disableUpdateNotificationsForTeam;
45
-
46
- /// <summary>
47
- /// When <c>true</c>, the update popup is suppressed for every team member who has this
48
- /// asset in their checkout — regardless of any per-user <see cref="EditorPrefs"/> state.
49
- /// </summary>
50
- /// <remarks>
51
- /// Setter persists immediately via <see cref="ScriptableSingleton{T}.Save"/> with
52
- /// <c>saveAsText: true</c> so the resulting asset is YAML (diff-friendly).
53
- /// </remarks>
54
- public bool DisableUpdateNotificationsForTeam
55
- {
56
- get => disableUpdateNotificationsForTeam;
57
- set
58
- {
59
- if (disableUpdateNotificationsForTeam == value)
60
- return;
61
- disableUpdateNotificationsForTeam = value;
62
- Save(true);
63
- }
64
- }
65
- }
66
- }
1
+ /*
2
+ ┌──────────────────────────────────────────────────────────────────┐
3
+ │ Author: Ivan Murzak (https://github.com/IvanMurzak) │
4
+ │ Repository: GitHub (https://github.com/IvanMurzak/Unity-MCP) │
5
+ │ Copyright (c) 2025 Ivan Murzak │
6
+ │ Licensed under the Apache License, Version 2.0. │
7
+ │ See the LICENSE file in the project root for more information. │
8
+ └──────────────────────────────────────────────────────────────────┘
9
+ */
10
+
11
+ #nullable enable
12
+ using UnityEditor;
13
+ using UnityEngine;
14
+
15
+ namespace com.AtelierAI.Unity.Copilot.Editor.Utils
16
+ {
17
+ /// <summary>
18
+ /// Team-shared settings for the Unity-Uco update checker, persisted under
19
+ /// <c>ProjectSettings/Copilot-UpdateSettings.asset</c>.
20
+ /// </summary>
21
+ /// <remarks>
22
+ /// Uses Unity's <see cref="ScriptableSingleton{T}"/> + <see cref="FilePathAttribute"/> pattern
23
+ /// for project-scoped editor settings. The asset file is plain YAML, diff-friendly, and
24
+ /// lives in the folder teams commit to VCS — so flipping <see cref="DisableUpdateNotificationsForTeam"/>
25
+ /// once and committing the resulting asset disables the update popup for every team member
26
+ /// who pulls that commit.
27
+ ///
28
+ /// This complements (does not replace) the per-user "Do not show again" flag stored via
29
+ /// <see cref="EditorPrefs"/>. Precedence is enforced in
30
+ /// <see cref="UpdateChecker.ShouldCheckForUpdates"/>: the project flag short-circuits
31
+ /// the check before the per-user flag is consulted.
32
+ ///
33
+ /// See <see href="https://github.com/IvanMurzak/uco-plugin/issues/768"/>.
34
+ /// </remarks>
35
+ /// <remarks>
36
+ /// <see cref="FilePathAttribute.Location.ProjectFolder"/> resolves the relative path against
37
+ /// the Unity project root (the folder that contains <c>Assets/</c>, <c>Packages/</c>, and
38
+ /// <c>ProjectSettings/</c>) — NOT against <c>Assets/</c>. That places the asset alongside
39
+ /// other team-shared editor settings such as <c>ProjectSettings/EditorSettings.asset</c>.
40
+ /// </remarks>
41
+ [FilePath("ProjectSettings/Copilot-UpdateSettings.asset", FilePathAttribute.Location.ProjectFolder)]
42
+ internal sealed class UnityCopilotUpdateProjectSettings : ScriptableSingleton<UnityCopilotUpdateProjectSettings>
43
+ {
44
+ [SerializeField] private bool disableUpdateNotificationsForTeam;
45
+
46
+ /// <summary>
47
+ /// When <c>true</c>, the update popup is suppressed for every team member who has this
48
+ /// asset in their checkout — regardless of any per-user <see cref="EditorPrefs"/> state.
49
+ /// </summary>
50
+ /// <remarks>
51
+ /// Setter persists immediately via <see cref="ScriptableSingleton{T}.Save"/> with
52
+ /// <c>saveAsText: true</c> so the resulting asset is YAML (diff-friendly).
53
+ /// </remarks>
54
+ public bool DisableUpdateNotificationsForTeam
55
+ {
56
+ get => disableUpdateNotificationsForTeam;
57
+ set
58
+ {
59
+ if (disableUpdateNotificationsForTeam == value)
60
+ return;
61
+ disableUpdateNotificationsForTeam = value;
62
+ Save(true);
63
+ }
64
+ }
65
+ }
66
+ }
@@ -1,11 +1,11 @@
1
- /* ==========================================================================
2
- MCP Prompts Window Styles
3
- Imports common list window styles and adds prompt-specific customizations
4
- ========================================================================== */
5
-
6
- @import url("common/_mcp-list-window.uss");
7
-
8
- /* Prompt-specific: Role label color */
9
- .item-role {
10
- color: #8FAADC;
11
- }
1
+ /* ==========================================================================
2
+ Copilot Prompts Window Styles
3
+ Imports common list window styles and adds prompt-specific customizations
4
+ ========================================================================== */
5
+
6
+ @import url("common/_copilot-list-window.uss");
7
+
8
+ /* Prompt-specific: Role label color */
9
+ .item-role {
10
+ color: #8FAADC;
11
+ }
@@ -1,16 +1,16 @@
1
- /* ==========================================================================
2
- MCP Resources Window Styles
3
- Imports common list window styles and adds resource-specific customizations
4
- ========================================================================== */
5
-
6
- @import url("common/_mcp-list-window.uss");
7
-
8
- /* Resource-specific: URI label color */
9
- .item-uri {
10
- color: #9ACD32;
11
- }
12
-
13
- /* Resource-specific: MIME type label color */
14
- .item-mimetype {
15
- color: #DDA0DD;
16
- }
1
+ /* ==========================================================================
2
+ Copilot Resources Window Styles
3
+ Imports common list window styles and adds resource-specific customizations
4
+ ========================================================================== */
5
+
6
+ @import url("common/_copilot-list-window.uss");
7
+
8
+ /* Resource-specific: URI label color */
9
+ .item-uri {
10
+ color: #9ACD32;
11
+ }
12
+
13
+ /* Resource-specific: MIME type label color */
14
+ .item-mimetype {
15
+ color: #DDA0DD;
16
+ }
@@ -1,36 +1,36 @@
1
- /* ==========================================================================
2
- MCP Tools Window Styles
3
- ========================================================================== */
4
-
5
- @import url("common/_mcp-list-window.uss");
6
-
7
- /* Tool Item Header - column layout with two rows */
8
- .tool-item-header {
9
- flex-direction: column;
10
- }
11
-
12
- /* Shared row style for tool item rows */
13
- .tool-item-row {
14
- flex-direction: row;
15
- justify-content: space-between;
16
- width: 100%;
17
- }
18
-
19
- /* Title row - toggle aligned to top */
20
- .tool-item-title-row {
21
- align-items: flex-start;
22
- }
23
-
24
- /* Subtitle row - vertically centered */
25
- .tool-item-subtitle-row {
26
- align-items: center;
27
- }
28
-
29
- /* Token Count */
30
- .item-token-count {
31
- flex-shrink: 0;
32
- margin-left: 8px;
33
- font-size: 10px;
34
- color: rgb(150, 150, 150);
35
- white-space: nowrap;
36
- }
1
+ /* ==========================================================================
2
+ Copilot Tools Window Styles
3
+ ========================================================================== */
4
+
5
+ @import url("common/_copilot-list-window.uss");
6
+
7
+ /* Tool Item Header - column layout with two rows */
8
+ .tool-item-header {
9
+ flex-direction: column;
10
+ }
11
+
12
+ /* Shared row style for tool item rows */
13
+ .tool-item-row {
14
+ flex-direction: row;
15
+ justify-content: space-between;
16
+ width: 100%;
17
+ }
18
+
19
+ /* Title row - toggle aligned to top */
20
+ .tool-item-title-row {
21
+ align-items: flex-start;
22
+ }
23
+
24
+ /* Subtitle row - vertically centered */
25
+ .tool-item-subtitle-row {
26
+ align-items: center;
27
+ }
28
+
29
+ /* Token Count */
30
+ .item-token-count {
31
+ flex-shrink: 0;
32
+ margin-left: 8px;
33
+ font-size: 10px;
34
+ color: rgb(150, 150, 150);
35
+ white-space: nowrap;
36
+ }