CHANGELOG.md

# CHANGELOG

All notable changes to this project will be documented in this file.
See [Conventional Commits](Https://conventionalcommits.org) for commit guidelines.

<!-- changelog -->

## [v3.0.0-rc.31](https://github.com/ash-project/ash/compare/v3.0.0-rc.30...v3.0.0-rc.31) (2024-04-26)




### Features:

* Ash.create and Ash.update oneliner (#1055)

* Ash.create and Ash.update oneliner

### Bug Fixes:

* various fixes around bulk action upgrades, atomics

* handle resource being passed as query code_interface.ex (#1057)

* do not use Enum.map_join (#1058)

* opts dispatch for create and update

### Improvements:

* Treat asterisk as a single arguemnt in accept (#1062)

* support atomics, update_query, destroy_query in ETS data layer

## [v3.0.0-rc.30](https://github.com/ash-project/ash/compare/v3.0.0-rc.29...v3.0.0-rc.30) (2024-04-24)




### Bug Fixes:

* use Splode.ErrorClass for error classes (#1054)

### Improvements:

* remove `after_atomic` and instead support `after_batch`

* Add attributes_present, attributes_absent. (#1046)

## [v3.0.0-rc.29](https://github.com/ash-project/ash/compare/v3.0.0-rc.28...v3.0.0-rc.29) (2024-04-23)
### Breaking Changes:

* 3.0 (#955)

* use `%Ash.NotSelected{}` for unselected values

* default `require_atomic?` to `true`

* raise errors on unknown generic action arguments

* default bulk strategy to `:atomic`

* warnings on `require_atomic?` `true` actions

* revise `Ash.NotSelected` to `Ash.NotLoaded`

* errors on unknown action inputs across the board

* default `api.authorization.authorize` to `:by_default`

* require the api when constructing changesets

* code_interface.define_for -> code_interface.api

* remove registries

* pubsub notifier default to `previous_values?: false`

* requires_original_data? callback defaults to false

* rename Ash.Calculation -> Ash.Resource.Calculation

* improve `Ash.Query.Calculation.new` signature

* anonymous function calculations now take lists and return lists

* make callback contexts into structs

* pass context to builtin lifecycle hook changes

* calculation arguments are now in the `arguments` key of the context

* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* make picosat_elixir optional with `simple_sat`

* rename api to domain

* remove `Ash.Changeset.new!`

* deprecate `private?: false` in favor of `public?: true`

* default `default_accept` is now `[]`

* `Ash.CiString.new/1` returns `nil` on `nil` input

* clean up and reorganize `Ash` functions

* remove context-based functionality

* Deprecate calling functions on (domain) api in favor of `Ash`

* add `attribute_public?` and update `attribute_writable?` behavior

* update atomic behaviors, default to invalid

* changeset.filters -> changeset.filter

* remove deprecated functions

* remove and simplify `Ash.Filter.TemplateHelpers`

* keyword lists are no longer special cased in ash expressions

* introduce strict mode to calculations

* reverse order of before action & before transaction hooks

* default read actions are now paginatable

* require explicit accept lists in default actions

* remove Ash.Flow and Ash.Engine

* standardize various exception keys and names

* use `Splode` for errors

* move simple_notifiers to an option instead of a DSL builder

* update spark for better autocomplete, configure autocomplete for key functions

* swap position of sort order and arguments in calculation sorting

* add `include_nil?` aggregate option, and default it to `false`

* errors on unknown inputs for calculations



### Features:

* leverage resource domain for eager/pre checking (#1040)

* configurable multitenancy on read actions (#1030)

* Ash.Reactor: Add new `change` step type which can be used to modify changesets.

* add `update_change` function and builtin change (#976)

* code interface on the domain

### Bug Fixes:

* ensure that errors for nested forms are transformed

* Set tenant for managed relationship changeset (#1044)

* don't carry over all changes during atomic upgrade

* properly pin `Enum.join` in atomic for enum types

* ensure actor is set when building queries in filter

* don't eager evaluate type because it breaks data layers

* ensure `__union_tag__` is set when calling sub-union types

* handle more `&Mod.fun/n` variations in fragments

* ensure validations are considered atomic

* ensure tenant and actor are properly set in `Ash.can?`

* ensure changeset filter is parsed for templates

* properly parse additional changeset expression

* properly parse changeset template for filters

* properly parse changeset filter

* ensure changeset filters are applied on bulk destroy/update

* fix typo in load test (#1031)

* support all calculate opts in code interface methods (#1026)

* ensure `to_tenant` is copied to aggregate query

* compilation time improvements (hopefully)

* `code_interface` actions accept `@context` (#1016)

* ensure tenant is set to `opts` in action helpers

* ensure more consistent use of `Ash.Tenant.to_tenant/2`

* ensure that strict loads are applied at all nesting levels

* properly load depended on fields for relationships even if `public?: false`

* fix date_add query function (#1010)

* pass name through to underlying tasks

* Validate all conditions in a `numericality` validation instead of only the last (#997)

* swap the parameters in Ash.ToTenant.to_tenant/2 (#1003)

* Ash.Reactor: crash when calling an ash reactor for the first time.

* add context argument to `before_action` and `after_action` for read actions

* add base case for  Ash.Resource.Info.public_relationship/2 (#1000)

* honor new calcualtion sort format in sort parser

* don't raise error on keyword input to create interface

* action is an atom in erroor case for bulk update

* undo adding primary key argument for methods with `get?` (#989)

* remove `internal?` and `stacktraces?` from common opts (#988)

* pattern match error in managed relationships

* include options for generic action code interfaces

* logic errors around arguments/changing attributes in validations

* handle partially atomic validations in run_action_changes

* more improvements to resource matching in `can?`

* detect more cases for domain extraction from resources

* properly dispatch managed relationships to proper domain

* check target resource's domain before assuming it is the same as current domain

* return {:error, query} for invalid query in Aggregate.run/4 (#982)

* allow strings in Ash.Type.Enum again

* set tenant in bulk creates after setting up changeset

* use the resource's domain above option domain

* properly cast identity keys before comparison

* properly handle multiple paths for checking sortable relationships

* multi-line DSL doc options in `Ash.Reactor`. (#974)

* don't call domain at compile time if its not loaded

* ensure that generic action arguments have proper default for public?

* ensure we don't double-query values after manual actions

* properly handle lists of errors added by validations

* honor `only_when_valid?` on validations in bulk actions

* fix typespec for bulk_create

* ending a policy w/ `authorize_if` had flipped conditional

* handle `sensitive?` option in query aggregate/calculation (#963)

* properly retain input order for embedded attributes

* fix `changing_attributes` check implementation

* properly handle transaction errors from bulk creates

* set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* properly construct new query in `build/3`

* make bang variant of field aggregates work correctly (#954)

* enforce multitenancy on aggregates (#952)

* fix missing tenant in some bulk contexts (#951)

* Fix places where tenant is not passed along (#950)

### Improvements:

* make extension discovery faster

* add `mix deps.audit` task to shared CI

* better eager expression parsing and atomic error anticipation

* add `Ash.read_first`

* helpful output in mix tasks helper

* use explicit read actions when reading relationships (#1029)

* use cached to_tenant when setting tenant attribute (#1021)

* support `require_reference?: false` on code interfaces

* support `:filter` option on bulk create/destroy

* make `match/1` overridable in Ash.Type.Enum (#1020)

* adding domain to embedded resource is an error

* raise more sensible error on unsupported pagination

* support builder options in `read` code interfaces

* support omitting generic action return types

* call ToTenant protocol when setting tenant in actions (#1004)

* add `ash.rollback` mix task

* add `ash.rollback` task

* add `config :ash, require_atomic_by_default?, false`, for upgrading

* support `skip_unknown_inputs` in `Ash.bulk_create`

* Ash.Reactor: Allow `create` to be provided an initial value.

* Allow Reactor modules to be run directly from generic actions. (#993)

* add `Ash.Query.apply_to/3`

* synthesize attributes from atomics for better notifications

* make Ash.Resource.Validation.Match partially atomic (#979)

* make Ash.Resource.Validation.Match partially atomic

* add `skip_unknown_inputs` for generic actions

* support `allow_nil_input` dsl option in update/destroy (#964)

* allow accepting private attributes

* allow adding non-public attributes to explicit accept lists

* better error messages for private attribute accepting

* use resource api when verifying its presence in a known api

* change `type` argument position in `Ash.Query.calculate` (#959)

* allow simple check to return error tuple (#956)

* skip unknown inputs when managing relationships

* ignore unknown string-keyed inputs beginning with `_`

* support requesting to ignore additional keys

* add `skip_unknown_inputs` option, use it for embeds in unions

* ensure that update defaults are set

* update spark to 2.0

* update reactor to 3.0

* import Ash.Expr in modules where it is used

* require Ash.QUery in modules where it makes sense

* add structs for more context implementations

* ensure selects are applied on destroys

* support custom expressions

* update upgrade guide to include Splode

* only require primary key if resource has actions or fields

* only build schema if resource has actions or fields

* verify primary key in its own verifier

* add `resource/1` builtin check

* better code interface documentation

* support notifiers within actions

* support specifying multiple filters

* add `sortable?` flags to all fields

* support multiple filters on relationships

* support sensitive? on calculations and arguments

* validate resources in inputs to code interface

* update reactor and tests

* don't require domain on relationships if destination has domain

* always choose to cast atomic

* support casting some embeds atomically

* various 3.0 updates, documented in upgrade.md

* ensure non-static dynamic domains works

* add Ash.ToTenant protocol

* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* support bulk and atomic operations in code interfaces

## [v3.0.0-rc.28](https://github.com/ash-project/ash/compare/v3.0.0-rc.27...v3.0.0-rc.28) (2024-04-23)




### Features:

* leverage resource domain for eager/pre checking (#1040)

### Bug Fixes:

* don't carry over all changes during atomic upgrade

* properly pin `Enum.join` in atomic for enum types

* ensure actor is set when building queries in filter

### Improvements:

* make extension discovery faster

* add `mix deps.audit` task to shared CI

## [v3.0.0-rc.27](https://github.com/ash-project/ash/compare/v3.0.0-rc.26...v3.0.0-rc.27) (2024-04-19)




### Bug Fixes:

* don't eager evaluate type because it breaks data layers

## [v3.0.0-rc.26](https://github.com/ash-project/ash/compare/v3.0.0-rc.25...v3.0.0-rc.26) (2024-04-19)




### Bug Fixes:

* ensure `__union_tag__` is set when calling sub-union types

* handle more `&Mod.fun/n` variations in fragments

## [v3.0.0-rc.25](https://github.com/ash-project/ash/compare/v3.0.0-rc.24...v3.0.0-rc.25) (2024-04-17)




### Bug Fixes:

* ensure validations are considered atomic

* ensure tenant and actor are properly set in `Ash.can?`

### Improvements:

* better eager expression parsing and atomic error anticipation

## [v3.0.0-rc.24](https://github.com/ash-project/ash/compare/v3.0.0-rc.23...v3.0.0-rc.24) (2024-04-16)




### Bug Fixes:

* ensure changeset filter is parsed for templates

* properly parse additional changeset expression

* properly parse changeset template for filters

* properly parse changeset filter

## [v3.0.0-rc.23](https://github.com/ash-project/ash/compare/v3.0.0-rc.22...v3.0.0-rc.23) (2024-04-16)




### Bug Fixes:

* ensure changeset filters are applied on bulk destroy/update

## [v3.0.0-rc.22](https://github.com/ash-project/ash/compare/v3.0.0-rc.21...v3.0.0-rc.22) (2024-04-16)




### Features:

* configurable multitenancy on read actions (#1030)

### Bug Fixes:

* fix typo in load test (#1031)

* support all calculate opts in code interface methods (#1026)

### Improvements:

* add `Ash.read_first`

* helpful output in mix tasks helper

* use explicit read actions when reading relationships (#1029)

* use cached to_tenant when setting tenant attribute (#1021)

## [v3.0.0-rc.21](https://github.com/ash-project/ash/compare/v3.0.0-rc.20...v3.0.0-rc.21) (2024-04-14)




### Bug Fixes:

* ensure `to_tenant` is copied to aggregate query

## [v3.0.0-rc.20](https://github.com/ash-project/ash/compare/v3.0.0-rc.19...v3.0.0-rc.20) (2024-04-13)
### Breaking Changes:

* 3.0 (#955)

* use `%Ash.NotSelected{}` for unselected values

* default `require_atomic?` to `true`

* raise errors on unknown generic action arguments

* default bulk strategy to `:atomic`

* warnings on `require_atomic?` `true` actions

* revise `Ash.NotSelected` to `Ash.NotLoaded`

* errors on unknown action inputs across the board

* default `api.authorization.authorize` to `:by_default`

* require the api when constructing changesets

* code_interface.define_for -> code_interface.api

* remove registries

* pubsub notifier default to `previous_values?: false`

* requires_original_data? callback defaults to false

* rename Ash.Calculation -> Ash.Resource.Calculation

* improve `Ash.Query.Calculation.new` signature

* anonymous function calculations now take lists and return lists

* make callback contexts into structs

* pass context to builtin lifecycle hook changes

* calculation arguments are now in the `arguments` key of the context

* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* make picosat_elixir optional with `simple_sat`

* rename api to domain

* remove `Ash.Changeset.new!`

* deprecate `private?: false` in favor of `public?: true`

* default `default_accept` is now `[]`

* `Ash.CiString.new/1` returns `nil` on `nil` input

* clean up and reorganize `Ash` functions

* remove context-based functionality

* Deprecate calling functions on (domain) api in favor of `Ash`

* add `attribute_public?` and update `attribute_writable?` behavior

* update atomic behaviors, default to invalid

* changeset.filters -> changeset.filter

* remove deprecated functions

* remove and simplify `Ash.Filter.TemplateHelpers`

* keyword lists are no longer special cased in ash expressions

* introduce strict mode to calculations

* reverse order of before action & before transaction hooks

* default read actions are now paginatable

* require explicit accept lists in default actions

* remove Ash.Flow and Ash.Engine

* standardize various exception keys and names

* use `Splode` for errors

* move simple_notifiers to an option instead of a DSL builder

* update spark for better autocomplete, configure autocomplete for key functions

* swap position of sort order and arguments in calculation sorting

* add `include_nil?` aggregate option, and default it to `false`

* errors on unknown inputs for calculations



### Features:

* Ash.Reactor: Add new `change` step type which can be used to modify changesets.

* add `update_change` function and builtin change (#976)

* code interface on the domain

### Bug Fixes:

* compilation time improvements (hopefully)

* `code_interface` actions accept `@context` (#1016)

* ensure tenant is set to `opts` in action helpers

* ensure more consistent use of `Ash.Tenant.to_tenant/2`

* ensure that strict loads are applied at all nesting levels

* properly load depended on fields for relationships even if `public?: false`

* fix date_add query function (#1010)

* pass name through to underlying tasks

* Validate all conditions in a `numericality` validation instead of only the last (#997)

* swap the parameters in Ash.ToTenant.to_tenant/2 (#1003)

* Ash.Reactor: crash when calling an ash reactor for the first time.

* add context argument to `before_action` and `after_action` for read actions

* add base case for  Ash.Resource.Info.public_relationship/2 (#1000)

* honor new calcualtion sort format in sort parser

* don't raise error on keyword input to create interface

* action is an atom in erroor case for bulk update

* undo adding primary key argument for methods with `get?` (#989)

* remove `internal?` and `stacktraces?` from common opts (#988)

* pattern match error in managed relationships

* include options for generic action code interfaces

* logic errors around arguments/changing attributes in validations

* handle partially atomic validations in run_action_changes

* more improvements to resource matching in `can?`

* detect more cases for domain extraction from resources

* properly dispatch managed relationships to proper domain

* check target resource's domain before assuming it is the same as current domain

* return {:error, query} for invalid query in Aggregate.run/4 (#982)

* allow strings in Ash.Type.Enum again

* set tenant in bulk creates after setting up changeset

* use the resource's domain above option domain

* properly cast identity keys before comparison

* properly handle multiple paths for checking sortable relationships

* multi-line DSL doc options in `Ash.Reactor`. (#974)

* don't call domain at compile time if its not loaded

* ensure that generic action arguments have proper default for public?

* ensure we don't double-query values after manual actions

* properly handle lists of errors added by validations

* honor `only_when_valid?` on validations in bulk actions

* fix typespec for bulk_create

* ending a policy w/ `authorize_if` had flipped conditional

* handle `sensitive?` option in query aggregate/calculation (#963)

* properly retain input order for embedded attributes

* fix `changing_attributes` check implementation

* properly handle transaction errors from bulk creates

* set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* properly construct new query in `build/3`

* make bang variant of field aggregates work correctly (#954)

* enforce multitenancy on aggregates (#952)

* fix missing tenant in some bulk contexts (#951)

* Fix places where tenant is not passed along (#950)

### Improvements:

* support `require_reference?: false` on code interfaces

* support `:filter` option on bulk create/destroy

* make `match/1` overridable in Ash.Type.Enum (#1020)

* adding domain to embedded resource is an error

* raise more sensible error on unsupported pagination

* support builder options in `read` code interfaces

* support omitting generic action return types

* call ToTenant protocol when setting tenant in actions (#1004)

* add `ash.rollback` mix task

* add `ash.rollback` task

* add `config :ash, require_atomic_by_default?, false`, for upgrading

* support `skip_unknown_inputs` in `Ash.bulk_create`

* Ash.Reactor: Allow `create` to be provided an initial value.

* Allow Reactor modules to be run directly from generic actions. (#993)

* add `Ash.Query.apply_to/3`

* synthesize attributes from atomics for better notifications

* make Ash.Resource.Validation.Match partially atomic (#979)

* make Ash.Resource.Validation.Match partially atomic

* add `skip_unknown_inputs` for generic actions

* support `allow_nil_input` dsl option in update/destroy (#964)

* allow accepting private attributes

* allow adding non-public attributes to explicit accept lists

* better error messages for private attribute accepting

* use resource api when verifying its presence in a known api

* change `type` argument position in `Ash.Query.calculate` (#959)

* allow simple check to return error tuple (#956)

* skip unknown inputs when managing relationships

* ignore unknown string-keyed inputs beginning with `_`

* support requesting to ignore additional keys

* add `skip_unknown_inputs` option, use it for embeds in unions

* ensure that update defaults are set

* update spark to 2.0

* update reactor to 3.0

* import Ash.Expr in modules where it is used

* require Ash.QUery in modules where it makes sense

* add structs for more context implementations

* ensure selects are applied on destroys

* support custom expressions

* update upgrade guide to include Splode

* only require primary key if resource has actions or fields

* only build schema if resource has actions or fields

* verify primary key in its own verifier

* add `resource/1` builtin check

* better code interface documentation

* support notifiers within actions

* support specifying multiple filters

* add `sortable?` flags to all fields

* support multiple filters on relationships

* support sensitive? on calculations and arguments

* validate resources in inputs to code interface

* update reactor and tests

* don't require domain on relationships if destination has domain

* always choose to cast atomic

* support casting some embeds atomically

* various 3.0 updates, documented in upgrade.md

* ensure non-static dynamic domains works

* add Ash.ToTenant protocol

* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* support bulk and atomic operations in code interfaces

## [v3.0.0-rc.19](https://github.com/ash-project/ash/compare/v3.0.0-rc.18...v3.0.0-rc.19) (2024-04-11)




### Bug Fixes:

* properly load depended on fields for relationships even if `public?: false`

* fix date_add query function (#1010)

* pass name through to underlying tasks

* Validate all conditions in a `numericality` validation instead of only the last (#997)

### Improvements:

* support builder options in `read` code interfaces

* support omitting generic action return types

* call ToTenant protocol when setting tenant in actions (#1004)

## [v3.0.0-rc.18](https://github.com/ash-project/ash/compare/v3.0.0-rc.17...v3.0.0-rc.18) (2024-04-10)




### Bug Fixes:

* swap the parameters in Ash.ToTenant.to_tenant/2 (#1003)

* Ash.Reactor: crash when calling an ash reactor for the first time.

* add context argument to `before_action` and `after_action` for read actions

* add base case for  Ash.Resource.Info.public_relationship/2 (#1000)

### Improvements:

* add `ash.rollback` mix task

* add `ash.rollback` task

* add `config :ash, require_atomic_by_default?, false`, for upgrading

* support `skip_unknown_inputs` in `Ash.bulk_create`

## [v3.0.0-rc.17](https://github.com/ash-project/ash/compare/v3.0.0-rc.16...v3.0.0-rc.17) (2024-04-08)




### Features:

* Ash.Reactor: Add new `change` step type which can be used to modify changesets.

### Bug Fixes:

* honor new calcualtion sort format in sort parser

* don't raise error on keyword input to create interface

* action is an atom in erroor case for bulk update

### Improvements:

* Ash.Reactor: Allow `create` to be provided an initial value.

* Allow Reactor modules to be run directly from generic actions. (#993)

## [v3.0.0-rc.16](https://github.com/ash-project/ash/compare/v3.0.0-rc.15...v3.0.0-rc.16) (2024-04-07)




### Improvements:

* add `Ash.Query.apply_to/3`

## [v3.0.0-rc.15](https://github.com/ash-project/ash/compare/v3.0.0-rc.14...v3.0.0-rc.15) (2024-04-07)




### Features:

* add `update_change` function and builtin change (#976)

### Bug Fixes:

* undo adding primary key argument for methods with `get?` (#989)

* remove `internal?` and `stacktraces?` from common opts (#988)

* pattern match error in managed relationships

* include options for generic action code interfaces

* logic errors around arguments/changing attributes in validations

* handle partially atomic validations in run_action_changes

### Improvements:

* synthesize attributes from atomics for better notifications

* make Ash.Resource.Validation.Match partially atomic (#979)

* make Ash.Resource.Validation.Match partially atomic

## [v3.0.0-rc.14](https://github.com/ash-project/ash/compare/v3.0.0-rc.13...v3.0.0-rc.14) (2024-04-05)
### Breaking Changes:

* 3.0 (#955)

* use `%Ash.NotSelected{}` for unselected values

* default `require_atomic?` to `true`

* raise errors on unknown generic action arguments

* default bulk strategy to `:atomic`

* warnings on `require_atomic?` `true` actions

* revise `Ash.NotSelected` to `Ash.NotLoaded`

* errors on unknown action inputs across the board

* default `api.authorization.authorize` to `:by_default`

* require the api when constructing changesets

* code_interface.define_for -> code_interface.api

* remove registries

* pubsub notifier default to `previous_values?: false`

* requires_original_data? callback defaults to false

* rename Ash.Calculation -> Ash.Resource.Calculation

* improve `Ash.Query.Calculation.new` signature

* anonymous function calculations now take lists and return lists

* make callback contexts into structs

* pass context to builtin lifecycle hook changes

* calculation arguments are now in the `arguments` key of the context

* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* make picosat_elixir optional with `simple_sat`

* rename api to domain

* remove `Ash.Changeset.new!`

* deprecate `private?: false` in favor of `public?: true`

* default `default_accept` is now `[]`

* `Ash.CiString.new/1` returns `nil` on `nil` input

* clean up and reorganize `Ash` functions

* remove context-based functionality

* Deprecate calling functions on (domain) api in favor of `Ash`

* add `attribute_public?` and update `attribute_writable?` behavior

* update atomic behaviors, default to invalid

* changeset.filters -> changeset.filter

* remove deprecated functions

* remove and simplify `Ash.Filter.TemplateHelpers`

* keyword lists are no longer special cased in ash expressions

* introduce strict mode to calculations

* reverse order of before action & before transaction hooks

* default read actions are now paginatable

* require explicit accept lists in default actions

* remove Ash.Flow and Ash.Engine

* standardize various exception keys and names

* use `Splode` for errors

* move simple_notifiers to an option instead of a DSL builder

* update spark for better autocomplete, configure autocomplete for key functions

* swap position of sort order and arguments in calculation sorting

* add `include_nil?` aggregate option, and default it to `false`

* errors on unknown inputs for calculations



### Features:

* code interface on the domain

### Bug Fixes:

* more improvements to resource matching in `can?`

* detect more cases for domain extraction from resources

* properly dispatch managed relationships to proper domain

* check target resource's domain before assuming it is the same as current domain

* return {:error, query} for invalid query in Aggregate.run/4 (#982)

* allow strings in Ash.Type.Enum again

* set tenant in bulk creates after setting up changeset

* use the resource's domain above option domain

* properly cast identity keys before comparison

* properly handle multiple paths for checking sortable relationships

* multi-line DSL doc options in `Ash.Reactor`. (#974)

* don't call domain at compile time if its not loaded

* ensure that generic action arguments have proper default for public?

* ensure we don't double-query values after manual actions

* properly handle lists of errors added by validations

* honor `only_when_valid?` on validations in bulk actions

* fix typespec for bulk_create

* ending a policy w/ `authorize_if` had flipped conditional

* handle `sensitive?` option in query aggregate/calculation (#963)

* properly retain input order for embedded attributes

* fix `changing_attributes` check implementation

* properly handle transaction errors from bulk creates

* set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* properly construct new query in `build/3`

* make bang variant of field aggregates work correctly (#954)

* enforce multitenancy on aggregates (#952)

* fix missing tenant in some bulk contexts (#951)

* Fix places where tenant is not passed along (#950)

### Improvements:

* add `skip_unknown_inputs` for generic actions

* support `allow_nil_input` dsl option in update/destroy (#964)

* allow accepting private attributes

* allow adding non-public attributes to explicit accept lists

* better error messages for private attribute accepting

* use resource api when verifying its presence in a known api

* change `type` argument position in `Ash.Query.calculate` (#959)

* allow simple check to return error tuple (#956)

* skip unknown inputs when managing relationships

* ignore unknown string-keyed inputs beginning with `_`

* support requesting to ignore additional keys

* add `skip_unknown_inputs` option, use it for embeds in unions

* ensure that update defaults are set

* update spark to 2.0

* update reactor to 3.0

* import Ash.Expr in modules where it is used

* require Ash.QUery in modules where it makes sense

* add structs for more context implementations

* ensure selects are applied on destroys

* support custom expressions

* update upgrade guide to include Splode

* only require primary key if resource has actions or fields

* only build schema if resource has actions or fields

* verify primary key in its own verifier

* add `resource/1` builtin check

* better code interface documentation

* support notifiers within actions

* support specifying multiple filters

* add `sortable?` flags to all fields

* support multiple filters on relationships

* support sensitive? on calculations and arguments

* validate resources in inputs to code interface

* update reactor and tests

* don't require domain on relationships if destination has domain

* always choose to cast atomic

* support casting some embeds atomically

* various 3.0 updates, documented in upgrade.md

* ensure non-static dynamic domains works

* add Ash.ToTenant protocol

* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* support bulk and atomic operations in code interfaces

## [v3.0.0-rc.13](https://github.com/ash-project/ash/compare/v3.0.0-rc.12...v3.0.0-rc.13) (2024-04-05)
### Breaking Changes:

* 3.0 (#955)

* use `%Ash.NotSelected{}` for unselected values

* default `require_atomic?` to `true`

* raise errors on unknown generic action arguments

* default bulk strategy to `:atomic`

* warnings on `require_atomic?` `true` actions

* revise `Ash.NotSelected` to `Ash.NotLoaded`

* errors on unknown action inputs across the board

* default `api.authorization.authorize` to `:by_default`

* require the api when constructing changesets

* code_interface.define_for -> code_interface.api

* remove registries

* pubsub notifier default to `previous_values?: false`

* requires_original_data? callback defaults to false

* rename Ash.Calculation -> Ash.Resource.Calculation

* improve `Ash.Query.Calculation.new` signature

* anonymous function calculations now take lists and return lists

* make callback contexts into structs

* pass context to builtin lifecycle hook changes

* calculation arguments are now in the `arguments` key of the context

* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* make picosat_elixir optional with `simple_sat`

* rename api to domain

* remove `Ash.Changeset.new!`

* deprecate `private?: false` in favor of `public?: true`

* default `default_accept` is now `[]`

* `Ash.CiString.new/1` returns `nil` on `nil` input

* clean up and reorganize `Ash` functions

* remove context-based functionality

* Deprecate calling functions on (domain) api in favor of `Ash`

* add `attribute_public?` and update `attribute_writable?` behavior

* update atomic behaviors, default to invalid

* changeset.filters -> changeset.filter

* remove deprecated functions

* remove and simplify `Ash.Filter.TemplateHelpers`

* keyword lists are no longer special cased in ash expressions

* introduce strict mode to calculations

* reverse order of before action & before transaction hooks

* default read actions are now paginatable

* require explicit accept lists in default actions

* remove Ash.Flow and Ash.Engine

* standardize various exception keys and names

* use `Splode` for errors

* move simple_notifiers to an option instead of a DSL builder

* update spark for better autocomplete, configure autocomplete for key functions

* swap position of sort order and arguments in calculation sorting

* add `include_nil?` aggregate option, and default it to `false`

* errors on unknown inputs for calculations



### Features:

* code interface on the domain

### Bug Fixes:

* set tenant in bulk creates after setting up changeset

* use the resource's domain above option domain

* properly cast identity keys before comparison

* properly handle multiple paths for checking sortable relationships

* multi-line DSL doc options in `Ash.Reactor`. (#974)

* don't call domain at compile time if its not loaded

* ensure that generic action arguments have proper default for public?

* ensure we don't double-query values after manual actions

* properly handle lists of errors added by validations

* honor `only_when_valid?` on validations in bulk actions

* fix typespec for bulk_create

* ending a policy w/ `authorize_if` had flipped conditional

* handle `sensitive?` option in query aggregate/calculation (#963)

* properly retain input order for embedded attributes

* fix `changing_attributes` check implementation

* properly handle transaction errors from bulk creates

* set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* properly construct new query in `build/3`

* make bang variant of field aggregates work correctly (#954)

* enforce multitenancy on aggregates (#952)

* fix missing tenant in some bulk contexts (#951)

* Fix places where tenant is not passed along (#950)

### Improvements:

* add `skip_unknown_inputs` for generic actions

* support `allow_nil_input` dsl option in update/destroy (#964)

* allow accepting private attributes

* allow adding non-public attributes to explicit accept lists

* better error messages for private attribute accepting

* use resource api when verifying its presence in a known api

* change `type` argument position in `Ash.Query.calculate` (#959)

* allow simple check to return error tuple (#956)

* skip unknown inputs when managing relationships

* ignore unknown string-keyed inputs beginning with `_`

* support requesting to ignore additional keys

* add `skip_unknown_inputs` option, use it for embeds in unions

* ensure that update defaults are set

* update spark to 2.0

* update reactor to 3.0

* import Ash.Expr in modules where it is used

* require Ash.QUery in modules where it makes sense

* add structs for more context implementations

* ensure selects are applied on destroys

* support custom expressions

* update upgrade guide to include Splode

* only require primary key if resource has actions or fields

* only build schema if resource has actions or fields

* verify primary key in its own verifier

* add `resource/1` builtin check

* better code interface documentation

* support notifiers within actions

* support specifying multiple filters

* add `sortable?` flags to all fields

* support multiple filters on relationships

* support sensitive? on calculations and arguments

* validate resources in inputs to code interface

* update reactor and tests

* don't require domain on relationships if destination has domain

* always choose to cast atomic

* support casting some embeds atomically

* various 3.0 updates, documented in upgrade.md

* ensure non-static dynamic domains works

* add Ash.ToTenant protocol

* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* support bulk and atomic operations in code interfaces

## [v3.0.0-rc.12](https://github.com/ash-project/ash/compare/v3.0.0-rc.11...v3.0.0-rc.12) (2024-04-04)
### Breaking Changes:

* 3.0 (#955)

* use `%Ash.NotSelected{}` for unselected values

* default `require_atomic?` to `true`

* raise errors on unknown generic action arguments

* default bulk strategy to `:atomic`

* warnings on `require_atomic?` `true` actions

* revise `Ash.NotSelected` to `Ash.NotLoaded`

* errors on unknown action inputs across the board

* default `api.authorization.authorize` to `:by_default`

* require the api when constructing changesets

* code_interface.define_for -> code_interface.api

* remove registries

* pubsub notifier default to `previous_values?: false`

* requires_original_data? callback defaults to false

* rename Ash.Calculation -> Ash.Resource.Calculation

* improve `Ash.Query.Calculation.new` signature

* anonymous function calculations now take lists and return lists

* make callback contexts into structs

* pass context to builtin lifecycle hook changes

* calculation arguments are now in the `arguments` key of the context

* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* make picosat_elixir optional with `simple_sat`

* rename api to domain

* remove `Ash.Changeset.new!`

* deprecate `private?: false` in favor of `public?: true`

* default `default_accept` is now `[]`

* `Ash.CiString.new/1` returns `nil` on `nil` input

* clean up and reorganize `Ash` functions

* remove context-based functionality

* Deprecate calling functions on (domain) api in favor of `Ash`

* add `attribute_public?` and update `attribute_writable?` behavior

* update atomic behaviors, default to invalid

* changeset.filters -> changeset.filter

* remove deprecated functions

* remove and simplify `Ash.Filter.TemplateHelpers`

* keyword lists are no longer special cased in ash expressions

* introduce strict mode to calculations

* reverse order of before action & before transaction hooks

* default read actions are now paginatable

* require explicit accept lists in default actions

* remove Ash.Flow and Ash.Engine

* standardize various exception keys and names

* use `Splode` for errors

* move simple_notifiers to an option instead of a DSL builder

* update spark for better autocomplete, configure autocomplete for key functions

* swap position of sort order and arguments in calculation sorting

* add `include_nil?` aggregate option, and default it to `false`

* errors on unknown inputs for calculations



### Features:

* code interface on the domain

### Bug Fixes:

* properly cast identity keys before comparison

* properly handle multiple paths for checking sortable relationships

* multi-line DSL doc options in `Ash.Reactor`. (#974)

* don't call domain at compile time if its not loaded

* ensure that generic action arguments have proper default for public?

* ensure we don't double-query values after manual actions

* properly handle lists of errors added by validations

* honor `only_when_valid?` on validations in bulk actions

* fix typespec for bulk_create

* ending a policy w/ `authorize_if` had flipped conditional

* handle `sensitive?` option in query aggregate/calculation (#963)

* properly retain input order for embedded attributes

* fix `changing_attributes` check implementation

* properly handle transaction errors from bulk creates

* set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* properly construct new query in `build/3`

* make bang variant of field aggregates work correctly (#954)

* enforce multitenancy on aggregates (#952)

* fix missing tenant in some bulk contexts (#951)

* Fix places where tenant is not passed along (#950)

### Improvements:

* add `skip_unknown_inputs` for generic actions

* support `allow_nil_input` dsl option in update/destroy (#964)

* allow accepting private attributes

* allow adding non-public attributes to explicit accept lists

* better error messages for private attribute accepting

* use resource api when verifying its presence in a known api

* change `type` argument position in `Ash.Query.calculate` (#959)

* allow simple check to return error tuple (#956)

* skip unknown inputs when managing relationships

* ignore unknown string-keyed inputs beginning with `_`

* support requesting to ignore additional keys

* add `skip_unknown_inputs` option, use it for embeds in unions

* ensure that update defaults are set

* update spark to 2.0

* update reactor to 3.0

* import Ash.Expr in modules where it is used

* require Ash.QUery in modules where it makes sense

* add structs for more context implementations

* ensure selects are applied on destroys

* support custom expressions

* update upgrade guide to include Splode

* only require primary key if resource has actions or fields

* only build schema if resource has actions or fields

* verify primary key in its own verifier

* add `resource/1` builtin check

* better code interface documentation

* support notifiers within actions

* support specifying multiple filters

* add `sortable?` flags to all fields

* support multiple filters on relationships

* support sensitive? on calculations and arguments

* validate resources in inputs to code interface

* update reactor and tests

* don't require domain on relationships if destination has domain

* always choose to cast atomic

* support casting some embeds atomically

* various 3.0 updates, documented in upgrade.md

* ensure non-static dynamic domains works

* add Ash.ToTenant protocol

* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* support bulk and atomic operations in code interfaces

## [v3.0.0-rc.11](https://github.com/ash-project/ash/compare/v3.0.0-rc.10...v3.0.0-rc.11) (2024-04-04)




### Bug Fixes:

* properly handle multiple paths for checking sortable relationships

* multi-line DSL doc options in `Ash.Reactor`. (#974)

## [v3.0.0-rc.10](https://github.com/ash-project/ash/compare/v3.0.0-rc.9...v3.0.0-rc.10) (2024-04-03)




### Bug Fixes:

* don't call domain at compile time if its not loaded

## [v3.0.0-rc.9](https://github.com/ash-project/ash/compare/v3.0.0-rc.8...v3.0.0-rc.9) (2024-04-03)




### Bug Fixes:

* ensure that generic action arguments have proper default for public?

### Improvements:

* add `skip_unknown_inputs` for generic actions

## [v3.0.0-rc.8](https://github.com/ash-project/ash/compare/v3.0.0-rc.7...v3.0.0-rc.8) (2024-04-03)
### Breaking Changes:

* 3.0 (#955)

* use `%Ash.NotSelected{}` for unselected values

* default `require_atomic?` to `true`

* raise errors on unknown generic action arguments

* default bulk strategy to `:atomic`

* warnings on `require_atomic?` `true` actions

* revise `Ash.NotSelected` to `Ash.NotLoaded`

* errors on unknown action inputs across the board

* default `api.authorization.authorize` to `:by_default`

* require the api when constructing changesets

* code_interface.define_for -> code_interface.api

* remove registries

* pubsub notifier default to `previous_values?: false`

* requires_original_data? callback defaults to false

* rename Ash.Calculation -> Ash.Resource.Calculation

* improve `Ash.Query.Calculation.new` signature

* anonymous function calculations now take lists and return lists

* make callback contexts into structs

* pass context to builtin lifecycle hook changes

* calculation arguments are now in the `arguments` key of the context

* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* make picosat_elixir optional with `simple_sat`

* rename api to domain

* remove `Ash.Changeset.new!`

* deprecate `private?: false` in favor of `public?: true`

* default `default_accept` is now `[]`

* `Ash.CiString.new/1` returns `nil` on `nil` input

* clean up and reorganize `Ash` functions

* remove context-based functionality

* Deprecate calling functions on (domain) api in favor of `Ash`

* add `attribute_public?` and update `attribute_writable?` behavior

* update atomic behaviors, default to invalid

* changeset.filters -> changeset.filter

* remove deprecated functions

* remove and simplify `Ash.Filter.TemplateHelpers`

* keyword lists are no longer special cased in ash expressions

* introduce strict mode to calculations

* reverse order of before action & before transaction hooks

* default read actions are now paginatable

* require explicit accept lists in default actions

* remove Ash.Flow and Ash.Engine

* standardize various exception keys and names

* use `Splode` for errors

* move simple_notifiers to an option instead of a DSL builder

* update spark for better autocomplete, configure autocomplete for key functions

* swap position of sort order and arguments in calculation sorting

* add `include_nil?` aggregate option, and default it to `false`

* errors on unknown inputs for calculations



### Features:

* code interface on the domain

### Bug Fixes:

* ensure we don't double-query values after manual actions

* properly handle lists of errors added by validations

* honor `only_when_valid?` on validations in bulk actions

* fix typespec for bulk_create

* ending a policy w/ `authorize_if` had flipped conditional

* handle `sensitive?` option in query aggregate/calculation (#963)

* properly retain input order for embedded attributes

* fix `changing_attributes` check implementation

* properly handle transaction errors from bulk creates

* set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* properly construct new query in `build/3`

* make bang variant of field aggregates work correctly (#954)

* enforce multitenancy on aggregates (#952)

* fix missing tenant in some bulk contexts (#951)

* Fix places where tenant is not passed along (#950)

### Improvements:

* support `allow_nil_input` dsl option in update/destroy (#964)

* allow accepting private attributes

* allow adding non-public attributes to explicit accept lists

* better error messages for private attribute accepting

* use resource api when verifying its presence in a known api

* change `type` argument position in `Ash.Query.calculate` (#959)

* allow simple check to return error tuple (#956)

* skip unknown inputs when managing relationships

* ignore unknown string-keyed inputs beginning with `_`

* support requesting to ignore additional keys

* add `skip_unknown_inputs` option, use it for embeds in unions

* ensure that update defaults are set

* update spark to 2.0

* update reactor to 3.0

* import Ash.Expr in modules where it is used

* require Ash.QUery in modules where it makes sense

* add structs for more context implementations

* ensure selects are applied on destroys

* support custom expressions

* update upgrade guide to include Splode

* only require primary key if resource has actions or fields

* only build schema if resource has actions or fields

* verify primary key in its own verifier

* add `resource/1` builtin check

* better code interface documentation

* support notifiers within actions

* support specifying multiple filters

* add `sortable?` flags to all fields

* support multiple filters on relationships

* support sensitive? on calculations and arguments

* validate resources in inputs to code interface

* update reactor and tests

* don't require domain on relationships if destination has domain

* always choose to cast atomic

* support casting some embeds atomically

* various 3.0 updates, documented in upgrade.md

* ensure non-static dynamic domains works

* add Ash.ToTenant protocol

* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* support bulk and atomic operations in code interfaces

## [v3.0.0-rc.7](https://github.com/ash-project/ash/compare/v3.0.0-rc.6...v3.0.0-rc.7) (2024-04-01)




### Bug Fixes:

* fix typespec for bulk_create

### Improvements:

* allow accepting private attributes

## [v3.0.0-rc.6](https://github.com/ash-project/ash/compare/v3.0.0-rc.5...v3.0.0-rc.6) (2024-04-01)
### Breaking Changes:

* 3.0 (#955)

* use `%Ash.NotSelected{}` for unselected values

* default `require_atomic?` to `true`

* raise errors on unknown generic action arguments

* default bulk strategy to `:atomic`

* warnings on `require_atomic?` `true` actions

* revise `Ash.NotSelected` to `Ash.NotLoaded`

* errors on unknown action inputs across the board

* default `api.authorization.authorize` to `:by_default`

* require the api when constructing changesets

* code_interface.define_for -> code_interface.api

* remove registries

* pubsub notifier default to `previous_values?: false`

* requires_original_data? callback defaults to false

* rename Ash.Calculation -> Ash.Resource.Calculation

* improve `Ash.Query.Calculation.new` signature

* anonymous function calculations now take lists and return lists

* make callback contexts into structs

* pass context to builtin lifecycle hook changes

* calculation arguments are now in the `arguments` key of the context

* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* make picosat_elixir optional with `simple_sat`

* rename api to domain

* remove `Ash.Changeset.new!`

* deprecate `private?: false` in favor of `public?: true`

* default `default_accept` is now `[]`

* `Ash.CiString.new/1` returns `nil` on `nil` input

* clean up and reorganize `Ash` functions

* remove context-based functionality

* Deprecate calling functions on (domain) api in favor of `Ash`

* add `attribute_public?` and update `attribute_writable?` behavior

* update atomic behaviors, default to invalid

* changeset.filters -> changeset.filter

* remove deprecated functions

* remove and simplify `Ash.Filter.TemplateHelpers`

* keyword lists are no longer special cased in ash expressions

* introduce strict mode to calculations

* reverse order of before action & before transaction hooks

* default read actions are now paginatable

* require explicit accept lists in default actions

* remove Ash.Flow and Ash.Engine

* standardize various exception keys and names

* use `Splode` for errors

* move simple_notifiers to an option instead of a DSL builder

* update spark for better autocomplete, configure autocomplete for key functions

* swap position of sort order and arguments in calculation sorting

* add `include_nil?` aggregate option, and default it to `false`

* errors on unknown inputs for calculations



### Features:

* code interface on the domain

### Bug Fixes:

* ending a policy w/ `authorize_if` had flipped conditional

* handle `sensitive?` option in query aggregate/calculation (#963)

* properly retain input order for embedded attributes

* fix `changing_attributes` check implementation

* properly handle transaction errors from bulk creates

* set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* properly construct new query in `build/3`

* make bang variant of field aggregates work correctly (#954)

* enforce multitenancy on aggregates (#952)

* fix missing tenant in some bulk contexts (#951)

* Fix places where tenant is not passed along (#950)

### Improvements:

* allow adding non-public attributes to explicit accept lists

* better error messages for private attribute accepting

* use resource api when verifying its presence in a known api

* change `type` argument position in `Ash.Query.calculate` (#959)

* allow simple check to return error tuple (#956)

* skip unknown inputs when managing relationships

* ignore unknown string-keyed inputs beginning with `_`

* support requesting to ignore additional keys

* add `skip_unknown_inputs` option, use it for embeds in unions

* ensure that update defaults are set

* update spark to 2.0

* update reactor to 3.0

* import Ash.Expr in modules where it is used

* require Ash.QUery in modules where it makes sense

* add structs for more context implementations

* ensure selects are applied on destroys

* support custom expressions

* update upgrade guide to include Splode

* only require primary key if resource has actions or fields

* only build schema if resource has actions or fields

* verify primary key in its own verifier

* add `resource/1` builtin check

* better code interface documentation

* support notifiers within actions

* support specifying multiple filters

* add `sortable?` flags to all fields

* support multiple filters on relationships

* support sensitive? on calculations and arguments

* validate resources in inputs to code interface

* update reactor and tests

* don't require domain on relationships if destination has domain

* always choose to cast atomic

* support casting some embeds atomically

* various 3.0 updates, documented in upgrade.md

* ensure non-static dynamic domains works

* add Ash.ToTenant protocol

* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* support bulk and atomic operations in code interfaces

## [v3.0.0-rc.5](https://github.com/ash-project/ash/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2024-03-30)




### Bug Fixes:

* properly retain input order for embedded attributes

### Improvements:

* better error messages for private attribute accepting

* use resource api when verifying its presence in a known api

## [v3.0.0-rc.4](https://github.com/ash-project/ash/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2024-03-29)




### Bug Fixes:

* fix `changing_attributes` check implementation

### Improvements:

* change `type` argument position in `Ash.Query.calculate` (#959)

* allow simple check to return error tuple (#956)

## [v3.0.0-rc.3](https://github.com/ash-project/ash/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2024-03-28)




### Improvements:

* skip unknown inputs when managing relationships

## [v3.0.0-rc.2](https://github.com/ash-project/ash/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2024-03-28)




### Improvements:

* ignore unknown string-keyed inputs beginning with `_`

* support requesting to ignore additional keys

* add `skip_unknown_inputs` option, use it for embeds in unions

## [v3.0.0-rc.1](https://github.com/ash-project/ash/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2024-03-28)
### Breaking Changes:

* 3.0 (#955)

* use `%Ash.NotSelected{}` for unselected values

* default `require_atomic?` to `true`

* raise errors on unknown generic action arguments

* default bulk strategy to `:atomic`

* warnings on `require_atomic?` `true` actions

* revise `Ash.NotSelected` to `Ash.NotLoaded`

* errors on unknown action inputs across the board

* default `api.authorization.authorize` to `:by_default`

* require the api when constructing changesets

* code_interface.define_for -> code_interface.api

* remove registries

* pubsub notifier default to `previous_values?: false`

* requires_original_data? callback defaults to false

* rename Ash.Calculation -> Ash.Resource.Calculation

* improve `Ash.Query.Calculation.new` signature

* anonymous function calculations now take lists and return lists

* make callback contexts into structs

* pass context to builtin lifecycle hook changes

* calculation arguments are now in the `arguments` key of the context

* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* make picosat_elixir optional with `simple_sat`

* rename api to domain

* remove `Ash.Changeset.new!`

* deprecate `private?: false` in favor of `public?: true`

* default `default_accept` is now `[]`

* `Ash.CiString.new/1` returns `nil` on `nil` input

* clean up and reorganize `Ash` functions

* remove context-based functionality

* Deprecate calling functions on (domain) api in favor of `Ash`

* add `attribute_public?` and update `attribute_writable?` behavior

* update atomic behaviors, default to invalid

* changeset.filters -> changeset.filter

* remove deprecated functions

* remove and simplify `Ash.Filter.TemplateHelpers`

* keyword lists are no longer special cased in ash expressions

* introduce strict mode to calculations

* reverse order of before action & before transaction hooks

* default read actions are now paginatable

* require explicit accept lists in default actions

* remove Ash.Flow and Ash.Engine

* standardize various exception keys and names

* use `Splode` for errors

* move simple_notifiers to an option instead of a DSL builder

* update spark for better autocomplete, configure autocomplete for key functions

* swap position of sort order and arguments in calculation sorting

* add `include_nil?` aggregate option, and default it to `false`

* errors on unknown inputs for calculations



### Features:

* code interface on the domain

### Bug Fixes:

* properly handle transaction errors from bulk creates

* set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* properly construct new query in `build/3`

* make bang variant of field aggregates work correctly (#954)

* enforce multitenancy on aggregates (#952)

* fix missing tenant in some bulk contexts (#951)

* Fix places where tenant is not passed along (#950)

### Improvements:

* ensure that update defaults are set

* update spark to 2.0

* update reactor to 3.0

* import Ash.Expr in modules where it is used

* require Ash.QUery in modules where it makes sense

* add structs for more context implementations

* ensure selects are applied on destroys

* support custom expressions

* update upgrade guide to include Splode

* only require primary key if resource has actions or fields

* only build schema if resource has actions or fields

* verify primary key in its own verifier

* add `resource/1` builtin check

* better code interface documentation

* support notifiers within actions

* support specifying multiple filters

* add `sortable?` flags to all fields

* support multiple filters on relationships

* support sensitive? on calculations and arguments

* validate resources in inputs to code interface

* update reactor and tests

* don't require domain on relationships if destination has domain

* always choose to cast atomic

* support casting some embeds atomically

* various 3.0 updates, documented in upgrade.md

* ensure non-static dynamic domains works

* add Ash.ToTenant protocol

* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* support bulk and atomic operations in code interfaces

## [v3.0.0-rc.0](https://github.com/ash-project/ash/compare/v2.21.2...v3.0.0-rc.0) (2024-03-27)

### Breaking Changes:

- use `%Ash.NotSelected{}` for unselected values

- default `require_atomic?` to `true`

- raise errors on unknown generic action arguments

- default bulk strategy to `:atomic`

- warnings on `require_atomic?` `true` actions

- revise `Ash.NotSelected` to `Ash.NotLoaded`

- errors on unknown action inputs across the board

- default `api.authorization.authorize` to `:by_default`

- require the api when constructing changesets

- code_interface.define_for -> code_interface.api

- remove registries

- pubsub notifier default to `previous_values?: false`

- requires_original_data? callback defaults to false

- rename Ash.Calculation -> Ash.Resource.Calculation

- improve `Ash.Query.Calculation.new` signature

- anonymous function calculations now take lists and return lists

- make callback contexts into structs

- pass context to builtin lifecycle hook changes

- calculation arguments are now in the `arguments` key of the context

- remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

- make picosat_elixir optional with `simple_sat`

- rename api to domain

- remove `Ash.Changeset.new!/2` (`Ash.Changeset.new/1` is still present)

- deprecate `private?: false` in favor of `public?: true`

- default `default_accept` is now `[]`

- `Ash.CiString.new/1` returns `nil` on `nil` input

- clean up and reorganize `Ash` functions

- remove context-based functionality

- Deprecate calling functions on (domain) api in favor of `Ash`

- add `attribute_public?` and update `attribute_writable?` behavior

- changeset.filters was a map, it is now changeset.filter and is an expression

- remove `Ash.Filter.TemplateHelpers`, all functionality moved to `Ash.Expr`

- keyword lists are no longer special cased in ash expressions

- introduce strict mode to calculations

- reverse order of before action & before transaction hooks

- default read actions are now paginatable with keyset and offset pagination

- move Ash.Flow and Ash.Engine into a separate package

- standardize various exception keys and names

- use `splode` for errors

- move simple_notifiers to an option to `use Ash.Resource` instead of its own DSL

- update spark for better autocomplete, configure autocomplete for key functions

- swap position of sort order and arguments in calculation sorting

- add `include_nil?` aggregate option, and default it to `false`

### Features:

- code interface on the domain

- Policies on the domain

- add Ash.ToTenant protocol

- support for custom expressions

- support action-specific notifiers

- support specifying multiple filters in a read action and relationship

- support sensitive? on calculations and arguments

- support bulk and atomic operations in code interfaces

### Bug Fixes:

- set tenant on query so that root calles to Api.aggreagte work as expected (#929)

- properly construct new query in `build/3`

### Improvements:

- update spark to 2.0

- import Ash.Expr in modules where it is used

- use structs for more context implementations

- only require primary key and build schema if resource has actions or fields

- better generated code interface documentation

- add `sortable?` flags to all fields

- validate resources in inputs to code interface

- don't require domain on relationships if destination resource has domain

## [v2.21.2](https://github.com/ash-project/ash/compare/v2.21.1...v2.21.2) (2024-03-26)

### Bug Fixes:

- don't try to reselect fields when pkeys are missing

## [v2.21.1](https://github.com/ash-project/ash/compare/v2.21.0...v2.21.1) (2024-03-25)

### Improvements:

- detect loaded-through types

## [v2.21.0](https://github.com/ash-project/ash/compare/v2.20.3...v2.21.0) (2024-03-24)

### Features:

- add less_than, greater_than constraints to float, decimal (#936)

- allow providing descriptions to Ash.Type.Enum values (#940)

### Bug Fixes:

- convert `%{__struct__: T}` into `%T{}` (#947)

- corrections for `reload`/`reload!` (#942)

- show that `Policy.Check.strict_check` can return an error tuple (#945)

- remove unnecessary function

- fully expand calculation and aggregate references for applying authorization

- batch_change/3 is never called for updates (#938)

- bulk updates for streams ignore :batch_size

- don't double-encode vector data (#934)

- update set/get/update_context function specs to use maps (#935)

### Improvements:

- support `load` option for create/update/destroy (#946)

- restore old behavior of leveraging in memory values for calculations

- simplify inspect for aggregates

- add `matches` built-in policy check (#937)

## [v2.20.3](https://github.com/ash-project/ash/compare/v2.20.2...v2.20.3) (2024-03-20)

### Bug Fixes:

- ensure calculation context is set on aggregate contents

- set `source_attribute` from `join_relationship` in `many_to_many` (#932)

## [v2.20.2](https://github.com/ash-project/ash/compare/v2.20.1...v2.20.2) (2024-03-19)

### Bug Fixes:

- use proper logic for atomic `present` validations

- Set tenant correctly when reading many_to_many relationship. (#928)

- properly match no_rollback error

- load with right module in `get_rewrites` of `Ash.Type.Struct` (#927)

- ensure that calculation dependency loader combines selects

- properly handle raised errors from async calculations

- ensure depended on attributes are selected in calculations

- properly merge related selects when merging loads

### Improvements:

- cast atomic reference types, makes life easier for data layers

- use `wrap_list` for `where` in `changes.change` (#926)

- don't require Mix to compile an Ash resource

## [v2.20.1](https://github.com/ash-project/ash/compare/v2.20.0...v2.20.1) (2024-03-11)

### Bug Fixes:

- typespec for `action` policy check supports list of action names (#924)

- ensure that message is honored in atomic validations

- don't require actor when constructing aggregate query

### Improvements:

- store casted values even if they are `nil`

- Ash.Reactor: Backport improvements from 3.0 branch.

## [v2.20.0](https://github.com/ash-project/ash/compare/v2.19.14...v2.20.0) (2024-03-05)

### Features:

- Ash.Reactor: Add a Reactor extension that makes working with resources easy. (#683)

- Add `Ash.Reactor` with create support.

### Bug Fixes:

- correct atomic implementation of `present` validation

- track keys that are set to `nil` in changesets, for use in atomic upgrade

- properly cast atomic constraints for integer

- more fixes for atomic length validations

- fix atomic error for string length type validation

- Mimic copying `Ash.Notifier` seems to break the compiler for some reason.

### Improvements:

- do not perform atomic upgrade on destroy actions

- Make undo actions for `update` and `destroy` actions more explicit. (#920)

- Ash.Reactor: Make undo actions for `update` and `destroy` more explicit.

- rename `get` to `read_one` in `Ash.Reactor`

- Add `Ash.Reactor` update support.

- Add `Ash.Reactor` destroy support.

- Ash.Reactor: Support for transactional handling of notifications.

- Ash.Reactor: Add `read` and `get` steps.

- Ash.Reactor: add support for generic actions.

- Add `undo` capability to `create` step.

- transaction and undo working.

- Automatically thread Ash tracers through Reactor.

- Ash.Reactor: Add undo to generic actions.

## [v2.19.14](https://github.com/ash-project/ash/compare/v2.19.13...v2.19.14) (2024-03-01)

### Bug Fixes:

- properly match return type of `Type.new` in expr expansion

## [v2.19.13](https://github.com/ash-project/ash/compare/v2.19.12...v2.19.13) (2024-03-01)

### Improvements:

- cast expression calculations if they don't do it

## [v2.19.12](https://github.com/ash-project/ash/compare/v2.19.11...v2.19.12) (2024-02-29)

### Bug Fixes:

- properly scope expanded calculations

- properly scope expanded calculations

### Improvements:

- aggregate sort replaces query sort

## [v2.19.11](https://github.com/ash-project/ash/compare/v2.19.10...v2.19.11) (2024-02-29)

### Bug Fixes:

- properly add aggregate authorization everywhere

- ensure calculation arguments are not ignored when parsing filters

- properly authorize aggregates

## [v2.19.10](https://github.com/ash-project/ash/compare/v2.19.9...v2.19.10) (2024-02-29)

### Bug Fixes:

- bad reference in atomic validations

- prevent leakage of stale async_limiter's pid (#916)

## [v2.19.9](https://github.com/ash-project/ash/compare/v2.19.8...v2.19.9) (2024-02-26)

### Bug Fixes:

- ensure that policies are applied to aggregates referenced in calculations

- ensure records are returned from bulk actions in atomic upgrades

- handle small logic error in notification sending for bulk actions

## [v2.19.8](https://github.com/ash-project/ash/compare/v2.19.7...v2.19.8) (2024-02-25)

### Bug Fixes:

- ensure actor context is set in filter

- properly handle limit/offset for aggregates

- don't use `Aggregate.new` for builtin aggregates

- merge root query into aggregate queries, don't apply both

### Improvements:

- don't duplicate base filter in aggregates

## [v2.19.7](https://github.com/ash-project/ash/compare/v2.19.6...v2.19.7) (2024-02-24)

### Bug Fixes:

- return proper pattern from select builtin change

## [v2.19.6](https://github.com/ash-project/ash/compare/v2.19.5...v2.19.6) (2024-02-24)

### Bug Fixes:

- properly catch errors in atomic changeset casting

- use `Ash.Changeset.set_context` on changesets

## [v2.19.5](https://github.com/ash-project/ash/compare/v2.19.4...v2.19.5) (2024-02-22)

### Bug Fixes:

- properly fail early on missing actor in policies

- handle `:continue` case in authorizer

- validations run regardless of if the relevant fields are changing

## [v2.19.4](https://github.com/ash-project/ash/compare/v2.19.3...v2.19.4) (2024-02-22)

### Bug Fixes:

- honor soft destroys for atomic bulk destroys

- properly set context on query and changeset

- pass correct options into `Api.stream!` for bulk_destroy

- check attributes after arguments for `present?`

- correct `for_read` calls in update and destroy actions (#907)

## [v2.19.3](https://github.com/ash-project/ash/compare/v2.19.2...v2.19.3) (2024-02-17)

### Bug Fixes:

- properly annotate `run_flow`'s recursive DSL tag

## [v2.19.2](https://github.com/ash-project/ash/compare/v2.19.1...v2.19.2) (2024-02-17)

### Bug Fixes:

- ensure that to-many relationships are loaded as lists

## [v2.19.1](https://github.com/ash-project/ash/compare/v2.19.0...v2.19.1) (2024-02-16)

### Bug Fixes:

- honor `not_found_error?` in `read_one`

### Improvements:

- pass `tenant` to context in custom changes

- `Ash.Context.to_opts` now checks for a `tenant`

## [v2.19.0](https://github.com/ash-project/ash/compare/v2.18.1...v2.19.0) (2024-02-16)

### Features:

- allow using custom delimiters for pubsub topics

- support functions in parse predicates (#874)

- support returning streams from mod calc (#864)

### Bug Fixes:

- remove unneeded code for calculations in a filter (#904)

- restore `not_found_error?` behavior in `Ash.Flow`

- handle cases where no primary keys are present better

- ensure that filters are parsed from policy authorizer ahead of time

- check if query is a query before calling `.__validated_for_action__`

- properly authorize actions in flow

- handle warning about incompatible types (#892)

- properly refer to attributes in `changing_attributes/1`

- remove unneeded code for calculations in a filter (#891)

- evaluate templates to unknown at ref

- handle atomic_ref templates and `changing_attributes/1`

- replace refs for relationships use correct action (#888)

- handle not found case in destroy (#890)

- handle not found case in destroy

- add case where authoriztion did not change query

- properly map sort input and non-input refs in keyset filters

- properly match on invalid query from before_action

- ensure proper context set on atomic upgrade

- fix nil ++ list error in bulk destroy

- ensure we retain the sort order of embedded resources

- retain sort on inputs on casting embedded inputs

- properly get rewrites for embedded types

- ensure after_transaction hooks are always run

- handle records in `Ash.destroy` and `Ash.update`

- pre-template change/validation option in bulk update/destroy

- fix query match error in bulk destroy/update

- don't consider primary key matches with `nil` values

- continue cleanup in `ManagedRelationshipHelpers` (#873)

- fix pattern match error on certain policy conditions

- use primary key for lateral join source in ets

- set right `accessing_from` name in many to many managed create (#868)

- set_tenant on fully atomic changesets

- handle api.can case in authorize_changeset

- properly bypass authorization in atomic update switch-over

- properly set action_type on atomic changesets

- extract relationship filters from pre-authorization query

- retain metadata on updates, atomic and otherwise

- properly load expression -> runtime calculation deps

- ignore `input?` when considering refs equal in filter subset checking

- change names of code interface methods for calculations (#863)

- properly mark manuall created input refs with `input?: true`

- clean vars should handle map vars

- properly merge union loads

- support expression calculations referencing runtime calculations

- set default access type properly

- properly handle the case where all valid scenarios are pruned

- properly prevent the atomic handling of manual update actions

- fix passing extra opts to stream

- properly check if data layer can update_query

- Ash.Type.Float to support min/max constraints(#856)

- add calculations before distinct is applied in data layer query

- properly set index on embedded type array errors

- use correct option for relationship in atomic `relate_actor` (#855)

- only count resources the actor is allowed to see (#853)

- only count resources the actor is allowed to see

- deselect known forbidden fields _after_ query authorization is complete

- `soft?` in destroy action options is a boolean, not an atom (#851)

- load fails because of empty list instead of query (#847)

- don't attempt to derive `destination_attribute_on_join_resource`

- `join_relationship` in many to many can make `through` optional (#846)

- make sure query has action (#844)

- pass in actor to api.can call (#843)

- pass in actor to api.can call

- do not check primary key fields in filter (#839)

- add page opts to context again (#838)

- return errors with query from read action

- properly set defaults on upsert in mnesia

- don't load through attributes twice, but also don't miss any

- handle errors properly from invalid loads

- handle data layer calculations for missing records

- only load through calculations in the correct order

- properly detect cyclic dependencies in calculation runner

- properly annotate in-query calculations as complete for dependency calculation

- fix `present?` and `load_through` bugs

- don't require pagination in incorrect cases

- get tests passing for bulk creates again

### Improvements:

- handle stale update/destroys

- support `authorize_query_with` for bulk updates/destroys

- support `authorize_changeset_with` for bulk updates/destroys

- don't authorize query on synthesized atomic update/destroys

- show field name in NotLoaded inspect

- implement `requires_original_data?` for `Ash.Notifier.PubSub`

- support policies requiring original data

- change atomicity requirements when datalayers don't support it

- add `on_match: :update_join` to `manage_relationship` (#875)

- don't call telemetry when compiling

- various policy behavior cleanups

- add `join_keys` option to `manage_relationship` (#866)

- don't run `check` in cases that require strict checks

- atomic_batches behavior for bulk destroys

- allow strategy selection for bulk actions

- change nested field filtering to be done with `at_path`

- support referencing non-array embeds in input filters

- bulk update in batches if not given a query

- update action should respect load and select

- introduce `require_atomic?`, which defaults to `false` in 2.0, `true` in 3.0

- better support around the mixing of atomic and non atomic changes/validations

- more atomic implementations

- support loading and selecting in bulk operations

- use atomic create actions where possible

- always define `merge_load/4`

- derive `source_attribute_on_join_resource` for many to many

- atomic implementation for `relate_actor`

- include a message along with the non-atomic signifier

- support transactions on bulk destroys

- support transactions in bulk updates

- `count_nils/1` function

- `present/absent` atomic implementation

- add `atomic_ref/1` template helper

- Change typespec of tenant from String.t() to term() (#845)

- handle pkey-less resources when attaching fields

- set lazy defaults when applying changeset attributes

- add `prepend?: true` option to add_change

- optimize embedded resource creation

- rewrite read actions to not use `Ash.Engine` (#836)

## [v2.18.1](https://github.com/ash-project/ash/compare/v2.18.0...v2.18.1) (2024-01-12)

### Bug Fixes:

- use current read action for counting

## [v2.18.0](https://github.com/ash-project/ash/compare/v2.17.24...v2.18.0) (2024-01-12)

### Features:

- Allow `:self` as an option when requesting a relative page from a given page (#833)

### Bug Fixes:

- set tenant attribute in bulk create

### Improvements:

- add `all_tenants?` option to identities

- support Ash.CiString in string_join (#832)

- Add code interface support in Info and Builder. (#828)

- authorize each related join using `join_filters`

## [v2.17.24](https://github.com/ash-project/ash/compare/v2.17.23...v2.17.24) (2024-01-12)

### Bug Fixes:

- fix runtime filter parsing & make last arg optional

- undo incorrect behaviour in runtime evaluation

- fix typespecs and cleanup Ash.Resource.Builder (#827)

### Improvements:

- support `join_filters` in aggregates

## [v2.17.23](https://github.com/ash-project/ash/compare/v2.17.22...v2.17.23) (2024-01-10)

### Bug Fixes:

- authorize aggregate references in calculations

### Improvements:

- error on using `relate_actor` with `:many` cardinality relationships

## [v2.17.22](https://github.com/ash-project/ash/compare/v2.17.21...v2.17.22) (2024-01-09)

### Bug Fixes:

- only put keywords to be interpolated in message in error vars (#821)

- only put keywords to be interpolated in message in error vars

- ignore empty relationship paths when authorizing relationships

- properly build query from opts in aggregates

### Improvements:

- append new entities in `Ash.Resource.Builder`

- simplify aggregate loading, remove `Ash.Engine` from it

- add atomic implementation for builtin `increment` change

- simplify related path authorization, use same tool as aggregates now use

## [v2.17.21](https://github.com/ash-project/ash/compare/v2.17.20...v2.17.21) (2024-01-05)

### Bug Fixes:

- don't consider ash field signals as present

### Improvements:

- refactor filter requests to not use `Ash.Engine`

## [v2.17.20](https://github.com/ash-project/ash/compare/v2.17.19...v2.17.20) (2024-01-04)

### Bug Fixes:

- add required check for stream pagination

### Improvements:

- atomic validation implementations for most validations

- support type operator overloading

- add some atomic implementations

## [v2.17.19](https://github.com/ash-project/ash/compare/v2.17.18...v2.17.19) (2023-12-30)

### Improvements:

- support `:no_rollback` and `return_query/2` callback

- add a `return_query/2` callback for data layers

## [v2.17.18](https://github.com/ash-project/ash/compare/v2.17.17...v2.17.18) (2023-12-29)

### Bug Fixes:

- ensure `__source__` is set on nested embedded attributes

- don't include unknown `authorize?` value in changesets

### Improvements:

- support `{:error, :no_rollback, error}` from data layer callbacks

- always update the join relationship

- use new `api` option in `Ash.Query.for_read/4`

- support using the new `api` option in actions

- accept `api` option in `Ash.Changeset.for_*` functions

- update `Ash` interface for working with new style resources

- better formatting of nested expressions

- helpful errors when misusing `.` in expressions

## [v2.17.17](https://github.com/ash-project/ash/compare/v2.17.16...v2.17.17) (2023-12-23)

### Bug Fixes:

- properly move maps & lists to expression paths

- set tenant when running authorization queries

## [v2.17.16](https://github.com/ash-project/ash/compare/v2.17.15...v2.17.16) (2023-12-23)

### Improvements:

- simplify used aggregate detection

- add `lazy/1` to expressions

- support providing an `input` key in predicate maps

## [v2.17.15](https://github.com/ash-project/ash/compare/v2.17.14...v2.17.15) (2023-12-21)

### Improvements:

- support streaming without keyset pagination

- add callbacks for bulk actions on manual actions

- base case iterative bulk destroy implemented

- add iterative, streaming implementation for bulk updates

- test `ASH_THREE` subprojects

## [v2.17.14](https://github.com/ash-project/ash/compare/v2.17.13...v2.17.14) (2023-12-20)

### Bug Fixes:

- empty milliseconds for utc datetime must have precision 6

- ensure actor & authorize? contexts are set even if not provided

- ignore load/limit/offset in aggregate queries, instead of raising

- properly set `changed?` for all changesets

- honor tenant option on aggregates

- pass proper context into manual actions, remove unnecessary changeset code

- ensure actions always raise an error class

### Improvements:

- detect impending `manage_relationship` calls when checking attribute presence

- add stacktrace context to errors better

- support tenancy on manual actions

- lay the groundwork for fully atomic actions

- rewrite creates to not use `Ash.Engine`

- remove Ash.Engine from update/destroy actions

## [v2.17.13](https://github.com/ash-project/ash/compare/v2.17.12...v2.17.13) (2023-12-14)

### Bug Fixes:

- properly unnested union values passed into `Ash.Type.Union.prepare_change_array`

### Improvements:

- add `Ash.Error.from_json/2`

- accept expressions in `Ash.Query.calculate`

## [v2.17.12](https://github.com/ash-project/ash/compare/v2.17.11...v2.17.12) (2023-12-14)

### Bug Fixes:

- thread context through when setting source constraint on embeds

### Improvements:

- honor field policies in sort expressions

## [v2.17.11](https://github.com/ash-project/ash/compare/v2.17.10...v2.17.11) (2023-12-13)

### Bug Fixes:

- don't create invalid datetimes when scrubbing microseconds

- prepare change with `nil` old value on union type change

- properly prepare union value changes when old & new are union structs

- fix `dump_to_embedded_array`

- test failures and credo issue

### Improvements:

- additional atomic callbacks

- add `warn_on_transaction_hooks?: false` config

- accept an action input in `Ash.Error.to_ash_error/3`

- include tenant in change context

## [v2.17.10](https://github.com/ash-project/ash/compare/v2.17.9...v2.17.10) (2023-12-10)

### Bug Fixes:

- add back in api level verifiers

### Improvements:

- support `nil` values in struct type callbacks

## [v2.17.9](https://github.com/ash-project/ash/compare/v2.17.8...v2.17.9) (2023-12-07)

### Bug Fixes:

- don't apply default limit unless pagination is required

- properly handle union changes for lists of embeds

- honor `default_limit` option in pagination

### Improvements:

- support `embed_nil_values?` for trimming down stored embeds

## [v2.17.8](https://github.com/ash-project/ash/compare/v2.17.7...v2.17.8) (2023-12-06)

### Bug Fixes:

- add back in `builtin_predicate_operators/0`

- various runtime expression evaluation fixes

- honor read action for `Api.get` calls.

- various fixes to calculation expansion and execution

### Improvements:

- use loaded calculation values in expressions

## [v2.17.7](https://github.com/ash-project/ash/compare/v2.17.6...v2.17.7) (2023-11-29)

### Bug Fixes:

- don't eager evaluate composite type construction

### Improvements:

- forbid using resources as types

- add `composite_type/2` and `composite_type/3`

## [v2.17.6](https://github.com/ash-project/ash/compare/v2.17.5...v2.17.6) (2023-11-27)

### Bug Fixes:

- ensure NewType honors new composite callbacks

### Improvements:

- support key aliases for composite types

## [v2.17.5](https://github.com/ash-project/ash/compare/v2.17.4...v2.17.5) (2023-11-27)

### Bug Fixes:

- properly create new vectors from strings

### Improvements:

- add `composite?/1` and `composite_types/1` to `Ash.Type`

## [v2.17.4](https://github.com/ash-project/ash/compare/v2.17.3...v2.17.4) (2023-11-24)

### Bug Fixes:

- properly resolve nested calculation dependencies

- don't apply sort on manage relationship lookup

- don't apply filter on manage relationship lookup if it has a parent expr

- change_attribute failing on a union attribute (#778)

- convert upsert fields before passing to data layer (#777)

## [v2.17.3](https://github.com/ash-project/ash/compare/v2.17.2...v2.17.3) (2023-11-16)

### Bug Fixes:

- use `sort` and `filter` to `synonymous_relationship` checks

## [v2.17.2](https://github.com/ash-project/ash/compare/v2.17.1...v2.17.2) (2023-11-16)

### Bug Fixes:

- properly set actor context on calc expressions in ets data layer

- properly pass authorize? option when loading aggregates

- properly associate lateral join records with `no_attributes? true`

- set aggregate context as well as calculation context in filters

- set actor when computing aggregates that reference calculations

- dialyzer issues on sort

## [v2.17.1](https://github.com/ash-project/ash/compare/v2.17.0...v2.17.1) (2023-11-14)

### Bug Fixes:

- properly return constraints in aggregate get_type

- properly include relationship name message when relationship cannot be found (#770)

## [v2.17.0](https://github.com/ash-project/ash/compare/v2.16.1...v2.17.0) (2023-11-13)

### Features:

- Expand upsert_fields option (#761)

### Bug Fixes:

- properly thread constraints through aggregates

- remove destroyed or unrelated data from the relationship (#767)

- properly strip extra record requested to detect `more?` pages.

- don't attempt to key a struct

### Improvements:

- honor `authorize?: false` option in generic actions

## [v2.16.1](https://github.com/ash-project/ash/compare/v2.16.0...v2.16.1) (2023-10-27)

### Bug Fixes:

- ensure item constraints are passed to array casting

- handle non-list values in `Ash.Actions.Sort.process/4`

- optimize and make `Ash.Type` more consistent

- fix typespec for `include_source/2`

### Improvements:

- detect more parent expressions

## [v2.16.0](https://github.com/ash-project/ash/compare/v2.15.20...v2.16.0) (2023-10-25)

### Features:

- Add unknown argument error when passing an unknown key to an action. (#750)

### Bug Fixes:

- don't reorder global validations/changes

- use latest spark, and new persisters callback

- properly validate belongs_to relationships

- remove invalid usages of `unsafe_change_attribute/3`

- handle builtin types in unions (#752)

### Improvements:

- Add ash_three? feature flag for Ash 3.0 related behaviors.

## [v2.15.20](https://github.com/ash-project/ash/compare/v2.15.19...v2.15.20) (2023-10-24)

### Bug Fixes:

- Change heading levels in generated livebook to have only one H1 (#747)

- code gen interfaces check type first argument (#749)

- properly support `get` in `Ash`

- add back in accidentally removed transformer

- properly determine resource from `Ash.get!/2`

- cast functional default values

- temporarily omit overzealous validation

- properly honor `max_concurrency` option

- support tenant option in api.can

- properly use constraints when casting expression values

- don't re-case constraints in the `type` function

### Improvements:

- add `Ash.Test.assert_has_error` and `Ash.Test.refute_has_error`

- support `to_error_class` taking changeset/query/input

- add "filename" parameter to the livebook generator. (#746)

- support an `api` option to `use Ash.Resource` (#715)

- support an `api` option to `use Ash.Resource`

- add functions to `Ash` for resources w/ configured apis

- default code_interface.define_for to resource's ash api

- cast_input for default values at compile time

- optimize bulk creates where results are not returned

- rewrite bulk creates, optimize changeset functions (#744)

- better storage_type handling, undo function change

## [v2.15.19](https://github.com/ash-project/ash/compare/v2.15.18...v2.15.19) (2023-10-17)

### Bug Fixes:

- handle new type constraints properly

### Improvements:

- properly honor ecto type `init` callback

## [v2.15.18](https://github.com/ash-project/ash/compare/v2.15.17...v2.15.18) (2023-10-17)

### Bug Fixes:

- honor `max_concurrency` option

- handle generic actions in `list_arguments_and_attributes`

- fix type casting for embedded resources

- ensure after action hooks are run on bulk creates

- return records from batches if items have after action hooks

- don't transform errors to changesets when rolling back in with_hooks

- undo previous changes where transactional actions might not roll back

- undo regression where errors weren't wrapped in a changeset

- provide full constraints when determining `Ash.Type.NewType` storage types

- go back to original default timestamp behavior

### Improvements:

- various optimizations and compile time caching

- set default many to many options (#737)

- various performance improvements

- various optimizations for bulk create actions

- support `max_concurrency` option on bulk creates

- better error message on missing identities

- better error message on invalid data passed to `YourApi.load`

- better handling of nested errors in transactions

## [v2.15.17](https://github.com/ash-project/ash/compare/v2.15.16...v2.15.17) (2023-10-11)

### Bug Fixes:

- properly authorize access to query aggregates in all cases

## [v2.15.16](https://github.com/ash-project/ash/compare/v2.15.15...v2.15.16) (2023-10-11)

### Improvements:

- move various transformers to be verifiers

## [v2.15.15](https://github.com/ash-project/ash/compare/v2.15.14...v2.15.15) (2023-10-11)

### Improvements:

- support atomics on upserts

## [v2.15.14](https://github.com/ash-project/ash/compare/v2.15.13...v2.15.14) (2023-10-11)

### Improvements:

- ensure all changesets sent batched to data layer have same set of atomics

## [v2.15.13](https://github.com/ash-project/ash/compare/v2.15.12...v2.15.13) (2023-10-11)

### Bug Fixes:

- move misplaced file and fix typespecs for Ash.DataLayer.Ets.Info

- properly set `invalid_keys` on action inputs

- properly validate required arguments for generic actions

## [v2.15.12](https://github.com/ash-project/ash/compare/v2.15.11...v2.15.12) (2023-10-10)

### Improvements:

- set storage type for citext to `ci_string`

## [v2.15.11](https://github.com/ash-project/ash/compare/v2.15.10...v2.15.11) (2023-10-10)

### Bug Fixes:

- honor `authorize?` option for calls to aggregate

## [v2.15.10](https://github.com/ash-project/ash/compare/v2.15.9...v2.15.10) (2023-10-09)

### Bug Fixes:

- handle `false` values properly when passed to flows

### Improvements:

- support to-one reference paths in calculations

- add `Ash.Sort.expr_sort`. In 3.0 sort should be a macro

## [v2.15.9](https://github.com/ash-project/ash/compare/v2.15.8...v2.15.9) (2023-10-06)

### Bug Fixes:

- properly rollback transactions on returned errors in generic actions

- generate keysets immediately after read action

- prepare_change_array on embedded types needs to handle `nil`

- handle_change_array on embedded types needs to honor `nil`

### Improvements:

- allow overriding `cast_input/2` on `NewType`

## [v2.15.8](https://github.com/ash-project/ash/compare/v2.15.7...v2.15.8) (2023-10-03)

### Bug Fixes:

- don't use `||` when fetching arguments because `false || nil` is `nil`

- handle exceptions in generic actions

- fix types for `min`/`max` constraints in `Type.Float` (#718)

- lower compile time dependencies

- raise cleaner error on missing action in bulk creates

- allow for `ref` to contain nested templates

### Improvements:

- massage changesets & queries in `Ash.Error.to_ash_error/3`

## [v2.15.7](https://github.com/ash-project/ash/compare/v2.15.6...v2.15.7) (2023-09-29)

### Bug Fixes:

- return unions as is if load is empty (#714)

## [v2.15.6](https://github.com/ash-project/ash/compare/v2.15.5...v2.15.6) (2023-09-29)

### Bug Fixes:

- unions, only load through types when loadable

- handle empty list loads

## [v2.15.5](https://github.com/ash-project/ash/compare/v2.15.4...v2.15.5) (2023-09-28)

### Bug Fixes:

- ensure constraints are properly set in map/new_types

### Improvements:

- don't double cast ci strings

## [v2.15.4](https://github.com/ash-project/ash/compare/v2.15.3...v2.15.4) (2023-09-28)

### Bug Fixes:

- only set non-nil values unless **keep_nil** in seed creation

## [v2.15.3](https://github.com/ash-project/ash/compare/v2.15.2...v2.15.3) (2023-09-28)

### Bug Fixes:

- Ash.Seed extracts attributes from the struct now

## [v2.15.2](https://github.com/ash-project/ash/compare/v2.15.1...v2.15.2) (2023-09-28)

### Bug Fixes:

- properly perform field authorization on loaded through types

- usage of `get_by` with `belongs_to` attribute (#712)

## [v2.15.1](https://github.com/ash-project/ash/compare/v2.15.0...v2.15.1) (2023-09-27)

### Bug Fixes:

- static checks with conditions could be overly or insufficiently restrictive

- set field policy opts on field policy conditions

- move `Resource.Transformers.BelongsToSourceField` into entity (#709)

### Improvements:

- add `context` option to `bulk_create`

## [v2.15.0](https://github.com/ash-project/ash/compare/v2.14.21...v2.15.0) (2023-09-27)

### Features:

- expose query or changeset to field policies (#701)

### Bug Fixes:

- don't authorize on identity usage validations

- handle empty batches in bulk create

- update stream_data dependency, as we use the latest version

### Improvements:

- expose max/min constraints on `Ash.Type.Float`

- rework `utc_datetime` to `datetime`

- explicitly validate manual action return types

## [v2.14.21](https://github.com/ash-project/ash/compare/v2.14.20...v2.14.21) (2023-09-25)

### Improvements:

- deprecate old school manual actions

- better UX around nimble options errors

- remove old, now-deprecated config

- add `Ash.Query.around_transaction/2`

## [v2.14.20](https://github.com/ash-project/ash/compare/v2.14.19...v2.14.20) (2023-09-22)

### Bug Fixes:

- revert `:wrap_list` usage for `topic` in PubSub, needs recursion (#702)

## [v2.14.19](https://github.com/ash-project/ash/compare/v2.14.18...v2.14.19) (2023-09-21)

### Bug Fixes:

- more usages of `:wrap_list` type (#700)

- add missing usage of `:default_belongs_to_type` (#699)

### Improvements:

- add `sequence` generator utility

## [v2.14.18](https://github.com/ash-project/ash/compare/v2.14.17...v2.14.18) (2023-09-20)

### Bug Fixes:

- properly wrap [tracer] in Ash.Flow

- use `:wrap_list` type where appropriate (#698)

- `get_by` option can accept a single atom (#697)

- properly handle `nil` values in embedded resources

- ensure that `can` always returns an error when asked

- get type for manual action at compile time

### Improvements:

- make `storage_type` overridable by new_types

- support `map_with_tag` storage mode for `Ash.Union`.

- if no authorizers are set, anyone can do anything

- explicit error on after_action hook mismatch

## [v2.14.17](https://github.com/ash-project/ash/compare/v2.14.16...v2.14.17) (2023-09-15)

### Improvements:

- recommit the dsl cheatsheets, and update ash-ci

- add `allow_nil?` to generic actions, defaults to false

## [v2.14.16](https://github.com/ash-project/ash/compare/v2.14.15...v2.14.16) (2023-09-13)

### Bug Fixes:

- properly handle bubbled up exceptions from type casting

- typo in new tracer setting logic

- properly expose nested errors on unions

### Improvements:

- `set_handled_error/3` for when errors are returned

## [v2.14.15](https://github.com/ash-project/ash/compare/v2.14.14...v2.14.15) (2023-09-13)

### Bug Fixes:

- propertly handle configured list of tracers

## [v2.14.14](https://github.com/ash-project/ash/compare/v2.14.13...v2.14.14) (2023-09-12)

### Improvements:

- support `trace_type?/2` in tracers

- support stacktraces in `set_error`

- support multiple tracers, instead of just one

## [v2.14.13](https://github.com/ash-project/ash/compare/v2.14.12...v2.14.13) (2023-09-12)

### Bug Fixes:

- fix formatting for policies with conditions

- policy mermaid chart fix `forbid_unless` behavior

### Improvements:

- support vector types

## [v2.14.12](https://github.com/ash-project/ash/compare/v2.14.11...v2.14.12) (2023-09-05)

### Improvements:

- Allow resources to opt out of the primary key requirement. (#687)

## [v2.14.11](https://github.com/ash-project/ash/compare/v2.14.10...v2.14.11) (2023-09-04)

### Bug Fixes:

- better handling for negate error messages

## [v2.14.10](https://github.com/ash-project/ash/compare/v2.14.9...v2.14.10) (2023-09-04)

### Improvements:

- raise runtime error on misuse of `negate`

## [v2.14.9](https://github.com/ash-project/ash/compare/v2.14.8...v2.14.9) (2023-09-04)

### Bug Fixes:

- compile before ash tasks

## [v2.14.8](https://github.com/ash-project/ash/compare/v2.14.7...v2.14.8) (2023-09-04)

### Improvements:

- add `ash.reset` and `ash.tear_down`

## [v2.14.7](https://github.com/ash-project/ash/compare/v2.14.6...v2.14.7) (2023-09-04)

### Bug Fixes:

- fix no such action error on create changesets

- remove policy documentation due to compile time links

- show policy conditions, and fix final destination of last policy condition

- include path in unique path for anonymous aggregates

### Improvements:

- show policy mermaid chart in moduledocs

- add `mix ash.generate_policy_chart`

## [v2.14.6](https://github.com/ash-project/ash/compare/v2.14.5...v2.14.6) (2023-09-01)

### Bug Fixes:

- give anonymous aggregates constant names

- sort operator names in keyset (#684)

## [v2.14.5](https://github.com/ash-project/ash/compare/v2.14.4...v2.14.5) (2023-08-31)

### Bug Fixes:

- action.update_default -> field.update_default typo

- ensure that errors/records return the proper value in bulk creates

- properly optimized nested `get_path` calls

- simplify and fix duplicate detection in embedded resources

- better handling of runtime maps & lists

- properly handle `as` option for calculations in calculation dependencies

### Improvements:

- add `Ash.Context.to_opts/1-2`

- add topic docs for atomics

- implement atomics, expression-based changes (#682)

- hide `__order__` and `__lateral_join_source__` on records

## [v2.14.4](https://github.com/ash-project/ash/compare/v2.14.3...v2.14.4) (2023-08-22)

### Bug Fixes:

- handle inline aggregates in calculation resolver

## [v2.14.3](https://github.com/ash-project/ash/compare/v2.14.2...v2.14.3) (2023-08-22)

### Bug Fixes:

- init validations at runtime not compile time

- Ash.Filter: Don't overly constrain related references. (#678)

- handle nil constraints in `cast_input`

- properly handle in-line maps in exprs

- don't cast notloaded/forbidden values at runtime

- add required errors for missing read arguments

- don't evaluate unknown types in basic operators

### Improvements:

- support in-line aggregates

- Set api field for ActionInput when running action (#676)

- make resource's DSL attributes section patchable (#675)

- validate all actions and accept/reject fields at once. (#674)

## [v2.14.2](https://github.com/ash-project/ash/compare/v2.14.1...v2.14.2) (2023-08-17)

### Bug Fixes:

- Enum types only have `storage_type/0` still

- inspecting a query now only shows arguments explicitly set

- don't set attributes or arguments to invalid values

### Improvements:

- storage_type/0 -> storage_type/1

- Ash.Resource.Calculation: set struct defaults. (#673)

- track invalid keys, don't add required errors for them

- properly set path into error instead of on error messages

- expose union errors with path when tag is set

- find all installed extensions by default

## [v2.14.1](https://github.com/ash-project/ash/compare/v2.14.0...v2.14.1) (2023-08-14)

### Bug Fixes:

- handle atomic/string union type identifiers better

- handle empty field policy lists better internally

### Improvements:

- add initial implementation of new mix tasks

- add plural_name

## [v2.14.0](https://github.com/ash-project/ash/compare/v2.13.4...v2.14.0) (2023-08-09)

### Bug Fixes:

- optimized boolean expression building typo

## [v2.13.4](https://github.com/ash-project/ash/compare/v2.13.3...v2.13.4) (2023-08-08)

### Bug Fixes:

- don't optimized in/== predicates across incorrect boolean expressions

- various fixes with runtime evaluation of aggregates

- handle mnesia transaction errors properly

- fix badly formatted error message

- better error message in `validate_related_resource_inclusion`

### Improvements:

- add `from_many?` option to `has_one`

- initialize change opts in bulk actions

## [v2.13.3](https://github.com/ash-project/ash/compare/v2.13.2...v2.13.3) (2023-08-01)

### Bug Fixes:

- handle changeset errors in mnesia transactions

- fix builder for action preparations

### Improvements:

- validate resourcesin apis

- added `round/1` and `round/2` to expressions

- add `new/1` to all ash errors, because its nicer

- allow for `parent/1` expressions to be resolved "later"

- support `parent/1` in relationships

- enrich mnesdia data layer

## [v2.13.2](https://github.com/ash-project/ash/compare/v2.13.1...v2.13.2) (2023-07-22)

### Bug Fixes:

- before/after batch callbacks are no longer broken

## [v2.13.1](https://github.com/ash-project/ash/compare/v2.13.0...v2.13.1) (2023-07-21)

### Improvements:

- remove ecto after compile hook

## [v2.13.0](https://github.com/ash-project/ash/compare/v2.12.1...v2.13.0) (2023-07-21)

### Features:

- validate arg (#662)

- validate argument unequality

- validate argument in

### Bug Fixes:

- try to cast_stored expression calculation results

- read argument value in `ArgumentEquals` validation (#664)

### Improvements:

- add aggregate context when adding aggregates

## [v2.12.1](https://github.com/ash-project/ash/compare/v2.12.0...v2.12.1) (2023-07-19)

### Improvements:

- support `distinct_sort` in `Query.build/2`

- inspect `distinct_sort`

## [v2.12.0](https://github.com/ash-project/ash/compare/v2.11.11...v2.12.0) (2023-07-19)

### Features:

- validate argument equality (#659)

### Bug Fixes:

- `Keyword.fetch` on keywords, fix test name

- allow the query & related fields to be read before authorization status is complete

### Improvements:

- support `distinct_sort`

- use `Comp.equal?` for `actor_attribute_equals` check

## [v2.11.11](https://github.com/ash-project/ash/compare/v2.11.10...v2.11.11) (2023-07-18)

### Bug Fixes:

- only depend on calcs in runtime calcs

### Improvements:

- support distincting on calculations

- support distinct in ets data layer for testing

## [v2.11.10](https://github.com/ash-project/ash/compare/v2.11.9...v2.11.10) (2023-07-18)

### Bug Fixes:

- handle manual relationships where source field doesn't exist

## [v2.11.9](https://github.com/ash-project/ash/compare/v2.11.8...v2.11.9) (2023-07-18)

### Bug Fixes:

- only error on incorrect destination managed relationships when they are resources

### Improvements:

- support the `-` unary operator

## [v2.11.8](https://github.com/ash-project/ash/compare/v2.11.7...v2.11.8) (2023-07-13)

### Improvements:

- add `ForbiddenField` exception

- warn on api missing from config

- support resources directly in API modules

- compile time warning on resources not detected in any apis

## [v2.11.7](https://github.com/ash-project/ash/compare/v2.11.6...v2.11.7) (2023-07-13)

### Improvements:

- `exists` type aggregate

## [v2.11.6](https://github.com/ash-project/ash/compare/v2.11.5...v2.11.6) (2023-07-12)

### Improvements:

- add `at/2` function

## [v2.11.5](https://github.com/ash-project/ash/compare/v2.11.4...v2.11.5) (2023-07-12)

### Bug Fixes:

- incorrect error for casting binary UUID (#653)

- fix and improve policy breakdown logs

- incorrect typespec for `bulk_create/5`. (#646)

### Improvements:

- add `string_split` expression

- add field_policy_bypass

- optimize field selection/loading when possible

- deselect fields we know statically are not visible

## [v2.11.4](https://github.com/ash-project/ash/compare/v2.11.3...v2.11.4) (2023-07-10)

### Bug Fixes:

- add `handle_change/3` and `prepare_change/3` to `Ash.Type.Union` (#642)

## [v2.11.3](https://github.com/ash-project/ash/compare/v2.11.2...v2.11.3) (2023-07-06)

### Bug Fixes:

- properly detect selected attributes for changeset field policies

- run before_action after authorization

### Improvements:

- Add `Negate` validation (#636)

## [v2.11.2](https://github.com/ash-project/ash/compare/v2.11.1...v2.11.2) (2023-07-04)

### Bug Fixes:

- return accumulator to correct state after altering exists

- typo in at_most validation message (#640)

## [v2.11.1](https://github.com/ash-project/ash/compare/v2.11.0...v2.11.1) (2023-07-04)

### Bug Fixes:

- select attributes in load statement

## [v2.11.0](https://github.com/ash-project/ash/compare/v2.11.0-rc.3...v2.11.0) (2023-07-04)

### Bug Fixes:

- don't loan unless we need to for runtime filters

## [v2.11.0-rc.3](https://github.com/ash-project/ash/compare/v2.11.0-rc.2...v2.11.0-rc.3) (2023-06-29)

### Bug Fixes:

- load after all hooks have completed

- don't allow `is_nil` as an expression operator

- proper source field loading on related data

- reselect all selected attributes on action loading

- don't deselect fields on loading for changesets

### Improvements:

- better behavior for invalid filter value errors

## [v2.11.0-rc.2](https://github.com/ash-project/ash/compare/v2.11.0-rc.1...v2.11.0-rc.2) (2023-06-28)

### Features:

- Adds Ash.Changeset around_transaction (#632)

### Bug Fixes:

- select after setting notification data

### Improvements:

- support partial eager evaluation of functions

## [v2.11.0-rc.1](https://github.com/ash-project/ash/compare/v2.11.0-rc.0...v2.11.0-rc.1) (2023-06-24)

### Improvements:

- support specifying calculation as an option

## [v2.11.0-rc.0](https://github.com/ash-project/ash/compare/v2.10.2...v2.11.0-rc.0) (2023-06-23)

### Features:

- add `field_policies`

### Bug Fixes:

- fix field policy expressions

- handle various inconsistencies in runtime expression runner

## [v2.10.2](https://github.com/ash-project/ash/compare/v2.10.1...v2.10.2) (2023-06-22)

### Improvements:

- fix loading w/ only nil values

- add verifier for identity fields. (#626)

- adds verifier for identity fields.

## [v2.10.1](https://github.com/ash-project/ash/compare/v2.10.0...v2.10.1) (2023-06-16)

### Bug Fixes:

- check paginability before streaming

- properly set notification_data from loaded record

- properly handle lazy loaded many to many relationships

- remove duplicate doc for `authorize?` in `Query.for_read_opts` (#623)

- set notification data with loaded result

- honor `not_found_error?: true` opt in code interface get actions (#620)

- typo on keyset refactor

### Improvements:

- fix problems w/ nested loads using relationship load calcs

## [v2.10.0](https://github.com/ash-project/ash/compare/v2.9.29...v2.10.0) (2023-06-14)

### Features:

- generate some action helpers with code interface (#614)

### Bug Fixes:

- ensure attributes for keyset pagination are selected

### Improvements:

- add support for generic actions in `api.can` (#617)

## [v2.9.29](https://github.com/ash-project/ash/compare/v2.9.28...v2.9.29) (2023-06-12)

### Bug Fixes:

- can_load?/1 -> can_load?/2

- handle new load calculations in nested `loading?` checks

## [v2.9.28](https://github.com/ash-project/ash/compare/v2.9.27...v2.9.28) (2023-06-12)

### Bug Fixes:

- don't load `nil` values for runtime types

- properly set `upsert_keys` on bulk upserts

- continue refactor in code interface (#611)

### Improvements:

- properly pass calculation args in keyset filters

## [v2.9.27](https://github.com/ash-project/ash/compare/v2.9.26...v2.9.27) (2023-06-10)

### Bug Fixes:

- honor query limit when streaming

- refactor out some repetition in code interface (#609)

## [v2.9.26](https://github.com/ash-project/ash/compare/v2.9.25...v2.9.26) (2023-06-09)

### Bug Fixes:

- properly handle loading through list types

### Improvements:

- better keyset pagination behavior on first and last pages

## [v2.9.25](https://github.com/ash-project/ash/compare/v2.9.24...v2.9.25) (2023-06-09)

### Bug Fixes:

- handle api missing in code interface calls

## [v2.9.24](https://github.com/ash-project/ash/compare/v2.9.23...v2.9.24) (2023-06-09)

### Bug Fixes:

- pass empty select statement when loading on changesets

- fixes for loading through attributes

- drop proper opts keys when calling api in code interface (#608)

## [v2.9.23](https://github.com/ash-project/ash/compare/v2.9.22...v2.9.23) (2023-06-09)

### Bug Fixes:

- remove validation that was breaking real design patterns

## [v2.9.22](https://github.com/ash-project/ash/compare/v2.9.21...v2.9.22) (2023-06-09)

### Bug Fixes:

- various fixes to data loading

- properly set tenant on nested calculation loads

- properly set calc_name to resource calculation name on aliased calc loads

- check correct calculation dependency for relationship

- don't use `to_string` on the calculation names

- don't need to check current aggs/calcs in filters anymore

- set query tenant on calc dep loads

- copy tenant to step on flow build (#603)

- ensure add_tenant/1 checks the correctkey (#601)

### Improvements:

- optimize `LoadRelationship` calculation

- `Ash.Query.accessing/2` to get a list of fields being accessed

- builting `LoadAttribute` and `LoadRelationship` calculations

- warn on invalid/impossible policies

- support loading through types

- properly set tenant from initial data

## [v2.9.21](https://github.com/ash-project/ash/compare/v2.9.20...v2.9.21) (2023-06-06)

### Bug Fixes:

- properly chain batch to each change in bulk creates

- properly handle failed bulk creates with no errors

### Improvements:

- handle `nil`s in memory the same way sql would have

## [v2.9.20](https://github.com/ash-project/ash/compare/v2.9.19...v2.9.20) (2023-06-05)

### Bug Fixes:

- also do not autogenerate values for optional fields that have a generator (#599)

- rename few error files to match module names (#597)

### Improvements:

- support `changeset.load`

## [v2.9.19](https://github.com/ash-project/ash/compare/v2.9.18...v2.9.19) (2023-06-02)

### Bug Fixes:

- Only create values for attributes that did not get a generator (#595)

- remove field name from string length error message (#594)

- remove field name from string length error message

- remove old unused `Error.Changes.UnknownError`

- do not capitalize ash error messages

- change error kind code for `Ash.Error.Forbidden.Policy`

### Improvements:

- verify reserved calc names, support `as` input

## [v2.9.18](https://github.com/ash-project/ash/compare/v2.9.17...v2.9.18) (2023-05-31)

### Bug Fixes:

- properly load aggregates required for keyset pagination

## [v2.9.17](https://github.com/ash-project/ash/compare/v2.9.16...v2.9.17) (2023-05-31)

### Bug Fixes:

- properly load depended on source attributes

## [v2.9.16](https://github.com/ash-project/ash/compare/v2.9.15...v2.9.16) (2023-05-29)

### Bug Fixes:

- handle pre-hydrated predicates in expressions

- handle `nil` errors on bulk creates

- add `:forbidden` to `error_class`, lowercase code for `Forbidden` (#589)

## [v2.9.15](https://github.com/ash-project/ash/compare/v2.9.14...v2.9.15) (2023-05-27)

### Bug Fixes:

- proper required value validations in bulk creates

- don't use error count in place of errors

### Improvements:

- make `loading?/2` smarter

## [v2.9.14](https://github.com/ash-project/ash/compare/v2.9.13...v2.9.14) (2023-05-26)

### Bug Fixes:

- properly manage relationships on bulk creates

- validations could undo certain changeset changes in bulk creates

- properly upsert on non batchable rows

## [v2.9.13](https://github.com/ash-project/ash/compare/v2.9.12...v2.9.13) (2023-05-25)

### Bug Fixes:

- properly honor the `return_errors?` option

## [v2.9.12](https://github.com/ash-project/ash/compare/v2.9.11...v2.9.12) (2023-05-23)

### Bug Fixes:

- properly wrap errored changesets in bulk creates

- don't notify unless `notify?: true` in bulk creates

- properly wrap errored changesets in `{:error` in bulk creates

### Improvements:

- better support for multiple code interfaces w/ same name

## [v2.9.11](https://github.com/ash-project/ash/compare/v2.9.10...v2.9.11) (2023-05-23)

### Bug Fixes:

- swap `Exception.exception?` for `Kernel.is_exception` (#584)

### Improvements:

- handle bulk transaction errors better

## [v2.9.10](https://github.com/ash-project/ash/compare/v2.9.9...v2.9.10) (2023-05-18)

### Bug Fixes:

- accidental variable shadowing in calculation loading.

- add missing batch_size opt for bulk_create (#581)

## [v2.9.9](https://github.com/ash-project/ash/compare/v2.9.8...v2.9.9) (2023-05-18)

### Bug Fixes:

- errors on casting arrays of unions in newtypes

## [v2.9.8](https://github.com/ash-project/ash/compare/v2.9.7...v2.9.8) (2023-05-17)

### Improvements:

- add unavailable error

## [v2.9.7](https://github.com/ash-project/ash/compare/v2.9.6...v2.9.7) (2023-05-16)

### Bug Fixes:

- don't require `{:data_layer, *}` for custom locks

### Improvements:

- add `get_and_lock/1` builtin change

## [v2.9.6](https://github.com/ash-project/ash/compare/v2.9.5...v2.9.6) (2023-05-15)

### Bug Fixes:

- don't use `:map` as storage type for `Map`

### Improvements:

- Ash.Type.Module: Add `:module` type. (#578)

- handle ci strings in `cast_stored`

- better default overflow logic

- custom stale record error

## [v2.9.5](https://github.com/ash-project/ash/compare/v2.9.4...v2.9.5) (2023-05-08)

### Bug Fixes:

- user proper upsert identity for bulk operations

### Improvements:

- optimistic locking via `changeset.filters`

## [v2.9.4](https://github.com/ash-project/ash/compare/v2.9.3...v2.9.4) (2023-05-04)

### Bug Fixes:

- ecto type of map is just `:map`

## [v2.9.3](https://github.com/ash-project/ash/compare/v2.9.2...v2.9.3) (2023-05-03)

### Bug Fixes:

- unbound variable in schema definition

### Improvements:

- support bulk upserts

## [v2.9.2](https://github.com/ash-project/ash/compare/v2.9.1...v2.9.2) (2023-05-02)

### Bug Fixes:

- fix dialyzer

- proper return value for synthesized bulk creates

- assorted bulk create fixes

- set upsert context from action on create changesets

- handle invalid input in basic actions

### Improvements:

- bulk create improvements, docs

- finishing initial touches on bulk actions

- bulk create actions

- initial support for basic actions

- better messages for missed notifications

- retain stacktraces from task errors

## [v2.9.1](https://github.com/ash-project/ash/compare/v2.9.0...v2.9.1) (2023-05-01)

### Bug Fixes:

- handle map relationship data in lateral join

## [v2.9.0](https://github.com/ash-project/ash/compare/v2.8.1...v2.9.0) (2023-05-01)

### Features:

- `attribute_in/2` builtin validation

### Bug Fixes:

- proper source path for lateral joined relationships

### Improvements:

- error if relationship.api is not an Ash.Api

## [v2.8.1](https://github.com/ash-project/ash/compare/v2.8.0...v2.8.1) (2023-04-28)

### Improvements:

- more typespec fixes

- support lock option on read

- data layer can? might get a dsl, not a resource

## [v2.8.0](https://github.com/ash-project/ash/compare/v2.7.1...v2.8.0) (2023-04-28)

### Features:

- add `Api.stream!/1`

### Bug Fixes:

- set flow argument defaults

- handle join relationship in different api

- don't warn on being managed from attribute changing

- don't initially require attributes for belongs to relationships being managed

- simple equality filter should not traverse `or`s

### Improvements:

- introduce basic locking

- include resource validations by default

- validate explicit api configurations, with good error messages

## [v2.7.1](https://github.com/ash-project/ash/compare/v2.7.0...v2.7.1) (2023-04-21)

### Bug Fixes:

- more fixes to optimized boolean filter building

## [v2.7.0](https://github.com/ash-project/ash/compare/v2.6.31...v2.7.0) (2023-04-20)

### Features:

- add `fields/1` and `public_fields/1` to Ash.Resource.Info (#569)

### Bug Fixes:

- don't optimize across `or` boundaries

- handle calculation deps w/ multiple nested relationship paths

- only do tenant things in ETS if strategy is `:context`

- add the spark function version of calculations

- proper error message on invalid inline function calculation

- Add tenant attribute to identity attributes on upserts (#565)

### Improvements:

- Add upserts option to flow's create step (#566)

- Change storage type of Ash.Type.Term to :binary (#561)

- automatically gather up notifications

## [v2.6.31](https://github.com/ash-project/ash/compare/v2.6.30...v2.6.31) (2023-04-11)

### Bug Fixes:

- properly require attributes on creates

## [v2.6.30](https://github.com/ash-project/ash/compare/v2.6.29...v2.6.30) (2023-04-10)

### Bug Fixes:

- don't require values if a changeset result has been set

- properly return errors on invalid calculation arguments

- user unpaginated_read for `read_one`

- handle strings better in refs

- consider strings in `ref`

### Improvements:

- add build_action_metadata to resource builder

- add `Ash.merge_context/1` and `Ash.update_context/1`

- add constraints to maps (#556)

## [v2.6.29](https://github.com/ash-project/ash/compare/v2.6.28...v2.6.29) (2023-04-04)

### Bug Fixes:

- various ash flow return value fixes

- Fix set_new_attribute by adding missing option to set_attribute (#553)

- show context on all errors

- include error context in top level of errors

### Improvements:

- validate returnable steps in flow returns

- update touched_resources logic

- Add :field option to relate_actor change (#546)

## [v2.6.28](https://github.com/ash-project/ash/compare/v2.6.27...v2.6.28) (2023-04-03)

### Bug Fixes:

- properly handle nested calculation selects

- fix typespecs and `not_found_error?` code interface option

- typespec support `Expr.t()` in calculation builder

- remove bad default for struct constraint

- use values when already loading aggregates

### Improvements:

- thread context through when loading data

- update spark to fix deeply nested DSLs

- read_uses_flow?: Build stub for `Ash.Actions.Flows.Read`.

- properly set related resource

- simpler required attributes behavior

- add :subfield option to relates_to_actor_via (#540)

- add `accessing_from/2` builtin check

- rewrite calculation loader

- add `{set,update,get}_context` to `Ash.PlugHelpers` (#534)

- improve compile times with 🪄

- fix action typespecs

- add option `set_when_nil?` to builtin change `set_attribute` (#528)

## [v2.6.27](https://github.com/ash-project/ash/compare/v2.6.26...v2.6.27) (2023-03-22)

### Improvements:

- add `update_actor` to `Ash.Plughelpers` (#532)

## [v2.6.26](https://github.com/ash-project/ash/compare/v2.6.25...v2.6.26) (2023-03-21)

### Bug Fixes:

- use proper arguments for aggregating queries

## [v2.6.25](https://github.com/ash-project/ash/compare/v2.6.24...v2.6.25) (2023-03-21)

### Improvements:

- add `skip_global_validations?` option for actions

## [v2.6.24](https://github.com/ash-project/ash/compare/v2.6.23...v2.6.24) (2023-03-21)

### Bug Fixes:

- datetime_add was actually datetime_subtract in elixir

- prevent exception when describing some checks (#531)

### Improvements:

- Add `get_by` option to read actions. (#530)

## [v2.6.23](https://github.com/ash-project/ash/compare/v2.6.22...v2.6.23) (2023-03-21)

### Improvements:

- builder & typespec improvements

## [v2.6.22](https://github.com/ash-project/ash/compare/v2.6.21...v2.6.22) (2023-03-20)

### Bug Fixes:

- properly handle multi-resource transaction return values

- various fixes in aggregate authorization behavior

- use builtin short names for builtin type helper

- properly set builtin types

### Improvements:

- better resource detection of transactions in `Ash.Flow`

- better formatting for branches in flow charts

- add `:read_action` and `:authorize?` configurations for resource aggregates

- Add `before_action/1` and `after_action/1` to `Ash.Resource.Preparations.Builtins`. (#526)

## [v2.6.21](https://github.com/ash-project/ash/compare/v2.6.20...v2.6.21) (2023-03-13)

### Improvements:

- add `Ash.Type.NewType`

- add `:unknown` for all potential facts

- optimize policy check running with laziness

- don't select when running policy queries

## [v2.6.20](https://github.com/ash-project/ash/compare/v2.6.19...v2.6.20) (2023-03-10)

### Bug Fixes:

- remove pre_flight expression checking

### Improvements:

- Add builtin changes for lifecycle hooks. (#523)

## [v2.6.19](https://github.com/ash-project/ash/compare/v2.6.18...v2.6.19) (2023-03-09)

### Bug Fixes:

- properly return `false` on forbidden errors

## [v2.6.18](https://github.com/ash-project/ash/compare/v2.6.17...v2.6.18) (2023-03-08)

### Improvements:

- add `Api.can?` and `Api.can`

## [v2.6.17](https://github.com/ash-project/ash/compare/v2.6.16...v2.6.17) (2023-03-06)

### Bug Fixes:

- add `actor` back to transaction metadata

### Improvements:

- add `delay_global_validations?` action option

## [v2.6.16](https://github.com/ash-project/ash/compare/v2.6.15...v2.6.16) (2023-03-03)

### Bug Fixes:

- calc loading in keyset pagination

### Improvements:

- add new date expressions

## [v2.6.15](https://github.com/ash-project/ash/compare/v2.6.14...v2.6.15) (2023-02-27)

### Bug Fixes:

- properly handle allow_nil fields in keyset pagination

## [v2.6.14](https://github.com/ash-project/ash/compare/v2.6.13...v2.6.14) (2023-02-24)

### Bug Fixes:

- don't reselect fields automatically

- ensure data layer is compiled

### Improvements:

- introduce `reselect_all?` option for loading

## [v2.6.13](https://github.com/ash-project/ash/compare/v2.6.12...v2.6.13) (2023-02-24)

### Bug Fixes:

- only use `resource_to_query/2`

## [v2.6.12](https://github.com/ash-project/ash/compare/v2.6.11...v2.6.12) (2023-02-24)

### Bug Fixes:

- support `nil` values in `dump_to_native`

- properly support calc expansion in policies

- support `nil` cast for resource type

### Improvements:

- support record's as calculate arguments

- include actor in all calculation context

## [v2.6.11](https://github.com/ash-project/ash/compare/v2.6.10...v2.6.11) (2023-02-23)

### Bug Fixes:

- allow argument references in policies

### Improvements:

- don't eager load sort data

## [v2.6.10](https://github.com/ash-project/ash/compare/v2.6.9...v2.6.10) (2023-02-21)

### Bug Fixes:

- properly handle list args for functions

- set query context from `before_action` hooks into initial query

- set context into `initial_query`

### Improvements:

- Implement string_join expr function (#515)

## [v2.6.9](https://github.com/ash-project/ash/compare/v2.6.8...v2.6.9) (2023-02-21)

### Bug Fixes:

- make resource diagram task recursive

- use `private.internal?` to bypass require_actor?

- properly call `run_aggregate_query_with_lateral_join`

### Improvements:

- add `force` variations of set arguments

## [v2.6.8](https://github.com/ash-project/ash/compare/v2.6.7...v2.6.8) (2023-02-16)

### Bug Fixes:

- don't overwrite keyset when loading data

## [v2.6.7](https://github.com/ash-project/ash/compare/v2.6.6...v2.6.7) (2023-02-16)

### Bug Fixes:

- properly return `{:ok, page}` in all cases

## [v2.6.6](https://github.com/ash-project/ash/compare/v2.6.5...v2.6.6) (2023-02-16)

### Bug Fixes:

- authorize?: true by default on flows, pass actor through

- pass actor into engine

## [v2.6.5](https://github.com/ash-project/ash/compare/v2.6.4...v2.6.5) (2023-02-15)

### Bug Fixes:

- properly handle optional args in code interface

## [v2.6.4](https://github.com/ash-project/ash/compare/v2.6.3...v2.6.4) (2023-02-15)

### Bug Fixes:

- handle cases where union type is already atom

- various union fixes

- make `depend_on_resources` more reliable

- use `load/3` for builtin concat calc

### Improvements:

- Add error message when page is added but pagination is not enabled (#511)

- add union type and some tests around it

- add union short name

- add union type

- better operator type casting and expression fixes

## [v2.6.3](https://github.com/ash-project/ash/compare/v2.6.2...v2.6.3) (2023-02-12)

### Bug Fixes:

- fix non-optional pagination

### Improvements:

- add warning on usage of transaction hooks when in a surrounding transaction

- add before_transaction and after_transaction

## [v2.6.2](https://github.com/ash-project/ash/compare/v2.6.1...v2.6.2) (2023-02-10)

### Bug Fixes:

- pagination behavior is incorrect

- `nil` as page_opts is acceptable

- fix aggregate.uniq?

## [v2.6.1](https://github.com/ash-project/ash/compare/v2.6.0...v2.6.1) (2023-02-09)

### Bug Fixes:

- Type error: Suggest custom short type names as well (#508)

### Improvements:

- support uniq? for `count`/`list` attributes

## [v2.6.0](https://github.com/ash-project/ash/compare/v2.5.16...v2.6.0) (2023-02-05)

### Features:

- initial (and slightly experimental) Api.aggregate support

### Bug Fixes:

- handle `{:ref, ...}` tuple in static syntax

- various fast follows to api aggregate functions

- pattern match problem in aggregate action

- properly handle nested array type constraint validation

### Improvements:

- update spark for latest doc improvements

- better description of `action_type` check

- add more builders

- stop running preparations if one of them returns an error

## [v2.5.16](https://github.com/ash-project/ash/compare/v2.5.15...v2.5.16) (2023-02-01)

### Bug Fixes:

- load lazily after action when results are set

- fix typespec for `Ash.set_tenant/1`

## [v2.5.15](https://github.com/ash-project/ash/compare/v2.5.14...v2.5.15) (2023-01-31)

### Bug Fixes:

- set proper query aggregate when fetching aggregate values

## [v2.5.14](https://github.com/ash-project/ash/compare/v2.5.13...v2.5.14) (2023-01-30)

### Improvements:

- registry resource validations transformers -> verifiers

- better error message on unknown relationship

## [v2.5.13](https://github.com/ash-project/ash/compare/v2.5.12...v2.5.13) (2023-01-30)

### Bug Fixes:

- use destination query for aggregates, join auth to come later

- check `changeset.valid?` properly on destroys

- properly halt on action errors in `before_action` hooks

### Improvements:

- no async loads except when loading on initial data

- support length constraints on array embeds

## [v2.5.12](https://github.com/ash-project/ash/compare/v2.5.11...v2.5.12) (2023-01-29)

### Improvements:

- simplify aggregate loading, fix bug with auth query resource

## [v2.5.11](https://github.com/ash-project/ash/compare/v2.5.10...v2.5.11) (2023-01-28)

### Improvements:

- support `{:ignore, changeset}` from error handlers

- add read action metadata

## [v2.5.10](https://github.com/ash-project/ash/compare/v2.5.9...v2.5.10) (2023-01-27)

### Improvements:

- upgrade to latest spark for compile time improvements

- improve compile times by reorienting some compile deps

- add relationships to underlying ecto schemas for better escape hatches

- reselect explicitly selected queries on reload

## [v2.5.9](https://github.com/ash-project/ash/compare/v2.5.8...v2.5.9) (2023-01-22)

### Bug Fixes:

- properly surface errors from embedded attributes

- use original pkey for ets upsert lookup

## [v2.5.8](https://github.com/ash-project/ash/compare/v2.5.7...v2.5.8) (2023-01-20)

### Bug Fixes:

- properly prepend the prefix to the topic

## [v2.5.7](https://github.com/ash-project/ash/compare/v2.5.6...v2.5.7) (2023-01-20)

### Bug Fixes:

- properly load depended on aggregates

- properly handle functional manual creates

- Use proper options in `confirm` change.

- only pass action name in Ash.Changeset.for_action (#476)

- properly set the context option on changesets

- return proper value from validation

### Improvements:

- include value in invalid error messages

- cleaner inspect for calculations

- add `set_result` for conditional manual actions/caching

- update docs to new links formats for ash_hq (#483)

- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)

- don't load dependencies for calcs in query

- add `action_is/1` builtin validation

- more compile time optimizations

## [v2.5.6](https://github.com/ash-project/ash/compare/v2.5.5...v2.5.6) (2023-01-19)

### Bug Fixes:

- properly load depended on aggregates

- properly handle functional manual creates

- Use proper options in `confirm` change.

- only pass action name in Ash.Changeset.for_action (#476)

- properly set the context option on changesets

- return proper value from validation

### Improvements:

- cleaner inspect for calculations

- add `set_result` for conditional manual actions/caching

- update docs to new links formats for ash_hq (#483)

- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)

- don't load dependencies for calcs in query

- add `action_is/1` builtin validation

- more compile time optimizations

## [v2.5.5](https://github.com/ash-project/ash/compare/v2.5.4...v2.5.5) (2023-01-19)

### Bug Fixes:

- properly handle functional manual creates

- Use proper options in `confirm` change.

- only pass action name in Ash.Changeset.for_action (#476)

- properly set the context option on changesets

- return proper value from validation

### Improvements:

- add `set_result` for conditional manual actions/caching

- update docs to new links formats for ash_hq (#483)

- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)

- don't load dependencies for calcs in query

- add `action_is/1` builtin validation

- more compile time optimizations

## [v2.5.4](https://github.com/ash-project/ash/compare/v2.5.3...v2.5.4) (2023-01-18)

### Bug Fixes:

- Use proper options in `confirm` change.

- only pass action name in Ash.Changeset.for_action (#476)

- properly set the context option on changesets

- return proper value from validation

### Improvements:

- update docs to new links formats for ash_hq (#483)

- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)

- don't load dependencies for calcs in query

- add `action_is/1` builtin validation

- more compile time optimizations

## [v2.5.3](https://github.com/ash-project/ash/compare/v2.5.2...v2.5.3) (2023-01-18)

### Bug Fixes:

- Use proper options in `confirm` change.

- only pass action name in Ash.Changeset.for_action (#476)

- properly set the context option on changesets

- return proper value from validation

### Improvements:

- update docs to new links formats for ash_hq (#483)

- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)

- don't load dependencies for calcs in query

- add `action_is/1` builtin validation

- more compile time optimizations

## [v2.5.2](https://github.com/ash-project/ash/compare/v2.5.1...v2.5.2) (2023-01-12)

### Bug Fixes:

- properly set the context option on changesets

- return proper value from validation

### Improvements:

- add `action_is/1` builtin validation

- more compile time optimizations

## [v2.5.1](https://github.com/ash-project/ash/compare/v2.5.0...v2.5.1) (2023-01-11)

### Bug Fixes:

- return proper value from validation

### Improvements:

- more compile time optimizations

## [v2.5.0](https://github.com/ash-project/ash/compare/v2.5.0-rc.6...v2.5.0) (2023-01-11)

## [v2.5.0-rc.6](https://github.com/ash-project/ash/compare/v2.5.0-rc.5...v2.5.0-rc.6) (2023-01-09)

### Bug Fixes:

- set interface args to empty list by default

## [v2.5.0-rc.5](https://github.com/ash-project/ash/compare/v2.5.0-rc.4...v2.5.0-rc.5) (2023-01-09)

### Bug Fixes:

- properly zip calculation results with primary keys

### Improvements:

- add `Api.calculate/3` and `define_calculation` code interface builder

## [v2.5.0-rc.4](https://github.com/ash-project/ash/compare/v2.5.0-rc.3...v2.5.0-rc.4) (2023-01-06)

### Bug Fixes:

- more fixes for synonymous relationship paths

## [v2.5.0-rc.3](https://github.com/ash-project/ash/compare/v2.5.0-rc.2...v2.5.0-rc.3) (2023-01-06)

### Bug Fixes:

- stop seeing incorrect relationships as synonymous

## [v2.5.0-rc.2](https://github.com/ash-project/ash/compare/v2.5.0-rc.1...v2.5.0-rc.2) (2023-01-05)

### Bug Fixes:

- various filter & expression fixes

- handle aggregate defaults when evaluating expressions

## [v2.5.0-rc.1](https://github.com/ash-project/ash/compare/v2.5.0-rc.0...v2.5.0-rc.1) (2023-01-05)

### Bug Fixes:

- remove all URI encoding/decoding from core for keysets

### Improvements:

- rename `this` to `parent` for clarity

## [v2.5.0-rc.0](https://github.com/ash-project/ash/compare/v2.4.30...v2.5.0-rc.0) (2023-01-04)

### Features:

- add `this/1` for use inside `exists/2` (and other places eventually)

### Bug Fixes:

- various fixes to expression syntax

- encode the keyset for display in a URI automatically

- fix authorize? method (#472)

- calculations depending on aggregates were not including those dependencies properly

- load types marked with `cast_in_query? false` at runtime

- proper support for nested expressions in calculations

- typo in `cast_in_query?`

- allow lists in expr syntax

### Improvements:

- warn on potentially incompatible relationship attributes

- add `default_belongs_to_type` configuration

- loading an attribute is now equivalent to `ensure_selected`

- support module attributes in exprs

- Add Ash.Error.Invalid.TenantRequired error (#471)

- add constraints to query calculations

- cast_in_query? takes constraints

- support for calculations in aggregate fields

## [v2.4.30](https://github.com/ash-project/ash/compare/v2.4.29...v2.4.30) (2022-12-27)

### Bug Fixes:

- calculation builder using wrong builder

### Improvements:

- add `simple_notifiers` as a compile time optimization

## [v2.4.29](https://github.com/ash-project/ash/compare/v2.4.28...v2.4.29) (2022-12-27)

### Bug Fixes:

- handle `nil` constraints in array

- only start transactions for resources not already in one

### Improvements:

- add calculations to builder

## [v2.4.28](https://github.com/ash-project/ash/compare/v2.4.27...v2.4.28) (2022-12-23)

### Bug Fixes:

- import builtins at the action level, not the section level

- fix broken default behavior around managing relationships.

### Improvements:

- fix tests to handle new defaults

- optimize strict checks

## [v2.4.27](https://github.com/ash-project/ash/compare/v2.4.26...v2.4.27) (2022-12-21)

### Bug Fixes:

- properly include module in doc links

- add test for string generator, and fix it

- only allow `nil` in appropriate circumstances in generator

- respect selects in related_query (#464)

- use action name not struct for embedded generators

- use create generators for embedded types

- support dependencies on pruned branch steps

- ensure type compiled for generator

### Improvements:

- fix decimal generator to only compare with floats at generation

- filter min_length strings in generators

## [v2.4.26](https://github.com/ash-project/ash/compare/v2.4.25...v2.4.26) (2022-12-15)

### Improvements:

- update spark

## [v2.4.25](https://github.com/ash-project/ash/compare/v2.4.24...v2.4.25) (2022-12-15)

### Bug Fixes:

- transaction steps use `failure_mode: :stop`

### Improvements:

- better expression detection

## [v2.4.24](https://github.com/ash-project/ash/compare/v2.4.23...v2.4.24) (2022-12-10)

### Improvements:

- more dependable notifications, support custom notifications better

## [v2.4.23](https://github.com/ash-project/ash/compare/v2.4.22...v2.4.23) (2022-12-08)

### Improvements:

- add more transaction types

## [v2.4.22](https://github.com/ash-project/ash/compare/v2.4.21...v2.4.22) (2022-12-08)

### Bug Fixes:

- depend on latest spark

- different formats for extensions

### Improvements:

- add `:struct` (`Ash.Type.struct`) type

## [v2.4.21](https://github.com/ash-project/ash/compare/v2.4.20...v2.4.21) (2022-12-08)

### Bug Fixes:

- don't lock specific nimble options version

### Improvements:

- replace doc links in sidebar also

- better doc replacement behavior

- dep updates & new aggregate types avg/min/max/custom

## [v2.4.20](https://github.com/ash-project/ash/compare/v2.4.19...v2.4.20) (2022-12-07)

### Bug Fixes:

- more matching fixes on manual relationships

- handle manual relationship load results when building query

### Improvements:

- only set `defaults` when attribute is actually set

- Pass context into query and changeset for\_... functions. (#460)

## [v2.4.19](https://github.com/ash-project/ash/compare/v2.4.18...v2.4.19) (2022-12-04)

### Improvements:

- set context once, early

## [v2.4.18](https://github.com/ash-project/ash/compare/v2.4.17...v2.4.18) (2022-12-01)

### Bug Fixes:

- set proper types in transaction reasons

## [v2.4.17](https://github.com/ash-project/ash/compare/v2.4.16...v2.4.17) (2022-12-01)

### Improvements:

- support data layers implementing transaction level hooks

## [v2.4.16](https://github.com/ash-project/ash/compare/v2.4.15...v2.4.16) (2022-11-30)

### Bug Fixes:

- properly authorize manage relationship calls

### Improvements:

- don't run calculation queries if no records were returned

- don't run queries with `limit: 0`

- more readable flow charts

- `not_found_error?` option on `get?: true` `read` flow steps

## [v2.4.15](https://github.com/ash-project/ash/compare/v2.4.14...v2.4.15) (2022-11-29)

### Improvements:

- add `not_found_error?` option to interface builder and when calling

## [v2.4.14](https://github.com/ash-project/ash/compare/v2.4.13...v2.4.14) (2022-11-29)

### Bug Fixes:

- properly handle arguments with default values in code interface

## [v2.4.13](https://github.com/ash-project/ash/compare/v2.4.12...v2.4.13) (2022-11-29)

### Bug Fixes:

- don't raise a backwards incompatible error message on certian changeset functions

- properly apply managed relationships on manual actions

- properly pass `resource` option in filter policies

## [v2.4.12](https://github.com/ash-project/ash/compare/v2.4.11...v2.4.12) (2022-11-25)

### Bug Fixes:

- don't revisit nodes in the ash engine

- properly map to `:destroy` step names

- handle `Ash.Flow.Step.Destroy` in path matchers

- resolve issue with `authorize_unless` and filter checks

- fix pattern match error in manage relationship reduce

### Improvements:

- optimize various solver boolean optimizations

- more comprehensively remove unnecessary clauses

- prevent changing attributes and arguments after action validation

## [v2.4.11](https://github.com/ash-project/ash/compare/v2.4.10...v2.4.11) (2022-11-22)

### Bug Fixes:

- fix typespec for Api.Info.trace_name/3

### Improvements:

- add error context to error creation / normalisation (#440)

- update hexdocs processor to link guides on hexdocs

## [v2.4.10](https://github.com/ash-project/ash/compare/v2.4.9...v2.4.10) (2022-11-21)

### Improvements:

- return invalid primary key errors for `Api.get` when the input can't be cast

- much more readable errors when building loads

- better check module validation

## [v2.4.9](https://github.com/ash-project/ash/compare/v2.4.8...v2.4.9) (2022-11-21)

### Bug Fixes:

- reselect relationship source fields when loading relationships

- make plug an optional dependency of Ash

## [v2.4.8](https://github.com/ash-project/ash/compare/v2.4.7...v2.4.8) (2022-11-19)

### Bug Fixes:

- fix `where` and `or_where` implementation

## [v2.4.7](https://github.com/ash-project/ash/compare/v2.4.6...v2.4.7) (2022-11-19)

### Improvements:

- add `where` and `or_where` to expr

## [v2.4.6](https://github.com/ash-project/ash/compare/v2.4.5...v2.4.6) (2022-11-19)

### Improvements:

- mark manual action modules as modules

## [v2.4.5](https://github.com/ash-project/ash/compare/v2.4.4...v2.4.5) (2022-11-19)

### Bug Fixes:

- properly pass a map to manual action context

- destroy action types default to accepts [] (#453)

## [v2.4.4](https://github.com/ash-project/ash/compare/v2.4.3...v2.4.4) (2022-11-18)

### Bug Fixes:

- various typespec/build fixes

- handle tuples properly in some cases in expression syntax

- Add missing `[:ash, :query]` telemetry (#451)

### Improvements:

- improve runtime expression running

- add default description for filter checks

- validate that modules exist and are documented when referenced

## [v2.4.3](https://github.com/ash-project/ash/compare/v2.4.2...v2.4.3) (2022-11-15)

### Bug Fixes:

- don't incur compile time dependency for resources used as types

- allow for not-yet-compiled resources as Ash types

- properly raise error on invalid type.

### Improvements:

- optimize sat solving

## [v2.4.2](https://github.com/ash-project/ash/compare/v2.4.1...v2.4.2) (2022-11-03)

### Bug Fixes:

- properly set error vars with list constraints

- when creating changesets/queries that already have arguments, revalidate arguments

### Improvements:

- update to latest spark

- support statically configured upsert actions

- add more builders

## [v2.4.1](https://github.com/ash-project/ash/compare/v2.4.0...v2.4.1) (2022-10-31)

### Bug Fixes:

- fix depend on resources to depend on each resource

- allow references on both sides of `in`

- properly upsert all explicitly changed fields

- traverse maps for `template_references_actor?/1`

### Improvements:

- replace templates in change/preparation/validation opts

## [v2.4.0](https://github.com/ash-project/ash/compare/v2.3.0...v2.4.0) (2022-10-31)

### Features:

- support anonymous functions in DSL

These include:

    - custom create/read/update/destroy actions
    - changes
    - preparations
    - validations
    - calculations
    - manual relationships

    See the respective DSL guides for more.

### Bug Fixes:

- don't add required belongs_to error if changeset is invalid (#437)

- don't lazy load when managing relationships

### Improvements:

- support anonymous functions for various behaviour based options

- add more ergonomic manual action definitions.

- more additions to the resource builder, update spark

## [v2.3.0](https://github.com/ash-project/ash/compare/v2.2.0...v2.3.0) (2022-10-27)

### Features:

- Ash.PlugHelpers: standardise conn interface for actors/tenants. (#432)

- add `Ash.Resource.Builder`, the start of DSL builder utilities of rextension writing

### Bug Fixes:

- DataLayer: incorrect typespec for `run_query/2` callback. (#431)

- in Ash.Seed, don't try to update a non-loaded record

- properly load manual to_one relationships

- properly compare against decimal values

### Improvements:

- pass tenant to calculation query explicitly

- allow using `get_path/2` by name, as well as bracket access

- SVG, PDF, PNG, Markdown and plain mermaid formats (#428)

- optimize nested `exists` filter statements

- support floats & decimals in the `compare` validation

## [v2.2.0](https://github.com/ash-project/ash/compare/v2.1.0...v2.2.0) (2022-10-21)

### Features:

- add `Ash.Api.Info.depend_on_resources/1` to get the list of resources at compile time

### Bug Fixes:

- don't attempt to re-authorize access to already retrieved records in `Api.load/2`

### Improvements:

- when returning a page, choose keyset if `before` or `after` was supplied

- add keysets to records if any action supports keysets

- show conditions in policy breakdowns

## [v2.1.0](https://github.com/ash-project/ash/compare/v2.0.0...v2.1.0) (2022-10-19)

### Features:

- Custom short names for types (#423)

A compile env can be set to allow customizing the available type short names. This supports two things:

1. Adding custom type short names, like `attribute :price, :money` mapping to `MyApp.Type.Money`
2. Overriding the builtin type short names, like `attribute, :price, :string` mapping to a custom string type implementation (there is likely no reason to do this)
   Commit with unknown type in: feat: Custom short names for types (#423)

See the docs for `Ash.Type` for more information

- add `now()` to expressions

### Bug Fixes:

- set defaults before running changes

### Improvements:

- sort relationship in order of input when managing it

This helps with things like https://github.com/ash-project/ash_phoenix/issues/57
which involve rendering the relationship value after editing it. Retaining
the order allows direct reuse without any gymnastics

## [v2.0.0](https://github.com/ash-project/ash/compare/v1.53.3...v2.0.0) (2022-10-17)

### Features:

- basic livebook generator and mix task (#420)

- mermaid class diagram mix task (#417)

### Bug Fixes:

- properly lateral join when possible

- use `prepend?: true` when applying relationship sorts

- don't miss dependencies in flow diagrams

- fix deps finding in flow charts & flows

- properly load calcs/aggs on manual relationships

- properly load nested manual relationships

- allow overriding validation message on a list of errors (#412)

- reraise errors on task error

- don't show dependencies for run_flow steps in expanded view(they are duplicates)

### Improvements:

- don't eager evaluate `type/2`

- support depending on requests that will be added

- support dynamic action steps in `Ash.Flow`

- add `prepend?: true` option to sort

- use `simple_equality?/0` to allow for optimized equality checking

- mermaid mix task for ER diagrams (#415)

- try to resolve flaky tests by not using named tables for private ets resources

- better unknown error handling

- allow passing query or changeset in can/can?/4 (#410)

## [v2.0.0-rc.15](https://github.com/ash-project/ash/compare/v2.0.0-rc.14...v2.0.0-rc.15) (2022-10-10)

### Bug Fixes:

- handle upsert_identity better with ets/mnesia

- always set source on attributes

### Improvements:

- Improve error when actions reject and accept keys overlap (#405)

- update to latest spark

## [v2.0.0-rc.14](https://github.com/ash-project/ash/compare/v2.0.0-rc.13...v2.0.0-rc.14) (2022-10-07)

### Features:

- list arguments for resource actions in class diagrams (#399)

### Bug Fixes:

- fix chart links rendering

- make `loading?/2` know about calcs and aggs

- properly set source on attributes

- policy fixes from pair session (#403)

- don't evaluate expressions incorrectly after casting

### Improvements:

- add `type` function to ash core

- Allow a single `where` condition for validations (#407)

- haltable flows, branch step type

- simplify async task strategy

- clean up new create authorization simplification

- remove the need for `SetTypes`

- add some info to policy errors

- experimental support for calcualtions accepting expression arguments

- various Ash.Flow improvements, including returning the new `Ash.Flow.Result`

## [v2.0.0-rc.13](https://github.com/ash-project/ash/compare/v2.0.0-rc.12...v2.0.0-rc.13) (2022-10-04)

### Features:

- `show_private?` option for diagrams (#396)

- generate mermaid entity relationship diagrams from a given api (#376)

### Bug Fixes:

- add back in `new/2` to Changeset

- properly load nested calcs

- switch from no_depend_modules in most places

- properly display compare/2 error message

- use the short type for aggregate types

- `kind_to_type/2` returns tagged tuple

### Improvements:

- allow select/load callbacks for calcs to return irrelevant keys

- optimize load equality matching by not using `Comp`

- Forbid reserved field names (#388)

- validate accepted and rejected attributes in actions (#395)

- support zero argument functions in `compare/2`

## [v2.0.0-rc.12](https://github.com/ash-project/ash/compare/v2.0.0-rc.11...v2.0.0-rc.12) (2022-09-30)

### Improvements:

- optimize for `relates_to_actor_via`

## [v2.0.0-rc.11](https://github.com/ash-project/ash/compare/v2.0.0-rc.10...v2.0.0-rc.11) (2022-09-29)

### Bug Fixes:

- use `at_path` when parsing `Exists`

- properly require a condition of a following bypasses

- don't transform == nil to is_nil automatically

- pass path down to keyword list errors

### Improvements:

- optimize relates_to_actor_via checks

## [v2.0.0-rc.10](https://github.com/ash-project/ash/compare/v2.0.0-rc.9...v2.0.0-rc.10) (2022-09-28)

### Bug Fixes:

- bad pattern in `filter.ex`, fix dialyzer

- attempt to evaluate filter checks for strict checks

- only return errors when there actually are errors

- return an error if `data_layer_query/2` is given a query with errors

- various fixes with complex policy statements

- ensure fields selected in-line when loading calcs

- handle statically false conditions in filter logic

- cast embedded datetimes properly

- Ash.Calculation: fix return type for `load/3` callback. (#384)

- warn instead of raise on `:replace` usage

- handle var_args expression with literal args

### Improvements:

- catch more cases in preflight authorization checks

- lazily set required loads/selects for calcs/sorts

- reselect any necessary fields when loading calcs

- set context when creating related filters allowing checks like `filtering_on`

- simplify filter statements further

- don't overconstraint filters on related data

- any filter being statically true means `:authorized`

- properly mark conditions w/ access_type

- use `IsNil` instead of `Eq` when either side is `nil`

- handle string dates for embeds

- remove **timestamps** in favor of simpler macro

## [v2.0.0-rc.9](https://github.com/ash-project/ash/compare/v2.0.0-rc.8...v2.0.0-rc.9) (2022-09-21)

### Bug Fixes:

- fix `replace_relationship` type

## [v2.0.0-rc.8](https://github.com/ash-project/ash/compare/v2.0.0-rc.7...v2.0.0-rc.8) (2022-09-21)

### Bug Fixes:

- properly handle args/nested expression for tuple calcs

- add a case for calculations as tuples in expr filters

- return count, not {:ok, count}

- bad return value when async fetching counts

- remove dbg() call

### Improvements:

- update to latest spark, support dsls in resource info

- deprecate `:replace` in favor of `:append_and_remove`

- add `loading?/1` query helper

- add `loading/1` built in check

## [v2.0.0-rc.7](https://github.com/ash-project/ash/compare/v2.0.0-rc.6...v2.0.0-rc.7) (2022-09-15)

### Bug Fixes:

- `nil` casts as any type (sort of)

- return `nil` on `nil` inputs for length/1

- properly reraise errors raised in tasks

- properly return errors from tasks

- use `Comp.equal?/2` when finding loaded data matches

## [v2.0.0-rc.6](https://github.com/ash-project/ash/compare/v2.0.0-rc.5...v2.0.0-rc.6) (2022-09-15)

### Bug Fixes:

- properly error on types when evaluating expressions at runtime

- properly surface errors all the way from runtime filters

- properly catch errors when running expressions at runtime

### Improvements:

- Implement length function (#379)

## [v2.0.0-rc.5](https://github.com/ash-project/ash/compare/v2.0.0-rc.4...v2.0.0-rc.5) (2022-09-14)

### Bug Fixes:

- inspect the match for default message

### Improvements:

- validate aggregate paths supported

- add `filterable?` option to relationships

- add data layer capability for aggregate relationships & filter relationships

- add guide on manual relationships

## [v2.0.0-rc.4](https://github.com/ash-project/ash/compare/v2.0.0-rc.3...v2.0.0-rc.4) (2022-09-12)

### Bug Fixes:

- fix keyset pagination ordering bug

- short names are snake cased

- properly do pagination

- handle pins in exists

- add better error for `exists/2`

- use root_resource for `related` path in filter

- add `match/3` to upgrading guide

- set root_resource in `exists` parsing

- error fetching relationships in filter expressions

- filter check typespecs

### Improvements:

- add `aggregate_type/2` helper

- make two queries for full keyset pagination support

## [v2.0.0-rc.3](https://github.com/ash-project/ash/compare/v2.0.0-rc.2...v2.0.0-rc.3) (2022-09-06)

### Bug Fixes:

- runtime filter handle new relationship shape

### Improvements:

- add `exists/2` expression

## [v2.0.0-rc.2](https://github.com/ash-project/ash/compare/v2.0.0-rc.1...v2.0.0-rc.2) (2022-09-04)

### Bug Fixes:

- the semantics of `forbid_unless` were not wrong

## [v2.0.0-rc.1](https://github.com/ash-project/ash/compare/v2.0.0-rc.0...v2.0.0-rc.1) (2022-09-04)

### Bug Fixes:

- `forbid_unless` expression compilation

- fix runtime filter join simulation for multiple rows

## [v2.0.0-rc.0](https://github.com/ash-project/ash/compare/v1.53.3...v2.0.0-rc.0) (2022-09-04)

### Bug Fixes:

- Initial Ash 2.0.0-rc.0 release!

## [v1.53.3](https://github.com/ash-project/ash/compare/v1.53.2...v1.53.3) (2022-08-22)

### Bug Fixes:

- False default value for argument is nil in changeset (#364)

- ignore belongs_to in preflight attribute check

- clean up relationship validation logic

- clean up logic around preflight belongs_to validation

### Improvements:

- add `value_is_key` option for managed relationships

- Replace usage of Timex.shift with builtin Calendar functions (#362)

- handle required but not accepted values better

## [v1.53.2](https://github.com/ash-project/ash/compare/v1.53.1...v1.53.2) (2022-08-10)

### Bug Fixes:

- persist a nil actor properly

## [v1.53.1](https://github.com/ash-project/ash/compare/v1.53.0...v1.53.1) (2022-08-10)

### Bug Fixes:

- properly set authorize?: false on runtime filter

- explicitly don't authorize the runtime filter authorization logic

- fix eager function/operator evaluation

- scrub values properly, same as last bug

- map update bug when sanitizing boolean expressions

- fixs runtime filter fallbacks

### Improvements:

- support `authorize?` as a changeset option

- add `actor_present` policy

- add `error?` option to get

- fix various operator evaluators

## [v1.53.0](https://github.com/ash-project/ash/compare/v1.52.0-rc.22...v1.53.0) (2022-08-04)

### Bug Fixes:

- (attempt) to fix calc loading issue

## [v1.52.0-rc.22](https://github.com/ash-project/ash/compare/v1.52.0-rc.21...v1.52.0-rc.22) (2022-08-03)

### Bug Fixes:

- actually use `warn_on_empty?` config

- check for actor on query/changeset for actor context

- pass actor opt down

- don't skip setting tenant when actor is present

- don't use `apply/3` on kernel macros

- small bug in DSL transformer manipulation.

- && and || don't short-circuit to `nil`

- `{:ok, _}` -> `{:known, _}` when evaluating operators

- fix bad evaluation case for operators

- ensure we only take unique related records when lazy loading

### Improvements:

- add warnings to DSL transformer returns

- warn on empty registries

- better sanitization around sensitive attributes in filters

- change `always_authorize?` to `authorize` for multiple options

- add error message for manual action missed

## [v1.52.0-rc.21](https://github.com/ash-project/ash/compare/v1.52.0-rc.20...v1.52.0-rc.21) (2022-07-19)

### Bug Fixes:

- use `Map.get/2` when getting paths if the value is a struct

### Improvements:

- add || and && operators

- sort parsing helpers

- add `Ash.Sort.parse_input!/2`

- add `transfer_context/1` and `get_context_for_transfer/0`

- add process-based actor, tenant and query/changeset context

- add `always_authorize?` and `require_actor?` to api config

- support paths in `actor/1`

## [v1.52.0-rc.20](https://github.com/ash-project/ash/compare/v1.52.0-rc.19...v1.52.0-rc.20) (2022-07-14)

### Features:

- add can?/4 policy utility (#349)

- add can?/4 policy utility

### Improvements:

- add default guide to doc_index

## [v1.52.0-rc.19](https://github.com/ash-project/ash/compare/v1.52.0-rc.18...v1.52.0-rc.19) (2022-07-13)

### Bug Fixes:

- make mnesia and ets work properly when sharing tables

- make updates properly merge with mnesia and ets

- `attribute_writable?` also makes it public

### Improvements:

- code_interface optional arguments

- improve behavior of `lazy?: true` option

## [v1.52.0-rc.18](https://github.com/ash-project/ash/compare/v1.52.0-rc.17...v1.52.0-rc.18) (2022-07-10)

### Bug Fixes:

- fix doc links and include in release

## [v1.52.0-rc.17](https://github.com/ash-project/ash/compare/v1.52.0-rc.16...v1.52.0-rc.17) (2022-07-06)

### Bug Fixes:

- add back in `writable?` option to relationships, and add `attribute_writable?` to `belongs_to`

- don't rescue arbitrary exception/exits

### Improvements:

- add back in DSL docs

- add `match_other_defaults?` to attribute

## [v1.52.0-rc.16](https://github.com/ash-project/ash/compare/v1.52.0-rc.15...v1.52.0-rc.16) (2022-07-05)

### Bug Fixes:

- fix return type for `dump/3` ecto type

- `load/3` returns `{:ok, value} | :error`

### Improvements:

- remove relationship writability, as it all happens through arguments now

- repurpose `writable?` on `belongs_to` to make the attribute writable

## [v1.52.0-rc.15](https://github.com/ash-project/ash/compare/v1.52.0-rc.14...v1.52.0-rc.15) (2022-06-28)

### Bug Fixes:

- ensure type is always set on attributes

## [v1.52.0-rc.14](https://github.com/ash-project/ash/compare/v1.52.0-rc.13...v1.52.0-rc.14) (2022-06-28)

### Bug Fixes:

- don't try to read files that don't exist

### Improvements:

- new timeout error message and test it

## [v1.52.0-rc.13](https://github.com/ash-project/ash/compare/v1.52.0-rc.12...v1.52.0-rc.13) (2022-06-27)

### Bug Fixes:

- bad return value for `destroy!` + `return_notifications?: true`

- use digraph to order transformers

- things breaking due to stricter expectations on type function inputs

- depend on all entries in registry

### Improvements:

- `Ash.Generator`

- add `Ash.Seed` module with seed helpers

- add basic type handling for non embedded resources

- better transformer ordering error

- don't pay massive costs of a function undefined error

- optimize related resource inclusion check

## [v1.52.0-rc.12](https://github.com/ash-project/ash/compare/v1.52.0-rc.11...v1.52.0-rc.12) (2022-06-14)

### Bug Fixes:

- don't disable lexical tracker for extensions

- properly set the `changed?` context

- always return all notifications if `return_notifications?: true`

- read file at compile time for doc index

- when casting atom -> string, stringify it first

### Improvements:

- add resource to notification warning

- add `config :ash, :pub_sub, debug?: true`

- add `from` to notification, and `notification_metadata` to api

## [v1.52.0-rc.11](https://github.com/ash-project/ash/compare/v1.52.0-rc.10...v1.52.0-rc.11) (2022-06-03)

### Bug Fixes:

- move preparation init to runtime

- don't automatically url encode keyset values

- fixed bug where embedded resources would always provide defaults, not allowing you to declare your own (primary?) actions (#339)

- keyset pagination counts all rows

- fetch items closest to cursor by reversing keyset sort

- keyset + before results must be reversed

### Improvements:

- add `identity_priority` and `use_identities` option to manage_relationship

- support limit in simple data layer

- add `key` to `InvalidKeyset` error

## [v1.52.0-rc.10](https://github.com/ash-project/ash/compare/v1.52.0-rc.9...v1.52.0-rc.10) (2022-05-30)

### Improvements:

- better error message on invalid keyset

- added options to the built-in function `relate_actor/1` (#332)

- add `:_pkey` shortcut in pub_sub

- validate `pre_check_with` is set for ets/mnesia identities

- clearer and raised error message on changeset action mismatch

- accept atoms when casting strings

## [v1.52.0-rc.9](https://github.com/ash-project/ash/compare/v1.52.0-rc.8...v1.52.0-rc.9) (2022-05-23)

### Bug Fixes:

- rename `interval` to `duration_name`

- Fix concat (#326)

- Make get and get! consistent with what they raise when no record found (#325)

### Improvements:

- specify that upserts could be related at creation

## [v1.52.0-rc.8](https://github.com/ash-project/ash/compare/v1.52.0-rc.7...v1.52.0-rc.8) (2022-05-18)

### Bug Fixes:

- add resource/action to policy error context

## [v1.52.0-rc.7](https://github.com/ash-project/ash/compare/v1.52.0-rc.6...v1.52.0-rc.7) (2022-05-18)

### Bug Fixes:

- don't ignore lazy load option

## [v1.52.0-rc.6](https://github.com/ash-project/ash/compare/v1.52.0-rc.5...v1.52.0-rc.6) (2022-05-18)

### Bug Fixes:

- return `{:ok, nil}` on nil cast for strings

## [v1.52.0-rc.5](https://github.com/ash-project/ash/compare/v1.52.0-rc.4...v1.52.0-rc.5) (2022-05-17)

### Improvements:

- move ash_policy_authorizer into core as `Ash.Policy.Authorizer`

## [v1.52.0-rc.4](https://github.com/ash-project/ash/compare/v1.52.0-rc.3...v1.52.0-rc.4) (2022-05-17)

### Bug Fixes:

- run after_action in create properly

## [v1.52.0-rc.3](https://github.com/ash-project/ash/compare/v1.52.0-rc.2...v1.52.0-rc.3) (2022-05-17)

### Bug Fixes:

- require calculations specified on resource load

## [v1.52.0-rc.2](https://github.com/ash-project/ash/compare/v1.52.0-rc.1...v1.52.0-rc.2) (2022-05-13)

### Bug Fixes:

- ensure that the default accept is used

- distinct before limit and offset

- add distinct in data_layer_query

- merge calculations when merging loads

- add `no_depend_modules` for changes/validations

- match on `:unknown` not `{:ok, :unknown}`

- run calc in data layer if it returns `:unknown`

- don't ignore lexical tracker on modules in DSL

- don't treat single actions of a type as primary

- render contributor images correctly in hexdocs (#321)

- go back to old method of checking for resource

- properly load from `load` statement in calculations

- send notifications in all cases

- use unpaginated read when loading

- properly handle errors in mnesia transactions

- default custom steps to be async?: false

- get tests/dialyzer passing

### Improvements:

- work on module dependencies

- use new `no_depend_modules` everywhere

- add `no_attributes?` relationships

- add manual read actions

- calculation values from requests

- small optimizations

- more flow features/fixes, debug step

- work on transaction flow steps

## [v1.52.0-rc.1](https://github.com/ash-project/ash/compare/v1.52.0-rc.0...v1.52.0-rc.1) (2022-04-19)

### Bug Fixes:

- Handle date type cast_input with nil value (#311)

- fix expression logic

- don't throw away timeout exit

- timeouts @ the engine, not the parent process

- timeout logic was timing out after the fact

- uniqueify `list_refs` even further

- flaky test issue

- Enforce unique action names (#308)

- pass tenant option to requests properly

- Fix typespecs in Ash.Api (#307)

- fix resource relationship validation

- fix paths for load in flow

- aggregate/calculation filter issues

- show error message in `NoSuchResource`

- import builtin preparations in global preparations block

### Improvements:

- `load` on `cast_stored` in embedded type

- add descriptions to mermaid charts/flow

- tons of engine/timeout improvements

- implement NaiveDateTime type (#312)

- Improve usability of finding by primary key (ID) (#294)

- Add time type matching existing date type (#310)

- flow -> mermaid chart

- flow tenants

- fix nested map statements in flow

- add dynamic allow list

- uniqify list_references

- set default timeout to 30_000

- remove coverage from CI

- fully deprecate the `resource` entity

- add eager validate identities

- percolate `nil` values in operators in ash expression language (like SQL)

- add `return_destroyed?` option

- add `api` option to relationships

- make default actions and primary actions far more explicit

- better error messages on unknown

- better loading behavior for managed relationships

- add lazy? option for loading

- show value in atom error list

- add `modify_query` callback

- add overview

- add build_entity!

- properly parse `{:_ref, path, name}`

- add `deselect` to build

- validates attributes and relationships have unique names (#300)

- validate no embeds in api

## [v1.52.0-rc.0](https://github.com/ash-project/ash/compare/v1.51.2...v1.52.0-rc.0) (2022-03-25)

### Features:

- add `Ash.Flow`

- support recursive DSL entities.

- manual relationships

### Bug Fixes:

- add `load` option convenience for reads/code interface

- handle errors in all action types where `changeset` wasn't resolved

- always sanitize requests before we spawn them

- context name in loading manual relationships

- get aggregate query from proper engine path

- handle error case in create

- don't require attributes if an argument overrides them

- fix hanging issue when adding engine requests

- don't require `writable?: false` attributes

- pull aggregate values properly

- fix nested section configs having wrong path

- don't rescue errors in resource_formatter

- add `input/2` to resource modules

- move back to more efficient formatter

- make the formatter safer, again

- typo in changeset.ex (#291)

### Improvements:

- properly attach authorization_filters to loaded items

- add `ref` template helper

- add transaction steps to flow

- unimport to avoid name collisions in nested DSLs

- disable lexical tracker when expanding aliases

- temporarily move init to runtime for changes

## [v1.51.2](https://github.com/ash-project/ash/compare/v1.51.1...v1.51.2) (2022-02-17)

### Bug Fixes:

- don't blow away sections when formatting

- properly reorder sections in the formatter

## [v1.51.1](https://github.com/ash-project/ash/compare/v1.51.0...v1.51.1) (2022-02-17)

### Bug Fixes:

- solve reorder bugs in formatter

## [v1.51.0](https://github.com/ash-project/ash/compare/v1.50.21...v1.51.0) (2022-02-14)

### Features:

- add `source` option to attributes

## [v1.50.21](https://github.com/ash-project/ash/compare/v1.50.20...v1.50.21) (2022-02-14)

### Improvements:

- add `cast_in_query?/0` to `Ash.Type`

## [v1.50.20](https://github.com/ash-project/ash/compare/v1.50.19...v1.50.20) (2022-02-11)

### Improvements:

- small data layer improvements

## [v1.50.19](https://github.com/ash-project/ash/compare/v1.50.18...v1.50.19) (2022-02-07)

### Bug Fixes:

- include a missing module

- properly set filterability on attributes

## [v1.50.18](https://github.com/ash-project/ash/compare/v1.50.17...v1.50.18) (2022-02-07)

### Bug Fixes:

### Improvements:

- initial implementation of ash resource formatter

- ensure no reserved names can be used as constraints

## [v1.50.17](https://github.com/ash-project/ash/compare/v1.50.16...v1.50.17) (2022-01-31)

### Improvements:

- optimize `if` and `is_nil` functions

## [v1.50.16](https://github.com/ash-project/ash/compare/v1.50.15...v1.50.16) (2022-01-24)

### Bug Fixes:

- use `ash_struct_fields` to accumulate schema struct field defaults

## [v1.50.15](https://github.com/ash-project/ash/compare/v1.50.14...v1.50.15) (2022-01-19)

### Bug Fixes:

- don't call add_aggregates w/ a map

- allow new `filter` pattern in typespec

### Improvements:

- add `where` to `change`

- support data layers bulk adding aggregates

## [v1.50.14](https://github.com/ash-project/ash/compare/v1.50.13...v1.50.14) (2021-12-21)

### Bug Fixes:

- fix recursion in `do_reverse_relationship_path/3`

### Improvements:

- add more authorizer state management

- customizable exception for authorizers

## [v1.50.13](https://github.com/ash-project/ash/compare/v1.50.12...v1.50.13) (2021-12-21)

### Bug Fixes:

- properly construct reverse relationship paths

### Improvements:

- cover more potential cases in filter parsing

## [v1.50.12](https://github.com/ash-project/ash/compare/v1.50.11...v1.50.12) (2021-12-19)

### Bug Fixes:

- support new versions of ecto's struct fields

- fixes for elixir_sense plugin

## [v1.50.11](https://github.com/ash-project/ash/compare/v1.50.10...v1.50.11) (2021-12-13)

### Improvements:

- add elixir_sense extension, to be merged when ready (#275)

## [v1.50.10](https://github.com/ash-project/ash/compare/v1.50.9...v1.50.10) (2021-12-08)

### Improvements:

- add `Ash.DataLayer.Simple.set_data/2`

- complete mutually_exclusive_and_collectively_exhaustive logic

## [v1.50.9](https://github.com/ash-project/ash/compare/v1.50.8...v1.50.9) (2021-12-06)

### Bug Fixes:

- undo an unnecessary `contains` change

- WIP attempt to resolve ci_string typing errors

### Improvements:

- catch more equivalencey cases around is_nil in sat solver

## [v1.50.8](https://github.com/ash-project/ash/compare/v1.50.7...v1.50.8) (2021-12-01)

### Bug Fixes:

- case clause error in `Query.equivalent_to?`

## [v1.50.7](https://github.com/ash-project/ash/compare/v1.50.6...v1.50.7) (2021-12-01)

### Bug Fixes:

- missing rename on refactor

- typo in `unquote`

- mark `contains` as a predicate

### Improvements:

- expose small filter helpers

- make to_simple_filter fail better, add failure option

## [v1.50.6](https://github.com/ash-project/ash/compare/v1.50.5...v1.50.6) (2021-11-26)

### Improvements:

- add `Transformer.eval/3` (for special use cases only)

## [v1.50.5](https://github.com/ash-project/ash/compare/v1.50.4...v1.50.5) (2021-11-25)

### Improvements:

- track defaults being set

## [v1.50.4](https://github.com/ash-project/ash/compare/v1.50.3...v1.50.4) (2021-11-17)

### Improvements:

- add `Ash.Query.equivalent_to/2`

## [v1.50.3](https://github.com/ash-project/ash/compare/v1.50.2...v1.50.3) (2021-11-17)

### Improvements:

- add `subset_of?` and `superset_of?` query macros

## [v1.50.2](https://github.com/ash-project/ash/compare/v1.50.1...v1.50.2) (2021-11-13)

### Bug Fixes:

- run calculations inline by default

- use Date.add when using LessThanOrEqual with date value (#281)

- cast nil input on strings

### Improvements:

- support do/else blocks in if

- support `cond`

## [v1.50.1](https://github.com/ash-project/ash/compare/v1.50.0...v1.50.1) (2021-11-09)

### Bug Fixes:

- simplify and improve allow_nil checking

## [v1.50.0](https://github.com/ash-project/ash/compare/v1.49.0...v1.50.0) (2021-11-09)

### Breaking Changes:

- breaking!: explicitly setting a value to nil on create no longer falls back to the default value

## [v1.49.0](https://github.com/ash-project/ash/compare/v1.48.0-rc.30...v1.49.0) (2021-11-03)

### Bug Fixes:

- don't ask the data layer to sort if no sort is applied

- set tenant at start of query build (#278)

### Improvements:

- still filter in cases w/o a lateral join on load

## [v1.48.0-rc.30](https://github.com/ash-project/ash/compare/v1.48.0-rc.29...v1.48.0-rc.30) (2021-11-01)

### Bug Fixes:

- set storage_type to `:uuid` for Ash.Type.UUID

### Improvements:

- `only_when_valid?` on changes

## [v1.48.0-rc.29](https://github.com/ash-project/ash/compare/v1.48.0-rc.28...v1.48.0-rc.29) (2021-10-29)

### Bug Fixes:

## [v1.48.0-rc.28](https://github.com/ash-project/ash/compare/v1.48.0-rc.27...v1.48.0-rc.28) (2021-10-29)

### Bug Fixes:

- add changes from last release that I forgot

## [v1.48.0-rc.27](https://github.com/ash-project/ash/compare/v1.48.0-rc.26...v1.48.0-rc.27) (2021-10-29)

### Improvements:

- compile time optimizations via configuration

## [v1.48.0-rc.26](https://github.com/ash-project/ash/compare/v1.48.0-rc.25...v1.48.0-rc.26) (2021-10-28)

### Bug Fixes:

- correctly handle errors in validate_required_belongs_to (#276)

- set actor when loading to manage belongs_to

- cast to string before concatenating

### Improvements:

- set `action` into data layer context

## [v1.48.0-rc.25](https://github.com/ash-project/ash/compare/v1.48.0-rc.24...v1.48.0-rc.25) (2021-10-25)

### Bug Fixes:

- always lateral join for many to many relationships

### Improvements:

- add `default` option for aggregates

## [v1.48.0-rc.24](https://github.com/ash-project/ash/compare/v1.48.0-rc.23...v1.48.0-rc.24) (2021-10-25)

### Bug Fixes:

- unset `load` when running calculation queries

### Improvements:

- add `allow_async?` to calculations, default to false

- add elixir evaluation step to expression calculations

- global resource preparations

## [v1.48.0-rc.23](https://github.com/ash-project/ash/compare/v1.48.0-rc.22...v1.48.0-rc.23) (2021-10-24)

### Bug Fixes:

- breaking change! disambiguating functions in keyword filter syntax

## [v1.48.0-rc.22](https://github.com/ash-project/ash/compare/v1.48.0-rc.21...v1.48.0-rc.22) (2021-10-23)

### Bug Fixes:

- use correct typespec for `Ash.Sort.parse_input/2`

## [v1.48.0-rc.21](https://github.com/ash-project/ash/compare/v1.48.0-rc.20...v1.48.0-rc.21) (2021-10-22)

### Improvements:

- add get? metadata

## [v1.48.0-rc.20](https://github.com/ash-project/ash/compare/v1.48.0-rc.19...v1.48.0-rc.20) (2021-10-21)

### Improvements:

- custom error paths for managed relationships

## [v1.48.0-rc.19](https://github.com/ash-project/ash/compare/v1.48.0-rc.18...v1.48.0-rc.19) (2021-10-20)

### Bug Fixes:

- honor `get_by` and `get_by_identity` on bang (!) interfaces

## [v1.48.0-rc.18](https://github.com/ash-project/ash/compare/v1.48.0-rc.17...v1.48.0-rc.18) (2021-10-20)

### Improvements:

- add `get_by` and `get_by_identity` to code interface

- compile time validations for managed relationships

## [v1.48.0-rc.17](https://github.com/ash-project/ash/compare/v1.48.0-rc.16...v1.48.0-rc.17) (2021-10-19)

### Bug Fixes:

- don't require primary actions if disabled

## [v1.48.0-rc.16](https://github.com/ash-project/ash/compare/v1.48.0-rc.15...v1.48.0-rc.16) (2021-10-19)

### Improvements:

- add `primary_actions?` option

## [v1.48.0-rc.15](https://github.com/ash-project/ash/compare/v1.48.0-rc.14...v1.48.0-rc.15) (2021-10-15)

### Bug Fixes:

- don't validate allow_nil in attribute casting

## [v1.48.0-rc.14](https://github.com/ash-project/ash/compare/v1.48.0-rc.13...v1.48.0-rc.14) (2021-10-13)

### Bug Fixes:

- fix code interface on resources

### Improvements:

- breaking change! api level code interface _removed_, contact me on discord if you want a way to avoid changing to resource-based interface, but otherwise

- use proper equality checking in places where we were using simple elixir equality checking

## [v1.48.0-rc.13](https://github.com/ash-project/ash/compare/v1.48.0-rc.12...v1.48.0-rc.13) (2021-10-12)

### Bug Fixes:

- honor base query still when removing filters

## [v1.48.0-rc.12](https://github.com/ash-project/ash/compare/v1.48.0-rc.11...v1.48.0-rc.12) (2021-10-11)

### Bug Fixes:

- move related field validations to resource

- remove join_attributes, which didn't do anything anyway

### Improvements:

- add resource registry validation

## [v1.48.0-rc.11](https://github.com/ash-project/ash/compare/v1.48.0-rc.10...v1.48.0-rc.11) (2021-10-09)

### Bug Fixes:

- handle errors when validation calculation constraints

- remove certain modules from avoiding recompilation

### Improvements:

- support `module_prefix` for dsl extensions

## [v1.48.0-rc.10](https://github.com/ash-project/ash/compare/v1.48.0-rc.9...v1.48.0-rc.10) (2021-10-07)

### Bug Fixes:

- remove certain modules from avoiding recompilation

## [v1.48.0-rc.9](https://github.com/ash-project/ash/compare/v1.48.0-rc.8...v1.48.0-rc.9) (2021-10-07)

### Improvements:

- deprecation!

## [v1.48.0-rc.8](https://github.com/ash-project/ash/compare/v1.48.0-rc.7...v1.48.0-rc.8) (2021-10-06)

### Bug Fixes:

- make arrays default to nil_items?: false

### Improvements:

- breaking change! don't define code interface by default

## [v1.48.0-rc.7](https://github.com/ash-project/ash/compare/v1.48.0-rc.6...v1.48.0-rc.7) (2021-09-30)

### Bug Fixes:

- ensure changeset is up to date in `after_action` hooks

- fix a case where `unwrap_or_raise!` returned the wrong value on destroy

- fix typo on lateral join checker

- set default attribute type (in case it is explicitly set to nil) on belongs_to attributes

- if an error with no message is produced, don't attempt to concat nil with a string

### Improvements:

- simpler patterns around soft destroy actions

- add `set_option/4` to transformer helpers

- add `where` option to validate that accepts a list of validations

- prevent more unnecessary lateral joins

- only issue a lateral join when required (#269)

## [v1.48.0-rc.6](https://github.com/ash-project/ash/compare/v1.48.0-rc.5...v1.48.0-rc.6) (2021-09-20)

### Bug Fixes:

- support `on` for global changes

- return proper result when input is struct

- remove File.read! from docs

### Improvements:

- skip resource action if no changes have been made

- add `changing_attributes?/1` to determine if any attributes are changing

- add global changes

## [v1.48.0-rc.5](https://github.com/ash-project/ash/compare/v1.48.0-rc.4...v1.48.0-rc.5) (2021-09-17)

### Improvements:

- upgrade docs/tooling for elixir_sense

- set docs statically

## [v1.48.0-rc.4](https://github.com/ash-project/ash/compare/v1.48.0-rc.3...v1.48.0-rc.4) (2021-09-17)

### Improvements:

- improvements for elixirsense integration

## [v1.48.0-rc.3](https://github.com/ash-project/ash/compare/v1.48.0-rc.2...v1.48.0-rc.3) (2021-09-16)

### Improvements:

- transformer/extension improvements

- add path to errors

## [v1.48.0-rc.2](https://github.com/ash-project/ash/compare/v1.48.0-rc.1...v1.48.0-rc.2) (2021-09-15)

### Bug Fixes:

- set tenant properly on create interface

- update type spec for Ash.Sort to include single atom instead of only list. (#263)

### Improvements:

- support non-endpoint pubsub adapters

## [v1.48.0-rc.1](https://github.com/ash-project/ash/compare/v1.48.0-rc.0...v1.48.0-rc.1) (2021-09-13)

### Bug Fixes:

- check action type properly in attribute validations

## [v1.48.0-rc.0](https://github.com/ash-project/ash/compare/v1.47.12...v1.48.0-rc.0) (2021-09-13)

### Breaking Changes:

- update ecto version

### Bug Fixes:

- pass constraints to sub-fields loaded in embeddable resources

- take creates into account w/ attribute_equals and attribute_does_not_equal

- set changeset in destroy authorization request

### Improvements:

- use paramaterized types under the hood

## [v1.47.12](https://github.com/ash-project/ash/compare/v1.47.11...v1.47.12) (2021-09-12)

### Bug Fixes:

- return not found in all cases on get

- don't allow get! to return nil

- don't do db filters on creation

- honor `allow_nil_input` in required validations

### Improvements:

- add `after_action` option to create/update

- add config :ash, disable_async?: true

- add `meta[:order]` option for managed relationships

## [v1.47.11](https://github.com/ash-project/ash/compare/v1.47.10...v1.47.11) (2021-08-29)

### Bug Fixes:

- hydrate metadata types

### Improvements:

- remove metadata from read actions

## [v1.47.10](https://github.com/ash-project/ash/compare/v1.47.9...v1.47.10) (2021-08-29)

### Bug Fixes:

- update to latest picosat_elixir for releases

- cast `nil` enum values properly

- set api in destroy action hooks

### Improvements:

- support action level metadata

- add `on_match: :destroy` option

- if a map is given for a list, take it's keys

- set better error paths for invalid relationships

- include api in changeset inspect

## [v1.47.9](https://github.com/ash-project/ash/compare/v1.47.8...v1.47.9) (2021-08-11)

### Bug Fixes:

- set argument defaults early

- don't add indices to non-list inputs in managed relationships

## [v1.47.8](https://github.com/ash-project/ash/compare/v1.47.7...v1.47.8) (2021-08-05)

### Bug Fixes:

- stop managed relationships from sourcing wrong data

## [v1.47.7](https://github.com/ash-project/ash/compare/v1.47.6...v1.47.7) (2021-08-04)

### Bug Fixes:

- redact fields in the resource struct as well

- allow `before_action` to manage `belongs_to` relationships

- load belongs to relationships before managing them

- don't lookup nil input

- don't look for matches for nil

- don't accept list inputs for managed belongs_to

- don't use list inputs in belongs_to managed

- remove belongs to related after action

- fix more cases where belongs_to isn't replaced

## [v1.47.6](https://github.com/ash-project/ash/compare/v1.47.5...v1.47.6) (2021-08-01)

### Bug Fixes:

- honor `on_missing:` behavior for belongs_to relationships

- properly remove old belongs_to records

## [v1.47.5](https://github.com/ash-project/ash/compare/v1.47.4...v1.47.5) (2021-07-28)

### Bug Fixes:

- set source_query tenant in lateral join

### Improvements:

- add `belongs_to` attributes _after_ the others

## [v1.47.4](https://github.com/ash-project/ash/compare/v1.47.3...v1.47.4) (2021-07-25)

### Improvements:

- pull relationship paths out of functions

## [v1.47.3](https://github.com/ash-project/ash/compare/v1.47.2...v1.47.3) (2021-07-23)

### Bug Fixes:

- no need to trap exits anymore

## [v1.47.2](https://github.com/ash-project/ash/compare/v1.47.1...v1.47.2) (2021-07-23)

### Bug Fixes:

- don't match on explicitly `:exit`

## [v1.47.1](https://github.com/ash-project/ash/compare/v1.47.0...v1.47.1) (2021-07-23)

### Bug Fixes:

- catch normal exit message from engine

- flush engine state always

## [v1.47.0](https://github.com/ash-project/ash/compare/v1.46.13...v1.47.0) (2021-07-22)

### Features:

- Ash.Resource.Info: add &public_field/2 helper (#254)

- Ash.Resource.Info: add &sortable?/3 helper

### Bug Fixes:

- load calculations from sorts properly

- rename conflicting test name

- fix complex attribute check

- disallow aggregate/calculation sorting w/ keyset pagination

## [v1.46.13](https://github.com/ash-project/ash/compare/v1.46.12...v1.46.13) (2021-07-21)

### Bug Fixes:

- ensure calculation compiled

- don't limit/offset aggregate queries

## [v1.46.12](https://github.com/ash-project/ash/compare/v1.46.11...v1.46.12) (2021-07-20)

### Bug Fixes:

- call `get_type` in cast_stored again

## [v1.46.11](https://github.com/ash-project/ash/compare/v1.46.10...v1.46.11) (2021-07-19)

### Improvements:

- speed up type loading

- add `__order__` field to be used by data layers

## [v1.46.10](https://github.com/ash-project/ash/compare/v1.46.9...v1.46.10) (2021-07-18)

### Bug Fixes:

- missing apply_attributes clause

### Improvements:

- add `force?` option to `apply_attributes/2`

## [v1.46.9](https://github.com/ash-project/ash/compare/v1.46.8...v1.46.9) (2021-07-18)

### Bug Fixes:

- demonitor engine pid after run

## [v1.46.8](https://github.com/ash-project/ash/compare/v1.46.7...v1.46.8) (2021-07-18)

### Bug Fixes:

- on_lookup read is always on destination

## [v1.46.7](https://github.com/ash-project/ash/compare/v1.46.6...v1.46.7) (2021-07-17)

### Bug Fixes:

- set item constraints properly

### Improvements:

- add on_lookup_read_action

## [v1.46.6](https://github.com/ash-project/ash/compare/v1.46.5...v1.46.6) (2021-07-15)

### Bug Fixes:

- fix simple data layer filtering

### Improvements:

- add in error paths for managed relationships

- set error paths on managed rels

## [v1.46.5](https://github.com/ash-project/ash/compare/v1.46.4...v1.46.5) (2021-07-09)

### Improvements:

- always replace error message vars

- minimize relationship source changeset context inspect size

## [v1.46.4](https://github.com/ash-project/ash/compare/v1.46.3...v1.46.4) (2021-07-08)

### Bug Fixes:

- cast empty string to nil in atom

- accept strings for atom types again

- don't turn strings to atoms in `:atom` type

- don't do unnecessary validation in type

## [v1.46.3](https://github.com/ash-project/ash/compare/v1.46.2...v1.46.3) (2021-07-05)

### Bug Fixes:

- build aggregate paths properly

## [v1.46.2](https://github.com/ash-project/ash/compare/v1.46.1...v1.46.2) (2021-07-04)

### Improvements:

- info only `required?` flag for `has_one`

## [v1.46.1](https://github.com/ash-project/ash/compare/v1.46.0...v1.46.1) (2021-07-02)

### Bug Fixes:

- properly determine reverse aggregate relationship

- ensure calculation modules are compiled

- attempt to fix calculation compile time issues

## [v1.46.0](https://github.com/ash-project/ash/compare/v1.45.0-rc20...v1.46.0) (2021-07-02)

## [v1.45.0-rc20](https://github.com/ash-project/ash/compare/v1.45.0-rc19...v1.45.0-rc20) (2021-07-01)

### Bug Fixes:

- allow sorting on aggs, w/o loading

- ensure query in `ensure_selected`

- handle sorting empty data properly

- manage ets tables properly

- link request handler to engine and runner, solve mem leak

- ensure ci_strings casted after constraints

- Revert "more optimized types"

- revert a suboptimal change to the type system

- don't call `type()` on `:string`

- optimize ash type loading

### Improvements:

- if "" fails to cast, cast it as `nil` instead

- ReadActionRequiresActor error

- `ensure_selected` change

- don't perform `match` on `nil`

- add `{:arg, :name}` input for `set_attribute`

- revamp ci_string

- add `Ash.Type.type/1`

- more optimized types

## [v1.45.0-rc19](https://github.com/ash-project/ash/compare/v1.45.0-rc18...v1.45.0-rc19) (2021-06-29)

### Bug Fixes:

- ensure query in `ensure_selected`

- handle sorting empty data properly

- manage ets tables properly

- link request handler to engine and runner, solve mem leak

- ensure ci_strings casted after constraints

- Revert "more optimized types"

- revert a suboptimal change to the type system

- don't call `type()` on `:string`

- optimize ash type loading

### Improvements:

- if "" fails to cast, cast it as `nil` instead

- ReadActionRequiresActor error

- `ensure_selected` change

- don't perform `match` on `nil`

- add `{:arg, :name}` input for `set_attribute`

- revamp ci_string

- add `Ash.Type.type/1`

- more optimized types

## [v1.45.0-rc18](https://github.com/ash-project/ash/compare/v1.45.0-rc17...v1.45.0-rc18) (2021-06-28)

### Bug Fixes:

- handle sorting empty data properly

- manage ets tables properly

- link request handler to engine and runner, solve mem leak

- ensure ci_strings casted after constraints

- Revert "more optimized types"

- revert a suboptimal change to the type system

- don't call `type()` on `:string`

- optimize ash type loading

### Improvements:

- if "" fails to cast, cast it as `nil` instead

- ReadActionRequiresActor error

- `ensure_selected` change

- don't perform `match` on `nil`

- add `{:arg, :name}` input for `set_attribute`

- revamp ci_string

- add `Ash.Type.type/1`

- more optimized types

## [v1.45.0-rc17](https://github.com/ash-project/ash/compare/v1.45.0-rc16...v1.45.0-rc17) (2021-06-28)

### Bug Fixes:

- link request handler to engine and runner, solve mem leak

- ensure ci_strings casted after constraints

- Revert "more optimized types"

- revert a suboptimal change to the type system

- don't call `type()` on `:string`

- optimize ash type loading

### Improvements:

- if "" fails to cast, cast it as `nil` instead

- ReadActionRequiresActor error

- `ensure_selected` change

- don't perform `match` on `nil`

- add `{:arg, :name}` input for `set_attribute`

- revamp ci_string

- add `Ash.Type.type/1`

- more optimized types

## [v1.45.0-rc16](https://github.com/ash-project/ash/compare/v1.45.0-rc15...v1.45.0-rc16) (2021-06-25)

### Bug Fixes:

- ensure ci_strings casted after constraints

- Revert "more optimized types"

- revert a suboptimal change to the type system

- don't call `type()` on `:string`

- optimize ash type loading

### Improvements:

- add `{:arg, :name}` input for `set_attribute`

- revamp ci_string

- add `Ash.Type.type/1`

- more optimized types

## [v1.45.0-rc15](https://github.com/ash-project/ash/compare/v1.45.0-rc14...v1.45.0-rc15) (2021-06-25)

### Bug Fixes:

- ensure ci_strings casted after constraints

- Revert "more optimized types"

- revert a suboptimal change to the type system

- don't call `type()` on `:string`

- optimize ash type loading

### Improvements:

- revamp ci_string

- add `Ash.Type.type/1`

- more optimized types

## [v1.45.0-rc14](https://github.com/ash-project/ash/compare/v1.45.0-rc13...v1.45.0-rc14) (2021-06-24)

### Bug Fixes:

- Revert "more optimized types"

- revert a suboptimal change to the type system

- don't call `type()` on `:string`

- optimize ash type loading

### Improvements:

- add `Ash.Type.type/1`

- more optimized types

## [v1.45.0-rc11](https://github.com/ash-project/ash/compare/v1.45.0-rc10...v1.45.0-rc11) (2021-06-24)

### Bug Fixes:

- revert a suboptimal change to the type system

- don't call `type()` on `:string`

- optimize ash type loading

### Improvements:

- add `Ash.Type.type/1`

- more optimized types

## [v1.45.0-rc10](https://github.com/ash-project/ash/compare/v1.45.0-rc9...v1.45.0-rc10) (2021-06-24)

### Bug Fixes:

- optimize ash type loading

## [v1.45.0-rc9](https://github.com/ash-project/ash/compare/v1.45.0-rc8...v1.45.0-rc9) (2021-06-23)

### Bug Fixes:

- pass opts through to Jason.Encode.string/2

### Improvements:

- add `error_handler` for create/update/destroy actions

## [v1.45.0-rc8](https://github.com/ash-project/ash/compare/v1.45.0-rc7...v1.45.0-rc8) (2021-06-23)

### Bug Fixes:

- properly encode ci string to json

### Improvements:

- more engine logging

## [v1.45.0-rc7](https://github.com/ash-project/ash/compare/v1.45.0-rc6...v1.45.0-rc7) (2021-06-22)

### Bug Fixes:

- `:infinity` on engine genserver calls

## [v1.45.0-rc6](https://github.com/ash-project/ash/compare/v1.45.0-rc5...v1.45.0-rc6) (2021-06-08)

### Bug Fixes:

- hide **metadata** field on inspect

- load relationships required for calculations (optimize later)

## [v1.45.0-rc5](https://github.com/ash-project/ash/compare/v1.45.0-rc4...v1.45.0-rc5) (2021-06-08)

### Bug Fixes:

- don't halt on request handler failure

- properly error when more than 2 requests of the same type are primary

- properly process sort when the sort is an atom

- properly calculate reverse relationship paths

## [v1.45.0-rc4](https://github.com/ash-project/ash/compare/v1.45.0-rc3...v1.45.0-rc4) (2021-06-05)

### Improvements:

- support calculation sorts

## [v1.45.0-rc3](https://github.com/ash-project/ash/compare/v1.45.0-rc2...v1.45.0-rc3) (2021-06-05)

### Bug Fixes:

- always wait on the engine if it hasn't completed

## [v1.45.0-rc2](https://github.com/ash-project/ash/compare/v1.45.0-rc1...v1.45.0-rc2) (2021-06-04)

### Bug Fixes:

- always wait for engine

### Improvements:

- spawn async requests where possible

## [v1.45.0-rc1](https://github.com/ash-project/ash/compare/v1.45.0-rc0...v1.45.0-rc1) (2021-06-04)

### Bug Fixes:

- constraints on calculations

- better calculation inspect

- allow supplying stacktraces when building errors

## [v1.45.0-rc0](https://github.com/ash-project/ash/compare/v1.44.13...v1.45.0-rc0) (2021-06-04)

### Features:

- expression based calculations for filterable/sortable calculations

- expression calculations for sorting/filtering

- add compare validator (#242)

### Bug Fixes:

- aggregate authorization issues

- ensure create functions generated by code_interface accept tenant in the opts list (#243)

### Improvements:

- tons of improvements across the board

- small improvements/fixes across the board

- Update remaining builtin validators (#244)

## [v1.44.13](https://github.com/ash-project/ash/compare/v1.44.12...v1.44.13) (2021-05-28)

### Bug Fixes:

- properly process managed belongs to relationships

- cast nil -> {:ok, nil} in all cases

- set tenant even on non-tenant resources where relevant (#241)

## [v1.44.12](https://github.com/ash-project/ash/compare/v1.44.11...v1.44.12) (2021-05-23)

### Improvements:

- define embedded schemas where appropriate

## [v1.44.11](https://github.com/ash-project/ash/compare/v1.44.10...v1.44.11) (2021-05-20)

### Improvements:

- calculation.select/2 + `select` calculation option

## [v1.44.10](https://github.com/ash-project/ash/compare/v1.44.9...v1.44.10) (2021-05-20)

### Bug Fixes:

- run after_action hooks in the proper order

### Improvements:

- add `validate_destination_attribute?`

- add builtin `select` change

## [v1.44.9](https://github.com/ash-project/ash/compare/v1.44.8...v1.44.9) (2021-05-20)

### Improvements:

- set moduledoc to description if one is not set

## [v1.44.8](https://github.com/ash-project/ash/compare/v1.44.7...v1.44.8) (2021-05-19)

### Bug Fixes:

- fix dialyzer errors for enum + code interface

## [v1.44.7](https://github.com/ash-project/ash/compare/v1.44.6...v1.44.7) (2021-05-19)

### Bug Fixes:

- fix code interface + `args` combo error

### Improvements:

- support specifying the `upsert_identity` option

## [v1.44.6](https://github.com/ash-project/ash/compare/v1.44.5...v1.44.6) (2021-05-18)

### Bug Fixes:

- `ignore?: true` still accumulates changes

- properly require_attributes before setting defaults

## [v1.44.5](https://github.com/ash-project/ash/compare/v1.44.4...v1.44.5) (2021-05-18)

### Bug Fixes:

- set default values before calling resource changes

### Improvements:

- `ignore?` option for `manage_relationship` change

## [v1.44.4](https://github.com/ash-project/ash/compare/v1.44.3...v1.44.4) (2021-05-17)

### Bug Fixes:

- reverse-reverse relationship detection

## [v1.44.3](https://github.com/ash-project/ash/compare/v1.44.2...v1.44.3) (2021-05-17)

### Bug Fixes:

- support non-predicates in satsolver

## [v1.44.2](https://github.com/ash-project/ash/compare/v1.44.1...v1.44.2) (2021-05-15)

### Bug Fixes:

- raise better error w/ invalid filter expression

### Improvements:

- expose `default_value/1` in aggregate

- transactions for reads, notifications from read callbacks

## [v1.44.1](https://github.com/ash-project/ash/compare/v1.44.0...v1.44.1) (2021-05-14)

### Bug Fixes:

- handle error return in code_interface getter

## [v1.44.0](https://github.com/ash-project/ash/compare/v1.43.12...v1.44.0) (2021-05-14)

### Features:

- `on_no_match: :match` supported for to_one rels

### Bug Fixes:

- rename `context` -> `relationship_context` to avoid conflict

### Improvements:

- various managed relationship improvements

## [v1.43.12](https://github.com/ash-project/ash/compare/v1.43.11...v1.43.12) (2021-05-11)

### Improvements:

- set `__source__` context for embeds

- utility `manage_relationship_source` context

## [v1.43.11](https://github.com/ash-project/ash/compare/v1.43.10...v1.43.11) (2021-05-09)

### Bug Fixes:

- internal rename (requires version bump for other packages)

## [v1.43.10](https://github.com/ash-project/ash/compare/v1.43.9...v1.43.10) (2021-05-09)

### Bug Fixes:

- run action changes on destroy

- pattern match manage_relationship notifications fix

### Improvements:

- add `manual?` option for create/update/destroy

- ensure data layer can perform aggregates

## [v1.43.9](https://github.com/ash-project/ash/compare/v1.43.8...v1.43.9) (2021-05-09)

### Bug Fixes:

- don't fail on nil root filters

### Improvements:

- support filtering on related aggregates

- autoload aggregates used in filters

## [v1.43.8](https://github.com/ash-project/ash/compare/v1.43.7...v1.43.8) (2021-05-07)

### Bug Fixes:

- don't raise unnecessary side load error

## [v1.43.7](https://github.com/ash-project/ash/compare/v1.43.6...v1.43.7) (2021-05-07)

### Improvements:

- fix data-based side loads

## [v1.43.6](https://github.com/ash-project/ash/compare/v1.43.5...v1.43.6) (2021-05-07)

### Bug Fixes:

- IsNil function to IsNil operator

- function clause match error in not expression

## [v1.43.5](https://github.com/ash-project/ash/compare/v1.43.4...v1.43.5) (2021-05-07)

### Bug Fixes:

- limit 1 on to one side load queries

## [v1.43.4](https://github.com/ash-project/ash/compare/v1.43.3...v1.43.4) (2021-05-07)

### Improvements:

- support sorted relationships

## [v1.43.3](https://github.com/ash-project/ash/compare/v1.43.2...v1.43.3) (2021-05-06)

### Bug Fixes:

- don't consider contextual relationships as reverse relationships

- support `not` in query expressions

## [v1.43.2](https://github.com/ash-project/ash/compare/v1.43.1...v1.43.2) (2021-05-04)

### Bug Fixes:

- include aggregates in count request for aggregate filters

## [v1.43.1](https://github.com/ash-project/ash/compare/v1.43.0...v1.43.1) (2021-05-04)

### Bug Fixes:

- use base_query for aritifical limit/offset when loading

## [v1.43.0](https://github.com/ash-project/ash/compare/v1.42.0...v1.43.0) (2021-05-03)

### Features:

- rework lateral joins for many to many performance boost

### Improvements:

- add `read_action` option

## [v1.42.0](https://github.com/ash-project/ash/compare/v1.41.12...v1.42.0) (2021-04-29)

### Features:

- inner lateral join for many to many relationships

### Improvements:

- inner later join for many to many relationships

- support relationship filters

## [v1.41.12](https://github.com/ash-project/ash/compare/v1.41.11...v1.41.12) (2021-04-27)

### Improvements:

- add `has` filter predicate

## [v1.41.11](https://github.com/ash-project/ash/compare/v1.41.10...v1.41.11) (2021-04-26)

### Improvements:

- add `:list` aggregate kind

## [v1.41.10](https://github.com/ash-project/ash/compare/v1.41.9...v1.41.10) (2021-04-25)

### Bug Fixes:

- don't include `NotLoaded` in `manage_relationship`

## [v1.41.9](https://github.com/ash-project/ash/compare/v1.41.8...v1.41.9) (2021-04-23)

### Bug Fixes:

- compile time fixes

### Improvements:

- add `require_attributes` to create/update/destroy

## [v1.41.8](https://github.com/ash-project/ash/compare/v1.41.7...v1.41.8) (2021-04-21)

### Bug Fixes:

- don't consider nils for pkey matching

### Improvements:

- add first class support for enum types

- Add detailed parameter checking for Api read functions (#229)

## [v1.41.7](https://github.com/ash-project/ash/compare/v1.41.6...v1.41.7) (2021-04-18)

### Bug Fixes:

- clearer errors when resource fails to compile

- don't preload multiplicatively

- Decimal casting issues on ash_postgres (#227)

### Improvements:

- add list access to `context`

- add Resource.input/1

## [v1.41.6](https://github.com/ash-project/ash/compare/v1.41.5...v1.41.6) (2021-04-16)

### Bug Fixes:

- use items for single constraints

## [v1.41.5](https://github.com/ash-project/ash/compare/v1.41.4...v1.41.5) (2021-04-15)

### Bug Fixes:

- don't overwrite select in side_load

## [v1.41.4](https://github.com/ash-project/ash/compare/v1.41.3...v1.41.4) (2021-04-15)

### Bug Fixes:

- load relationships for management properly

- `fetch_key` bug in embedded types

- handle_indexed_maps for embedded types

## [v1.41.3](https://github.com/ash-project/ash/compare/v1.41.2...v1.41.3) (2021-04-14)

### Bug Fixes:

- handle no key provided to `NotFound`

## [v1.41.2](https://github.com/ash-project/ash/compare/v1.41.1...v1.41.2) (2021-04-13)

### Bug Fixes:

- embedded cast_stored must cast all key/values

- ci_string constraints when `nil`

- manage_relationship change turns embedded resources to maps

- fixes for common types parsing from embedded, e.g utc_datetime_usec

### Improvements:

- special provisions for casting to embedded type (e.g uuid)

## [v1.41.1](https://github.com/ash-project/ash/compare/v1.41.0...v1.41.1) (2021-04-13)

### Bug Fixes:

- `get!` should raise on `nil` not `{:ok, nil}`

## [v1.41.0](https://github.com/ash-project/ash/compare/v1.40.0...v1.41.0) (2021-04-13)

### Features:

- change `get?: true` interface functions to raise on `nil`

### Bug Fixes:

- allow_nil -> allow_nil_input

- allow api.load/2 to load calculations

### Improvements:

- add `allow_nil_input` to create actions for api layers

- add `load/1` builtin change

## [v1.40.0](https://github.com/ash-project/ash/compare/v1.39.7...v1.40.0) (2021-04-13)

### Features:

- change `get?: true` interface functions to raise on `nil`

### Bug Fixes:

- allow api.load/2 to load calculations

### Improvements:

- add `allow_nil_input` to create actions for api layers

- add `load/1` builtin change

## [v1.39.7](https://github.com/ash-project/ash/compare/v1.39.6...v1.39.7) (2021-04-12)

### Bug Fixes:

- always select necessary load fields for nested loads

## [v1.39.6](https://github.com/ash-project/ash/compare/v1.39.5...v1.39.6) (2021-04-10)

### Bug Fixes:

- always select necessary fields for side loading

## [v1.39.5](https://github.com/ash-project/ash/compare/v1.39.4...v1.39.5) (2021-04-09)

### Bug Fixes:

- logic bug in selecting specific fields

## [v1.39.4](https://github.com/ash-project/ash/compare/v1.39.3...v1.39.4) (2021-04-09)

### Improvements:

- support the datalayer selecting fields in reads

## [v1.39.3](https://github.com/ash-project/ash/compare/v1.39.2...v1.39.3) (2021-04-04)

### Improvements:

- add sum aggregate (#221)

## [v1.39.2](https://github.com/ash-project/ash/compare/v1.39.1...v1.39.2) (2021-04-04)

### Improvements:

- allow specifying that calculation can't be nil (#220)

## [v1.39.1](https://github.com/ash-project/ash/compare/v1.39.0...v1.39.1) (2021-04-03)

### Bug Fixes:

- update struct_field logic for latest ecto

- apply proper interface operation when opts aren't passed

## [v1.39.0](https://github.com/ash-project/ash/compare/v1.38.0...v1.39.0) (2021-04-01)

### Features:

- support `Ash.Query.distinct/2`

- add `build/2` query preparation

### Bug Fixes:

- manage*relationships \_before* after_action callbacks

### Improvements:

- `before_action?` on `validate`, validate inline

## [v1.38.0](https://github.com/ash-project/ash/compare/v1.37.2...v1.38.0) (2021-03-31)

### Features:

- support `Ash.Query.distinct/2`

- add `build/2` query preparation

### Bug Fixes:

- manage*relationships \_before* after_action callbacks

## [v1.37.2](https://github.com/ash-project/ash/compare/v1.37.1...v1.37.2) (2021-03-29)

### Bug Fixes:

- don't overwrite managed `belongs_to` relationships

- handle `on_lookup` + `on_no_match` for `belongs_to`

- fix required relationships and add test

- fix required relationships

- various managed_relationship fixes

## [v1.37.1](https://github.com/ash-project/ash/compare/v1.37.0...v1.37.1) (2021-03-28)

### Bug Fixes:

- fix required relationships and add test

- fix required relationships

- various managed_relationship fixes

## [v1.37.0](https://github.com/ash-project/ash/compare/v1.36.22...v1.37.0) (2021-03-25)

### Features:

- add manage relationship types

### Improvements:

- don't accept relationships on actions anymore

- require arguments

## [v1.36.22](https://github.com/ash-project/ash/compare/v1.36.21...v1.36.22) (2021-03-24)

### Bug Fixes:

- add tenant metadata before after action hooks

## [v1.36.21](https://github.com/ash-project/ash/compare/v1.36.20...v1.36.21) (2021-03-24)

### Bug Fixes:

- support type aliases in more type casting functions

- support `tenant` option in read interface

## [v1.36.20](https://github.com/ash-project/ash/compare/v1.36.19...v1.36.20) (2021-03-24)

### Bug Fixes:

- support `tenant` option in read interface

## [v1.36.19](https://github.com/ash-project/ash/compare/v1.36.18...v1.36.19) (2021-03-22)

### Bug Fixes:

- always return changeset when runner failed

## [v1.36.18](https://github.com/ash-project/ash/compare/v1.36.17...v1.36.18) (2021-03-22)

### Improvements:

- docs + dialyzer + error improvements

## [v1.36.17](https://github.com/ash-project/ash/compare/v1.36.16...v1.36.17) (2021-03-22)

### Bug Fixes:

- don't require values when managing relationships

- Revert "fix: force_change_attributes before passing to action"

## [v1.36.16](https://github.com/ash-project/ash/compare/v1.36.15...v1.36.16) (2021-03-22)

### Bug Fixes:

- force_change_attributes before passing to action

## [v1.36.15](https://github.com/ash-project/ash/compare/v1.36.14...v1.36.15) (2021-03-21)

### Bug Fixes:

- exception on invalid query arguments

- allow casting strings as uuids (for embedded types)

### Improvements:

- retain actor context from changeset

## [v1.36.14](https://github.com/ash-project/ash/compare/v1.36.13...v1.36.14) (2021-03-21)

### Improvements:

- Add float type (#204)

## [v1.36.13](https://github.com/ash-project/ash/compare/v1.36.12...v1.36.13) (2021-03-20)

### Bug Fixes:

- avoid exception in `Changeset.new/2` for bad attribute

- use ecto's uuid type under the hood

### Improvements:

- raise informative errors on bad inputs to `for_*`

## [v1.36.12](https://github.com/ash-project/ash/compare/v1.36.11...v1.36.12) (2021-03-19)

### Improvements:

- make `Ash.Error` a public module

## [v1.36.11](https://github.com/ash-project/ash/compare/v1.36.10...v1.36.11) (2021-03-19)

### Improvements:

- docs/default value for params

## [v1.36.10](https://github.com/ash-project/ash/compare/v1.36.9...v1.36.10) (2021-03-19)

### Bug Fixes:

- set `source_attribute` when replacing `belongs_to` relationship

- don't consider `false` as absent value

- set argument name in `manage_relationship`

### Improvements:

- trim whitespace in uuid

## [v1.36.9](https://github.com/ash-project/ash/compare/v1.36.8...v1.36.9) (2021-03-18)

### Improvements:

- improve the behavior of defaults

## [v1.36.8](https://github.com/ash-project/ash/compare/v1.36.7...v1.36.8) (2021-03-17)

### Bug Fixes:

- validate required attributes _after_ before_action hooks

## [v1.36.7](https://github.com/ash-project/ash/compare/v1.36.6...v1.36.7) (2021-03-17)

### Improvements:

- discard certain empty values for embed input

## [v1.36.6](https://github.com/ash-project/ash/compare/v1.36.5...v1.36.6) (2021-03-15)

### Bug Fixes:

- force*change attrs \_after* `for_create/update`

- pattern match errors in `manage_relationships`

- clean up some error cases

- only default accept to `public` attributes

- allow_nil?: false + default interaction

## [v1.36.5](https://github.com/ash-project/ash/compare/v1.36.4...v1.36.5) (2021-03-14)

### Bug Fixes:

- remove the `as` option

### Improvements:

- Add timestamps() attribute (#198)

## [v1.36.4](https://github.com/ash-project/ash/compare/v1.36.3...v1.36.4) (2021-03-13)

### Bug Fixes:

- properly validate `allow_nil?: false` on update

- properly validate `allow_nil?: false` private attributes

## [v1.36.3](https://github.com/ash-project/ash/compare/v1.36.2...v1.36.3) (2021-03-13)

### Bug Fixes:

- set argument default on cast

## [v1.36.2](https://github.com/ash-project/ash/compare/v1.36.1...v1.36.2) (2021-03-12)

### Bug Fixes:

- fix pub_sub on update

- fix `publish_all` pub_sub notifier

### Improvements:

- derive has_one destination_attribute

- finalize code API logic

- add not_found_message + violation_message for relationships

- support `get_by_<identity>` in interface

- support sublists in pub_sub topics

- support `:_tenant` in pub_sub topics

## [v1.36.1](https://github.com/ash-project/ash/compare/v1.36.0...v1.36.1) (2021-03-09)

### Bug Fixes:

- properly filter aggregates

### Improvements:

- accept `tenant` in `for_read`

## [v1.36.0](https://github.com/ash-project/ash/compare/v1.35.1...v1.36.0) (2021-03-08)

### Features:

- functional interface on the Api module

- resource aliases

### Improvements:

- update interface to accept query/changesets

- require completely unique action names

## [v1.35.1](https://github.com/ash-project/ash/compare/v1.35.0...v1.35.1) (2021-03-07)

### Bug Fixes:

- don't reverse sub-entities in DSL

## [v1.35.0](https://github.com/ash-project/ash/compare/v1.34.9...v1.35.0) (2021-03-07)

### Features:

- support `Ash.Query.select/3` and `Ash.Changeset.select/3`

## [v1.34.9](https://github.com/ash-project/ash/compare/v1.34.8...v1.34.9) (2021-03-05)

### Improvements:

- ignore destination field on some relationship inputs

## [v1.34.8](https://github.com/ash-project/ash/compare/v1.34.7...v1.34.8) (2021-03-05)

### Bug Fixes:

- various validation lifecycle fixes

- don't fetch sideloads for empty data

### Improvements:

- various validation lifecycle options

## [v1.34.7](https://github.com/ash-project/ash/compare/v1.34.6...v1.34.7) (2021-02-26)

### Bug Fixes:

- fix nested boolean expression optimization

## [v1.34.6](https://github.com/ash-project/ash/compare/v1.34.5...v1.34.6) (2021-02-24)

### Bug Fixes:

- manage_relationship fixes, input + option defaults

## [v1.34.5](https://github.com/ash-project/ash/compare/v1.34.4...v1.34.5) (2021-02-24)

### Bug Fixes:

- treat empty string as `nil` in `manage_relationship`

- be more conservative (and more correct) when optimizing predicates

## [v1.34.4](https://github.com/ash-project/ash/compare/v1.34.3...v1.34.4) (2021-02-24)

### Bug Fixes:

- treat empty string as `nil` in `manage_relationship`

- be more conservative (and more correct) when optimizing predicates

## [v1.34.3](https://github.com/ash-project/ash/compare/v1.34.2...v1.34.3) (2021-02-23)

### Bug Fixes:

- fix builtin `mange_relationship` change

## [v1.34.2](https://github.com/ash-project/ash/compare/v1.34.1...v1.34.2) (2021-02-23)

### Bug Fixes:

- support belongs_to relationships properly

## [v1.34.1](https://github.com/ash-project/ash/compare/v1.34.0...v1.34.1) (2021-02-23)

### Bug Fixes:

- authorize if actor key is present

## [v1.34.0](https://github.com/ash-project/ash/compare/v1.33.1...v1.34.0) (2021-02-23)

### Features:

- refactored manage_relationship options/behavior

### Improvements:

- many compile time fixes via code splitting

- Guess destination_attribute for has many relationships (#187)

- Implement string length validation (#183)

## [v1.33.1](https://github.com/ash-project/ash/compare/v1.33.0...v1.33.1) (2021-02-23)

### Improvements:

- many compile time fixes via code splitting

- Guess destination_attribute for has many relationships (#187)

- Implement string length validation (#183)

## [v1.33.0](https://github.com/ash-project/ash/compare/v1.32.2...v1.33.0) (2021-02-05)

### Features:

- add default_context

- add `manage_relationship/4`

- add relationship specific context (for postgres polymorphism)

- add `reject` (opposite of `accept`)

### Bug Fixes:

- support `manage_relationship` for `belongs_to`

### Improvements:

- set_context change/preparation

- set `accept` by default

## [v1.32.2](https://github.com/ash-project/ash/compare/v1.32.1...v1.32.2) (2021-01-28)

### Improvements:

- support `{:filter, _}` authorization results for changesets

## [v1.32.1](https://github.com/ash-project/ash/compare/v1.32.0...v1.32.1) (2021-01-27)

### Bug Fixes:

- only run authorization once per request

- don't error on replacing empty relationship with empty

### Improvements:

- support `tenant` option to `get/2`

- support `message` option on identities

## [v1.32.0](https://github.com/ash-project/ash/compare/v1.31.1...v1.32.0) (2021-01-25)

### Features:

- add `after_action` for queries

### Bug Fixes:

- default to calculating filters on `data_layer_query`

## [v1.31.1](https://github.com/ash-project/ash/compare/v1.31.0...v1.31.1) (2021-01-24)

### Bug Fixes:

- remove invalid boolean expression optimization

### Improvements:

- make form errors work better with phoenix

## [v1.31.0](https://github.com/ash-project/ash/compare/v1.30.2...v1.31.0) (2021-01-24)

### Features:

- add `contains/2` query function

### Bug Fixes:

- various ci_string improvements

## [v1.30.2](https://github.com/ash-project/ash/compare/v1.30.1...v1.30.2) (2021-01-22)

### Bug Fixes:

- add explicit jason dependency

## [v1.30.1](https://github.com/ash-project/ash/compare/v1.30.0...v1.30.1) (2021-01-22)

### Bug Fixes:

- update elixir versions in CI

## [v1.30.0](https://github.com/ash-project/ash/compare/v1.29.0-rc1...v1.30.0) (2021-01-22)

### Bug Fixes:

- add action filters in `for_read/3`

- don't let local runner processes mix up messages

- runtime filter filters properly

## [v1.29.0-rc1](https://github.com/ash-project/ash/compare/v1.28.0-rc0...v1.29.0-rc1) (2021-01-21)

## [v1.29.0-rc0](https://github.com/ash-project/ash/compare/v1.28.1...v1.29.0-rc0) (2021-01-21)

### Features:

- freeform expressions

- validatiosn in actions

- query arguments

- add `Ash.Query.for_read/3`

- return changeset with API errors

- add case insensitive string `CiString`/`:ci_string`

- support `context/1` and `arg/1` in filter templates

- support targeting notifications with the `for` option

- add `ago/2` query function

- add basic arithmetic operators (+, \*, -, /)

- `sensitive?` option for attributes

- `sensitive?` option for arguments

- `private` arguments, which can’t be set using `for_<action>`

- add `prevent_change` which will erase changes just before the changeset is committed

- add `match?` validation that supports a custom error message

- add `interval` type to support `ago/2` function

- add `url_encoded_binary` type

- add `function` type

### Bug Fixes:

- properly expand module aliases for options w/o compile time dependency

### Improvements:

- support all string constraints for ci_string

- `changing?` is now a validation

- add `Transformer.get_persisted/3`

- add `api` field to `Notification`

- standardize errors, add `to_error_class`

- use `Comp` everywhere

- use action on changeset if set by `for_<action_type>`

- `action_failed?` field on change sets

- remove ability for data layers to add operators (for now at least)

- Changeset.apply_attributes/2 now returns an error tuple

- add a bunch of new/informative errors

- runtime filter now uses left join logic (a naive implementation of it)

- support more filter templates in resources

- basic/naive type system for operators/functions

- Add trim/allow_empty to string type (#171)

## [v1.28.1](https://github.com/ash-project/ash/compare/v1.28.0...v1.28.1) (2021-01-12)

### Improvements:

- Improve attribute defaults (#164)

## [v1.28.0](https://github.com/ash-project/ash/compare/v1.27.1...v1.28.0) (2021-01-12)

### Features:

- Add Embedded Resources (#170)

### Bug Fixes:

- Correct error message (#163)

### Improvements:

- Add built in decimal type (#162)

## [v1.27.1](https://github.com/ash-project/ash/compare/v1.27.0...v1.27.1) (2021-01-08)

### Bug Fixes:

- fix small sort bugs

### Improvements:

- add `Ash.Sort.parse_input/2`

## [v1.27.0](https://github.com/ash-project/ash/compare/v1.26.13...v1.27.0) (2021-01-08)

### Breaking Changes:

- Use usec timestamps by default

### Improvements:

- Add built in usec datetime type (#160) (#161)

## [v1.26.13](https://github.com/ash-project/ash/compare/v1.26.12...v1.26.13) (2021-01-08)

### Bug Fixes:

- only cast public relationships/attributes

## [v1.26.12](https://github.com/ash-project/ash/compare/v1.26.11...v1.26.12) (2021-01-08)

### Bug Fixes:

- `allow_nil?: false` for `integer_primary_key`

## [v1.26.11](https://github.com/ash-project/ash/compare/v1.26.10...v1.26.11) (2021-01-08)

### Improvements:

- add `for_<action>` helpers

## [v1.26.10](https://github.com/ash-project/ash/compare/v1.26.9...v1.26.10) (2021-01-07)

### Improvements:

- Add built in binary type (#156)

## [v1.26.9](https://github.com/ash-project/ash/compare/v1.26.8...v1.26.9) (2021-01-06)

### Bug Fixes:

- the `__resource__` change broke some extensions

## [v1.26.8](https://github.com/ash-project/ash/compare/v1.26.7...v1.26.8) (2021-01-06)

### Bug Fixes:

- add back `extensions/1` helper to resources

## [v1.26.7](https://github.com/ash-project/ash/compare/v1.26.6...v1.26.7) (2021-01-06)

### Bug Fixes:

- lazy loaded module issues (e.g in iex)

### Improvements:

- optimize not-in and fix dialyzer

- rework filter creation + subset checking

## [v1.26.6](https://github.com/ash-project/ash/compare/v1.26.5...v1.26.6) (2020-12-30)

### Bug Fixes:

- validate read action existence

### Improvements:

- support autocompletion on Api funcs

## [v1.26.5](https://github.com/ash-project/ash/compare/v1.26.4...v1.26.5) (2020-12-30)

### Improvements:

- default actions

## [v1.26.4](https://github.com/ash-project/ash/compare/v1.26.3...v1.26.4) (2020-12-30)

### Bug Fixes:

- fix compile issues, add docs

## [v1.26.3](https://github.com/ash-project/ash/compare/v1.26.2...v1.26.3) (2020-12-30)

### Improvements:

- add `parse_input/3` to `Ash.Filter`

## [v1.26.2](https://github.com/ash-project/ash/compare/v1.26.1...v1.26.2) (2020-12-29)

### Improvements:

- describe operator types

## [v1.26.1](https://github.com/ash-project/ash/compare/v1.26.0...v1.26.1) (2020-12-29)

### Bug Fixes:

- only accept kw list in `aggregate/5`

## [v1.26.0](https://github.com/ash-project/ash/compare/v1.25.8...v1.26.0) (2020-12-29)

### Features:

- support `:first` aggregate (#153)

- support more sort orders

## [v1.25.8](https://github.com/ash-project/ash/compare/v1.25.7...v1.25.8) (2020-12-27)

### Bug Fixes:

- separate builders + description in sections

## [v1.25.7](https://github.com/ash-project/ash/compare/v1.25.6...v1.25.7) (2020-12-27)

### Bug Fixes:

- support `examples` on dsl sections

## [v1.25.6](https://github.com/ash-project/ash/compare/v1.25.5...v1.25.6) (2020-12-27)

### Bug Fixes:

- cast string argument names

- uuid/id pkeys should `allow_nil`

## [v1.25.5](https://github.com/ash-project/ash/compare/v1.25.4...v1.25.5) (2020-12-23)

### Bug Fixes:

- support operators on both sides for not_eq

## [v1.25.4](https://github.com/ash-project/ash/compare/v1.25.3...v1.25.4) (2020-12-23)

### Bug Fixes:

- fix filtering for ets + mnesia data layers

## [v1.25.3](https://github.com/ash-project/ash/compare/v1.25.2...v1.25.3) (2020-12-23)

### Bug Fixes:

- various pagination, runtime, and auth bugs

- default pagination limit triggers pagination

## [v1.25.2](https://github.com/ash-project/ash/compare/v1.25.1...v1.25.2) (2020-12-06)

### Bug Fixes:

- resolve warning from nimbleoptions deprecation

## [v1.25.1](https://github.com/ash-project/ash/compare/v1.25.0...v1.25.1) (2020-12-02)

### Improvements:

- support confirming arguments, test allow_nil?

## [v1.25.0](https://github.com/ash-project/ash/compare/v1.24.2...v1.25.0) (2020-12-02)

### Features:

- support arguments for actions

## [v1.24.2](https://github.com/ash-project/ash/compare/v1.24.1...v1.24.2) (2020-12-01)

### Bug Fixes:

- various build fixes

- various small utility fixes

- update get-tag

## [v1.24.1](https://github.com/ash-project/ash/compare/v1.24.0...v1.24.1) (2020-11-08)

### Bug Fixes:

- do not require private attributes in create api (#143)

## [v1.24.0](https://github.com/ash-project/ash/compare/v1.23.3...v1.24.0) (2020-11-07)

### Features:

- add uuid_primary_key/2 and integer_primary_key/2

## [v1.23.3](https://github.com/ash-project/ash/compare/v1.23.2...v1.23.3) (2020-11-07)

### Bug Fixes:

- derived belongs_to attributes are required if their parent is

## [v1.23.2](https://github.com/ash-project/ash/compare/v1.23.1...v1.23.2) (2020-11-06)

### Bug Fixes:

- default create/update timestamps to private?

## [v1.23.1](https://github.com/ash-project/ash/compare/v1.23.0...v1.23.1) (2020-11-06)

### Bug Fixes:

- set proper pagination defaults

## [v1.23.0](https://github.com/ash-project/ash/compare/v1.22.1...v1.23.0) (2020-11-03)

### Features:

- Add property: private? for attributes, relationships, aggregates, and calculations (#140)

## [v1.22.1](https://github.com/ash-project/ash/compare/v1.22.0...v1.22.1) (2020-10-29)

### Improvements:

- support specifying that some options are modules

## [v1.22.0](https://github.com/ash-project/ash/compare/v1.21.0...v1.22.0) (2020-10-28)

### Features:

- multitenancy! and tons of various fixes (#139)

## [v1.21.0](https://github.com/ash-project/ash/compare/v1.20.1...v1.21.0) (2020-10-28)

### Improvements:

- trace $callers through engine genservers

## [v1.20.1](https://github.com/ash-project/ash/compare/v1.20.0...v1.20.1) (2020-10-21)

### Bug Fixes:

- better not_found error handling

## [v1.20.0](https://github.com/ash-project/ash/compare/v1.19.1...v1.20.0) (2020-10-21)

### Features:

- Optimize relationship records replacement (#135)

### Bug Fixes:

- remove unused code

- various fixes and improvements

## [v1.19.1](https://github.com/ash-project/ash/compare/v1.19.0...v1.19.1) (2020-10-17)

### Bug Fixes:

- invalid function arg parsing w/ ref

## [v1.19.0](https://github.com/ash-project/ash/compare/v1.18.1...v1.19.0) (2020-10-17)

### Features:

- pubsub notifier (#134)

## [v1.18.1](https://github.com/ash-project/ash/compare/v1.18.0...v1.18.1) (2020-10-16)

### Bug Fixes:

- engine hanging on parallel requests

## [v1.18.0](https://github.com/ash-project/ash/compare/v1.17.1...v1.18.0) (2020-10-15)

### Features:

- add notifiers (#133)

- Add `:one_of` constraint to the Atom type (#130)

## [v1.17.1](https://github.com/ash-project/ash/compare/v1.17.0...v1.17.1) (2020-10-12)

### Bug Fixes:

- bugs with keyset pagination

## [v1.17.0](https://github.com/ash-project/ash/compare/v1.16.2...v1.17.0) (2020-10-12)

### Features:

- Add pagination (#131)

## [v1.16.2](https://github.com/ash-project/ash/compare/v1.16.1...v1.16.2) (2020-10-10)

### Bug Fixes:

- parse functions properly

## [v1.16.1](https://github.com/ash-project/ash/compare/v1.16.0...v1.16.1) (2020-10-10)

### Bug Fixes:

- fix dialyzer

- fix certain versions of elixir having issues

## [v1.16.0](https://github.com/ash-project/ash/compare/v1.15.1...v1.16.0) (2020-10-08)

### Features:

- expression based filter

## [v1.15.1](https://github.com/ash-project/ash/compare/v1.15.0...v1.15.1) (2020-10-07)

## [v1.15.0](https://github.com/ash-project/ash/compare/v1.14.0...v1.15.0) (2020-10-06)

### Features:

- filter rewrite to op/function/ref based structure

- added description for missing resources (#117)

### Bug Fixes:

- add module name to errors (#127)

- Fix composite key in changeset functions (#125)

## [v1.14.0](https://github.com/ash-project/ash/compare/v1.13.4...v1.14.0) (2020-09-24)

### Features:

- descriptions for actions and relationships (#116)

### Bug Fixes:

- typespec/error message improvements

## [v1.13.4](https://github.com/ash-project/ash/compare/v1.13.3...v1.13.4) (2020-09-21)

### Bug Fixes:

- upgrade picosat dependency

- correct comment in UUID type (#115)

## [v1.13.3](https://github.com/ash-project/ash/compare/v1.13.2...v1.13.3) (2020-09-19)

### Features:

- set_attribute builtin change

- (greater_than/less_than)\_or_equal predicates

- support deletes as updates via "soft"

- support base_filters

### Bug Fixes:

- less_than predicate was flipped for runtime

## [v1.13.2](https://github.com/ash-project/ash/compare/v1.13.1...v1.13.2) (2020-09-07)

### Bug Fixes:

- remove delegate data layer (#112)

- delete process/global storage properly

## [v1.13.1](https://github.com/ash-project/ash/compare/v1.13.0...v1.13.1) (2020-09-04)

### Bug Fixes:

- Fix identities (#110)

## [v1.13.0](https://github.com/ash-project/ash/compare/v1.12.0...v1.13.0) (2020-09-02)

### Features:

- required belongs_to relationships (#107)

- support filter templates on read actions

- builtin concat calculation

- add changes to actions (#106)

- add `accept` option to create/update actions (#105)

- add `Ash.NotLoaded` back, simpler defaults

- improve errors (add stacktraces)

### Bug Fixes:

- various delegate data layer improvements

- engine halting issues

- resolve engine deadlocks

- support nested lists of filters

## [v1.12.0](https://github.com/ash-project/ash/compare/v1.11.1...v1.12.0) (2020-08-27)

### Features:

- add `one_of` validation

- add `simple` data layer, and make it default

### Bug Fixes:

- allow anonymous functions in the dsl

## [v1.11.1](https://github.com/ash-project/ash/compare/v1.11.0...v1.11.1) (2020-08-26)

### Bug Fixes:

- only update filter when its a filter

- set resource in delegation query

## [v1.11.0](https://github.com/ash-project/ash/compare/v1.10.0...v1.11.0) (2020-08-26)

### Features:

- support inner lateral joins (#100)

- add identities, to enhance `get` calls (#99)

- initial calculation support (#98)

- initial calculation support

### Bug Fixes:

- spec + dialyzer fixes

- spec mix task run as no_return

## [v1.10.0](https://github.com/ash-project/ash/compare/v1.9.0...v1.10.0) (2020-08-22)

### Features:

- Add delegate data_layer (#97)

## [v1.9.0](https://github.com/ash-project/ash/compare/v1.8.0...v1.9.0) (2020-08-19)

### Features:

- various custom data_layer features

## [v1.8.0](https://github.com/ash-project/ash/compare/v1.7.0...v1.8.0) (2020-08-18)

### Features:

- streamline `load` by accepting ok/error

### Bug Fixes:

- extensions: resolve duplicate nested entities

- use Ecto's NotLoaded for assocs for now

- create/update typespecs were wrong

## [v1.7.0](https://github.com/ash-project/ash/compare/v1.6.8...v1.7.0) (2020-08-17)

### Features:

- add `is_nil` predicate

### Bug Fixes:

- add lexical scope to DSL for imports

- crash on entity w/ no options specified

- convert `eq: nil` into is_nil, fix credo

## [v1.6.8](https://github.com/ash-project/ash/compare/v1.6.7...v1.6.8) (2020-08-15)

### Bug Fixes:

- some day tag names will work

## [v1.6.7](https://github.com/ash-project/ash/compare/v1.6.6...v1.6.7) (2020-08-15)

### Bug Fixes:

- get the tag name for real this time

## [v1.6.6](https://github.com/ash-project/ash/compare/v1.6.5...v1.6.6) (2020-08-15)

### Bug Fixes:

- try again to get the version name in tweets

## [v1.6.5](https://github.com/ash-project/ash/compare/v1.6.4...v1.6.5) (2020-08-15)

### Bug Fixes:

- get the version property

## [v1.6.4](https://github.com/ash-project/ash/compare/v1.6.3...v1.6.4) (2020-08-15)

### Bug Fixes:

- test out automatic tweeting

## [v1.6.3](https://github.com/ash-project/ash/compare/v1.6.2...v1.6.3) (2020-08-15)

### Bug Fixes:

- remove bad package reference from the docs

## [v1.6.2](https://github.com/ash-project/ash/compare/v1.6.1...v1.6.2) (2020-08-13)

### Bug Fixes:

- various fixes for graphql extension

## [v1.6.1](https://github.com/ash-project/ash/compare/v1.6.0...v1.6.1) (2020-08-10)

### Bug Fixes:

- `load` typespecs

## [v1.6.0](https://github.com/ash-project/ash/compare/v1.5.1...v1.6.0) (2020-08-10)

### Features:

- add named aggregates

### Bug Fixes:

- various fixes from json:api integration

## [v1.5.1](https://github.com/ash-project/ash/compare/v1.5.0...v1.5.1) (2020-07-24)

### Bug Fixes:

- scope data layer feature to aggregate kind

## v1.5.0 (2020-07-24)

### Features:

- group metadata by path and async?: false

- run aggregates async if not in query

- aggregations!

## [v1.4.1](https://github.com/ash-project/ash/compare/1.4.0...v1.4.1) (2020-07-20)

### Bug Fixes:

- simplify dsl building using `on_load`

## [v1.4.0](https://github.com/ash-project/ash/compare/1.3.1...v1.4.0) (2020-07-16)

### Features:

- allow editing join association attributes

## [v1.3.1](https://github.com/ash-project/ash/compare/1.3.0...v1.3.1) (2020-07-16)

### Bug Fixes:

- use proper errors everywhere

## [v1.3.0](https://github.com/ash-project/ash/compare/1.2.1...v1.3.0) (2020-07-15)

### Features:

- various small refactors + validations

## [v1.2.1](https://github.com/ash-project/ash/compare/1.2.0...v1.2.1) (2020-07-13)

### Bug Fixes:

- changeset + set_state issues

## [v1.2.0](https://github.com/ash-project/ash/compare/1.1.3...v1.2.0) (2020-07-13)

### Features:

- refactor changes into changesets

## [v1.1.3](https://github.com/ash-project/ash/compare/1.1.2...v1.1.3) (2020-07-09)

## [v1.1.2](https://github.com/ash-project/ash/compare/1.1.1...v1.1.2) (2020-07-09)

## [v1.1.1](https://github.com/ash-project/ash/compare/1.1.0...v1.1.1) (2020-07-09)

### Bug Fixes:

- small fixes

## [v1.1.0](https://github.com/ash-project/ash/compare/1.0.3...v1.1.0) (2020-07-09)

### Features:

- lots of docs, simplify query generation

- validate relationship keys

## [v1.0.3](https://github.com/ash-project/ash/compare/1.0.2...v1.0.3) (2020-07-08)

## [v1.0.2](https://github.com/ash-project/ash/compare/1.0.1...v1.0.2) (2020-07-07)

## [v1.0.1](https://github.com/ash-project/ash/compare/1.0.0...v1.0.1) (2020-07-07)

## [v1.0.0](https://github.com/ash-project/ash/compare/0.10.0...v1.0.0) (2020-07-07)

### Breaking Changes:

- remove initial subscriptions pass

### Features:

- general improvements

### Bug Fixes:

- in predicate + engine errors

## [v0.10.0](https://github.com/ash-project/ash/compare/0.9.1...v0.10.0) (2020-07-02)

### Breaking Changes:

- remove atom type, add docs

### Features:

- list types

- refactor ash types to modules, add constraints

### Bug Fixes:

- remove benchee, ensure mnesia always uses transactions

- try clearing cache to fix CI

- stop gitignoring the mnesia data layer

- try to fix ash.formatter task

- test/improve parallelizable requests

- require that resources have primary keys

## [v0.9.1](https://github.com/ash-project/ash/compare/0.9.0...v0.9.1) (2020-06-30)

### Bug Fixes:

- move to simpler transaction logic

## [v0.9.0](https://github.com/ash-project/ash/compare/0.8.0...v0.9.0) (2020-06-29)

### Features:

- add less_than and greater_than filter support

- validate all related resources in API

### Bug Fixes:

- fix tests/credo

- fix tests, add tests for gt/lt filters

## [v0.8.0](https://github.com/ash-project/ash/compare/0.7.0...v0.8.0) (2020-06-29)

### Features:

- cross data layer filters

- cross data layer filtering

## [v0.7.0](https://github.com/ash-project/ash/compare/0.6.5...v0.7.0) (2020-06-27)

### Features:

- section option configuration

### Bug Fixes:

- set persistent_term properly

## [v0.6.5](https://github.com/ash-project/ash/compare/0.6.4...v0.6.5) (2020-06-22)

### Bug Fixes:

- use authorization filters in side loads

## [v0.6.4](https://github.com/ash-project/ash/compare/0.6.3...v0.6.4) (2020-06-22)

### Bug Fixes:

- remove reverse relationships

## [v0.6.3](https://github.com/ash-project/ash/compare/0.6.2...v0.6.3) (2020-06-22)

### Bug Fixes:

- many filter/side load fixes/improvements

## [v0.6.2](https://github.com/ash-project/ash/compare/0.6.1...v0.6.2) (2020-06-20)

### Bug Fixes:

- allow side_load option on create/update

## [v0.6.1](https://github.com/ash-project/ash/compare/0.6.0...v0.6.1) (2020-06-20)

### Bug Fixes:

- raised error message contents

- parent error messages

- relationship path clause

## [v0.6.0](https://github.com/ash-project/ash/compare/0.5.2...v0.6.0) (2020-06-19)

### Features:

- boolean filter refactor (#78)

- predicate behaviour

## [v0.5.2](https://github.com/ash-project/ash/compare/0.5.1...v0.5.2) (2020-06-15)

### Bug Fixes:

- consider nested entities in ash.formatter

## [v0.5.1](https://github.com/ash-project/ash/compare/0.5.0...v0.5.1) (2020-06-15)

### Bug Fixes:

- compile application in ash.formatter task

## [v0.5.0](https://github.com/ash-project/ash/compare/0.4.0...v0.5.0) (2020-06-15)

### Features:

- extension section module imports, generated .formatter.exs (#71)

## [v0.4.0](https://github.com/ash-project/ash/compare/0.3.0...v0.4.0) (2020-06-14)

### Features:

- rebuild DSL inner workings for extensibility (#70)

- add `after_compile` and validate primary key

### Bug Fixes:

- dialyzer warnings

- honor the `authorize?` flag

### Improvements:

- add `date` support (#68)

## [v0.3.0](https://github.com/ash-project/ash/compare/0.2.0...v0.3.0) (2020-06-05)

### Features:

- remove name/type from ash core

### Bug Fixes:

- account for action/actor args to interface

- remove the rest of the deps on name/type

- add `resource_module?/1` back to `Ash`

## [v0.2.0](https://github.com/ash-project/ash/compare/0.1.9...v0.2.0) (2020-06-05)

### Features:

- use option schemas in the interface (#30)

## [v0.1.9](https://github.com/ash-project/ash/compare/0.1.8...v0.1.9) (2020-06-04)

### Bug Fixes:

- references to error handling code

- fix empty filter checks

## [v0.1.8](https://github.com/ash-project/ash/compare/0.1.7...v0.1.8) (2020-06-02)

This release is a test of our automatic hex.pm package publishing

## [v0.1.7](https://github.com/ash-project/ash/compare/0.1.6...v0.1.7) (2020-06-02)

This release is a test of our automatic hex.pm package publishing

## [v0.1.6](https://github.com/ash-project/ash/compare/0.1.5...v0.1.6) (2020-06-02)

This release is a test of our automatic hex.pm package publishing

## [v0.1.5](https://github.com/ash-project/ash/compare/0.1.4...v0.1.5) (2020-06-02)

This release is a test of our automatic hex.pm package publishing

## [v0.1.4](https://github.com/ash-project/ash/compare/0.1.3...v0.1.4) (2020-06-02)

This release covers the initial linting/dialyzing improvements

## (2020-06-01)

### Changelog Begins