Skip to content

Commit 46e8951

Browse files
committed
chore: release version v3.20.0
1 parent b4d4d49 commit 46e8951

2 files changed

Lines changed: 66 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,71 @@ SPDX-License-Identifier: MIT
88

99
<!-- changelog -->
1010

11+
## [v3.20.0](https://github.com/ash-project/ash/compare/v3.19.3...v3.20.0) (2026-03-20)
12+
13+
14+
15+
16+
### Features:
17+
18+
* add `required!` expression shorthand (#2636) by dallingson [(#2636)](https://github.com/ash-project/ash/pull/2636)
19+
20+
* add mix ash.gettext.extract for i18n support (#2615) by [@nallwhy](https://github.com/nallwhy) [(#2615)](https://github.com/ash-project/ash/pull/2615)
21+
22+
* Add attribute_always_select? option to belongs_to relationships (#2627) by [@emadshaaban92](https://github.com/emadshaaban92) [(#2627)](https://github.com/ash-project/ash/pull/2627)
23+
24+
* redact sensitive values in built-in validation errors w/ backwards compatibility flag (#2608) by [@nallwhy](https://github.com/nallwhy) [(#2608)](https://github.com/ash-project/ash/pull/2608)
25+
26+
### Bug Fixes:
27+
28+
* ensure `__metadata__.tenant` is present in bulk action after hooks by [@zachdaniel](https://github.com/zachdaniel)
29+
30+
* preserve input order in bulk manage_relationship (#2639) by [@nallwhy](https://github.com/nallwhy) [(#2639)](https://github.com/ash-project/ash/pull/2639)
31+
32+
* support before_action? validations in bulk_create and bulk_update (#2634) by [@nallwhy](https://github.com/nallwhy) [(#2634)](https://github.com/ash-project/ash/pull/2634)
33+
34+
* return {:not_atomic, ...} for before_action? validations in run_atomic_validation by [@nallwhy](https://github.com/nallwhy) [(#2634)](https://github.com/ash-project/ash/pull/2634)
35+
36+
* support atomic-only changes in bulk_create (#2635) by [@barnabasJ](https://github.com/barnabasJ) [(#2635)](https://github.com/ash-project/ash/pull/2635)
37+
38+
* honor scope option in Ash.can/can? (#2631) by [@emadshaaban92](https://github.com/emadshaaban92) [(#2631)](https://github.com/ash-project/ash/pull/2631)
39+
40+
* bulk create/update/destroy global validation ordering (#2628) by [@nallwhy](https://github.com/nallwhy) [(#2628)](https://github.com/ash-project/ash/pull/2628)
41+
42+
* Preserve explicit select when merging duplicate relationship loads (#2626) by [@mikaelweiss](https://github.com/mikaelweiss) [(#2626)](https://github.com/ash-project/ash/pull/2626)
43+
44+
* use inidividually overridden callbacks within array callbacks (#2610) by Jesse Williams [(#2610)](https://github.com/ash-project/ash/pull/2610)
45+
46+
* add [] as fallback for modules = Application.spec(app, :modules) (#2620) by Torkild Gundersen Kjevik [(#2620)](https://github.com/ash-project/ash/pull/2620)
47+
48+
* Add tenant for notification load (#2617) by Torkild Gundersen Kjevik [(#2617)](https://github.com/ash-project/ash/pull/2617)
49+
50+
* propagate errors from cascade_update instead of silently swallowing them by [@zachdaniel](https://github.com/zachdaniel)
51+
52+
* soft destroy with return_notifications? loses notifications (#2616) by [@nallwhy](https://github.com/nallwhy) [(#2616)](https://github.com/ash-project/ash/pull/2616)
53+
54+
* don't nest `%Ash.Filter` expressions when combining join filters by [@zachdaniel](https://github.com/zachdaniel)
55+
56+
* remove unreachable is_list guard in soft destroy path (#2613) by djgoku [(#2613)](https://github.com/ash-project/ash/pull/2613)
57+
58+
* ensure stacked aggregates honor authorization rules while reading by [@zachdaniel](https://github.com/zachdaniel)
59+
60+
* use Enum.member? instead of in-macro to mitigate 1.20-rc.2 compiler (#2612) by Torkild Gundersen Kjevik [(#2612)](https://github.com/ash-project/ash/pull/2612)
61+
62+
### Improvements:
63+
64+
* Allow marking actions as internal to prevent exposing them via APIs #1271 (#2629) by Dgoz101 [(#2629)](https://github.com/ash-project/ash/pull/2629)
65+
66+
* expand gettext i18n support to types, changes, and changeset (#2637) by [@nallwhy](https://github.com/nallwhy) [(#2637)](https://github.com/ash-project/ash/pull/2637)
67+
68+
* add filename and content_type functions to Ash.Type.File by [@zachdaniel](https://github.com/zachdaniel)
69+
70+
* use bulk actions for managed relationship actions by [@zachdaniel](https://github.com/zachdaniel)
71+
72+
* more informative errors on `ash.setup` failures (#2595) by celeste-wahlquist [(#2595)](https://github.com/ash-project/ash/pull/2595)
73+
74+
* add generate/1 and bingenerate/1 accepting a DateTime to Ash.UUIDv7 (#2609) by [@nallwhy](https://github.com/nallwhy) [(#2609)](https://github.com/ash-project/ash/pull/2609)
75+
1176
## [v3.19.3](https://github.com/ash-project/ash/compare/v3.19.2...v3.19.3) (2026-03-04)
1277

1378

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ defmodule Ash.MixProject do
1010
A declarative, extensible framework for building Elixir applications.
1111
"""
1212

13-
@version "3.19.3"
13+
@version "3.20.0"
1414

1515
def project do
1616
[

0 commit comments

Comments
 (0)