All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
v1.0.0 (2026-01-25)
- Store inputs in their own struct (#269) by James Harton
- add tests for guard telemetry events by Jaden
-
remove unused async options from
Reactor.undo/3(#292) by James Harton -
move mermaid script to
before_closing_body_tagfor proper rendering (#289) by James Harton -
implement
nested_steps/1forStep.Switchto fix dependency resolution (#288) by James Harton -
set proper class for reactor errors (#286) by Zach Daniel
-
Telemetry middleware crashes on unhandled guard events (#276) by Jaden
-
telemetry middleware implements guard steps by Jaden
-
tests failing because of REUSE annotations (#275) by James Harton
v0.17.0 (2025-09-30)
- Add backoff support for retries. (#267) by James Harton
-
Add stacktrace to exception (#265) by Rutgerdj
-
Add stacktrace to exception by Rutgerdj
-
remove rescue statement inside AnonFn.run/3 by Rutgerdj
-
Add
descriptionoption to Reactor DSL and struct. (#268) by James Harton -
Prepare Minimal Spark Update (#266) by Jonatan Männchen
v0.16.0 (2025-09-21)
-
Allow Reactors to be able to be undone after successful completion. (#262) by James Harton
-
add allow_async? flag to compose DSL (#256) by James Harton
-
undo for composed reactors (#263) by James Harton
-
resolve nested step dependency and argument inheritance issues (#258) by James Harton
-
correct current_try increment during step retries (#257) by James Harton
-
correct current_try increment during step retries by James Harton
-
mermaid: trim whitespace from module names to prevent :nofile errors (#253) by James Harton
v0.15.6 (2025-07-02)
- mermaid: use TB instead of TD (#241) by ChristianAlexander
v0.15.5 (2025-06-18)
- don't use regexes in module attributes, for otp28 compat by Zach Daniel
v0.15.4 (2025-05-30)
-
add support for recursive sub-reactors (#215)
-
add support for recursive sub-reactors
v0.15.3 (2025-05-24)
- add usage-rules.md (#218)
v0.15.2 (2025-04-15)
- Include a unique
run_idfor every reactor run. (#201)
v0.15.1 (2025-04-09)
- Allow additional telemetry metadata to be provided via Reactor context. (#194)
v0.15.0 (2025-03-11)
- Add
reactor.runmix task. (#184)
v0.14.0 (2025-03-04)
- Add ability to convert Reactors into Mermaid flowcharts.
-
Add the ability to render Mermaid flowcharts. (#175)
-
Ensure that descriptions are carried through into Reactor structs.
v0.13.3 (2025-02-17)
- pass full step to undo error
v0.13.2 (2025-02-15)
- context should be shared with child reactors by default. (#168)
v0.13.1 (2025-02-11)
- Radically simplify reactor composition. (#162)
v0.13.0 (2025-02-11)
-
template: Add
templatestep which renders an EEx template. (#154) -
Add
whereandguardentities to steps. (#148)
-
Correctly pass guards into
flunkstep. (#158) -
Runtime step planning with intermediate results. (#156)
- Verify step name uniqueness recursively. (#153)
v0.12.1 (2025-02-04)
-
Correctly pass guards into
flunkstep. (#158) -
Runtime step planning with intermediate results. (#156)
v0.12.0 (2025-02-01)
- template: Add
templatestep which renders an EEx template. (#154)
- Verify step name uniqueness recursively. (#153)
v0.11.0 (2025-01-28)
- Add
whereandguardentities to steps. (#148)
v0.10.3 (2024-12-19)
- make igniter optional
v0.10.2 (2024-12-01)
- DSL: Add
descriptionoptions to most DSL entities. (#137)
v0.10.1 (2024-11-06)
-
Switch: Don't duplicate outside steps inside switch matches. (#133)
-
Don't raise error when switch is missing default branch (#129)
v0.10.0 (2024-09-15)
- Reactor.Dsl.Flunk: Add a special step type which always fails. (#125)
v0.9.1 (2024-08-12)
Reactor.run!/4should not return an:oktuple.
v0.9.0 (2024-07-18)
-
map: Add the ability to map over elements of a collection inside a reactor. (#123)
-
map: Add the ability to map over elements of a collection inside a reactor.
-
automatically pass extra arguments from the map step to nested steps.
-
spurious test failures seemingly caused by
Mimic.
- throw a more helpful error when a step returns an invalid result.
v0.8.5 (2024-07-10)
- add
mix reactor.install(#124)
v0.8.4 (2024-05-25)
- inability to store composed reactors at compile time.
v0.8.3 (2024-05-24)
- Missing
__identifier__field incomposeDSL struct.
v0.8.2 (2024-05-08)
- initialisation issue with middlewares.
v0.8.1 (2024-03-20)
- RunStepError: pass entire step struct instead of just name when raising.
v0.8.0 (2024-03-18)
- Use
Splodefor managing errors. (#97)
- Don't assume
UndefinedFunctionErrormeans the module is not a Reactor.
- Add template guards.
v0.7.0 (2024-02-28)
-
Add telemetry middleware. (#93)
-
Add a middleware which emits telemetry events about Reactor.
- incorrect function arity for
Group.after_funDSL.
- don't incur compile-time dependencies on middleware.
v0.6.0 (2024-02-26)
-
Remove hooks and replace with middleware behaviour. (#90)
-
Remove hooks and replace with middleware behaviour.
-
Middleware: Add
get_process_context/0andset_process_context/1middleware hooks. -
Add step event callback to middleware.
v0.5.2 (2024-02-18)
- callback spec for
Reactor.Step.async?/1.
- Don't iterate the entire graph every time through the loop. (#88)
v0.5.1 (2024-02-14)
- Move
can?/2andasync?/1intoReactor.Stepbehaviour. (#87)
v0.5.0 (2024-02-07)
- Add lifecycle hooks to Reactor (#83)
-
don't deadlock when lots of async reactors are sharing a concurrency pool. (#36)
-
weird issue with aliases sometimes not being expanded in generated reactors. (#58)
- Add ability for steps to decide at runtime whether they should be run asyncronously. (#84)
v0.4.1 (2023-09-26)
- weird issue with aliases sometimes not being expanded in generated reactors.
v0.4.0 (2023-09-11)
- Add
collectstep entity. (#53)
v0.3.5 (2023-09-06)
- Template: Abstract template type so that it can be used by extensions.
v0.3.4 (2023-09-04)
-
Allow
reactorDSL section to be patched. -
Reactor: fix call to
use Spark.Dsl.
v0.3.3 (2023-09-01)
- Dsl: Extract DSL entities into their target modules. (#50)
v0.3.2 (2023-07-27)
- Don't swallow errors when a step runs out of retries. (#41)
v0.3.1 (2023-07-24)
-
Add
wait_forDSL. (#39) -
Add "subpaths" to templates. (#31)
-
Step.Debug: Add
debugstep and DSL. (#30) -
Step.Switch: Add
switchDSL and step type. (#29)
v0.3.0 (2023-07-03)
- Step.Around: Add ability to wrap a function around a group of steps. (#24)
- Executor: don't double-iterate the graph each time through the loop.
-
Add
groupDSL entity andReactor.Step.Group. (#27) -
Reactor.Executor: track concurrent process usage across multiple reactors. (#26)
-
Support
timeoutandasync?Reactor options. (#20) -
Invert DSL entity building. (#19)
-
Allow entire step behaviour to be defined in the DSL. (#18)
-
Dsl: Build and pre-plan DSL reactors.
-
Builder: build transformation steps as synchronous.
v0.2.4 (2023-06-15)
-
Add ability to compose reactors.
-
Builder: rename internally generated steps to start with
:__reactor__. (#10)
v0.2.3 (2023-06-07)
-
Add step-wide argument transforms. (#9)
-
Add step-wide argument transforms.
v0.2.2 (2023-05-15)
- Reactor.Argument: Remove spurious
is_atomconstraint onArgument.from_input/2..3.
v0.2.1 (2023-05-12)
- Reactor.Step: remove
can?/1and replace with optional callbacks. (#6)
v0.2.0 (2023-05-10)
- implement basic reactor behaviour. (#1)