nccgs 1.0.0
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.
- package/.claude/agents/nccgs-accessibility-specialist.md +26 -0
- package/.claude/agents/nccgs-adversarial-reviewer.md +26 -0
- package/.claude/agents/nccgs-ai-programmer.md +26 -0
- package/.claude/agents/nccgs-analytics-engineer.md +26 -0
- package/.claude/agents/nccgs-art-direction-lead.md +26 -0
- package/.claude/agents/nccgs-audio-direction-lead.md +26 -0
- package/.claude/agents/nccgs-creative-director.md +26 -0
- package/.claude/agents/nccgs-documentation-manager.md +26 -0
- package/.claude/agents/nccgs-economy-designer.md +26 -0
- package/.claude/agents/nccgs-engine-programmer.md +26 -0
- package/.claude/agents/nccgs-game-design-lead.md +26 -0
- package/.claude/agents/nccgs-game-designer.md +26 -0
- package/.claude/agents/nccgs-gameplay-programmer.md +26 -0
- package/.claude/agents/nccgs-level-designer.md +26 -0
- package/.claude/agents/nccgs-live-ops-designer.md +26 -0
- package/.claude/agents/nccgs-localization-lead.md +26 -0
- package/.claude/agents/nccgs-narrative-lead.md +26 -0
- package/.claude/agents/nccgs-network-programmer.md +26 -0
- package/.claude/agents/nccgs-performance-analyst.md +26 -0
- package/.claude/agents/nccgs-producer.md +26 -0
- package/.claude/agents/nccgs-production-coordinator.md +23 -0
- package/.claude/agents/nccgs-programming-lead.md +26 -0
- package/.claude/agents/nccgs-prototyper.md +26 -0
- package/.claude/agents/nccgs-qa-engineer.md +26 -0
- package/.claude/agents/nccgs-qa-lead.md +26 -0
- package/.claude/agents/nccgs-release-engineer.md +26 -0
- package/.claude/agents/nccgs-release-lead.md +26 -0
- package/.claude/agents/nccgs-security-engineer.md +26 -0
- package/.claude/agents/nccgs-sound-designer.md +26 -0
- package/.claude/agents/nccgs-systems-designer.md +26 -0
- package/.claude/agents/nccgs-technical-architect.md +26 -0
- package/.claude/agents/nccgs-technical-artist.md +26 -0
- package/.claude/agents/nccgs-technical-director.md +26 -0
- package/.claude/agents/nccgs-tools-programmer.md +26 -0
- package/.claude/agents/nccgs-ui-programmer.md +26 -0
- package/.claude/agents/nccgs-unity-build-specialist.md +26 -0
- package/.claude/agents/nccgs-unity-content-specialist.md +26 -0
- package/.claude/agents/nccgs-unity-implementer.md +26 -0
- package/.claude/agents/nccgs-unity-rendering-specialist.md +26 -0
- package/.claude/agents/nccgs-unity-systems-specialist.md +26 -0
- package/.claude/agents/nccgs-unity-ui-specialist.md +26 -0
- package/.claude/agents/nccgs-ux-designer.md +26 -0
- package/.claude/agents/nccgs-verification-engineer.md +26 -0
- package/.claude/agents/nccgs-world-builder.md +26 -0
- package/.claude/agents/nccgs-writer.md +26 -0
- package/.claude/nccgs/THIRD_PARTY_NOTICES.md +13 -0
- package/.claude/nccgs/VERSION +1 -0
- package/.claude/nccgs/constitution.md +131 -0
- package/.claude/nccgs/hooks/agent-audit.mjs +10 -0
- package/.claude/nccgs/hooks/common.mjs +41 -0
- package/.claude/nccgs/hooks/post-compact.mjs +1 -0
- package/.claude/nccgs/hooks/pre-compact.mjs +8 -0
- package/.claude/nccgs/hooks/protect-git.mjs +22 -0
- package/.claude/nccgs/hooks/protect-write.mjs +17 -0
- package/.claude/nccgs/hooks/session-start.mjs +15 -0
- package/.claude/nccgs/hooks/session-stop.mjs +7 -0
- package/.claude/nccgs/protocols/agent-contract.md +34 -0
- package/.claude/nccgs/protocols/context-packets.md +13 -0
- package/.claude/nccgs/protocols/evidence.md +15 -0
- package/.claude/nccgs/protocols/model-routing.md +22 -0
- package/.claude/nccgs/protocols/orchestration.md +26 -0
- package/.claude/nccgs/protocols/unity-boundary.md +11 -0
- package/.claude/nccgs/settings.fragment.json +77 -0
- package/.claude/nccgs/studio.json +347 -0
- package/.claude/nccgs/tools/configure-models.mjs +39 -0
- package/.claude/nccgs/unity-skills-manifest.json +727 -0
- package/.claude/nccgs/workflow-catalog.json +317 -0
- package/.claude/rules/nccgs-canonical-docs.md +19 -0
- package/.claude/rules/nccgs-editor-tools.md +12 -0
- package/.claude/rules/nccgs-localization.md +12 -0
- package/.claude/rules/nccgs-networking.md +13 -0
- package/.claude/rules/nccgs-performance.md +14 -0
- package/.claude/rules/nccgs-rendering.md +16 -0
- package/.claude/rules/nccgs-security.md +13 -0
- package/.claude/rules/nccgs-tests.md +18 -0
- package/.claude/rules/nccgs-ui.md +14 -0
- package/.claude/rules/nccgs-unity-assets.md +21 -0
- package/.claude/rules/nccgs-unity-code.md +22 -0
- package/.claude/skills/accessibility-review/SKILL.md +14 -0
- package/.claude/skills/architecture-decision/SKILL.md +14 -0
- package/.claude/skills/asset-audit/SKILL.md +14 -0
- package/.claude/skills/audit/SKILL.md +16 -0
- package/.claude/skills/audit/references/dimensions.md +46 -0
- package/.claude/skills/balance-review/SKILL.md +14 -0
- package/.claude/skills/bug-triage/SKILL.md +14 -0
- package/.claude/skills/build-live-game/SKILL.md +317 -0
- package/.claude/skills/build-live-game/references/achievements.md +779 -0
- package/.claude/skills/build-live-game/references/apis.md +280 -0
- package/.claude/skills/build-live-game/references/authentication.md +437 -0
- package/.claude/skills/build-live-game/references/battlepass.md +860 -0
- package/.claude/skills/build-live-game/references/cloud-code.md +563 -0
- package/.claude/skills/build-live-game/references/cloud-save.md +474 -0
- package/.claude/skills/build-live-game/references/deployment.md +216 -0
- package/.claude/skills/build-live-game/references/player-account.md +813 -0
- package/.claude/skills/build-live-game/references/remote-config.md +96 -0
- package/.claude/skills/build-live-game/references/tooling.md +431 -0
- package/.claude/skills/closure/SKILL.md +14 -0
- package/.claude/skills/code-review/SKILL.md +14 -0
- package/.claude/skills/compatibility-review/SKILL.md +14 -0
- package/.claude/skills/context-pack/SKILL.md +14 -0
- package/.claude/skills/dependency-review/SKILL.md +14 -0
- package/.claude/skills/design/SKILL.md +20 -0
- package/.claude/skills/design-review/SKILL.md +14 -0
- package/.claude/skills/evidence-review/SKILL.md +14 -0
- package/.claude/skills/hotfix/SKILL.md +14 -0
- package/.claude/skills/implement-in-app-purchases/README.md +233 -0
- package/.claude/skills/implement-in-app-purchases/SKILL.md +158 -0
- package/.claude/skills/implement-in-app-purchases/references/api-notes.md +562 -0
- package/.claude/skills/implement-in-app-purchases/references/codeless-catalog.md +331 -0
- package/.claude/skills/implement-in-app-purchases/references/convert-adapty.md +268 -0
- package/.claude/skills/implement-in-app-purchases/references/convert-essentialkit.md +239 -0
- package/.claude/skills/implement-in-app-purchases/references/convert-revenuecat.md +275 -0
- package/.claude/skills/implement-in-app-purchases/references/convert-unipay.md +145 -0
- package/.claude/skills/implement-in-app-purchases/references/migration-v4-to-v5.md +204 -0
- package/.claude/skills/implement-in-app-purchases/references/path-add-iap-to-new-project.md +198 -0
- package/.claude/skills/implement-in-app-purchases/references/path-convert-native-google-billing.md +356 -0
- package/.claude/skills/implement-in-app-purchases/references/path-convert-native-storekit.md +446 -0
- package/.claude/skills/implement-in-app-purchases/references/path-implement-iap-d2c.md +680 -0
- package/.claude/skills/implement-in-app-purchases/references/platform-notes.md +204 -0
- package/.claude/skills/implement-in-app-purchases/references/pre-check.md +205 -0
- package/.claude/skills/incident-recovery/SKILL.md +14 -0
- package/.claude/skills/initialize-ai-navigation/SKILL.md +95 -0
- package/.claude/skills/initialize-ai-navigation/references/navigation-system.md +794 -0
- package/.claude/skills/levelplay-unity-integration/CHANGELOG.md +57 -0
- package/.claude/skills/levelplay-unity-integration/README.md +74 -0
- package/.claude/skills/levelplay-unity-integration/SKILL.md +1126 -0
- package/.claude/skills/levelplay-unity-integration/references/banner-api.md +920 -0
- package/.claude/skills/levelplay-unity-integration/references/best-practices.md +536 -0
- package/.claude/skills/levelplay-unity-integration/references/ilrd-api.md +337 -0
- package/.claude/skills/levelplay-unity-integration/references/initialization-api.md +630 -0
- package/.claude/skills/levelplay-unity-integration/references/interstitial-api.md +899 -0
- package/.claude/skills/levelplay-unity-integration/references/ios-setup.md +491 -0
- package/.claude/skills/levelplay-unity-integration/references/migration-sdk-9.md +666 -0
- package/.claude/skills/levelplay-unity-integration/references/privacy-settings.md +608 -0
- package/.claude/skills/levelplay-unity-integration/references/rewarded-api.md +902 -0
- package/.claude/skills/localization/SKILL.md +135 -0
- package/.claude/skills/localization/references/api-notes.md +76 -0
- package/.claude/skills/localization/resources/L10nBatchProcessor.cs +69 -0
- package/.claude/skills/localization/resources/LocalizedFontAsset.cs +18 -0
- package/.claude/skills/localize-game/SKILL.md +14 -0
- package/.claude/skills/migrate-project/SKILL.md +21 -0
- package/.claude/skills/migrate-project/references/procedure.md +63 -0
- package/.claude/skills/milestone-review/SKILL.md +14 -0
- package/.claude/skills/new-unity-project/SKILL.md +179 -0
- package/.claude/skills/optimize-audio/SKILL.md +199 -0
- package/.claude/skills/optimize-audio/resources/audio-import-api.md +146 -0
- package/.claude/skills/optimize-audio/resources/platform-settings.md +48 -0
- package/.claude/skills/optimize-text-mesh-pro/SKILL.md +182 -0
- package/.claude/skills/optimize-web/SKILL.md +393 -0
- package/.claude/skills/optimize-web/resources/WebOptimizer.cs +21 -0
- package/.claude/skills/optimize-web/resources/toktx-examples.sh +11 -0
- package/.claude/skills/performance-audit/SKILL.md +14 -0
- package/.claude/skills/physics-3d-collision/SKILL.md +442 -0
- package/.claude/skills/physics-3d-collision/references/troubleshooting.md +41 -0
- package/.claude/skills/physics-3d-collision/resources/CollisionDebugger.cs +33 -0
- package/.claude/skills/plan-feature/SKILL.md +14 -0
- package/.claude/skills/playtest/SKILL.md +14 -0
- package/.claude/skills/project-stage/SKILL.md +14 -0
- package/.claude/skills/prototype-feature/SKILL.md +14 -0
- package/.claude/skills/qa-plan/SKILL.md +14 -0
- package/.claude/skills/release/SKILL.md +18 -0
- package/.claude/skills/release-readiness/SKILL.md +14 -0
- package/.claude/skills/retrospective/SKILL.md +14 -0
- package/.claude/skills/review/SKILL.md +16 -0
- package/.claude/skills/security-audit/SKILL.md +14 -0
- package/.claude/skills/setup-multiplayer-services/SKILL.md +39 -0
- package/.claude/skills/setup-multiplayer-services/references/dgs-entrypoint.md +79 -0
- package/.claude/skills/setup-multiplayer-services/references/entrypoints.md +213 -0
- package/.claude/skills/setup-multiplayer-services/references/examples.md +33 -0
- package/.claude/skills/setup-multiplayer-services/references/implementation-fit.md +30 -0
- package/.claude/skills/setup-multiplayer-services/references/underlying-services.md +11 -0
- package/.claude/skills/setup-multiplayer-services/references/workflows-prerequisites.md +17 -0
- package/.claude/skills/setup-vivox-voice-chat/SKILL.md +118 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/.env.example +6 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/README.md +101 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/promptfooconfig.yaml +32 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/tests/init-and-login.yaml +76 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/tests/text-chat.yaml +65 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/tests/voice-channels.yaml +74 -0
- package/.claude/skills/setup-vivox-voice-chat/references/events-and-participants.md +79 -0
- package/.claude/skills/setup-vivox-voice-chat/references/init-and-login.md +92 -0
- package/.claude/skills/setup-vivox-voice-chat/references/text-chat.md +93 -0
- package/.claude/skills/setup-vivox-voice-chat/references/troubleshooting.md +47 -0
- package/.claude/skills/setup-vivox-voice-chat/references/voice-channels.md +90 -0
- package/.claude/skills/shader-graph-create-custom-node/SKILL.md +25 -0
- package/.claude/skills/shader-graph-create-custom-node/resources/all_hints.hlsl +182 -0
- package/.claude/skills/sprint-plan/SKILL.md +14 -0
- package/.claude/skills/sprite-editor/SKILL.md +66 -0
- package/.claude/skills/sprite-editor/references/api_reference.md +151 -0
- package/.claude/skills/sprite-editor/references/background.md +112 -0
- package/.claude/skills/sprite-editor/references/templates.md +72 -0
- package/.claude/skills/sprite-editor/scripts/AutomaticSliceTexture.cs +40 -0
- package/.claude/skills/sprite-editor/scripts/GenerateNewSpriteRects.cs +200 -0
- package/.claude/skills/sprite-editor/scripts/GetTextureSourceImageSize.cs +32 -0
- package/.claude/skills/sprite-editor/scripts/GetTextureToSlice.cs +55 -0
- package/.claude/skills/sprite-editor/scripts/GridSliceTexture.cs +40 -0
- package/.claude/skills/sprite-editor/scripts/IsometricSliceTexture.cs +141 -0
- package/.claude/skills/sprite-editor/scripts/README.md +134 -0
- package/.claude/skills/sprite-editor/scripts/SetPivotExample.cs +58 -0
- package/.claude/skills/sprite-editor/scripts/SpriteToPng.cs +88 -0
- package/.claude/skills/status/SKILL.md +16 -0
- package/.claude/skills/story-readiness/SKILL.md +14 -0
- package/.claude/skills/test/SKILL.md +16 -0
- package/.claude/skills/ui/SKILL.md +142 -0
- package/.claude/skills/ui-imgui/SKILL.md +186 -0
- package/.claude/skills/ui-imgui/references/gui-elements.md +156 -0
- package/.claude/skills/ui-imgui/references/templates.md +141 -0
- package/.claude/skills/ui-review/SKILL.md +14 -0
- package/.claude/skills/ui-ugui/SKILL.md +282 -0
- package/.claude/skills/ui-ugui/references/scrollview-setup.md +29 -0
- package/.claude/skills/ui-uitk/SKILL.md +235 -0
- package/.claude/skills/ui-uitk/references/common-issues.md +74 -0
- package/.claude/skills/ui-uitk/references/custom-elements.md +241 -0
- package/.claude/skills/ui-uitk/references/painter2d.md +282 -0
- package/.claude/skills/ui-uitk/references/pointermanipulator-guide.md +94 -0
- package/.claude/skills/ui-uitk/references/svg-icons.md +136 -0
- package/.claude/skills/ui-uitk/references/ui-runtime-binding.md +234 -0
- package/.claude/skills/ui-uitk/references/uss-guide.md +138 -0
- package/.claude/skills/unity-cli/CHANGELOG.md +233 -0
- package/.claude/skills/unity-cli/SECURITY.md +22 -0
- package/.claude/skills/unity-cli/SKILL.md +414 -0
- package/.claude/skills/unity-cli/references/auth-license-cloud.md +146 -0
- package/.claude/skills/unity-cli/references/build-run-test.md +349 -0
- package/.claude/skills/unity-cli/references/collaboration.md +472 -0
- package/.claude/skills/unity-cli/references/config-hub.md +103 -0
- package/.claude/skills/unity-cli/references/diagnostics-maintenance.md +326 -0
- package/.claude/skills/unity-cli/references/editors-install.md +327 -0
- package/.claude/skills/unity-cli/references/integration-advanced.md +472 -0
- package/.claude/skills/unity-cli/references/projects-templates.md +574 -0
- package/.claude/skills/unity-package-management/SKILL.md +304 -0
- package/.claude/skills/unity-package-management/references/select-packages.md +108 -0
- package/.claude/skills/urp-postprocessing/SKILL.md +188 -0
- package/.claude/skills/urp-postprocessing/references/code-templates.md +119 -0
- package/.claude/skills/urp-postprocessing/references/effect-reference.md +86 -0
- package/.claude/skills/validate-urp-render-graph-renderer-feature/SKILL.md +269 -0
- package/.claude/skills/work/SKILL.md +36 -0
- package/.claude/skills/work/references/classification.md +41 -0
- package/.claude/skills/work/references/closure.md +50 -0
- package/.claude/skills/work/references/feature-contracts.md +32 -0
- package/.claude/skills/work/references/verification.md +26 -0
- package/CLAUDE.md +6 -0
- package/LICENSE +21 -0
- package/README.md +162 -0
- package/THIRD_PARTY_NOTICES.md +23 -0
- package/UPGRADING.md +32 -0
- package/VERSION +1 -0
- package/docs/ARCHITECTURE.md +73 -0
- package/docs/HUONG-DAN-MIGRATE-VA-SU-DUNG.md +324 -0
- package/docs/MIGRATION-MATRIX.md +23 -0
- package/docs/PROJECT-POLICY.md +67 -0
- package/docs/WORKFLOWS.md +61 -0
- package/package-assets/setup-vivox-voice-chat-evals.gitignore +7 -0
- package/package.json +41 -0
- package/scaffold/.nccgs/bugs/.gitkeep +1 -0
- package/scaffold/.nccgs/closures/.gitkeep +1 -0
- package/scaffold/.nccgs/context/.gitkeep +1 -0
- package/scaffold/.nccgs/decisions/.gitkeep +1 -0
- package/scaffold/.nccgs/evidence/.gitkeep +1 -0
- package/scaffold/.nccgs/features/.gitkeep +1 -0
- package/scaffold/.nccgs/migrations/.gitkeep +1 -0
- package/scaffold/.nccgs/playtests/.gitkeep +1 -0
- package/scaffold/.nccgs/project.yaml +103 -0
- package/scaffold/.nccgs/requirements.yaml +10 -0
- package/scaffold/.nccgs/reviews/.gitkeep +1 -0
- package/scaffold/.nccgs/state.md +40 -0
- package/scaffold/.nccgs/templates/agent-handoff.md +25 -0
- package/scaffold/.nccgs/templates/architecture-decision.md +27 -0
- package/scaffold/.nccgs/templates/closure-record.md +51 -0
- package/scaffold/.nccgs/templates/context-packet.yaml +17 -0
- package/scaffold/.nccgs/templates/evidence-record.md +23 -0
- package/scaffold/.nccgs/templates/feature-contract.md +35 -0
- package/scaffold/.nccgs/templates/migration-plan.md +40 -0
- package/scaffold/.nccgs/templates/waiver.md +11 -0
- package/scripts/cli.mjs +56 -0
- package/scripts/install.mjs +267 -0
- package/scripts/sync-unity-skills.mjs +126 -0
- package/scripts/validate.mjs +205 -0
- package/tests/framework.test.mjs +121 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
# Diagnostics & maintenance — unity-cli command reference
|
|
2
|
+
|
|
3
|
+
Part of the **`unity-cli`** skill. See that skill's `SKILL.md` for CLI install, global flags,
|
|
4
|
+
environment variables, exit codes, and common workflows. All global flags (`--format json`,
|
|
5
|
+
`--non-interactive`, `--yes`, `--proxy`, …) apply to every command below.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
### Logs — application logs
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Show last 20 log lines (default)
|
|
13
|
+
unity logs
|
|
14
|
+
|
|
15
|
+
# Show last 50 lines
|
|
16
|
+
unity logs --tail 50
|
|
17
|
+
|
|
18
|
+
# Follow in real-time (like tail -f)
|
|
19
|
+
unity logs --follow
|
|
20
|
+
|
|
21
|
+
# Filter by level
|
|
22
|
+
unity logs --level error
|
|
23
|
+
unity logs --level warn
|
|
24
|
+
|
|
25
|
+
# Available levels: trace, debug, info, warn, error, fatal
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The CLI writes its own `cli-log.json` (separate from the Hub's `info-log.json`) and records its version on every start. `unity logs`, `unity bug`, and `unity doctor` read the CLI's own log.
|
|
29
|
+
|
|
30
|
+
> **Not the Unity Editor log.** `unity logs` shows the *CLI's* activity, **not** the Editor's
|
|
31
|
+
> `Editor.log`. To read Editor-side output — for example the compile errors that force an Editor into
|
|
32
|
+
> Safe Mode and block the Pipeline connection — read `Editor.log` directly (see
|
|
33
|
+
> [integration-advanced.md → Recovering from Safe Mode](integration-advanced.md#recovering-from-safe-mode-connection-fails-because-of-compile-errors) for its per-platform path and the full recovery loop).
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
### Doctor — system diagnostics
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Full system report
|
|
41
|
+
unity doctor --format json
|
|
42
|
+
|
|
43
|
+
# Includes: platform info, auth status, installed editors, recent log lines, resolved proxy
|
|
44
|
+
unity doctor --tail 50
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`unity doctor` reports real session state (matching `unity auth status`) and surfaces the resolved proxy URL, its source, and auth source. It also runs environment health checks and reports pass/warn per check (in every output format): whether the `unity` binary's directory is actually on `PATH` (the top post-install pitfall on Windows, where a new terminal is needed), whether multiple `unity` binaries shadow each other on `PATH`, whether Windows long-path support is enabled, and whether a git credential helper is configured (`git-credential-helper`: advisory for the git-token flows in `projects clone`/`create`/`link vcs`; the row is omitted on machines without git).
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### Doctor --ci — preflight before a long pipeline step
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# First step of a CI job: fail in seconds instead of after a long build
|
|
55
|
+
unity doctor --ci
|
|
56
|
+
|
|
57
|
+
# Per-check results a workflow can branch on
|
|
58
|
+
unity doctor --ci --format json
|
|
59
|
+
|
|
60
|
+
# Failed checks become inline annotations on the pull request
|
|
61
|
+
unity doctor --ci --format github
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`--ci` replaces the diagnostic report with a **preflight**: it verifies the environment can actually finish a build or test run and exits non-zero when it cannot, so a pipeline fails fast rather than tens of minutes into a build. It checks an activatable license, the project's required editor, free disk space, and reachability of the Unity services endpoint, and folds the `PATH` / long-path / git-credential-helper checks in as advisory rows that never fail a job.
|
|
65
|
+
|
|
66
|
+
Exit codes distinguish the two kinds of bad news, so a workflow can retry only what is worth retrying:
|
|
67
|
+
|
|
68
|
+
| Exit | Meaning |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `0` | Every blocking check passed. Warnings do not fail the preflight. |
|
|
71
|
+
| `6` | A definitive failure — no license, the required editor is not installed, disk below the floor. Retrying will not help. |
|
|
72
|
+
| `7` | The preflight could not reach a verdict because a required service was unreachable. Worth a retry. |
|
|
73
|
+
|
|
74
|
+
A `6` outranks a `7` when both occur, so a real blocker is never reported as retryable.
|
|
75
|
+
|
|
76
|
+
Every check carries a machine-readable `code` (`LICENSE_NONE`, `EDITOR_NOT_INSTALLED`, `DISK_SPACE_LOW`, `NETWORK_UNREACHABLE`, …) plus a remediation `hint`. In `--format json` the per-check results stay in `data` even on failure, with one coded entry per failure in `errors`. Output is redacted and carries no tokens and no absolute user paths, so it is safe to paste into a public CI log.
|
|
77
|
+
|
|
78
|
+
`--ci` is always explicit — it is never inferred from `CI=true`, because a report that silently changed shape and exit code on a runner would be a trap. Note that the CLI already defaults to `--format tsv` whenever stdout is redirected, which in CI it usually is; that output leads with a `verdict` row.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### Diagnose proxy — proxy diagnostic report
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Print a redacted, paste-safe proxy diagnostic report for support
|
|
86
|
+
unity diagnose proxy
|
|
87
|
+
|
|
88
|
+
# Machine-readable
|
|
89
|
+
unity diagnose proxy --json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Reports the resolved proxy and where it came from, PAC configuration, CA bundle, and credential-store and Kerberos checks — redacted so it's safe to paste into a support ticket. A copy is also written to the logs directory. For per-request proxy logging over the course of a repro, use the global `--log-proxy` flag (or `UNITY_LOG_PROXY=1`), which writes one redacted entry per outbound request to `proxy-request.json`.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Environment
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Show environment paths
|
|
100
|
+
unity env --format json
|
|
101
|
+
|
|
102
|
+
# Returns: user data path, editor install path, download cache path, config path, CLI version, resolved proxy
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
### Cache
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Show cache location and size
|
|
111
|
+
unity cache info --format json
|
|
112
|
+
|
|
113
|
+
# Clear download cache
|
|
114
|
+
unity cache clean --yes
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
### Cache key — deterministic key for CI cache steps
|
|
120
|
+
|
|
121
|
+
`unity cache key` prints one hash derived from the inputs that actually invalidate a project's build cache: the editor version, the resolved package set, and (optionally) the build target. Use it as the `key:` of a CI cache step instead of hand-rolling the hashing.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Print the key for the project in the current directory
|
|
125
|
+
unity cache key
|
|
126
|
+
|
|
127
|
+
# Scope it to a build target — a Library/ folder is platform-specific
|
|
128
|
+
unity cache key --target Android
|
|
129
|
+
|
|
130
|
+
# Any project path
|
|
131
|
+
unity cache key ./MyProject
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Whenever stdout is not an interactive terminal — a pipe, a redirect, or any CI runner — the key is the only thing written to it, so it drops straight into a shell substitution or a workflow expression. (On an interactive colour terminal the CLI's usual one-line banner still prints above it, as it does for every command; `--quiet` suppresses that.)
|
|
135
|
+
|
|
136
|
+
Pass the project path if the workflow's working directory isn't the project:
|
|
137
|
+
|
|
138
|
+
```yaml
|
|
139
|
+
- id: cachekey
|
|
140
|
+
run: echo "key=$(unity cache key MyProject --target Android)" >> "$GITHUB_OUTPUT"
|
|
141
|
+
- uses: actions/cache@v4
|
|
142
|
+
with:
|
|
143
|
+
path: MyProject/Library
|
|
144
|
+
key: Library-${{ steps.cachekey.outputs.key }}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
What moves the key, and what doesn't:
|
|
148
|
+
|
|
149
|
+
- **Changes** when the editor version (`ProjectSettings/ProjectVersion.txt`), the package set (`Packages/packages-lock.json`, falling back to `Packages/manifest.json`), or `--target` changes.
|
|
150
|
+
- **Does not change** for unrelated edits — scenes, scripts, assets, or project settings other than the version file.
|
|
151
|
+
- **Is identical across machines and operating systems** for the same inputs. Line endings and a UTF-8 BOM are normalized before hashing, so a Windows checkout with `core.autocrlf` and a Linux one agree. No paths, usernames, or timestamps enter the hash.
|
|
152
|
+
|
|
153
|
+
`--format json` returns the key plus each component's raw value and hash, so one invocation can build a layered key with fallback levels:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
unity cache key --target Android --format json
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
`--component <editor|packages|target>` prints just one component's hash for the fallback levels themselves. Under `--format json` it also sets `data.key` to that component, so `jq -r .data.key` means the same thing either way:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# Restore any cache built for this editor, whatever the packages were
|
|
163
|
+
unity cache key --component editor
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Runs without an editor and without network access. Exit 2 on an unknown `--target` or `--component` (a silently-accepted typo would produce a key nothing else matches); exit 6 when the directory isn't a Unity project. A project with neither package file still emits a key, with a warning that it doesn't cover the package set.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### Analytics — usage/telemetry consent
|
|
171
|
+
|
|
172
|
+
The CLI defaults to **opt-out**. On the first interactive run a prompt is shown once before any data is collected; it now requires an explicit `y` or `n` — pressing Enter alone re-asks instead of silently recording the opt-out default, so an accidental keystroke can't lock in an answer. Ctrl-C skips the prompt and keeps the opt-out default. Non-interactive, CI, piped, and `--quiet` contexts silently keep the opt-out default.
|
|
173
|
+
|
|
174
|
+
Running `unity analytics opt-in` or `opt-out` permanently answers the first-run prompt, so a choice recorded from a script (where the prompt never appears) isn't asked again on the next interactive run. To suppress the prompt *without* recording a choice — for a wrapper script on an interactive terminal that must never absorb it — set `UNITY_NO_CONSENT_PROMPT` (analytics stay off until you explicitly opt in).
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Show current consent status
|
|
178
|
+
unity analytics status
|
|
179
|
+
unity analytics status --format json
|
|
180
|
+
|
|
181
|
+
# Opt in to anonymous usage data collection
|
|
182
|
+
unity analytics opt-in
|
|
183
|
+
|
|
184
|
+
# Opt out (the default)
|
|
185
|
+
unity analytics opt-out
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Consent is stored in the shared Hub privacy preferences, so opting out in the CLI also opts out in Hub, and vice versa. When opted **in**, the CLI records which commands run (registered command names only — never your arguments, paths, or project names), editor uninstalls, project open/create (editor version and template id only), CLI self-upgrade/uninstall outcomes, `unity shell` and `unity mcp` session usage, and `unity doctor` / `unity bug` results. When opted out (the default), no events are sent.
|
|
189
|
+
|
|
190
|
+
Separately from analytics, the CLI reports **anonymous crashes and errors** via Sentry to help fix bugs (no IP address or hostname; home-directory paths and token-like values scrubbed before send), aligned with the Unity Hub. Opting in to analytics additionally attaches an anonymized machine id so crash-free-user rates can be computed; opted-out users stay fully anonymous. Set `UNITY_NO_CRASH_REPORT` to disable crash reporting entirely.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### Changelog
|
|
195
|
+
|
|
196
|
+
Show the embedded release notes for the currently installed CLI version:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
unity changelog
|
|
200
|
+
unity changelog --format json
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### Language
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Show current language and available options
|
|
209
|
+
unity language
|
|
210
|
+
|
|
211
|
+
# Set language by code
|
|
212
|
+
unity language --set en
|
|
213
|
+
unity language --set ja
|
|
214
|
+
unity language --set zh-hans
|
|
215
|
+
|
|
216
|
+
# Alias
|
|
217
|
+
unity lang --set ko
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
On a TTY with no flags, shows an interactive selection prompt. `--set` accepts common spellings of a language code — BCP-47 (`ja-JP`), locale (`ja_JP`), a bare language (`ja`), or a bare region (`jp`) — and resolves them case-insensitively when the match is unambiguous (`zh` still asks you to pick `zh_cn` or `zh_tw`). Display names and ordering come from the shared Hub language catalog. The regional variants Spanish (Latin America), French (Canada), and Portuguese (Portugal) are no longer offered; Spanish, French, and Portuguese (Brazil) remain.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
### Completion — shell tab completion
|
|
225
|
+
|
|
226
|
+
Generate and install shell completion scripts:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# Supported shells: bash, zsh, fish, powershell
|
|
230
|
+
unity completion bash
|
|
231
|
+
unity completion zsh
|
|
232
|
+
unity completion fish
|
|
233
|
+
unity completion powershell
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### Bug — report a bug
|
|
239
|
+
|
|
240
|
+
Interactive bug reporter that collects system info and recent logs, then submits to Unity:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Interactive — prompts for each field
|
|
244
|
+
unity bug
|
|
245
|
+
|
|
246
|
+
# Non-interactive — supply the report through flags (works from scripts, CI, piped shells)
|
|
247
|
+
unity bug \
|
|
248
|
+
--title "Editor crashes on project open" \
|
|
249
|
+
--description "Opening MyGame hard-crashes the editor." \
|
|
250
|
+
--steps "Open the CLI" --steps "Run unity open MyGame" --steps "Editor window closes" \
|
|
251
|
+
--reproducibility always \
|
|
252
|
+
--email you@example.com \
|
|
253
|
+
--attachments ./crash.log ./notes.txt \
|
|
254
|
+
--share-project .
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Prompts for title, description, email, and reproducibility level. As of `0.1.0-beta.8` it collects the same diagnostic system information as the Unity Hub bug reporter (including GPU details).
|
|
258
|
+
|
|
259
|
+
The report can also be supplied entirely through flags — `--title`, `--description`, `--steps` (repeatable, one line per value), `--reproducibility <first-time|sometimes|always>`, and `--email` (defaults to your Unity account email when signed in; otherwise required). On a terminal, any flags you pass skip their prompts and the remaining fields still ask; a non-interactive run submits without prompting. A non-interactive run with missing or invalid fields fails fast with a usage error (exit 2) listing the exact flags to add.
|
|
260
|
+
|
|
261
|
+
Use `--attachments <paths...>` (repeatable) to attach extra files — for example a crash log or a zipped copy of a subset of assets. Each path must be an existing, readable file; a folder is rejected (zip it yourself first), and a missing or unreadable path fails fast with a usage error (exit 2) naming the offending path.
|
|
262
|
+
|
|
263
|
+
Use `--share-project <path>` (use `.` for the current directory) to attach a copy of the Unity project the bug is about — the same stripped-project packaging the Editor's bug reporter uses. It sends the source folders plus a slimmed `Library`, excluding the regenerable caches and build output (`Library` caches, `Temp`, `Build`, `Logs`, VCS/IDE metadata, `MemoryCaptures`, `CrashReports`), so you don't have to zip the project yourself. A path that isn't a Unity project fails fast with exit 2. The archive is streamed from disk during upload, so there's no size limit — even a multi-gigabyte project copy uploads without being buffered in memory.
|
|
264
|
+
|
|
265
|
+
Interactively, when you don't pass `--attachments` or `--share-project`, the reporter asks whether to attach files and whether to include a project copy. Everything — attachments and the project copy — is bundled into the same archive as the auto-collected logs.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
### Upgrade — update the CLI itself
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
# Check for available updates
|
|
273
|
+
unity upgrade --check --format json
|
|
274
|
+
|
|
275
|
+
# Show changelog for the new version
|
|
276
|
+
unity upgrade --changelog
|
|
277
|
+
|
|
278
|
+
# Upgrade (interactive confirmation)
|
|
279
|
+
unity upgrade
|
|
280
|
+
|
|
281
|
+
# Upgrade without prompts
|
|
282
|
+
unity upgrade --yes
|
|
283
|
+
|
|
284
|
+
# Install a specific version
|
|
285
|
+
unity upgrade --target 0.2.0
|
|
286
|
+
|
|
287
|
+
# Select update channel (stable or beta)
|
|
288
|
+
unity upgrade --channel beta
|
|
289
|
+
|
|
290
|
+
# Dry-run: show what would change
|
|
291
|
+
unity upgrade --dry-run
|
|
292
|
+
|
|
293
|
+
# Rollback to previous version
|
|
294
|
+
unity upgrade --rollback
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
`unity upgrade` detects how the CLI was installed and upgrades accordingly:
|
|
298
|
+
|
|
299
|
+
- **`curl | sh` install** — keeps upgrading itself in place.
|
|
300
|
+
- **Linux AppImage** — updates in place: downloads the new `.AppImage` artifact, verifies its checksum against the release manifest, and atomically replaces the AppImage you launched (`--rollback` restores the previous one). The embedded zsync update info is preserved, so external updaters (AppImageUpdate, Gear Lever) keep working.
|
|
301
|
+
- **Package-manager install** — points you at the owning manager instead of replacing the binary. The `.deb` and `.rpm` packages are published to Unity's apt and rpm repositories on every beta and GA release (rpm packages are GPG-signed), so a package-managed install stays current through the system package manager: `sudo apt update && sudo apt upgrade unity-cli` on Debian/Ubuntu, `sudo dnf upgrade unity-cli` on Fedora/RHEL.
|
|
302
|
+
|
|
303
|
+
`--check`, `--changelog`, and `--dry-run` work everywhere. The background "update available" notice is package-manager-aware: when the release manifest says your install's package manager already carries the new version, the notice suggests that manager's exact upgrade command instead of `unity upgrade`; installs whose manager doesn't carry the release yet stay quiet.
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
### Self-uninstall — remove the CLI
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
# Uninstall the CLI (interactive confirmation)
|
|
311
|
+
unity self-uninstall
|
|
312
|
+
|
|
313
|
+
# Uninstall without prompts
|
|
314
|
+
unity self-uninstall --yes
|
|
315
|
+
|
|
316
|
+
# Also remove config and data files
|
|
317
|
+
unity self-uninstall --purge --yes
|
|
318
|
+
|
|
319
|
+
# Dry-run: show what would be removed
|
|
320
|
+
unity self-uninstall --dry-run
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
> **`unity implode` was removed** in `0.1.0-beta.8` (it was previously a deprecated alias). Use `unity self-uninstall`.
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
# Editors, install & modules — unity-cli command reference
|
|
2
|
+
|
|
3
|
+
Part of the **`unity-cli`** skill. See that skill's `SKILL.md` for CLI install, global flags,
|
|
4
|
+
environment variables, exit codes, and common workflows. All global flags (`--format json`,
|
|
5
|
+
`--non-interactive`, `--yes`, `--proxy`, …) apply to every command below.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
### Editors — list, install, uninstall
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# List all editors (installed + available releases)
|
|
13
|
+
# Short alias: unity e. The bare `unity editors` is shorthand for the explicit `unity editors list` (matches projects/templates/modules)
|
|
14
|
+
unity editors list --format json
|
|
15
|
+
|
|
16
|
+
# List only installed editors
|
|
17
|
+
# As of 0.1.0-beta.8 the --installed table includes an "Upgrade to" column flagging editors with a newer patch in their line
|
|
18
|
+
unity editors --installed --format json
|
|
19
|
+
|
|
20
|
+
# List only available releases
|
|
21
|
+
unity editors --releases --format json
|
|
22
|
+
|
|
23
|
+
# Filter by architecture
|
|
24
|
+
unity editors --installed --architecture arm64 --format json
|
|
25
|
+
|
|
26
|
+
# Show detailed module info
|
|
27
|
+
unity editors --verbose
|
|
28
|
+
|
|
29
|
+
# Watch mode — live-updates as editors are installed or removed
|
|
30
|
+
unity editors --watch
|
|
31
|
+
unity editors --installed --watch
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`unity editors` honors `--format tsv` and `--format ndjson` for its default listing. Identifier columns keep their natural width even if the table exceeds the terminal — they are no longer silently truncated.
|
|
35
|
+
|
|
36
|
+
#### editors running
|
|
37
|
+
|
|
38
|
+
List the Unity Editor instances currently running and the project each has open, with the editor version and process id per instance:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
unity editors running
|
|
42
|
+
unity editors running --format json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Detection is cross-platform (process table plus each project's Pipeline lockfile), and the version falls back to a project's `ProjectSettings/ProjectVersion.txt` for editors without the Pipeline package. An empty list is a normal result (exit 0). Honors the global `--format human|json|tsv|ndjson` (and `--json`).
|
|
46
|
+
|
|
47
|
+
#### editors add
|
|
48
|
+
|
|
49
|
+
Register one or more existing editor installations by path:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
unity editors add /path/to/Unity/Editor
|
|
53
|
+
|
|
54
|
+
# Register multiple at once
|
|
55
|
+
unity editors add /path/one /path/two
|
|
56
|
+
|
|
57
|
+
# Skip macOS code-signature check (useful for unsigned or side-loaded builds)
|
|
58
|
+
unity editors add /path/to/Unity/Editor --skip-signature-check
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### editors default
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Show current default editor
|
|
65
|
+
unity editors default --format json
|
|
66
|
+
|
|
67
|
+
# Set default by version, alias, or keyword
|
|
68
|
+
unity editors default 6000.0.47f1
|
|
69
|
+
unity editors default latest
|
|
70
|
+
unity editors default lts
|
|
71
|
+
|
|
72
|
+
# Clear the default
|
|
73
|
+
unity editors default --unset
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
On a TTY with no arguments, shows an interactive selection prompt.
|
|
77
|
+
|
|
78
|
+
#### editors path
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Print the install directory of an installed editor (local, offline — no release-feed fetch)
|
|
82
|
+
unity editors path 6000.0.47f1
|
|
83
|
+
unity editors path 6000.0.47f1 --architecture arm64 --json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Honors `--architecture` and `--format` / `--json`, and reports ambiguous matches so you can narrow by version or architecture.
|
|
87
|
+
|
|
88
|
+
#### editors install-path
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Show the directory where editors are installed
|
|
92
|
+
unity editors install-path
|
|
93
|
+
|
|
94
|
+
# Set a new install path
|
|
95
|
+
unity editors install-path --set /path/to/editors
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Also available as the top-level `unity install-path` (with an additional `--get` flag). Distinct from `editors path`: `install-path` gets/sets the *root* install directory; `editors path` prints the install directory of *one* editor version.
|
|
99
|
+
|
|
100
|
+
#### editors info
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Show release details for a specific version
|
|
104
|
+
unity editors info 6000.0.47f1 --format json
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
#### editors upgrade
|
|
108
|
+
|
|
109
|
+
New in `0.1.0-beta.8`. Upgrade an installed editor to the newest official (f-channel) patch in the same `major.minor` line (e.g. `2022.3.10f1` → `2022.3.62f1`), carrying the installed modules over. The `[editor]` argument accepts an exact version, a `major.minor` line, or the `latest` / `lts` / `default` aliases. Editors install side by side — the old version is kept unless `--replace` (alias `--remove-old`) is passed.
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Upgrade a specific editor (or the default / lts / latest) to the newest patch in its line
|
|
113
|
+
unity editors upgrade 2022.3.10f1
|
|
114
|
+
unity editors upgrade lts
|
|
115
|
+
|
|
116
|
+
# Upgrade every installed editor that has a newer patch
|
|
117
|
+
unity editors upgrade --all --yes --accept-eula
|
|
118
|
+
|
|
119
|
+
# Report current → target without installing (--check is an alias for --dry-run)
|
|
120
|
+
unity editors upgrade --all --dry-run --format json
|
|
121
|
+
|
|
122
|
+
# Remove the old editor after a successful upgrade; skip carrying modules; add extra modules
|
|
123
|
+
unity editors upgrade 2022.3.10f1 --replace --yes
|
|
124
|
+
unity editors upgrade 2022.3.10f1 --no-modules
|
|
125
|
+
unity editors upgrade 2022.3.10f1 --module android --module ios
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### editors prune
|
|
129
|
+
|
|
130
|
+
Finds installed editors that **no registered project uses** and, optionally, uninstalls them. Report-only by default — it never deletes anything unless you pass `--remove`.
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# Report only: which editors are unused, and how much they'd reclaim
|
|
134
|
+
unity editors prune
|
|
135
|
+
|
|
136
|
+
# Uninstall the unused editors (prompts to confirm)
|
|
137
|
+
unity editors prune --remove
|
|
138
|
+
|
|
139
|
+
# Non-interactive: --yes is REQUIRED alongside --remove in a script or CI
|
|
140
|
+
unity editors prune --remove --yes
|
|
141
|
+
|
|
142
|
+
# Machine output
|
|
143
|
+
unity editors prune --format json
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The report lists version, architecture, path, size, and status, then the total reclaimable size. With `--remove` in a non-interactive shell and no `-y, --yes`, it refuses rather than deleting unprompted. "Unused" is judged against the **project registry** (`unity projects list`), so an editor used only by a project you never registered counts as unused — register it first, or verify with `unity editors prune` before adding `--remove`.
|
|
147
|
+
|
|
148
|
+
#### editors verify
|
|
149
|
+
|
|
150
|
+
Structurally verifies an installed editor: checks that its files and modules are actually present on disk. It's the command to reach for when an editor launches oddly, a module seems half-installed, or a download was interrupted.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Verify an installed editor
|
|
154
|
+
unity editors verify 6000.1.0f1
|
|
155
|
+
|
|
156
|
+
# Disambiguate when the same version is installed for two architectures
|
|
157
|
+
unity editors verify 6000.1.0f1 --architecture arm64
|
|
158
|
+
|
|
159
|
+
# Machine output
|
|
160
|
+
unity editors verify 6000.1.0f1 --json
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Reports each component as `ok`, `missing`, or `skipped`, and names the exact `unity install-modules` command to repair anything missing. A clean editor exits 0; missing or empty files fail the check. This is a **structural** check — it confirms files exist, not that they are uncorrupted or correctly signed. `--architecture` is inherited from the `editors` parent, so `unity editors --architecture arm64 verify <version>` works too.
|
|
164
|
+
|
|
165
|
+
#### editors module / editor module
|
|
166
|
+
|
|
167
|
+
Module management is exposed under **both** `editors module` and the `editor` (singular) command group. Both share the same subcommands:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# List modules for an installed editor
|
|
171
|
+
unity editors module list 6000.0.47f1 --format json
|
|
172
|
+
unity editor module list 6000.0.47f1 --architecture arm64 --format json
|
|
173
|
+
|
|
174
|
+
# Add modules to an installed editor
|
|
175
|
+
unity editors module add 6000.0.47f1 --module android --module ios
|
|
176
|
+
unity editors module add 6000.0.47f1 --all # Install every available module
|
|
177
|
+
unity editors module add 6000.0.47f1 --module android --child-modules # Include child modules
|
|
178
|
+
unity editors module add 6000.0.47f1 --module android --accept-eula # Accept EULAs automatically
|
|
179
|
+
|
|
180
|
+
# Remove installed modules from an editor by id (-m/--module, repeatable)
|
|
181
|
+
unity editors module remove 6000.0.47f1 --module android --module ios
|
|
182
|
+
unity editor module remove 6000.0.47f1 -m android -a arm64 # disambiguate side-by-side installs
|
|
183
|
+
unity editors module remove 6000.0.47f1 -m android --yes # skip the confirm prompt (required non-interactively)
|
|
184
|
+
|
|
185
|
+
# Refresh module list for a manually located editor
|
|
186
|
+
unity editors module refresh 6000.0.47f1
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
`module remove` prompts to confirm before deleting the module files; `-y` / `--yes` skips the prompt and is required in non-interactive mode. Supports `-a` / `--architecture` to disambiguate side-by-side installs and the global `--format human|json|tsv|ndjson`.
|
|
190
|
+
|
|
191
|
+
#### editor add (single path, with module-fetch control)
|
|
192
|
+
|
|
193
|
+
The `editor add` subcommand is similar to `editors add` but targets a single path and supports skipping the module-fetch step:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
unity editor add /path/to/Unity/Editor
|
|
197
|
+
|
|
198
|
+
# Skip fetching module metadata (faster, but modules won't be listed until refreshed)
|
|
199
|
+
unity editor add /path/to/Unity/Editor --no-fetch-modules
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### Install
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
# Install an editor (interactive version selection if omitted)
|
|
208
|
+
unity install 6000.0.47f1
|
|
209
|
+
|
|
210
|
+
# Install with specific modules
|
|
211
|
+
unity install 6000.0.47f1 --module windows-mono --module android
|
|
212
|
+
|
|
213
|
+
# Install a specific changeset by hash
|
|
214
|
+
unity install 6000.0.47f1 --changeset abc123def456
|
|
215
|
+
|
|
216
|
+
# Include child modules
|
|
217
|
+
unity install 6000.0.47f1 --cm
|
|
218
|
+
|
|
219
|
+
# Exclude child modules
|
|
220
|
+
unity install 6000.0.47f1 --no-cm
|
|
221
|
+
|
|
222
|
+
# Install and accept EULAs automatically (CI)
|
|
223
|
+
unity install 6000.0.47f1 --yes --accept-eula
|
|
224
|
+
|
|
225
|
+
# Force reinstall even if already present
|
|
226
|
+
unity install 6000.0.47f1 --force
|
|
227
|
+
|
|
228
|
+
# Resume an interrupted download (also recovers orphaned partials left by a crash or kill)
|
|
229
|
+
unity install 6000.0.47f1 --resume
|
|
230
|
+
|
|
231
|
+
# Dry-run: show what would be installed without doing it
|
|
232
|
+
unity install 6000.0.47f1 --dry-run --format json
|
|
233
|
+
|
|
234
|
+
# List the editor's available modules and exit without installing
|
|
235
|
+
# (a drop-in alias for `unity modules list <version>`)
|
|
236
|
+
unity install 6000.0.47f1 --list-components --format json
|
|
237
|
+
|
|
238
|
+
# Space-separated module values after a single -m are equivalent to repeating -m
|
|
239
|
+
unity install 6000.0.47f1 -m android ios # space-separated
|
|
240
|
+
unity install 6000.0.47f1 -m android -m ios # repeated flag (same effect)
|
|
241
|
+
|
|
242
|
+
# Windows: keep the install service unelevated. The Editor's NSIS installer is manifested
|
|
243
|
+
# `highestAvailable`, so it runs unelevated for a STANDARD user (the supported unprivileged
|
|
244
|
+
# install — it reports any dependencies an admin must finish) but still asks for elevation on
|
|
245
|
+
# demand under an administrator account. In CI, where a prompt can't be answered, run the
|
|
246
|
+
# agent elevated instead. Also via UNITY_NO_ELEVATE=1.
|
|
247
|
+
unity install 6000.0.47f1 --no-elevate --yes --accept-eula
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
When installing an editor with several modules, a failed module no longer aborts the whole batch — `unity install` (and `unity install-modules`) continue with the remaining items and exit non-zero if any failed. Each editor and module is listed as installed (✓), failed (✗), or pending (·); the NDJSON `result` frame carries the same breakdown as an `items` array (each entry has `uid`, `name`, `kind`, `status`), so scripts can tell exactly which modules succeeded even on a non-zero exit.
|
|
251
|
+
|
|
252
|
+
**NDJSON progress frames** for `unity install` and `unity install-modules` include a `phase: 'download' | 'install'` field so scripts can switch to an indeterminate spinner during the install phase (which is genuinely indeterminate — NSIS on Windows only reports success/failure). During the install phase, `pct` is locked at 50 and only jumps to 100 on completion. Module download/install progress is nested under the parent editor via `parentItemUid`, so consumers see one editor group with its modules rather than one group per module.
|
|
253
|
+
|
|
254
|
+
On an interactive terminal, `unity install` also reports progress to the terminal application itself via the `OSC 9;4` escape sequence — on Windows Terminal the taskbar icon fills with download/install progress and spinners show as indeterminate, so you don't need to keep the window focused. It's emitted only on a TTY (never in piped or machine-consumed output), always cleared on exit, and ignored by terminals that don't support it.
|
|
255
|
+
|
|
256
|
+
Module installers honor the per-module install command from the release manifest (e.g. Visual Studio on Windows uses `--passive`, not `/S`); the resolved command is surfaced in `unity modules list --json`. `unity install` self-heals a corrupted partial download by discarding the bad partial and re-downloading; a cross-process install lock prevents two concurrent installs of the same version from corrupting the unpack.
|
|
257
|
+
|
|
258
|
+
### Uninstall
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
# Uninstall an editor version
|
|
262
|
+
unity uninstall 6000.0.47f1 --yes
|
|
263
|
+
|
|
264
|
+
# Uninstall a specific architecture
|
|
265
|
+
unity uninstall 6000.0.47f1 --architecture arm64 --yes
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
### Modules — add/list per editor
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# List modules for an installed editor
|
|
274
|
+
unity modules list 6000.0.47f1 --format json
|
|
275
|
+
|
|
276
|
+
# Filter by architecture
|
|
277
|
+
unity modules list 6000.0.47f1 --architecture arm64 --format json
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
`unity modules list` honors `--format ndjson` (empty results emit a clean, empty NDJSON stream).
|
|
281
|
+
|
|
282
|
+
### install-modules
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# List available modules without installing
|
|
286
|
+
unity install-modules --editor-version 6000.0.47f1 --list
|
|
287
|
+
|
|
288
|
+
# Install specific modules
|
|
289
|
+
unity install-modules --editor-version 6000.0.47f1 --module android --module ios
|
|
290
|
+
|
|
291
|
+
# Install all available modules
|
|
292
|
+
unity install-modules --editor-version 6000.0.47f1 --all --yes
|
|
293
|
+
|
|
294
|
+
# Include child modules (default behaviour)
|
|
295
|
+
unity install-modules --editor-version 6000.0.47f1 --module android --cm
|
|
296
|
+
|
|
297
|
+
# Exclude child modules
|
|
298
|
+
unity install-modules --editor-version 6000.0.47f1 --module android --no-cm
|
|
299
|
+
|
|
300
|
+
# Accept EULAs and dry-run
|
|
301
|
+
unity install-modules --editor-version 6000.0.47f1 --all --accept-eula --dry-run
|
|
302
|
+
|
|
303
|
+
# Reinstall modules that are already installed (a repair)
|
|
304
|
+
unity install-modules --editor-version 6000.0.47f1 --module android --reinstall
|
|
305
|
+
|
|
306
|
+
# -f/--force implies --reinstall, auto-includes child modules, and skips confirmation prompts
|
|
307
|
+
unity install-modules --editor-version 6000.0.47f1 --module android --force
|
|
308
|
+
|
|
309
|
+
# Tune the automatic retry for modules whose download/validation fails intermittently
|
|
310
|
+
# (default retries twice with backoff; 0 disables). Also via UNITY_INSTALL_RETRIES.
|
|
311
|
+
unity install-modules --editor-version 6000.0.47f1 --module android --retries 3
|
|
312
|
+
unity install-modules --editor-version 6000.0.47f1 --module android --retries 0
|
|
313
|
+
|
|
314
|
+
# Windows: skip the elevated (UAC) install helper (also via UNITY_NO_ELEVATE=1)
|
|
315
|
+
unity install-modules --editor-version 6000.0.47f1 --module android --no-elevate
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
`--list` and `--all` are mutually exclusive. `--list` is also mutually exclusive with `--module`.
|
|
319
|
+
|
|
320
|
+
A module whose download or validation fails intermittently — common for large modules such as Android SDK/NDK and OpenJDK — is retried automatically (up to twice with exponential backoff by default) instead of failing the whole run; already-installed modules are never re-downloaded, and retry attempts surface in both human and `--format ndjson` output.
|
|
321
|
+
|
|
322
|
+
`--module android ios` (space-separated values after a single `--module`) and `--module android --module ios` (repeated flag) are equivalent — both install all listed modules.
|
|
323
|
+
|
|
324
|
+
Module discovery works for editors registered via `unity editors add <path>` (located editors), not just editors installed by the Hub.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|