# Changelog
## [0.3.0] - Unreleased
### Added
Introduced a Funx.Tap protocol and migrated all monads to use protocol-based tap.
## Changed
tap implementations for Identity, Maybe, Either, Reader, and Effect now delegate through the Funx.Tap protocol.
## Breaking
Existing direct tap/2 implementations have been removed. Code relying on the previous module-specific tap implementations require updates.
## [0.2.3] - Unreleased
### Updated
* Refactored the Either DSL implementation to make it safer and easier to maintain.
## [0.2.2] - Unreleased
### Added
* Add `tap` behavior across Identity, Maybe, Either, Reader, and Effect Monads
* Add `tap` behavior to Either DSL
## [0.2.0] - Unreleased
### Added
* Either DSL for writing declarative error-handling pipelines with support for `bind`, `map`, `ap`, `validate`, and Either functions (`filter_or_else`, `or_else`, `map_left`, `flip`)
## Beta Status (v0.1.x)
โ ๏ธ **Funx is in active development. APIs may change until version 1.0.**
We're currently in beta, focusing on:
- Core functionality implementation and stabilization
- Comprehensive usage rules and documentation for humans and LLMs
- Real-world testing and feedback incorporation
- API refinement based on practical usage patterns
**Current Status**: Feature-complete beta with comprehensive documentation. Ready for experimentation and feedback, but expect potential API changes before 1.0.
## Feedback Welcome
- ๐ **Issues**: [Report bugs and suggest improvements](https://github.com/JKWA/funx/issues)
- ๐ **Documentation**: Help us improve usage rules and examples
- ๐งช **Real-world usage**: Share your experience using Funx in projects
- ๐ฌ **Discussion**: Join conversations about functional programming patterns in Elixir
---
*Detailed changelog will begin with version 1.0. Until then, see [GitHub releases](https://github.com/JKWA/funx/releases) for version-specific changes.*