1.0.0-beta.9 (2024-02-25)
1.0.0-beta.8 (2023-09-27)
- analyzers: fix NullReferenceExceptions in UIC103 (#110) (67f5406)
- core: fix compile error inside AddressableAssetResolver in Unity 2020 (7956148)
- analyzers: add rule for disallowing readonly members with Provide or Query (UIC003) (c04dce6)
1.0.0-beta.7 (2023-09-25)
1.0.0-beta.6 (2023-09-22)
- core: make DependencyConsumer's constructor protected (7820b77)
1.0.0-beta.5 (2023-09-21)
- add abstract DependencyConsumer base class for DI consumers (#108) (424143b)
- drop requirement of Logger field from dependency injection codegen (9489002)
- codegen: do not iterate through Object class's members (b562ca7)
1.0.0-beta.4 (2023-07-08)
- disable auto reference in predefined assemblies (1d56d8e)
- testing: allow instantiating with constructor arguments in TestBed (9744ed6)
- testing: rework TestBed to work with any class (f7b4dd5)
- 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)
- docs: fix erroneous documentation comment in TestBed (24ead3e)
- add AssetDatabaseAssetResolver (57153a8)
- initialize UIComponents on first attach to panel (e8a2c60)
- UIComponent: return Task from Initialize (77a7cb7)
- UIComponent: reduce allocations while loading style sheets (e163110)
- UIComponent: use cached Task when no layouts are defined (1d2edd4)
- 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)
- include meta files in .unitypackage distribution (856d398)
1.0.0-beta.1 (2023-03-12)
- UxmlTraitAttribute: default trait name no longer has trailing or leading dashes (74a73f7)
- UIComponent: remove WaitForInitialization method (d21e194)
- UxmlTraitAttribute: remove obsolete DefaultValue property (adb4715)
- 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)
- remove com.unity.roslyn from dependencies (c99dbfd)
- 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)
- 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)
- ignore using declarations with alias during codegen (dc3331c)
- 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)
- remove ConditionalAttribute from various attributes (6437399)
- shorten type names in generated code (03917ef)
1.0.0-alpha.3 (2022-11-20)
- ProvideAttribute: fix NullReferenceException during codegen (2b03eb7)
- rework dependency injection to use source generation (fe70a79)
- samples: add UXML code generation sample (86ecd43)
- UxmlNameAttribute: use MeansImplicitUseAttribute (ddb58b6)
- 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)
- 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)
- ignore abstract classes in code generation (b53523b)
- resolve namespace conflicts in generated code (a1eb455)
- 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)
- 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)
- UIComponent: wait for child components to be initialized (fe9bdaa)
- UIComponent: UIComponents now wait for their hierarchy to be initialized before calling OnInit.
0.25.0 (2022-10-08)
- add experimental UxmlNameAttribute for generating UxmlFactory (5df8799)
- Addressables: increase minimum Addressables version to 1.18.19 (0622e2e)
- 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)
- add source generation for UxmlTraits and UxmlFactory (Unity 2021.2+)
- add IOnNavigationMove event interface (174e2a0)
0.23.0 (2022-09-18)
- AddressableAssetResolver: cache existence check results (ea1560c)
- UIComponent: determine stylesheets asset paths in the same thread as the load operation (33dcef6)
- 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)
- UIComponent: add InitializationTask property (5596a42)
- UIComponent: load bare components synchronously (012945f)
- UIComponent: make WaitForInitialization() obsolete (40646b6)
0.21.1 (2022-08-29)
- RootClassAttribute: use BaseTypeRequired attribute (1853095)
0.21.0 (2022-08-29)
- ProvideAttribute: fix fields being populated after assets are loaded (7f6519d)
- ProvideAttribute: add CastFrom property (7ec0b11)
- ProvideAttribute: move out of Experimental namespace (53c7162)
- ProvideAttribute: ProvideAttribute has been moved to the root UIComponents namespace.
0.20.0 (2022-08-28)
- 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)
- 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)
- Revert "test(benchmarks): ensure Addressables are initialized before running benchmarks" (7f055a0)
- 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)
- add support for transient dependencies (e20ee2b)
- DependencyInjector: rename RestoreDefaultDependency to ResetProvidedInstance (4be20c7)
- remove built-in AssetDatabase support (ddc14b8)
- 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)
- docs: add documentation link to new wiki (a999223)
- QueryAttribute: move out of the experimental namespace (dc40380)
- FieldCache: reduce initialization time and GC allocations (35a9ab8)
- QueryAttribute: QueryAttribute has been moved from the UIComponents.Experimental namespace to UIComponents.
0.16.0 (2022-06-24)
- add experimental ProvideAttribute (0c54ea0)
- add RootClassAttribute (983a425)
- DependencyInjector: add non-generic Provide method (891b4cd)
0.15.0 (2022-06-18)
- DependencyInjector: fix construction when class has overridden dependency (25412e5)
- add IUIComponentLogger dependency to UIComponent (8e89652)
- UIComponent: add GetTypeName method (b8a089c)
0.14.0 (2022-06-14)
- QueryAttribute: log error on non-VisualElement fields (0855628)
- QueryAttribute: reduce allocations on Unity 2019 (9294cf6)
0.13.0 (2022-06-12)
- samples: remove mention of QueryClassAttribute (aa95716)
- 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)
- QueryAttribute: query by type and class, support array and List<> fields (52375d7)
- QueryAttribute: use MeansImplicitUseAttribute (a123143)
0.11.0 (2022-06-05)
- DependencyInjector: fix SetDependency exception message (9090c74)
- DependencyInjector: add RestoreDefaultDependency method (ef1952f)
0.10.0 (2022-06-03)
- StylesheetAttribute: apply stylesheets from parents upward (a27f75e)
- 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)
- add experimental QueryAttribute (1b7e0d5)
- DependencyInjector: add RemoveInjector static method for testing (e514533)
- implement new cache for UIComponents (6b90eb2)
0.8.0 (2022-05-13)
- UIComponent: add null check to layout loading function (6359299)
- add samples (f4c0ccf)
0.7.0 (2022-05-11)
- add DependencyScope utility class (dd8233a)
- package.json: add changelog, documentation and license URLs (09e5555)
0.6.0 (2022-05-05)
- move to UIComponents namespace from UIComponents.Core (7efa0db)
- 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)
- 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)
- DependencyInjector: add ClearDependency method (f621469)
0.3.0 (2022-05-02)
- UIComponent: add TryProvide method (c367311)
0.2.1 (2022-05-02)
- remove visibility modifier from interface members (a51e751)
0.2.0 (2022-05-01)
- PathAttribute: do not mutate Path instance variable in GetAssetPathForComponent (cb01f27)
- 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)
- 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.
- Initial release