Legend
[+]Added for new features[-]Removed for now removed features[C]Changed for changes in existing functionality[F]Fixed for any bug fixes[O]Obsolete for soon-to-be removed features[T]Technical change that doesn't affect the API (eg. refactoring, tooling, etc.)
Next release
1.0.3
[F]mix.exs fixed: comma missed.
1.0.2
[T]Changes in mix.exs description entry.[T]Opaque type added to roadmap.[T]Post execution patterns documented.[T]GitLab CI/CD just on develop and main, avoid running the pipeline on tags
1.0.1
[T]GitLab CI/CD prepared[T]Publishing to hex.pm prepared[T]LICENSE Added
1.0.0
[C]Logger messages improved[+]Use case pipeline:create/1,async/1,timeout/2,callback/2,reply/2,input/2,run/1/run/2[+]Module-based use cases: any module exportingexec/1is a valid use case[+]Function-based use cases:fnclosures and&Module.function/1captures work directly[+]Every pipeline function accepts a module or function directly —create/1is optional and the pipeline can start at any step[+]Asynchronous execution viaasync/1(fire and forget; default is synchronous)[+]Timeout viatimeout/2: kills the underlying task when the deadline is exceeded and setstimedout_aton the result struct[+]Result delivery to processes viareply/2; validated that all targets are actual PIDs[+]Result delivery via functions withcallback/2; callbacks fire asynchronously even for synchronous use cases[+]Lifecycle tracking viastarted_at,finished_at, andtimedout_attimestamps on the result struct[+]Exception capture: exceptions raised by the use case are stored inerrorandstacktrace; the caller never crashes[+]Already-started guard: every pipeline function raisesArgumentErrorif called on a struct whosestarted_atis set[+]Automatic supervision tree — no manual setup required in the application supervisor[C]Use case callback namedexec/1(notrun/1) to avoid collision withInteract.UseCase.run/1
0.1.0
[+]Starting point is theUseCasemodule presented on January 2025 at the Elixir Madrid Meetup by Ángel Herranz.