Skip to content

Releases: DirtybitGames/unityctl

v0.5.0

20 Feb 07:40

Choose a tag to compare

What's Changed

Features

  • Add per-request timeout override for long-running script executions (#21). This allows script execution to be used to run builds.
  • Improve update command: skill updates, downgrade support, reliable bridge kill

Bug Fixes

  • Fix wait command returning before editor is ready to accept commands (#20)

Improvements

  • Harden WebSocket reconnection logic in Unity plugin (#22)

Documentation

  • Enhance compile command description in SKILL.md
  • Increase timeout for Unity script eval example in skill

Full Changelog: v0.4.2...v0.5.0

v0.4.2

18 Feb 08:36

Choose a tag to compare

What's Changed

Bug Fixes

  • Fix Unity 2022.3 compatibility for package installation (#19)
    • Lower minimum Unity version from 6000.0 to 2022.3 in package.json
    • Convert Protocol DLL meta file to backward-compatible serializedVersion 2 format

Full Changelog: v0.4.1...v0.4.2

v0.4.1

10 Feb 21:10

Choose a tag to compare

What's Changed

Features

Video Recording — New record command for capturing game view video via the Unity Recorder package:

  • unityctl record start — Start recording (manual stop)
  • unityctl record start --duration 10 — Record for a fixed duration, blocks until done
  • unityctl record stop — Stop recording, returns file path and duration
  • unityctl record status — Check if a recording is in progress

Suppress safe mode dialog — Unity Editor no longer prompts for safe mode on launch via unityctl editor run

Bug Fixes

  • Fix WebSocket reconnection race where old handler clobbers new connection

Full Changelog: v0.4.0...v0.4.1

v0.4.0

10 Feb 08:17

Choose a tag to compare

What's Changed

Features

  • Add wait command to block until Unity is connected
  • Add script eval command for quick C# expression evaluation
  • Surface compilation status in asset refresh output
  • Display compilation error details (file, line, column) in CLI output

Bug Fixes

  • Fix bridge returning 503 during domain reload after play.exit
  • Fix command timeouts evaluated at static init instead of request time
  • Fix exit codes across all CLI commands for programmatic failure detection
  • Fix thread safety and correctness issues across bridge and Unity plugin
  • Fix wait command resource leak, config lookup, and eval semicolon heuristic

Improvements

  • Remove play toggle command
  • Replace polling waits with TCS-based signaling
  • Lower editor plugin max reconnect backoff from 30s to 15s
  • Refactor BridgeEndpoints /rpc into named static methods
  • Detect compilation via compilation.started instead of compilation.finished

Testing & CI

  • Add comprehensive test suite with FakeUnityClient infrastructure (108 tests)
  • Add CI workflow to run tests on push
  • Fix flaky tests and weak assertions

Documentation

  • Add testing section to CLAUDE.md
  • Fix incorrect command in troubleshooting docs
  • Restore script execute example template in SKILL.md

Full Changelog: v0.3.6...v0.4.0

v0.3.6

04 Feb 08:49

Choose a tag to compare

What's Changed

Bug Fixes

  • Fix CLI self-update failing on Windows due to locked executable

Improvements

  • Move skill to .claude/skills and use PascalCase for script names

Full Changelog: v0.3.5...v0.3.6

v0.3.5

03 Feb 13:39

Choose a tag to compare

What's Changed

Features

  • Add release skill for automated version releases

Improvements

  • Streamline unity-editor skill for context efficiency
  • Use /tmp for script execution in skill docs

Full Changelog: v0.3.4...v0.3.5

v0.3.4

03 Feb 12:33

Choose a tag to compare

New Feature: Script Arguments

Pass arguments to scripts executed via unityctl script execute using the standard -- separator:

unityctl script execute -f my-script.cs -- arg1 arg2 "arg with spaces"

Scripts can receive arguments by using the Main(string[] args) signature:

public class Script
{
    public static object Main(string[] args)
    {
        return $"Received {args.Length} arguments";
    }
}

Scripts with Main() (no parameters) continue to work unchanged.

Full Changelog: v0.3.3...v0.3.4

v0.3.3

11 Jan 18:25

Choose a tag to compare

Bugfix

  • Preserve line endings when updating manifest.json

Full Changelog: v0.3.2...v0.3.3

0.3.2

11 Jan 17:50
aa6fc84

Choose a tag to compare

New Features

CLI Onboarding Commands (resolves #8)

  • unityctl setup - One-command setup that auto-detects Unity projects, configures the bridge, adds the Unity package, and
    installs the Claude Code skill
  • unityctl config set/get/list - Manage CLI configuration
  • unityctl package add/remove/update/status - Manage the UnityCtl Unity package
  • unityctl skill add/remove/status - Manage the Claude Code skill installation
  • unityctl update - Self-update the CLI, bridge, and Unity package

Install Scripts

  • Added install.sh for macOS/Linux one-liner installation
  • Added install.ps1 for Windows one-liner installation

Bug Fixes

  • Fix package URL containing git hash - Version URLs now correctly strip build metadata (e.g., +826b410a) that .NET SDK appends

Changes

  • Skill now prefers script execute -f over -c for better reliability

PRs

  • Implement CLI onboarding commands by @Niaobu in #9

Full Changelog: v0.3.1...v0.3.2

v0.3.1

09 Jan 14:09

Choose a tag to compare

Installation

Install the CLI and Bridge tools globally:

dotnet tool install -g UnityCtl.Cli --version 0.3.1
dotnet tool install -g UnityCtl.Bridge --version 0.3.1

Or update existing installations:

dotnet tool update -g UnityCtl.Cli
dotnet tool update -g UnityCtl.Bridge

Unity Package Installation

Add this to your Unity project's manifest.json:

{
  "dependencies": {
    "com.dirtybit.unityctl": "https://github.com/DirtybitGames/unityctl.git?path=UnityCtl.UnityPackage#v0.3.1"
  }
}

NuGet Packages

Full Changelog: v0.3.0...v0.3.1