# Changelog
## [2.3.3] (2025-09-22)
### Changed
* Code janitoring to be compliant with elixir 1.18
## [2.3.2] (2023-08-04)
### Changed
* Corrected the declaration of routes with plug when conditionaly removing declared resource.
  (eg. Surrounding a `resource` with an if.)
## [2.3.1] (2021-12-17)
### Changed
* `Ewebmachine.Plug.Send.call` now threads the `conn` struct to keep the updates instead of reusing the original one.
* `Ewebmachine.Builder.Handles.add.add_handlers/2`: internal changes to satisfy dialyzer.
## v2.2
* Code janitoring wrt elixir versions: supports 1.3 - 1.6
* Validated against Cowboy 1 & 2
## v2.1.5
* Fix
  * Compilation with Plulg > 1.5 (https://github.com/kbrw/ewebmachine/issues/38)
## v2.1.4
* Feature: allow to name resources modules
## v2.1.3
* Bug fixes
  * make it compatible with elixir 1.4 without warnings
  * fix related regression
## v2.0.9
* Bug fixes
  * Plug version spec and plug update to 1.0
## v2.0.8
* Bug fixes
  * `accept_helper` is used in non terminal decision, so halt conn in case of 415 (else in some case, 415 became 200)
## v2.0.7
* Bug fixes
  * All headers must be lower case to respect Plug.conn convention, updated tests
  * add PATCH to default known methods, currently no other support, so to use PATCH
    - set Accept-Patch in `option` with accepted media types, 
    - set handler for these types in `content-types-accepted`
    - implement `resources_exists` to convert `PATCH` method to `PUT` if the resource exists
## v2.0.6
* Bug fixes
  * Debug call log size were O(n^2), make it O(n) removing `conn.private` from
    the log
## v2.0.5
* Enhancements
  * `{:halt,code}` works in more cases because it now `throws` the `conn` to
    break the decision flow.
  * Make it possible to use `Ewebmachine.Plug.Debug` not at the routing root,
    with relative assets. Thanks to @yrashk.
  * Make it possible to use a fuzzy `content_types_accepted` media type. 
    Thanks again to @yrashk.
  * little changes to allow to chain ewebmachine handler definitions and run
  * 2 nice plugs to handle errors after a run : `ErrorAsException` and `ErrorAsForward`
  * A macro to set common plug pipeline use cases : `resources_plugs`
  * Change Logging from a simple Agent to ETS
  * add this CHANGELOG
* Bug fixes
  * Bug in create path relative handling, use Conn.full_path to use the
    `script_name` and the `path_info`
## v2.0.4
* Bug fixes
  * Avoid module name collision with resource module function changing the
    naming scheme.
## v2.0.3
* Bug fixes
  * `Ewebmachine.Plug.Run` should run only if the `:machine_init` option has
    been set.
## v2.0.2
* Enhancements
  * Add `:default_plugs` option to `Ewebmachine.Builder.Resources`.
## v2.0.1
* Bug fixes
  * Makes `{:halt,code}` management works correctly, add test.
## v2.0.1
* Bug fixes
  * Makes `{:halt,code}` management works correctly.
[2.3.1]: https://github.com/kbrw/ewebmachine/compare/v2.3.0...v2.3.1
[2.3.2]: https://github.com/kbrw/ewebmachine/compare/v2.3.1...v2.3.2
[2.3.3]: https://github.com/kbrw/ewebmachine/compare/v2.3.2...v2.3.3