Skip to content

Latest commit

 

History

History
589 lines (299 loc) · 30.9 KB

CHANGELOG.md

File metadata and controls

589 lines (299 loc) · 30.9 KB

1.0.0-beta.9 (2024-02-25)

Performance Improvements

  • roslyn: analyze syntax only when required types exist (#115) (756b382)

1.0.0-beta.8 (2023-09-27)

Bug Fixes

  • analyzers: fix NullReferenceExceptions in UIC103 (#110) (67f5406)
  • core: fix compile error inside AddressableAssetResolver in Unity 2020 (7956148)

Features

  • analyzers: add rule for disallowing readonly members with Provide or Query (UIC003) (c04dce6)

1.0.0-beta.7 (2023-09-25)

Features

  • core: make DependencyAttribute's implementation argument optional (#109) (f797b4e)

1.0.0-beta.6 (2023-09-22)

Bug Fixes

  • core: make DependencyConsumer's constructor protected (7820b77)

1.0.0-beta.5 (2023-09-21)

Features

  • add abstract DependencyConsumer base class for DI consumers (#108) (424143b)
  • drop requirement of Logger field from dependency injection codegen (9489002)

Performance Improvements

  • codegen: do not iterate through Object class's members (b562ca7)

1.0.0-beta.4 (2023-07-08)

Bug Fixes

  • disable auto reference in predefined assemblies (1d56d8e)

Features

  • testing: allow instantiating with constructor arguments in TestBed (9744ed6)
  • testing: rework TestBed to work with any class (f7b4dd5)

BREAKING CHANGES

  • testing: TestBed’s CreateComponent method has been renamed to Instantiate and it no longer takes a factory predicate. Its CreateComponentAsync method has been removed as well as it wasn’t useful in the synchronous Unity Test Framework.
  • UIComponents' assemblies are no longer referenced automatically in predefined assemblies.

1.0.0-beta.3 (2023-05-26)

Bug Fixes

  • docs: fix erroneous documentation comment in TestBed (24ead3e)

Features

  • add AssetDatabaseAssetResolver (57153a8)
  • initialize UIComponents on first attach to panel (e8a2c60)
  • UIComponent: return Task from Initialize (77a7cb7)

Performance Improvements

  • UIComponent: reduce allocations while loading style sheets (e163110)
  • UIComponent: use cached Task when no layouts are defined (1d2edd4)

BREAKING CHANGES

  • UIComponents no longer start their initialization in the inherited constructor. Instead, it is started when they are first attached to a panel. Alternatively, the newly exposed Initialize method can be called to start initialization.

1.0.0-beta.2 (2023-03-21)

Bug Fixes

  • include meta files in .unitypackage distribution (856d398)

1.0.0-beta.1 (2023-03-12)

Bug Fixes

  • UxmlTraitAttribute: default trait name no longer has trailing or leading dashes (74a73f7)

Features

  • UIComponent: remove WaitForInitialization method (d21e194)
  • UxmlTraitAttribute: remove obsolete DefaultValue property (adb4715)

BREAKING CHANGES

  • UxmlTraitAttribute: UxmlTraitAttribute's obsolete DefaultValue property has been removed. Use field and property initializers instead.
  • UIComponent: UIComponent's obsolete WaitForInitialization method has been removed. Use its InitializationTask instead.

1.0.0-beta.0 (2023-03-05)

Features

  • remove com.unity.roslyn from dependencies (c99dbfd)

BREAKING CHANGES

  • com.unity.roslyn is no longer a dependency. This means that Unity 2020 is no longer officially supported out-of-the-box.

1.0.0-alpha.6 (2023-03-01)

Features

  • analyzers: add rule UIC101 and code fix (321d154)
  • analyzers: add rules UIC102 and UIC103 (f8d57d0)
  • roslyn: add Roslyn analyzer (41533d7)

1.0.0-alpha.5 (2022-11-26)

Bug Fixes

  • ignore using declarations with alias during codegen (dc3331c)

Features

  • move event interfaces to use source generation (2221717)
  • UxmlTraitAttribute: mark DefaultValue property as obsolete (5ea20df)
  • UxmlTraitAttribute: use initializers as default value (70925e2)

1.0.0-alpha.4 (2022-11-20)

Bug Fixes

  • remove ConditionalAttribute from various attributes (6437399)
  • shorten type names in generated code (03917ef)

1.0.0-alpha.3 (2022-11-20)

Bug Fixes

  • ProvideAttribute: fix NullReferenceException during codegen (2b03eb7)

Features

  • rework dependency injection to use source generation (fe70a79)
  • samples: add UXML code generation sample (86ecd43)
  • UxmlNameAttribute: use MeansImplicitUseAttribute (ddb58b6)

BREAKING CHANGES

  • All UIComponent subclasses must now be declared partial. TestBed has been reworked to focus on testing one component at a time. new TestBed<TComponent> is used instantiate one now.

1.0.0-alpha.2 (2022-10-30)

Features

  • QueryAttribute: annotate each assignment in generated code (2a3a924)
  • QueryAttribute: log error if no elements are found (58582cc)

1.0.0-alpha.1 (2022-10-23)

Bug Fixes

  • ignore abstract classes in code generation (b53523b)
  • resolve namespace conflicts in generated code (a1eb455)

Features

  • annotate generated code with GeneratedCodeAttribute (75b0c35)
  • enable source generation in Unity 2020 (f870d70)
  • include samples in .unitypackage (b1f1fb1)
  • ProvideAttribute: use source generation (eed6208)
  • QueryAttribute: now uses source generation instead of reflection (a43e019)
  • remove UIComponent's static ClearCache method (f236780)
  • remove Unity 2019 support (2456730)
  • rename AssetPathAttribute to AssetPrefixAttribute (eb0ccf1)
  • rename IUIComponentLogger to ILogger, turn caller argument type to object (5749d0f)
  • rename TraitAttribute to UxmlTraitAttribute (da47d4c)
  • UIComponent: apply effects with source generation (b118405)
  • UIComponent: remove GetTypeName method (1f7343a)
  • UIComponent: use source generation for layouts and stylesheets (a8d5e01)
  • UxmlNameAttribute: move from UIComponents.Experimental namespace to UIComponents (a484ec4)
  • UxmlTraitAttribute: move from UIComponents.Experimental namespace to UIComponents (e1ba54a)
  • UxmlTraitAttribute: use a kebab-case version of member name by default (7bfb5e0)

BREAKING CHANGES

  • UIComponent: UIComponent's GetTypeName method has been removed as it was unnecessary. Use GetType().Name instead.
  • The IUIComponentLogger interface has been renamed to ILogger. It's methods' second argument is now of type object rather than UIComponent.
  • UxmlTraitAttribute: UxmlTraitAttribute has been moved from the UIComponents.Experimental namespace to UIComponents.
  • UxmlTraitAttribute: UxmlNameAttribute now uses a kebab-case version of the member name by default.
  • UxmlNameAttribute: UxmlNameAttribute has been moved from the UIComponents.Experimental namespace to UIComponents.
  • AssetPathAttribute has been renamed to AssetPrefixAttribute.
  • TraitAttribute has been renamed to UxmlTraitAttribute.
  • Because of the removal of reflection, the UIComponent attribute cache has been removed. UIComponent's static ClearCache method has been removed, as well.
  • ProvideAttribute: ProvideAttribute now uses source generation and requires a partial class.
  • UIComponent: Effects use source generation, which means that RootClassAttribute now requires a partial class to function.
  • QueryAttribute: QueryAttribute uses source generation now. Classes that use it must be partial.
  • UIComponent: LayoutAttribute and StylesheetAttribute use source generation now and require classes to be partial. GetAssetPaths function has been removed from UIComponent. Only one AssetPath attribute can be used with a class.
  • Unity 2019 support has been removed.

0.26.0 (2022-10-13)

Features

  • UIComponent: wait for child components to be initialized (fe9bdaa)

BREAKING CHANGES

  • UIComponent: UIComponents now wait for their hierarchy to be initialized before calling OnInit.

0.25.0 (2022-10-08)

Features

  • add experimental UxmlNameAttribute for generating UxmlFactory (5df8799)
  • Addressables: increase minimum Addressables version to 1.18.19 (0622e2e)

BREAKING CHANGES

  • Addressables: The minimum Addressables version for UIComponents.Addressables has been increased to 1.18.19. Addressables 1.17 does not work with UIComponent's asynchronous loading.

0.24.0 (2022-10-02)

Features

  • add source generation for UxmlTraits and UxmlFactory (Unity 2021.2+)
  • add IOnNavigationMove event interface (174e2a0)

0.23.0 (2022-09-18)

Features

  • IAssetResolver: change AssetExists return type to Task (3dfe624)
  • make most classes sealed (c4ff845)

Performance Improvements

  • AddressableAssetResolver: cache existence check results (ea1560c)
  • UIComponent: determine stylesheets asset paths in the same thread as the load operation (33dcef6)

BREAKING CHANGES

  • The following classes are now sealed: AssetPathAttribute, Dependency, DependencyAttribute, DependencyInjector, DiContainer, DiContext, LayoutAttribute, MissingProviderException, ProvideAttribute, QueryAttribute, RootClassAttribute, StylesheetAttribute, TestBed, TestBedBuilder, TestBedTimeoutException.
  • IAssetResolver: IAssetResolver's AssetExists now returns Task.

0.22.0 (2022-09-03)

Features

  • UIComponent: add InitializationTask property (5596a42)
  • UIComponent: load bare components synchronously (012945f)
  • UIComponent: make WaitForInitialization() obsolete (40646b6)

0.21.1 (2022-08-29)

Features

  • RootClassAttribute: use BaseTypeRequired attribute (1853095)

0.21.0 (2022-08-29)

Bug Fixes

  • ProvideAttribute: fix fields being populated after assets are loaded (7f6519d)

Features

  • ProvideAttribute: add CastFrom property (7ec0b11)
  • ProvideAttribute: move out of Experimental namespace (53c7162)

BREAKING CHANGES

  • ProvideAttribute: ProvideAttribute has been moved to the root UIComponents namespace.

0.20.0 (2022-08-28)

Features

  • create new asmdef for UIComponents.Testing (95571ec)
  • TestBed: add implicit conversion from TestBedBuilder (99c5203)
  • TestBed: add SetSingletonOverride instance method (8fe0b9d)
  • UIComponent: add WaitForInitializationEnumerator method (76ef531)
  • UIComponent: load assets asynchronously (b95192c)

BREAKING CHANGES

  • Usage of UIComponents.Testing now requires including an assembly definition reference.
  • UIComponent: Assets are now loaded asynchronously. Operations related to the DOM or stylesheets must now be done in the new virtual OnInit method.

0.19.0 (2022-08-20)

Features

  • add TestBed (b25a6ad)
  • addressables: set minimum Addressables version to 1.17.13 (018923d)

Reverts

  • Revert "test(benchmarks): ensure Addressables are initialized before running benchmarks" (7f055a0)

BREAKING CHANGES

  • The new TestBed system replaces DependencyScope and DependencyInjector's static methods. They have been removed.
  • addressables: Preview versions of Addressables 1.17 are no longer supported.

0.18.0 (2022-07-12)

Features

  • add support for transient dependencies (e20ee2b)
  • DependencyInjector: rename RestoreDefaultDependency to ResetProvidedInstance (4be20c7)
  • remove built-in AssetDatabase support (ddc14b8)

BREAKING CHANGES

  • AssetDatabaseAssetResolver has been removed, since working with hardcoded asset paths is difficult. If you want to use AssetDatabase, you can create your own IAssetResolver class.
  • DependencyInjector: DependencyInjector's RestoreDefaultDependency method has been renamed to ResetProvidedInstance

0.17.0 (2022-07-09)

Features

  • docs: add documentation link to new wiki (a999223)
  • QueryAttribute: move out of the experimental namespace (dc40380)

Performance Improvements

  • FieldCache: reduce initialization time and GC allocations (35a9ab8)

BREAKING CHANGES

  • QueryAttribute: QueryAttribute has been moved from the UIComponents.Experimental namespace to UIComponents.

0.16.0 (2022-06-24)

Features

  • add experimental ProvideAttribute (0c54ea0)
  • add RootClassAttribute (983a425)
  • DependencyInjector: add non-generic Provide method (891b4cd)

0.15.0 (2022-06-18)

Bug Fixes

  • DependencyInjector: fix construction when class has overridden dependency (25412e5)

Features

  • add IUIComponentLogger dependency to UIComponent (8e89652)
  • UIComponent: add GetTypeName method (b8a089c)

0.14.0 (2022-06-14)

Features

  • QueryAttribute: log error on non-VisualElement fields (0855628)

Performance Improvements

  • QueryAttribute: reduce allocations on Unity 2019 (9294cf6)

0.13.0 (2022-06-12)

Bug Fixes

  • samples: remove mention of QueryClassAttribute (aa95716)

Features

  • add event interfaces IOnAttachToPanel, IOnDetachFromPanel & IOnGeometryChanged (ee16a5e)
  • add IOnClick event interface (0172a64)
  • add IOnMouseEnter and IOnMouseLeave event interfaces (34b370b)
  • samples: add event interfaces sample (74780a2)

0.12.0 (2022-06-10)

Features

  • QueryAttribute: query by type and class, support array and List<> fields (52375d7)
  • QueryAttribute: use MeansImplicitUseAttribute (a123143)

0.11.0 (2022-06-05)

Bug Fixes

  • DependencyInjector: fix SetDependency exception message (9090c74)

Features

  • DependencyInjector: add RestoreDefaultDependency method (ef1952f)

0.10.0 (2022-06-03)

Features

  • StylesheetAttribute: apply stylesheets from parents upward (a27f75e)

BREAKING CHANGES

  • StylesheetAttribute: Stylesheets defined in parent classes are now loaded first. This means that child classes can override styles from their parents.

0.9.0 (2022-05-27)

Features

  • add experimental QueryAttribute (1b7e0d5)
  • DependencyInjector: add RemoveInjector static method for testing (e514533)

Performance Improvements

  • implement new cache for UIComponents (6b90eb2)

0.8.0 (2022-05-13)

Bug Fixes

  • UIComponent: add null check to layout loading function (6359299)

Features

0.7.0 (2022-05-11)

Features

  • add DependencyScope utility class (dd8233a)
  • package.json: add changelog, documentation and license URLs (09e5555)

0.6.0 (2022-05-05)

Features

  • move to UIComponents namespace from UIComponents.Core (7efa0db)

BREAKING CHANGES

  • All core code is now located in the UIComponents namespace, as opposed to UIComponents.Core.

0.5.0 (2022-05-05)

  • feat(UIComponent)!: make GetLayout and GetStyleSheets private (4251611)

Features

BREAKING CHANGES

  • UIComponent's GetLayout and GetStyleSheets functions are no longer protected and virtual. Since they are called in UIComponent's constructor, derived classes would not have been fully initialized when the overridden functions are called.

0.4.0 (2022-05-03)

Features

  • DependencyInjector: add ClearDependency method (f621469)

0.3.0 (2022-05-02)

Features

  • UIComponent: add TryProvide method (c367311)

0.2.1 (2022-05-02)

Bug Fixes

  • remove visibility modifier from interface members (a51e751)

0.2.0 (2022-05-01)

Bug Fixes

  • PathAttribute: do not mutate Path instance variable in GetAssetPathForComponent (cb01f27)

Features

  • rework asset handling (1c50b26)
  • rework dependency injection, create AssetDatabaseAssetLoader (935703e)
  • allow specifying asset path with AssetPathAttribute (336b6b9)
  • add very basic dependency injection (dc12f9d)
  • DependencyInjector: add constructor for constructing injector using DependencyAttributes (7b697b7)
  • DependencyInjector: add TryProvide method (9583b39)
  • DependencyInjector: throw ArgumentNullException in SetDependency (caa2e1b)
  • DependencyInjector: throw exception in Provide if no provider exists (4ccebe5)
  • examples: add CounterComponent example (bbb8f10)
  • UIComponent: make AssetResolver public (f2dc3b7)
  • UIComponent: remove warning messages from when no layout or stylesheet files exist (cf72d2d)

BREAKING CHANGES

  • The new ResourcesAssetResolver is now used by default. AssetDatabaseAssetResolver has been moved to the new UIComponents.Editor assembly.
  • InjectDependencyAttribute has been renamed to DependencyAttribute. The provider argument has been renamed to provide. The majority of DependencyInjector has been reworked completely.
  • LayoutAttribute and StylesheetAttribute's RelativeTo property has been removed.

0.1.0 [2022-04-25]

  • Initial release