# Changelog

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [3.18.17] - 2023-01-18
### Added
- `SdfAssetPathAttributeModel` sets builds SdfAssetPath with path/resolvedPath for UDIM paths

## [3.18.16] - 2023-01-11
### Added
- Updated UDIM support and updated tests

## [3.18.15] - 2022-12-16
### Added 
- Fix issue that cannot undo properties of materials

## [3.18.13] - 2022-12-13
### Added 
- Don't allow to edit instance proxies.

## [3.18.12] - 2022-12-05
### Added 
- Added ability to pass arbitrary model_kwargs to model_cls and single_channel_model_cls specified in
  addional_widget_kwargs

## [3.18.11] - 2022-11-28
### Changed
- Now using platform-agnostic copy/paste rather than pyperclip.
- Removed context menu test and made its own extension.

## [3.18.10] - 2022-11-07
### Changed
- Added reset-user option for test.
- Update test_assert_array_widget to use grid view for file picker.

## [3.18.9] - 2022-11-02
### Added
- Added kwarg to hide the control state part of a widget

## [3.18.8] - 2022-10-13
### Fixed
- Fixed browsing reference/payload path not resolving wildcard tokens in filepath
- Fixed browsing asset path/array attribute not navigating to the correct path
- Brought back detail options panel in filepicker when adding reference/payload
### Changed
- Use `omni.kit.window.file_importer` instead of wrapped version of file picker


## [3.18.7] - 2022-10-18
### Fixed
- Fix change value on multi-select Variants

## [3.18.6] - 2022-09-14
### Fixed
- Variants now support multiple selections & mixed

## [3.18.5] - 2022-09-20
### Added
- Added listener for `ADDITIONAL_CHANGED_PATH_EVENT_TYPE` event in message bus to trigger additional property invalidation.

## [3.18.4] - 2022-09-06
### Fixed
- Fixed unittests.

## [3.18.3] - 2022-08-30
### Added
- Supported drag&drop and Filepicker to add multiple files to `SdfAssetPathArray`.
- Added `Copy Property Path` to property context menu.
### Changed
- If `SdfAssetPath` and `SdfAssetPathArray` has no `fileExts` customData, allow folder to be selected.

## [3.18.2] - 2022-08-19
### Fixed
- Fixed performance regression when building model for attribute whose value is a big array.

## [3.18.1] - 2022-08-16
### Changed
- Adjusted alignment for `SdfAssetPath` and `SdfAssetPathArray` widgets.

## [3.18.0] - 2022-08-08
### Added
- Added widget builder and models for SdfAssetArray.

## [3.17.20] - 2022-08-08
### Changes
- Added relationship widget identifiers

## [3.17.19] - 2022-08-03
### Changes
- OM-58170: Custom Layout Group that can have a condition

## [3.17.18] - 2022-08-02
### Changes
- Ensure relative path by default for texture path.

## [3.17.17] - 2022-07-25
### Changes
- Refactored unittests to make use of content_browser test helpers

## [3.17.16] - 2022-07-15
- OM-55770: RGB/RGBA color swatches in property window

## [3.17.15] - 2022-07-13
- OM-55771: File browser button

## [3.17.14] - 2022-06-23
- Support Reset all attributes for the Property Widget

## [3.17.13] - 2022-06-22
### Added
- supported event type omni.timeline.TimelineEventType.TENTATIVE_TIME_CHANGED

## [3.17.12] - 2022-05-31
### Changes
- Changed create_control_state to use ImageWithProvider to prevent flicker

## [3.17.11] - 2022-05-26
### Changes
- added `reset_builder_coverage_table` function
- added `widget_builder_coverage_table` for converage testing

## [3.17.10] - 2022-05-13
### Changes
- Cleaned up ImageWithProvider vs Image usage

## [3.17.9] - 2022-05-17
### Changes
-  Support multi-file drag & drop

## [3.17.8] - 2022-05-03
### Changes
- Fixed manual input on float2/float3/float4 types
- Fixed soft range on float2/float3/float4 types
- Fixed hard range on float2/float3/float4 types

## [3.17.7] - 2022-05-05
### Changes
- Hide the Remove context menu for the transform property widget

## [3.17.6] - 2022-05-02
### Changes
- Goto URL supports UDIM wildcards

## [3.17.5] - 2022-04-22
### Changes
- No longer supported copy and group copy of properties when multiple prims are selected.

## [3.17.4] - 2022-04-07
### Changes
- Locate button not visible when not valid. Like http or empty

## [3.17.3] - 2022-04-14
### Added
- Supported copy partially mixed vector value in group copy.

## [3.17.2] - 2022-04-12
### Changes
- Fix issue with add_button_menu_entry and context menu submenu depth

## [3.17.1] - 2022-03-30
### Changes
- PlaceholderAttribute doesn't error if the metadata doesn't contain "customData.default" or "default"

## [3.17.0] - 2022-03-17
### Changes
- Changed builder function to a class member

## [3.16.0] - 2022-02-18
### Added
- Added Copy/Paste all properties to collapseable frame header.

## [3.15.2] - 2022-02-10
### Added
- Added `set_path_item_padding` and `get_path_item_padding` to `PrimPathWidget`

## [3.15.1] - 2022-02-09
### Added
- Don't fix window slashes in payload reference widget

## [3.15.0] - 2022-02-01
### Added
- Allow Raw Usd Properties Widget to show with multi-selection protection.

## [3.14.0] - 2021-12-08
### Added
- Add -> Attribute to create new attribute on selected prim.
- Right click to remove a Property. However, if Property belongs to a schema, remove is disabled.

## [3.13.1] - 2021-12-02
### Changes
- Softrange update/fixes for array types

## [3.13.0] - 2021-11-29
### Changes
- Added `_get_alignment` and `_create_text_label` UsdPropertiesWidgetBuilder functions

## [3.12.5] - 2021-11-10
### Changes
- `TfTokenAttributeModel` can have custom `AbstractItem` passed into `_update_allowed_token function` to display different values in combobox

## [3.12.4] - 2021-11-10
### Fixed
- Fixed property widget refresh when Usd.Property is removed from Prim.

## [3.12.3] - 2021-10-18
### Changes
- Hard ranges show draggable range in widgets
- Soft ranges can be overridden by user
- Added support for `Sdf.ValueTypeNames.UChar`

## [3.12.2] - 2021-10-27
### Changes
- Prevent crash in event callback

## [3.12.1] - 2021-09-16
### Changes
- Added widget identifiers

## [3.12.0] - 2021-09-29
### Added
- `UsdPropertiesWidget` subclasses can now register a custom subclass of `UsdAttributeModel` to create the widget's models using the `model_cls` key in additional_widget_kwargs, and `single_channel_model_cls` for vector attributes.

## [3.11.3] - 2021-09-07
### Changed
- Fixed mixed `TfTokenAttributeModel` and `MdlEnumAttributeModel` overwriting unchanged values on other prims when last selected prim's value changed by USD API.

## [3.11.2] - 2021-07-20
### Changed
- Added Sdf.Payload support

## [3.11.1] - 2021-07-20
### Changed
- Fixed jump to path icon to handle versioning info in URL

## [3.11.0] - 2021-07-06
### Added
- Added hook for property context menu to add custom context menu entry for property value field.
- Added `ControlStateManager` to allow adding external control state.
- Added `GfVecAttributeSingleChannelModel` which backs value widgets with single channel of a vector.
### Changed
- All vector builder now builds each channel separately and have separated control state.
### Fixed
- A few fixes on models.

## [3.10.1] - 2021-06-15
### Changed
- Fixed asset path refresh issue

## [3.10.0] - 2021-05-21
### Changed
- Added refresh layer to Reference prims

## [3.9.7] - 2021-05-18
### Changed
- Added reset button to asset path selector

## [3.9.6] - 2021-05-18
### Changed
- Added tooltip to asset path stringbox

## [3.9.5] - 2021-05-12
### Fixed
- The default value of NoneGraph

## [3.9.4] - 2021-05-10
### Added
- Updated Sdf.Reference creation so it doesn't use windows slash "\"

## [3.9.3] - 2021-05-06
### Changes
- Only show references checkpoints when server supports them

## [3.9.2] - 2021-04-21
### Changes
- Improvements for large selection of prims

## [3.9.1] - 2021-04-15
### Changed
- Connected attributes are not editable

## [3.9.0] - 2021-04-09
### Added
- Supported hard range and soft range in USD property widget builder/model.

## [3.8.1] - 2021-04-08
### Changed
- Fixed Search in `Add Target(s)` window of relationship widget.

## [3.8.0] - 2021-03-25
### Added
- Supported checkpoint in Reference Widget. Requires `omni.kit.widget.versioning extension` to be enabled.

## [3.7.0] - 2021-03-16
### Added
- Supported `SdfTimeCode` type.
- Added `_save_real_values_as_prev` function in `UsdBase`. It can be overridden to deep copy `self._real_values` to `self._prev_real_values`

## [3.6.0] - 2021-03-11
### Added
- Supported nested display group from both USD and CustomLayoutGroup.

## [3.5.3] - 2021-02-19
### Added
- Added PrimPathWidget API tests

## [3.5.2] - 2021-02-18
### Changed
- Updated UI tests to use new docked_test_window function

## [3.5.1] - 2021-02-17
### Changed
- Fixed References Widget not able to fix broken references.

## [3.5.0] - 2021-02-10
### Added
- Added `change_on_edit_end` to `UsdAttributeModel` and `UsdBase` 's constructor (default to False). When set to True, value will be written back to USD when EditEnd.

### Changed
- `SdfAssetPathAttributeModel` now only updates value to USD on EditEnd.

## [3.4.4] - 2021-02-10
### Changes
- Updated StyleUI handling

## [3.4.3] - 2021-01-22
### Changed
- Show schema default value on UI if the Attribute value is undefined in USD file.

## [3.4.2] - 2020-12-09
### Changes
- Added extension icon
- Added readme
- Updated preview image

## [3.4.1] - 2020-12-07
## Changed
- Don't show "Raw Usd Properties" frame when its empty

## [3.4.0] - 2020-12-03
## Added
- Supported `default` value for more attributes. It first checks for `PropertySpec.default`, if not found, falls back to `ValueTypeName.defaultValue` on the value type.

## [3.3.1] - 2020-11-20
## Changed
- Added get_allowed_tokens function to usd_attribute_model class.

## [3.3.0] - 2020-11-19
## Added
- Added `ReferencesWidget` with preliminary support for Reference, It supports add/remove/replace Reference on prim with no multi-prim editing support yet.

## [3.2.0] - 2020-11-17
## Added
- Added `VariantsWidget` with preliminary support for VariantSet(s). It only supports changing current variant selection, and no multi-prim editing support.

## [3.1.0] - 2020-11-16
## Added
- Added `target_picker_filter_lambda` to `RelationshipEditWidget`'s `additional_widget_kwargs`, giving access to a custom lambda filter for relationships when filtering by type is not enough.
- Exposed `stage_widget` on `RelationshipTargetPicker` for a more flexible access to the widget when needed.

### Changed
- Skip `displayName`, `displayGroup` and `documentation` (in addition to `customData`) when writing metadata for a `PlaceholderAttribute`.

## [3.0.0] - 2020-11-13
### Changed
- Renamed all occurrences of "Attribute", "attr" to "Property" and "prop" to properly reflect the widgets are built on Usd Property (Attribute and Relationship), not just Attribute. The change is backward compatible, so existing code will continue to work, but should be updated asap before old classes and functions become deprecated in future.
  - `UsdAttributesWidget` is now `UsdPropertiesWidget`.
  - `UsdAttributesWidgetBuilder` is now `UsdPropertiesWidgetBuilder`.
  - `UsdAttributeUiEntry` is now `UsdPropertyUiEntry`
  - `usd_attribute_widget` is now `usd_property_widget`
  - `usd_attribute_widget_builder` is now `usd_property_widget_builder`
  - On `UsdPropertiesWidget(prev UsdAttributesWidget)` class:
    - `build_attribute_item` is now `build_property_item`
    - `_filter_attrs_to_build` is now `_filter_props_to_build`
    - `_customize_attrs_layout` is now `_customize_props_layout`
    - `_get_shared_attributes_from_selected_prims` is now `_get_shared_attributes_from_selected_prims`

## [2.11.0] - 2020-11-06
### Added
- Added colorspace combobox to sdf path widget
- Added MetadataObjectModel classes

## [2.10.0] - 2020-11-05
## Added
- Added `no_mixed` flag to `additional_widget_kwargs`. If set to True, the value field will not display "Mixed" overlay, but display the value from last selected prim. Editing the value still applies to all attributes.

## [2.9.0] - 2020-11-04
### Added
- Supported showing and clicking to jump authored Connections on Attribute.

## [2.8.1] - 2020-11-03
### Changed
- Added context menu to path widget for copy to clipboard
- Added additional frame padding to borderless frames

## [2.8.0] - 2020-11-02
### Changed
- Improved support for multi-prim property editing (i.e. "mixed" value).
  - All field that has different values across selected prims will properly show blue "Mixed" text on the UI.
  - When dragging on a Mixed value, all properties snap to the value on the last selected prim.
  - On vector types, each component can be shown as Mixed and edited individually.

## [2.7.0] - 2020-10-30
### Added
- Added `multi_edit` to `UsdAttributesWidget`'s constructor. Set it to False if you want the widget to only work on the last selected prim. Set it to True to work on shared properties across all selected prims. Default is True.
- Added `prim_paths` to `UsdAttributeUiEntry` to allow overriding of what prim path(s) the properties are going to built upon.

## [2.6.0] - 2020-10-28
### Added
- Supported drag-and-drop, file picker and "jump to" button on SdfAssetPath widget.

## [2.5.0] - 2020-10-27
### Added
- Added `targets_limit` to `RelationshipEditWidget`'s `additional_widget_kwargs`, allowing limiting the maximum number of targets can be set on a relationship.

## [2.4.0] - 2020-10-23
### Added
- Added `MdlEnumAttributeModel` and supported building MDL enum type in `UsdAttributesWidgetBuilder`.

## [2.3.3] - 2020-10-22
### Added
- Added optional `collapsed` parameter to `CustomLayoutGroup`

## [2.3.2] - 2020-10-19
### Changed
- Removed `PrimPathSchemeDelegate` and `XformbalePrimSchemeDelegate` so now controlled by omni.kit.property.bundle

## [2.3.1] - 2020-10-19
### Changed
- Fixed USD widget not cleared after current scene is closed.
- Fixed instance parsing error in SchemaAttributesWidget.

## [2.3.0] - 2020-10-14
### Added
- Added optional parameters `additional_label_kwargs` and `additional_widget_kwargs` to `UsdAttributesWidgetBuilder` to allow supplying additional kwargs to builders.
- Added `get_additional_kwargs` function to `UsdAttributesWidget` class. Override it to supply `additional_label_kwargs` and `additional_widget_kwargs` for specific USD property.
- An special parameter to add type filtering to Relationship target picker. See example in `MeshWidget.get_additional_kwargs`.

## [2.2.0] - 2020-10-14
### Added
- Placeholder attribute.

## [2.1.0] - 2020-10-13
### Added
- Added custom_layout_helper module to help declaratively build customized USD property layout.
- ext."omni.kit.window.property".labelAlignment setting to globally control property label alignment.
- ext."omni.kit.window.property".checkboxAlignment setting to globally control bool checkbox alignment.
- UsdAttributesWidgetBuilder._create_label as separated function.

### Changed
- Fixed UI models not cleaned up on new payload.
- Fixed string/token being mistakenly treated as array and clipped for being too long.
- Fallback builder now creates StringField with disabled style.

## [2.0.0] - 2020-10-09
### Added
- Supported Usd.Relationship.

## [1.2.0] - 2020-10-02
### Changed
- Updated Style & Path widget display

## [1.1.0] - 2020-10-06
### Added
- UsdAttributesWidget._customize_attrs_layout to customize attribute display name/group/order, operating on UsdAttributeUiEntry.

### Changed
- UsdAttributesWidget._get_shared_attributes_from_selected_prims now returns list of UsdAttributeUiEntry.
- Removed is_api_schema parameter from SchemaAttributesWidget constructor.
- SchemaAttributesWidget now works on multiple applied schema.

## [1.0.0] - 2020-09-18
### Added
- USD Widgets Released.
