# Changelog

The version tracks the `uigenx` CLI: this package is not installed from a registry, it is copied
into a Unity project by every export, so the runtime in a project and the CLI that generated the
code it loads are always the same release.

## [0.9.0]

No runtime change. The version follows the CLI, which now launches the matching studio. What the
studio and compiler fixed against measurements in `unity/TestProject`:

- The canvas slices a background with the border imported in the sprite's `.meta`, the way Unity
  does when the element's USS sets no `-unity-slice-*`.
- `panelScale` blends the width and height ratios linearly for scale-with-screen-size, as the
  runtime panel does; the log space blend from uGUI's CanvasScaler scaled the artboard wrong for
  any match strictly between 0 and 1.
- Texture `maxSize` follows the image on import, and the compiler reports `UC-TEXTURE-SHRUNK` when
  an already imported image outgrows it: Unity halves the texture, its sprite border and its
  pixels per unit together, so a 9-slice frame draws at half the authored size.

## [0.8.0]

First version.

### Runtime

- Screen lifecycle: `UgxScreen`, `UgxDocument`, `UgxScreenManager` with five layers, `UgxScreenRegistry`,
  `UgxSettings`, `SafeAreaRoot`, and `UgxScreens` for the generated key to class factory.
- Data binding over Unity 6 runtime binding: `IUgxDataSource`, `UgxDataSource`,
  `UgxDictionaryDataSource`, `UgxReflectiveDataSource`, `UgxBindingConnector` and `UgxConverters`.
  Unity's own `DataBinding` handles what it can; `UgxPathBinding` covers formatted text, style
  targets and sources that resolve paths themselves.
- Action bus: `UgxActionBus`, `UgxAction`, `UgxActionPayload`, `UgxActionBinder` for the compiled
  event table, and `UgxActionListener` for the inspector.
- Keyframe animation: `UgxClip`, `UgxEasing` (23 USS keywords plus cubic bezier), `UgxAnimator`,
  `UgxStyleSetters` and `UgxAnimationTriggers`.
- Effects: `UgxMaterialBinder` over USS `-unity-material` including `Adopt` for the material a
  stylesheet already resolved, `UgxFilterController` over `style.filter`, and
  `UgxRenderTextureSource`.
- Studio bridge behind `UGX_BRIDGE || UNITY_EDITOR`: `UgxBridgeClient` with backoff reconnect and
  coalesced data deltas, plus handlers for live data, actions, preview, screen state and hot reload.
- Hand written protocol DTOs for version 1 of the daemon protocol.

### Editor

- `UgxManifestFile` plus `UgxScreenRegistryBuilder.RebuildFromDisk` read
  `Assets/<UiFolder>/Generated/ugx-manifest.json`, so an export with no daemon running still
  produces a working registry. `UgxManifestPostprocessor` rebuilds automatically when the file is
  imported, and `RebuildFromDiskCommandLine` is the `-executeMethod` entry point for CI.
- `UgxBundleImporter` applies a `sync.bundle` with stable GUIDs and texture import settings, and only
  deletes files it imported itself.
- `UgxGuidPolicy` writes the `.meta` files Unity expects, including the ScriptedImporter ids for
  `.uxml`, `.uss` and `.tss`.
- `UgxCompileReporter`, `UgxSchemaReflector`, `UgxScreenRegistryBuilder`, `UgxEditorBridge`,
  `UgxSettingsProvider`, `UgxThemeDumper` and the `Tools > UI Creator` menu.
- `UgxPanelBuilder` turns the manifest's panels into `PanelSettings` assets, creates the default
  runtime theme when a panel has none, and points `UgxSettings` at the panel with the lowest sort
  order unless the project already chose one. Without it a HUD authored at 1920x1080 is drawn at
  Unity's default constant pixel size.
- `UgxManifestPostprocessor` rebuilds inside the import callback in batch mode. `delayCall` is never
  pumped by a `-batchmode -quit` run, so a headless export used to import the manifest and register
  nothing.
- `UgxManifestPanel` carries the full panel: scale mode, reference resolution, screen match mode,
  match, sprite pixels per unit and theme. An older manifest that carries none of them still reads,
  with the scale-with-screen-size defaults.
