Phase 4 updates

Phase 4 · Slice 10 ·

JsonUtility, plugin DLLs, IDE projects

  • JsonUtility.ToJson, FromJson and FromJsonOverwrite follow a new json_utility scenario recorded in Unity, and match it byte for byte, pretty printing included.
    • Writing follows Unity's RapidJSON writer: floats are widened to double and printed shortest round-trip, with .0 on whole numbers and e-7 exponents.
    • A char is written as a number. Null strings, arrays and nested classes come out empty or default. Unity objects are {"instanceID": n}, and anything that isn't an object gives "{}".
    • Reading merges into nested values and replaces lists. It converts leniently, reads 64-bit integers exactly, and gives RapidJSON's error messages.
  • Precompiled plugins: managed DLLs under Assets or in embedded packages.
    • Their .meta is honored: Windows player platforms and explicit referencing. So is asmdef overrideReferences.
    • They load like compiled assemblies, hot reload included.
    • Plugins built against Unity's modules (for example UnityEngine.PhysicsModule) bind to Tassix's types through type-forwarding facades generated with Roslyn, at compile time and at run time.
    • Scenes reference plugin classes by the DLL's GUID and Unity's MD4 file ID (checked against Unity's IDs for UnityEngine.UI). Saving writes that form, and loading resolves it even without class identifiers.
    • Native plugins aren't loaded.
  • IDEs: the compile's generated solution (Library/Tassix/Scripts/Scripts.slnx) shows scripts in their Assets folders, and tassix://project gives its path. It stays out of the project root, so Unity's own project files are left alone.
  • The review panel no longer swallows clicks by rebuilding its list every second, and keeps its port across build swaps. exec prefers the project's scripts over the samples' same-named ones. cargo xtask mcp replaces a running launcher by renaming it aside.
  • 27 conformance scenarios pass. A new MCP e2e test covers a fixture plugin built against Unity 6000.2's modules.
  • Next: Phase 5 (Input System, Animator, uGUI, rendering), and carrying pending exec requests across build swaps.