Skip to content

Releases: oddgames/clibridge4unity

v1.0.69

20 Apr 06:08

Choose a tag to compare

Release-notes + CODE_EXEC line numbers.

Release notes pipeline

  • deploy.py now builds release notes from .claude/RELEASE_NOTES.md (cleared after use) or synthesises from git log <prev>..<tag> + git diff --shortstat + a compare link, then passes via --notes-file to gh release create. Replaces the prior --generate-notes which produced nothing useful on a PR-less repo.
  • Retroactively filled proper notes for v1.0.57 → v1.0.68 via backfill_release_notes.py (all 12 sessions' worth of changes are now on the releases page).

CODE_EXEC stack traces now point at your line

  • Roslyn backend emits a PDB alongside the PE. Syntax tree parses with path: "Script.cs" and encoding: UTF-8 — both required, otherwise Roslyn refuses with CS8055.
  • Assembly loaded via Assembly.Load(peBytes, pdbBytes) so the CLR resolves sequence points at runtime.
  • mcs fallback: CompilerParameters.IncludeDebugInformation = true and -debug:full.
  • Runtime exceptions in CODE_EXEC / CODE_EXEC_RETURN scripts now look like NullReferenceException ... at Runner.Run () in Script.cs:5 instead of a bare IL offset.

Install: irm https://raw.githubusercontent.com/oddgames/clibridge4unity/main/install.ps1 | iex

v1.0.68

19 Apr 08:35

Choose a tag to compare

PathResolver + "Did you mean?" suggestions on not-found errors.

PathResolver

  • New PathResolver helper: scene-GameObject scoring (exact / prefix / substring / token-overlap) + asset suggestions via AssetDatabase.FindAssets.
  • New Response.ErrorSceneNotFound(path) / Response.ErrorAssetNotFound(path, kind) auto-append Did you mean: suggestions.
  • Bulk-substituted 18 call sites across Asset/, Component/, Prefab/, and Scene/ command files.

Example

Before:

Error: GameObject not found: Maine Camera

After:

Error: GameObject not found: Maine Camera
Did you mean:
  Main Camera

Covers GameObject not found, GameObject not found in scene, Asset not found, Prefab not found, and Instance not found errors across INSPECTOR, DELETE, COMPONENT_SET/ADD/REMOVE, PREFAB_INSTANTIATE, PREFAB_SAVE, ASSET_MOVE/COPY/DELETE, and more.

v1.0.67

19 Apr 07:13

Choose a tag to compare

Breaking: SCENE, PREFAB_HIERARCHY, CODE_SEARCH removed. Unified into INSPECTOR and CODE_ANALYZE.

INSPECTOR expanded

  • INSPECTOR with no args → whole active-scene hierarchy (brief, all roots recursed) — replaces SCENE.
  • INSPECTOR <prefab.path> --children [--brief] [--filter X]replaces PREFAB_HIERARCHY.
  • --filter X matches GameObject name OR component name (substring). Closes the "find-by-name inside a prefab asset" gap.
  • --brief skips serialized-field dumps — components only.
  • --max N truncation with a warning (default 300 nodes).

FIND scope prefixes

  • FIND Name / FIND scene:Name — scene (default).
  • FIND prefab:Assets/UI/Menu.prefab/Button,Panel — find by name inside a prefab asset. Comma-separate for OR.

Deletions (no aliases)

  • SCENE — replaced by INSPECTOR (no args).
  • PREFAB_HIERARCHY — replaced by INSPECTOR <path> --children --brief [--filter X].
  • CODE_SEARCH — replaced by CODE_ANALYZE (prefix forms unchanged: method:, field:, etc.).

Cleanup

  • Deleted 4 orphan helpers from PrefabCommands.cs (BuildHierarchy, CountNodes, FindObjectsWithComponent, GetPrefabPath).
  • README, root CLAUDE.md, and SETUP-generated CLAUDE.md all updated.

v1.0.66

19 Apr 05:15

Choose a tag to compare

TEST multi-filter.

TEST now accepts arrays for three filter axes, all OR'd by Unity's Test Framework:

  • Groups (positional, comma- or space-separated) → testFilter.groupNames
  • --category X,YtestFilter.categoryNames ([Category("…")] attribute)
  • --tests A,BtestFilter.testNames (exact full names)

Examples:

TEST PlayerTests,CameraTests
TEST --category Physics,AI
TEST --tests Foo.TestA,Foo.TestB
TEST MyTest --category Physics playmode

When any filter is set, the first output line echoes it: Filter: groups=[...] categories=[...] tests=[...] mode=EditMode.

Caught mid-test: CommandArgs.Parse routes unknown tokens to Warnings (not Positional) when a flag schema is defined, so TEST Foo,Bar was silently matching nothing. Fixed by reading both lists for group tokens.

v1.0.65

19 Apr 04:35

Choose a tag to compare

Session ledger + --intent + SESSIONS command + log cleanup.

Multi-agent presence

  • New SessionLedger drops a per-project session file per CLI invocation; every command prints a one-line banner for every other active agent at the top of its output.
  • --intent "..." flag — descriptive annotation shown to other agents (e.g. --intent "refactoring CameraController").
  • SESSIONS command lists every active CLI agent on the project with pid, age, command, intent, and cwd.
  • Presence-only: no locking, no RPC, no command rejection. Soft coordination for shared Unity instances.

Log cleanup

  • Timeout exceptions during domain reload / asset import now log as Warning instead of Error — stops spamming the Unity console red for expected events.
  • Removed the noisy [Bridge] ResolveCode: path=... debug log that fired on every file-path CODE_EXEC.
  • CommandRegistry now unwraps TargetInvocationException — user code that throws inside a main-thread action shows the real cause, not the reflection wrapper.

v1.0.64

19 Apr 03:22

Choose a tag to compare

Shared CodeAnalysisCore + many more CODE_ANALYZE query shapes.

Refactor

RoslynDaemon and RoslynAnalyzer (one-shot fallback) were separately maintaining ~650 lines of duplicate extraction logic. Both now delegate to a new CodeAnalysisCore with identical behaviour — future changes = one edit, not two.

New query shapes handled correctly

  • Nested enums / typesCODE_ANALYZE Quality.ShadowQuality now recognises a nested enum inside Quality, lists its values, and reports usages across the codebase (instead of returning methods that merely use the name as a parameter type).
  • ConstructorsCODE_ANALYZE Foo.Foo or .ctor hits.
  • IndexersCODE_ANALYZE this / Item.
  • Operators + conversion operatorsoperator+, op_Addition, operator MyType.
  • Destructors~Foo.
  • Generic / array strippingList<MyType>, MyGeneric<T>, Foo[][] strip to the bare identifier before lookup.
  • Namespaces — a query that's a namespace lists the types inside.
  • Using aliasesusing Tex = Texture2D; makes CODE_ANALYZE Tex resolve.
  • Partial classesDefined in: shows (partial — split across N files) when applicable.
  • Multi-dot pathsGenerator.Trucks.PlayerTruck now splits correctly (last-dot) and resolves against the nested-type's bare identifier.

Bug fixes

  • PathResolver precursor: member-fallback now uses exact identifier match instead of substring — a method named OnEnable no longer matches Apply(OnEnable arg).
  • Grep tail renamed to Usages under member-zoom for clarity; capped tighter when structured output already covers the usages.

v1.0.63

19 Apr 01:10

Choose a tag to compare

Legacy CODE_SEARCH alias + UPDATE regenerates per-project CLAUDE.md.

CODE_SEARCH restored

Muscle memory (and old scripts) kept typing CODE_SEARCH, which in v1.0.62 fell into the generic Unity pre-flight and errored with "Unity busy" during loading. Re-added as a legacy alias that forwards to CODE_ANALYZE with a one-line [deprecated] notice, and correctly bypasses the Unity pre-flight.

UPDATE refreshes CLAUDE.md

clibridge4unity UPDATE now auto-regenerates CLAUDE.md in the current project after a successful self-update (and on "already up to date" — template can shift between installs). Keeps AI tooling's command reference in sync with the CLI binary without needing a separate SETUP call.

v1.0.62

19 Apr 01:01

Choose a tag to compare

Offline commands bypass Unity pre-flight + update banner moved to the bottom.

  • CODE_ANALYZE dispatch moved before the Unity state pre-flight gates. Previously a busy/loading Unity would spuriously block offline Roslyn queries with "Unity is busy — Loading project". Now code queries run regardless of Unity state.
  • CODE_SEARCH command removed entirely (shipped in this version — later restored as a legacy alias in v1.0.63 after user feedback).
  • Update banner (available new version + release notes) now prints at the bottom of command output via a Main finally block, no longer throttled — the background fetch keeps the cache warm so there's zero delay.

v1.0.61

17 Apr 13:15

Choose a tag to compare

Multi-Unity workspace fix + wmic replacement for broken System.Management.

Multi-Unity handling

  • unityPids is now filtered to only PIDs that match the target project (via window title and/or -projectPath). Previously, when multiple Unity instances were open, dialogs from sibling instances (e.g. another project's IL2CPP build) leaked into the target's report.
  • When no Unity matches the target, the error now lists every running Unity workspace (pid, project path, window title) so the user can see exactly what's open and pick one with -d.

Under the hood

  • System.Management was silently failing under trimmed single-file publish (TypeInitializationException on ManagementPath). The old WMI command-line reader had been broken the whole time; window-title matching was covering for it.
  • Replaced with a shelled-out wmic reader. Dropped the System.Management package dependency entirely.

v1.0.60

17 Apr 09:54

Choose a tag to compare

CODE_EXEC path-shape guard.

If the data for CODE_EXEC / CODE_EXEC_RETURN looks like a file path (drive letter, /, ./, ~/, UNC) and ends in .cs but doesn't exist, the CLI now refuses to treat it as inline C#. Previously the path string was silently compiled as source and failed with cryptic CS1056: Unexpected character '\' errors.