All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.20.1 - 2024-12-13
- Fix formatting in crate example
0.20.0 - 2024-12-13
- Fix
Data
impl for&T
(63d89ed) - Remove Data from root exports (677b160)
- Replace
Memoize
trait with more specificGenerational
trait (febe238)
- Impl
Data
for Rc<dyn Fn(..)> and deriveClone
forCatch
composable (e038307) - Impl
Clone
forfrom_fn
,from_iter
, andmemo
composables (21c016f) - Add
material_ui
composable (5dad9a3)
- Replace
std
deps withcore
(68d44a2) - Simplify styling in
scroll_view
composable and updatehttp
example (f90e4c4) - Check for removed entities in Spawn composable (c23e158)
- Add docs to
use_local_task
(63d89ed) - Add docs to
use_task
(7ddbe84) - Update counter example (3b79bb1)
- Update borrowing docs (efcdfe3)
0.19.1 - 2024-12-09
- Add
use_effect
hook (5ae0a51)fn use_effect<D, T>(cx: ScopeState, dependency: D, effect: impl FnOnce(&D))
- Remove
AnyItemState
infrom_iter
composable to pass stacked borrows check in miri (2360814)
- Add docs for
from_fn
andfrom_iter
composables (5c379e1)
0.19.0 - 2024-12-08
- Require
'static
items infrom_iter
composable- This prevents edge cases where an item may have been removed from a collection, but references still exist down the tree.
- Add logo to rustdocs (702b1e0)
- Update material docs (3084286)
- Update link to
core::error::Error
inCatch
composable (b664206)
0.18.1 - 2024-12-07
- Specify
winit
backend fordocs.rs
(62bec2d)
0.18.0 - 2024-12-07
- Create
ScrollView
composable and newui
module (28628f4, ebb17b0)- The
material
is now located underui
- The
- Add support for reactive Bevy desktop apps (7c65ba9, 6918000)
- Add more picking handler methods to
Modify
(64404b3) - More advanced typography with new Text composable (825e007)
- Derive
Clone
forSpawn
and refactor (6c4e457) - Add methods to modify all Node fields
0.17.2 - 2024-12-07
- Update pending composable ordering and track child index in
Spawn
composable (fdf89ed) - Reverse node IDs and refactor internals (42e1971)
- Add docs to
spawn
constructor and split up ecs module (9c06bfe) - Move examples for
catch
anddyn_compose
to rustdocs (9502a4b) - Move traits example to data module and add docs, reorganize examples (67ec922)
- Update Data docs (829c6d9)
0.17.1 - 2024-12-06
-
Create
FromFn
composable- You can now create a composable without input using
from_fn
(433ab1d) -
fn from_fn<F, C>(f: F) -> FromFn<F, C> where F: Fn(ScopeState) -> C, C: Compose
- You can now create a composable without input using
-
Derive
Clone
andDebug
forButton
,Container
, andRadioButton
(4f337ed)
- Update docs for feature flags (869aa89)
0.17.0 - 2024-12-06
- Move
Modifier
andModify
to ecs module (behind new picking feature) (35b10ea)- These items can be useful for other design systems than Material 3
- Call
on_insert
on every insertion of a spawned bundle (this now requiresFn
instead ofFnOnce
) (533da07)
- Revert from breadth-first traversal of the composition to depth-first (8b3acd2)
- Update styling for
Container
(9cca3a7)
0.16.1 - 2024-12-05
-
Material UI components
Button
Container
RadioButton
text
label
heading
-
New scheduling algorithm based on
BTreeSet
(2a457a9)
0.16.0 - 2024-12-05
- Major internal rewrite! (9ef73eb) The new internals allow for more dynamic control over the composition
, enabling features like pause and resume of a composition.
Composer::try_compose
will now also skip directly to changed composables, rather than setting change flags.- Removes exported methods for
ScopeData
- The
Runtime
struct is now private to ensure safety
- Removes exported methods for
-
Composer
is now an iterator! This allows for stepping through each composable in the composition. -
Composer
also implementsfmt::Debug
:use actuate::prelude::*; use actuate::composer::Composer; #[derive(Data)] struct A; impl Compose for A { fn compose(cx: Scope<Self>) -> impl Compose { (B, C) } } #[derive(Data)] struct B; impl Compose for B { fn compose(cx: Scope<Self>) -> impl Compose {} } #[derive(Data)] struct C; impl Compose for C { fn compose(cx: Scope<Self>) -> impl Compose {} } let mut composer = Composer::new(A); composer.try_compose().unwrap(); assert_eq!(format!("{:?}", composer), "Composer(A(B, C))")
0.15.0 - 2024-12-03
- Add
#[actuate(path = "..")]
attribute toData
macro and use fully-qualified path to Actuate by default (b159478).- This allows for use of the
Data
macro without importing the fullprelude
.
- This allows for use of the
- Replace
DynCompose::new
withdyn_compose
constructor fn (9d65ec8). - Return
Rc
from use_contextfn use_context<T: 'static>(cx: ScopeState) -> Result<&Rc<T>, ContextError<T>> { .. }
- This allows for cloning context into
'static
environments.
- Use explicit imports internally to speed up compile times and exclude hidden
Data
traits from prelude (07bfd96).
0.14.2 - 2024-12-03
- Optimize empty composables by skipping creation of ScopeData
- Enable Tokio dependency with animation and ecs features (5263fe4)
0.14.1 - 2024-12-03
- Remove unused tokio read lock guard (0ad962f)
0.14.0 - 2024-12-03
- Remove unsound
Compose
impl forMap
and createMapUnchecked
struct- The original
Compose
impl forMap
would cause undefined behavior if multiple references to the same composable were used. The new unsafeMapUnchecked
keeps this functionality for low-level components, where the documented safety contract can be checked. However, for most composables I now seeCompose + Clone
being a typical pattern (which I think is fine given some composables only copy references when cloned, and references to composables can still be passed around).
- The original
- Impl re-composition when the type has changed in
DynCompose
(7d41100)
- Update docs for
Spawn
composable (205b88a) - Add example to showcase
DynCompose
(7d41100)
0.13.0 - 2024-12-02
- Use
PartialEq
inuse_memo
instead of theMemoize
trait (6539c95)- This is to memoize tuples and other groups of data.
To use pointer equality, you can still use
Signal::generation
orMemoize::memoize
to get the current generation.
- This is to memoize tuples and other groups of data.
To use pointer equality, you can still use
- Remove unused UseWorld struct (81615cd)
- Add more documentation to the
Catch
composable- Adds a quick explanation of using
Result
+Catch
, and links to thecatch
constructor function for more info.
- Adds a quick explanation of using
- Add explanation to
compose::from_iter
(dc6715d)
- Change release procedure and update CI (dd4be8d, fe23aad, 723fe6c)
0.12.0 - 2024-12-02
#![no_std]
support (#100)- Clean up and add internal docs
- Remove Sized bound in Compose trait
- Create
Catch
composable and implCompose
forResult
(#99) - Add getter and setter methods to ScopeData
- Update docs
- Remove is_empty from ScopeState in favor of checking for empty types
- Create README.md
0.11.0 - 2024-11-29
- Update to Bevy 0.15.0
- Disable observers after drop
- Add support for standard references in RefMap and Cow
- Fix formatting in README
0.10.2 - 2024-11-28
- Add specialized impl of SystemParamFunction for Triggers
- Export animation channel
- Impl Data for UseAnimated
- Impl Data for Pin
- Impl Data for Box<dyn Future<Output = ()>>
- Allow return values for Data fns
- Create
use_animated
hook (#88) - Fix tasks not running on the ecs
0.10.1 - 2024-11-26
- Apply system params in use_world_once
- Apply deferred system param updates
- Add SignalMut::set_if_neq and generation methods