CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2025-10-21

### Added

- ๐ŸŽ‰ Initial release of MultiFlow
- ๐ŸŒŠ DSL for declarative transaction definitions
- ๐Ÿ”ง Builder pattern for functional transaction composition
- ๐Ÿ“ Comprehensive documentation and guides
- ๐Ÿงช Full test coverage
- ๐ŸŽฏ Real-world examples (sales order, user registration, inventory)
- ๐Ÿ›ก๏ธ Type specs for Dialyzer support
- ๐Ÿ“– Getting Started guide
- ๐Ÿ“– DSL guide
- ๐Ÿ“– Builder guide
- ๐Ÿ“– Real-world examples guide

### Features

#### DSL Style
```elixir
use MultiFlow

transaction do
  step :order, insert(order_changeset)
  step :items, &create_items/1
  step :delivery, &create_delivery/1
end
```

#### Builder Style
```elixir
MultiFlow.new()
|> add_step(:order, insert: order_changeset)
|> add_step(:items, &create_items/1)
|> execute()
```

### Key Benefits

- ๐ŸŒŠ **Flow naturally** - Write transactions that read like prose
- ๐ŸŽฏ **DSL & Builder** - Choose your preferred style
- ๐Ÿ”— **Dependency tracking** - Automatic step dependency management
- ๐Ÿ›ก๏ธ **Type safe** - Full Dialyzer support
- ๐Ÿ“ **Readable** - Self-documenting code
- ๐Ÿงช **Testable** - Easy to test individual steps
- ๐Ÿš€ **Zero overhead** - Compiles to raw Ecto.Multi

---

**"Make Ecto.Multi flow like water"** ๐ŸŒŠ