- Update README to point to the new cobweb ui book!
- Integrate
ReactorResult
frombevy_cobweb
. All built-in callbacks like.on_pressed
now let you early-out with?
, so long as you returnOK
(warns on error) orDONE
(drops errors). - Add scroll view widget with new
scroll
example.
- Rename
ControlLabel
toControlMember
. - Rename
RadioButtonGroup
toRadioGroup
. - Update
ControlRoot
andControlMember
to create anonymous labels if an empty string is set for the ID. - Update
ControlRoot
andControlMember
to be structs instead of newtypes. This allows eliding the container when using anonymous ids. - Remove
Copy
derive fromAnimationSettings
,AnimationConfig
, andLoopedAnimationConfig
to avoid silent copies causing issues when editing values. - Expand API of
NodeAttributes
component to make editing attributes easier. - Validate loadable names on registration. Only named structs that start uppercase are allowed.
- Simplify
AnimationConfig
andLoopedAnimationConfig
definitions. Allow theduration
field to be ignored (e.g. if you only want the delay). - Add auto-value-extraction for enter animations.
- Add
AnimatedAttribute::get_value
trait method. - Add
Splattable::splat_value
trait method. - Rename
Animated::enter_ref
toAnimated::enter_ref_override
. If the override is not set, thenAnimatedAttribute::get_value
will be used to extract the current value for an animation when entering a new state.
- Add
- Remove
AnyClone
trait. - Simplify
FlexNode
/AbsoluteNode
/DisplayControl
.- These are no longer
ReactComponents
. DisplayControl
is now a normal component.- Removed
WithAbsoluteNode
andWithFlexNode
.
- These are no longer
- Add
SetClipMargin
loadable. - Re-enable
remove_with_requires
in instruction reversion now that the bevy bug is fixed. - Update localization example to the COB format.
- Add
.update_text()
extension method for UiBuilder to simplify updating a TextLine with static text. - Add
Picking
instruction loadable for inserting thePickingBehavior
component. - Add
Visibility
component loadable. - Add hierarchy traversal tools.
- Remove extra lifetime parameter in
LoadedScene
. - Add
BoxShadow
toPropagateOpacity
. - Rename
App
extension methodregister_themed
->register_static
. - Rename
DisplayControl::Display
->DisplayControl::Show
. - Improve node cleanup on hot-reloaded removal.
- Remove
id
field fromControlRoot
. Theresponds_to
field inResponsive
andAnimated
is only for responding to non-root entities in the control group. - Adjust
PseudoStateParam
API for consistency with other APIs. Enable
andDisable
entity events now add/removeFluxInteraction::Disabled
.
- Cursor compile error on WASM.
on_pointer_enter
now works properly instead of being an alias foron_pressed
- Avoid panicking when accessing UiBuilder if the entity doesn't exist.
- Refactor control attributes so they are stored on target entities. You can use the
NodeAttributes
component to add/remove/modify attributes at runtime.
- Add
SliderValue::single
andSliderValue::planar
helpers. - Rename
AnimatableAttribute
toAnimatedAttribute
. - Add derives for setting up animated components and newtype components:
StaticComponent
,ResponsiveComponent
,AnimatedComponent
,StaticReactComponent
,ResponsiveReactComponent
,AnimatedReactComponent
,StaticNewtype
,ResponsiveNewtype
,AnimatedNewtype
,StaticReactNewtype
,ResponsiveReactNewtype
,AnimatedReactNewtype
. - Add
AnyClone
trait that mirrorsAny
but allows cloning the underlying type. Also bounded byDebug + Send + Sync + 'static
for convenience.
- Internal panic when there is an invalid loadable in a scene node.
LoadedImageNode::image
is now optional. If no image is specified, a default handle will be inserted.- Add radio button widget. Use the
RadioButtonGroup
andRadioButton
loadables to set up radio buttons. See theradio_buttons
example. - Remove
#using
section from COB files. All loadable shortnames must be uniquely registered. - Tighten trait bounds on
Loadable
. It now requiresReflectable
instead ofReflect
. - Fix control group attribute resolution so attributes of the same type (but associated with different pseudo states) won't be layered on top of each other.
- Refactor the
StaticAttribute
/ResponsiveAttribute
/AnimatedAttribute
traits so value extraction can be customized. - Adjust field names of
AnimatedVals
andAnimationSettings
to match theAnimated
instruction. - Add
UpdateId
system input type (likeIn
orTrigger
). This is used in.update()
and.update_on()
now instead of layered closures. - Add 'anonymous control groups' which enables using PseudoStates without ControlRoot/ControlLabel if you only need to target one entity.
- Add
NodeShadow
instruction loadable that inserts bevy'sBoxShadow
component. The shadow can be animated. - Rename
LoadedUiImage
/UiImageColor
/UiImageIndex
toLoadedImageNode
/ImageNodeColor
/ImageNodeIndex
. - Add slider widget. Use the
Slider
andSliderHandle
loadables to set up a slider. See theslider
example. - Update to
bevy
v0.15.0.
- Replace JSON-based asset format with custom Cobweb Asset Format (COB).
- Many updates and improvements throughout the crate.
- Remove
sickle_ui
dependency. We now vendor a subset of the sickle functionality as subcrates. - Update to Bevy 0.15.
- Add editor proof of concept.
- Automatically add
SickleUiPlugin
andReactPlugin
if missing.
- Add importing via manifest key to cobweb asset file syntax.
- Move built-in widgets and assets to
builtin
module. - Add built-in colors mimicking Bevy's color palettes (CSS1 'basic', CSS4 'css', Tailwind CSS 'tailwind').
- Rework widget theming and interactivity to use simpler control scheme. Now you only need
ControlRoot
andControlLabel
loadables to set up multi-entity interactive and pseudo-state-sensitive structures. - Add font families API for accessing fonts.
- Implement
Add
forSceneFile
andSceneRef
. - Add
PropagateOpacity
for controlling opacity of hierarchies. Addedhover_text
example to showcase it.
- Update to
bevy_cobweb
v0.11. - Rename
LoadableFile
/LoadablePath
/LoadableRef
toSceneFile
/ScenePath
/SceneRef
. - Fix bug with hot-reloading scene nodes not taking into account non-loaded sibling entities in the entity hierarchy.
- Optimize importing constants in cobweb asset files.
- Optimize importing specs in cobweb asset files.
- Register
DisplayControl
for reflection. - Refactor
ApplyLoadable
to takeEntity
and&mut World
instead ofEntityCommands
. This should be a small optimization. - Split
LoadFonts
,LoadAudio
, andLoadImages
intoLoadX
/LoadLocalizedX
pattern. These asset maps will no longer attempt to load localized assets until theLocalizationManifest
has negotiated a language list.
- Add
JustifyText
andBreakLineOn
options toTextLine
.
- Initial release.