Changelog

Copy Markdown

v0.10.46

  • tick_recurring: improvements: better reliability and precision (#260, #262)
  • Trim steady state logs from sweepers: reducing log noise by suppressing sweeper logs when no work is being done (#259)
  • Test stability improvements: improving scheduler and schedule invalidation test stability (#258, #261)

v0.10.45

  • Scheduler: skip loading inactive computations: important optimization for executions with a long history of computations (#256)
  • Journey.Tools: harden introspection for orphaned nodes: introspection functions now handle computation nodes that no longer exist in the graph (#255)
  • Journey.set() deterministic return value: Journey.set/3 now returns a deterministic execution from before kicking off downstream computations (#254)
  • Scheduler: prevent duplicate computation scheduling: closing a window that allowed occasional mis-scheduling of duplicate computations (#251)
  • Test stability and isolation improvements: various tests updated to use deterministic waits and better isolation (#249, #250, #252)
  • Dependency updates: picking up updated libraries, addressing Elixir warnings, updating ex_doc to 0.40.1 (#247, #248)

v0.10.44

  • Test stability updates: using deterministic Journey.get(..., wait: {:newer_than, prev_revision}) in various tests to make them deterministic / stable (#244, #245)
  • Preserve Historian node value across invalidations: :historian nodes are accumulators, and should keep their value even when their upstream dependencies are not satisfied (#242, #243)

v0.10.43

  • A Minor License text update: updating the year to 2026 (9b2001f).

v0.10.42

  • better DevEx: validate node options: this helps to avoid typos and misspellings in graph definitions (#238)
  • adding heartbeats for monitoring computations of self-computing nodes: this allows for faster detection and more robust handling of abandoned computations (#237)
  • ops tooling: Journey.Tools.abandon_computation/1: adding Journey.Tools.abandon_computation/1 for abandoning a computation (#236)
  • refactor/simplification: refactoring Journey.Executions into smaller more focused submodules, adding GEMINI.md (#235)
  • singleton executions: implementing singleton executions, with singleton: true param to Journey.new_graph/2 graph attribute and Journey.find_or_start/1 (#234)

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

v0.10.39

v0.10.38

  • Documentation Updates:
    • Journey.get_value/3 is now marked as deprecated in favor of Journey.get/3. The function remains fully functional for backward compatibility. (#219)
    • Reorganized and simplified documentation - created new BASIC_CONCEPTS.md with 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_URL environment variable. (#222)

v0.10.37

  • API Naming: Renamed schedule_once/4 to tick_once/4 and schedule_recurring/4 to tick_recurring/4 to 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 as list_executions/1. (#217)
  • Enhanced Filtering: Journey.list_executions/1 now supports :is_set and :is_not_set filter operators to check whether a node has been set, regardless of its value. (#214, #215)
  • Error Handling, logging: Journey.Tools functions (computation_state/2, computation_status_as_text/2, summarize_as_data/1) now raise ArgumentError with 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 accept update_revision_on_change: true option, to have the mutated node trigger downstream computations (idempotent behavior matching Journey.set/3). (#207)
  • compute() nodes do not trigger downstream computations if the newly computed value is unchanged (idempotent behavior, matching Journey.set/3). (#208)
  • schedule_recurring() nodes: recompute when upstream dependencies change, adding new semantics for pausing recurring scheduling (node's f_compute returning {:ok, 0}). (#203, #204)
  • relaxing ex_doc version constraint to include 0.39. (#205)

v0.10.33 - v0.10.35

  • Metadata support: Journey.set/3 now accepts metadata: %{...} option for tracking additional context.
  • Multinodal nodes: Added f_compute/2 for multi-input compute nodes and enhanced historian() for tracking node changes (EXPERIMENTAL).
  • Journey.get/3: New function returning both value and revision (soft-deprecates get_value/3).
  • Journey.new_graph/4: Added optional execution_id_prefix: "..." parameter for easier troubleshooting.
  • Journey.values/2: Added include_unset_as_nil: true option.
  • Journey.get_value/3: Enhanced with more ergonomic wait: and timeout: options, added wait_for_revision:, superseded by Journey.get/3.
  • Fully implemented reactive behavior for :or recomputations.
  • schedule_once/3 nodes now recompute on new upstream revisions.

v0.10.32

  • Graph validation: Journey.new_graph/4 to explicitly check for circular dependencies.
  • Journey.list_executions/1's filter_by: param to handle :contains, :icontains, :list_contains.
  • Renamed Journey.set_value() to Journey.set/2 / Journey.set/3 and Journey.unset_value() to Journey.unset/2, added support for atomically setting multiple values.
  • Documentation updates (graph migration notes, modules and functions summary, tidier license text).

v0.10.31

  • Expanding possible versions of ecto and ecto_sql to include 3.13, in addition to 3.12.
  • Hardening handling of computations that didn't complete due to various conditions (infrastructure reboots, crashes, redeployments, failures).