All Versions
40
Latest Version
Avg Release Cycle
49 days
Latest Release
64 days ago

Changelog History
Page 1

  • v1.0.0

    November 21, 2019

    💥 Breaking changes

    • 👌 Support multiple Commanded apps (#298).

    ✨ Enhancements

    • Define adapter behaviour modules for event store, pubsub, and registry (#311).
    • ➕ Add AggregateCase ExUnit case template to support aggregate unit testing (#315).
    • Application config lookup (#318).

    🐛 Bug fixes

    • 🛠 Fix process manager exception on start (#307).
    • 🛠 Fix commanded aggregate race (#308).
    • 🛠 Fix Dialyzer warnings and include in Travis CI (#317).

    ⬆️ Upgrading

    ⬆️ Follow the upgrade guide to define and use your own Commanded application.


  • v1.0.0-rc.1

    October 24, 2019

    🐛 Bug fixes

    • 🛠 Fix process manager exception on start (#307).
  • v1.0.0-rc.0

    October 17, 2019

    💥 Breaking changes

    • 👌 Support multiple Commanded apps (#298).

    ⬆️ Upgrading

    ⬆️ [Follow the upgrade guide](guides/upgrades/0.19-1.0.md) to define and use your own Commanded application.

  • v0.19.1

    July 31, 2019

    ✨ Enhancements

    • Reset event handler mix task mix commanded.reset MyApp.Handler (#293).

    🐛 Bug fixes

    • 🛠 Fix regression in Commanded.Middleware.Logger.delta/1 (#295).
  • v0.19.0

    July 03, 2019

    ✨ Enhancements

    • 📇 Update typespec for data and metadata fields in Commanded.EventStore.EventData struct (#246).
    • Add include_execution_result and aggregate_version to typespec for router command dispatch (#262).
    • ➕ Add .formatter.exs to Hex package (#247).
    • Event upcasting (#263).
    • 👌 Support :ok tagged tuple events from aggregate (#268).
    • Modify Commanded.Registration.start_child/3 to pass a child_spec (#273).
    • Add supervisor_child_spec/2 to Commanded.Registration behaviour (#277) used by Commanded Horde Registry.
    • Ensure Commanded can be compiled when optional Jason dependency is not present (#286).
    • 🛠 Fix Aggregate initialization races (#287).
    • 👌 Support {:system, varname} format in Phoenix PubSub config (#291).

    💥 Breaking changes

    • 👉 Use DateTime instead of NaiveDateTime for all datetimes (#254).

      This affects the created_at field defined in the Commanded.EventStore.RecordedEvent. You will need to migrate from NaiveDateTime to DateTime if you use this field in your code (such as in an event handler's metadata).


  • v0.18.1

    June 13, 2019

    ✨ Enhancements

    • ⏱ Process manager idle process timeout (#290).
    • Register event handler and process manager subscriptions on process start (#272).
  • v0.18.0

    January 23, 2019

    ✨ Enhancements

    • 📇 Rename uuid dependency to elixir_uuid (#178).
    • 👍 Allow aggregate identity to be of any type that implements the String.Chars protocol (#166).
    • 👻 Process manager and event handler error & exception handling (#192).
    • ⏱ Process manager event handling timeout (#193).
    • 👍 Allow event handlers to subscribe to individual streams (#203).
    • ➕ Add new values for expected_version for event store append events behaviour (#127).
    • Export Commanded.Commands.Router macros in .formatter.exs file (#204).
    • 📄 Generate specs and docs for Router dispatch functions only once (#206).
    • Allow two-arity predicate function in wait_for_event receiving both event data and recorded event struct (#213).
    • 👍 Allow :infinity timeout on command dispatch (#227)
    • Strict process manager routing (#243).
    • 👍 Allow Commanded.Aggregate.Multi to be nested (#244).
    • ➕ Add child_spec/0 function to Commanded.EventStore behaviour.
    • ➕ Add delete_subscription/2 to Commanded.EventStore behaviour (#245).
    • Add refute_receive_event/2 to Commanded.Assertions.EventAssertions test helpers.

    🐛 Bug fixes

    • Fix typo in include_execution_result global router option (#216).
    • 🖐 Handle the {:ok, _} tuple dispatch result in process manager command dispatch (#236).
    • 👍 Allow string keys for Commanded.Middleware.Pipeline.assign_metadata/3, atoms are being deprecated (#228)
    • 🛠 Fix Commanded.PubSub.subscribe/1 typespec (#222).

    💥 Breaking changes

    • 📦 Migrate to Jason for JSON serialization (#234).

    You will need to add Jason as a dependency in mix.exs:

      defp deps do
        [{:jason, "~> 1.1"}]
      end
    

    Jason has no support for encoding arbitrary structs - explicit implementation of the Jason.Encoder protocol is always required. You must update all your domain event modules, aggregate state (when using state snapshotting), and process manager state to include @derive Jason.Encoder as shown below:

      defmodule AnEvent do
        @derive Jason.Encoder
        defstruct [:field]
      end
    
    • Extend aggregate lifespan behaviour to include after_error/1 and after_command/1 callbacks (#210).

    Previously you only had to define an after_event/1 callback function to implement the Commanded.Aggregates.AggregateLifespan behaviour:

      defmodule BankAccountLifespan do
        @behaviour Commanded.Aggregates.AggregateLifespan
    
        def after_event(%BankAccountClosed{}), do: :stop
        def after_event(_event), do: :infinity
      end
    

    Now you must also define after_command/1 and after_error/1 callback functions:

      defmodule BankAccountLifespan do
        @behaviour Commanded.Aggregates.AggregateLifespan
    
        def after_event(%BankAccountClosed{}), do: :stop
        def after_event(_event), do: :infinity
    
        def after_command(%CloseAccount{}), do: :stop
        def after_command(_command), do: :infinity
    
        def after_error(:invalid_initial_balance), do: :stop
        def after_error(_error), do: :stop
      end
    

    ⬆️ Upgrading

    ⬆️ Please ensure you upgrade the following event store dependencies.

    Using the Elixir EventStore:

    • 📦 eventstore to v0.16.0
    • commanded_eventstore_adapter to v0.5.0

    Using Greg Young's Event Store:

    • commanded_extreme_adapter to v0.6.0

    Commanded Ecto projections:

    • commanded_ecto_projections to v0.8.0

    ⏱ Commanded scheduler:

    • commanded_scheduler to v0.2.0

  • v0.17.5

    June 13, 2019

    ✨ Enhancements

    • ⏱ Process manager idle process timeout (#290).
  • v0.17.4

    May 06, 2019

    🐛 Bug fixes

    • Register event handler and process manager subscriptions on process start (#272).
  • v0.17.3

    January 18, 2019

    🐛 Bug fixes

    • 🛠 Fix snapshot recording (#196).
    • 🛠 Fixed warning about deprecated time unit in elixir 1.8 (#239).