Changelog
v0.10.41
- documentation updates: updating links and verbiage to reference the new repo (https://github.com/shipworthy), updating package description. (#229, #230, #231)
v0.10.40
- refinements: adding
jasonas an explicit dependency, renaming theUselessMachineexample toJourney.Examples.UselessMachine. (#226, #227)
v0.10.39
- API Ergonomics Improvements: renaming
Journey.Tools.summarize_as_text/1->Journey.Tools.introspect/1, renamingJourney.start_execution/1->Journey.start/1, adding simpleJourney.new_graph(nodes)with auto-generated graph name and revision. (#224)
v0.10.38
- Documentation Updates:
Journey.get_value/3is now marked as deprecated in favor ofJourney.get/3. The function remains fully functional for backward compatibility. (#219)- Reorganized and simplified documentation - created new
BASIC_CONCEPTS.mdwith comprehensive examples, refactored README.md for improved clarity and focus on practical use cases. (#220, #221)
- Internal Enhancement: Streamlined license validation logic for improved code maintainability. Added support for configurable license key service URL via
JOURNEY_LICENSE_KEY_SERVICE_URLenvironment variable. (#222)
v0.10.37
- API Naming: Renamed
schedule_once/4totick_once/4andschedule_recurring/4totick_recurring/4to better reflect that these nodes emit time-based "ticks" (revisions). The old function names remain available with deprecation warnings for backward compatibility. Both old and new internal type atoms (:schedule_once,:tick_once,:schedule_recurring,:tick_recurring) are supported for zero-downtime deployments. - New API:
Journey.count_executions/1- Returns the count of executions matching specified criteria using database-level counting (SQL COUNT) without loading records into memory. Supports the same filtering capabilities aslist_executions/1. (#217) - Enhanced Filtering:
Journey.list_executions/1now supports:is_setand:is_not_setfilter operators to check whether a node has been set, regardless of its value. (#214, #215) - Error Handling, logging:
Journey.Toolsfunctions (computation_state/2,computation_status_as_text/2,summarize_as_data/1) now raiseArgumentErrorwith clear messages when execution is not found. Extra logging in scheduler for better debuggability. (#216, #211) - Elixir 1.19 Support: Updates for Elixir 1.19 compatibility: compiler warning fixes, CI updates. (#212, #216)
v0.10.36
mutate()nodes: now acceptupdate_revision_on_change: trueoption, to have the mutated node trigger downstream computations (idempotent behavior matchingJourney.set/3). (#207)compute()nodes do not trigger downstream computations if the newly computed value is unchanged (idempotent behavior, matchingJourney.set/3). (#208)schedule_recurring()nodes: recompute when upstream dependencies change, adding new semantics for pausing recurring scheduling (node'sf_computereturning{:ok, 0}). (#203, #204)- relaxing
ex_docversion constraint to include 0.39. (#205)
v0.10.33 - v0.10.35
- Metadata support:
Journey.set/3now acceptsmetadata: %{...}option for tracking additional context. - Multinodal nodes: Added
f_compute/2for multi-input compute nodes and enhancedhistorian()for tracking node changes (EXPERIMENTAL). Journey.get/3: New function returning both value and revision (soft-deprecatesget_value/3).Journey.new_graph/4: Added optionalexecution_id_prefix: "..."parameter for easier troubleshooting.Journey.values/2: Addedinclude_unset_as_nil: trueoption.Journey.get_value/3: Enhanced with more ergonomicwait:andtimeout:options, addedwait_for_revision:, superseded byJourney.get/3.- Fully implemented reactive behavior for
:orrecomputations. schedule_once/3nodes now recompute on new upstream revisions.
v0.10.32
- Graph validation:
Journey.new_graph/4to explicitly check for circular dependencies. Journey.list_executions/1'sfilter_by:param to handle:contains,:icontains,:list_contains.- Renamed
Journey.set_value()toJourney.set/2/Journey.set/3andJourney.unset_value()toJourney.unset/2, added support for atomically setting multiple values. - Documentation updates (graph migration notes, modules and functions summary, tidier license text).