Ash Chronicle: Issue #26
Rebranding Ash Weekly as Ash Chronicle for obvious reasons, announcing AshStorage, tons of AshAuthentication features, a whole host of community projects, and sharing 6+ months worth of improvements.
Ash Chronicle!
Welcome to Ash Chronicle — your quick, informal digest of what’s new and notable in the world of Ash Framework. Got something cool? Drop it in the #showcase channel on Discord!
Support us by Buying the book! or contributing to our Open Collective
Ash Weekly → Ash Chronicle
Seeing as its been 7 months since the last issue, it only makes sense to rebrand this newsletter. I’ll still post here, but not weekly. Just don’t have the time anymore. But we’ll keep it going at a slower pace 😎
There are a lot of things that were launched that I only announced on my twitter/bluesky. I don’t have time to go dig up all those photos and messages, so if you’d like to know about all this stuff I’d suggest going back through those accounts history!
The changelog here is huge, and don’t forget that it doesn’t even include bug fixes. I also didn’t have time to clean them up for better human consumption like I normally do.
Announcing: AshStorage
Attachment and file management that slots directly into your resources.
I haven’t had time to get it polished and published, hoping the community will help pick up the slack!
AshCredo
Ash now has an unofficial Credo extension to bring a whole host of useful lint rules to your Ash applications!
Major movements in AshAuthentication
Remember Me Strategy (v4.10.0 — Sep 2025) Persistent session tokens — users stay signed in across browser sessions with configurable lifetimes. Cookie-based with a dedicated remember_me field.
Audit Logging Add-on (v4.12.0 — Oct 2025) AshAuthentication.AuditLogResource — logs all auth actions (successes/failures). Enables account lockout after N failed attempts, inactive account detection, compliance auditing — all queryable as Ash resources.
TOTP / 2FA Strategy (v5.0.0-rc.0 — Jan 2026) Full first-class TOTP support: standalone or as a second factor after password, two-step setup flow, QR code generation, replay attack prevention, brute force protection, AshCloak support for encrypted secrets.
Recovery Code Strategy (v5.0.0-rc.2 — Apr 2026) One-time backup codes for when primary MFA is unavailable. Codes are single-use, hashed at rest.
Extra JWT Claims (v5.0.0-rc.0 — Jan 2026) Custom claims in JWT tokens at both DSL and action level — embed roles, tenant IDs, session types, etc.
Microsoft OAuth Strategy (v5.0.0-rc.2 — Apr 2026) First-party Microsoft OAuth with full tutorial/DSL, handling Microsoft-specific quirks.
More from the community & events
Catch me at ElixirConf EU! Its right around the corner.
I appeared on BEAM There, Done That podcast to talk about Ash.
Christian Alexander posted an awesome video about usage_rules!
My goatmire talk is now on Youtube!
Appsignal wrote an awesome introductory article to Ash.
Artyom Molchanov also wrote an awesome introductory article to Ash.
John Lee published ash_grant, a permission-based authorization extension for Ash.
Lars Wikman open sourced the stack he uses to plan and run Goatmire! Coincidentally, I will be speaking there again this year. Be there or be square.
Pascal Charbonneau published an extension for building reports from your Ash resource data!
Chris Cox published an extension for managing accounts that contain multiple accounts, GitHub style.
Mauricio Cassola published a tool for exploring your Ash application via a TUI!
A community member (dev-guy on GitHub) published a demo application for running remote commands with all sorts of goodies!
Jan Nikolaus Wirth published an open source demo project using Ash. Its a German Urban Dictionary!
Releases
Ash: 3.5.41-3.24.1
Ash now supports a
throughoption on has_many and has_one relationships by Kenneth Kostrešević (#2567)add eager_validate? option to manage_relationship/4 (#2663) by @nallwhy (#2663)
steer usage rules towards code interface and actions (#2672) by Kenneth Kostrešević (#2672)
support operator overloads that rewrite to custom expressions by @zachdaniel
add
init/1callback toAsh.Policy.Check(#2655) by @nallwhy (#2655)add pipelines DSL for reusable action logic composition (#2652) by @nallwhy (#2652)
Add resource metadata to Ash.NotLoaded struct (#2653) by @nallwhy (#2653)
add batch_validate callback to Ash.Resource.Validation (#2650) by @RylandBangerter85
validate many callback returns (#2645) by celeste-wahlquist (#2645)
add paginate_by_default? option to read actions (#2648) by Juan Martin (#2648)
support structs in type inference by Zach Daniel
support
:autotype in calculations (#2643) by @zachdaniel (#2643)support calculations that don't add struct fields by @zachdaniel
add --domain option to ash.gen.gettext for merging into existing pot files (#2640) by @nallwhy (#2640)
add
required!expression shorthand (#2636) by dallingson (#2636)add mix ash.gettext.extract for i18n support (#2615) by @nallwhy (#2615)
Add attribute_always_select? option to belongs_to relationships (#2627) by @emadshaaban92 (#2627)
redact sensitive values in built-in validation errors w/ backwards compatibility flag (#2608) by @nallwhy (#2608)
Allow marking actions as internal to prevent exposing them via APIs #1271 (#2629) by Dgoz101 (#2629)
expand gettext i18n support to types, changes, and changeset (#2637) by @nallwhy (#2637)
add filename and content_type functions to Ash.Type.File by @zachdaniel
use bulk actions for managed relationship actions by @zachdaniel
more informative errors on
ash.setupfailures (#2595) by celeste-wahlquist (#2595)add generate/1 and bingenerate/1 accepting a DateTime to Ash.UUIDv7 (#2609) by @nallwhy (#2609)
add a member name transformer for
Ash.Filter.parse_inputby @zachdanielAllow dumping and casting instance_of union types (#2597) by @Munksgaard (#2597)
make enum label/description overridable (#2594) by Hannes Wüthrich (#2594)
add touch_update_defaults? option to bulk_create (#2590) by Michael Bärtschi (#2590)
add new trace types for bulk actions by @zachdaniel
Add offset option to has_one and has_many relationships (#2584) by @nallwhy (#2584)
add InvalidStoredData error for safe ETS cast failures by @mikaelweiss (#2570)
add support for data layers with partial success in bulk_create (#2576) by @rbino (#2576)
add pre_flight_authorization() builtin validation for conditional checks during Ash.can? (#2587) by @emadshaaban92 (#2587)
Add error messages to
cast_storedanddump_to_native(#2570) by @mikaelweiss (#2570)Enhance Ash.Type.NewType custom constraints to support arrays (#2578) by Christopher Bonhage (#2578)
Add context to read actions in cascade changes (#2582) by @stevebrambilla (#2582)
add embedded & embedded casting to Duration type by @zachdaniel
add support for notifier load statements by @zachdaniel
add support for declaring a type for notifiers by @zachdaniel
add support for per-publication load statements by @zachdaniel
make
eventan optional positional argument (and support atoms) by @zachdanieladd
not_found_error?toAsh.getto bring it in-line with actions (#2572) by StephanH90 (#2572)include bread crumbs and standardize generic action errors by @zachdaniel
Allow Ash.Type.NewType to apply its own constraints (#2575) by Christopher Bonhage (#2575)
Split up usage rules into sub-rules (#2561) by @mylanconnolly (#2561)
calculations: Add multitenancy bypass options to calculations (#2552) by @shahryarjb (#2552)
manual relationship via list (#2546) by zackattackz (#2546)
support
create_atomicsandatomic_setfor create atomics by @zachdanielmake ignored managed relationships not break atomicity by @zachdaniel
support
parentexprs in relationships for all data layers by @zachdanielsupport
fromandtooptions inchangingvalidation by @zachdanielAdd
bulk_destroystep toAshReactor. (#2500) by wjrtz (#2500)add load and loading? functions to ActionInput (#2511) by zackattackz (#2511)
Upgrade Splode to 0.3.0 for stacktrace filtering by @zachdaniel
Re-enables regex as mfa to improve regex speed (#2516) by sezaru (#2516)
add is_distinct_from and is_not_distinct_from functions (#2497) by @jechol (#2497)
add is_distinct_from and is_not_distinct_from operators by @jechol (#2497)
optimize is_distinct_from operators when NULL is impossible by @jechol (#2497)
create: Add multitenancy bypass options to create actions (#2495) by @shahryarjb (#2495)
Support :allow_global in bulk multitenancy actions by @shahryarjb (#2495)
update: Add multitenancy bypass options to update actions (#2494) by @shahryarjb (#2494)
destroy: Add multitenancy bypass options to destroy actions (#2477) by @shahryarjb (#2477)
support operator overloads returning casting overrides by @zachdaniel
aggregates: add multitenancy bypass option for aggregates (#2427) by @shahryarjb (#2427)
aggregates: add multitenancy bypass option for aggregates by @shahryarjb (#2427)
raise better error when passing Ash.Query to Ash.load (#2459) by StephanH90 (#2459)
raise better error when passing Ash.Query to Ash.load (#2459) by StephanH90 (#2459)
allow update actions for undo in reactor create steps (#2387) by @barnabasJ (#2387)
calculation verifier (#2439) by @barnabasJ (#2439)
add verifier to warn if load is used with expr calc by @barnabasJ (#2439)
don’t squish code interface double newlines by @zachdaniel
significantly optimize code interface generation by @zachdaniel
Allow overriding Ash.Type.NewType cast_input_array/2 (#2438) by Christopher Bonhage (#2438)
use regexes again now that otp 28.1 is out by @zachdaniel
keep tenant in query when using :bypass and :bypass_all (#2429) by @Malian (#2429)
tenant_from_attribute dsl option (#2412) by @barnabasJ (#2412)
Add preserve_nil_values? to map and struct types (#2414) by @Malian (#2414)
enable configuring match v4 uuids for v7 uuids (#2416) by Kenneth Kostrešević (#2416)
Simplify forbidden_due_to_strict_policy check (#2400) by @maennchen
Refactor SAT Solver into
crux(#2375) by @maennchenoptimize Ash.Resource.Igniter.list_resources and Ash.Domain.Igniter.list_domains for large codebases (#2371) by Elliot Bowes
optimize list_resources and list_domains for large codebases by Elliot Bowes
Improve SatSolver.simplify_expression/1 (#2367) by @maennchen
Policy Refactoring (#2365) by @maennchen
Improve selection of atomic validation attribute, including resource-level option (#2356) by @stevebrambilla
data_one_of validation (#2358) by @barnabasJ
add
Ash.transact/3(#2341) by @barnabasJadd can? callback for return_skipped_upsert? for bulk by @barnabasJ
add bulk_create for Ash.DataLayer.Mnesia (#2336) by Dan Wanek
return errors from calculations with invalid expressions by @zachdaniel
add source locations to a whole bunch of errors by @zachdaniel
add location to primary key verifier by @zachdaniel
add location for multitenancy verifier by @zachdaniel
add location information for manage relationship transformer by @zachdaniel
add location info for reserved field names transformer by @zachdaniel
add location info for primary action transformer by @zachdaniel
add location info for unique action name transformer by @zachdaniel
implemented ‘has’ and ‘intersects’ functions (#2324) by Abdessabour Moutik
use
delay_taskformix ash.setupby @zachdanieladd
--setupflag toash.installto runash.setupby @zachdanielImprove performance of mix tasks that load extensions (#2332) by drtheuns
better error message on invalid relationship paths in exists by @zachdaniel
add
anybuiltin validation by @zachdanieldetect types in
get_pathexpressions by @zachdaniel
Ash AI: 0.2.13-0.6.0
Hard cutover to ReqLLM: remove LangChain runtime and migrate chat generator (#177) by mikehostetler (#177)
add mcp_ui_resource for MCP Apps spec (#173) by @nallwhy (#173)
For
gen.chattask make all tools available by default (#176) by Kenneth Kostrešević (#176)Support --provider, --route and --live-component (#175) by Kenneth Kostrešević (#175)
add
strict?option, change how filters behave under it by @zachdanielHard cutover from LangChain to ReqLLM for all LLM access paths.
Removed
AshAi.setup_ash_ai/2,AshAi.functions/1, and LangChain-basedAshAi.iex_chat/2.Added ReqLLM-first orchestration APIs:
AshAi.list_tools/1AshAi.build_tools_and_registry/1AshAi.ToolLoop.run/2AshAi.ToolLoop.stream/2AshAi.iex_chat/1
prompt/2now uses ReqLLM model specs ("provider:model", ReqLLM tuples, or functions returning them).Prompt actions keep
tools:support viaAshAi.ToolLoop.mix ash_ai.gen.chatnow generates ReqLLM-based chat code and runtime config (config :req_llm, ...).Runtime does not include Jido integration.
prompt actions: default tool-loop
max_iterationsto:infinity(unless explicitly set)prompt actions: return tool-loop failures as action errors with reason details
prompt actions: support
verbose?tool-loop lifecycle loggingprompt actions: use permissive schema for unconstrained
:mapreturnsash_ai.gen.chat: preserve and preview tool call arguments in both LiveView and LiveComponent templatesash_ai.gen.chat: collapse generated tool UI helpers intoAshAi.ChatUI.Tools.extract/1with one-time warning flash on malformed tool datadocs: add legacy compatibility notes for adapter mapping and embedding return tuple behavior
Add ChatOpenAiResponses support (#163) by sezaru (#163)
Add ChatOpenAiResponses support by sezaru (#163)
Use StructuredOutput for ChatOpenAiResponses by sezaru (#163)
Add support for modifying the chain in prompt (#142) by @Munksgaard (#142)
Handle anonymous function in tool load definition (#157) by josh-brainbox (#157)
add arguments to tools by josh-brainbox (#157)
Added _meta field to tools MCP (#140) by @C-Sinclair (#140)
Add MCP resources support with action descriptions (#138) by @C-Sinclair (#138)
langchain 0.4 (#132) by @barnabasJ (#132)
update ash_oban to 0.5 by @zachdaniel
allow multiple full text definitions in vectorize section (#125) by Abdessabour Moutik (#125)
don’t install usage rules as part of installing ash ai by @zachdaniel
Support LangChain 0.4 (#124) by Arjan Scherpenisse (#124)
AshTypescript: 0.3.0-0.17.0
manifest: add valibot entries to JSON manifest by @Torkan
codegen: add typed sort fields with SortString utility type and array support by @Torkan
codegen: add isNil operator, expand aggregate filters, generate filter field arrays by @Torkan
valibot by @directormac
add valibot to resolver and orchestrator by @directormac
valibot generators by @directormac import_into_generated and typed_controller_import_into_generated file paths are now project-root-relative (e.g., “assets/js/hooks.ts”) instead of JS-relative import paths (e.g., “./hooks”)
codegen: exclude calculations with field?: false from generated types by @Torkan
typed-channel: auto-derive payload types from calculation transforms by @Torkan
rpc: verify actions and relationship read actions are public? by @Torkan
rpc: add machine-readable JSON manifest generation by @Torkan
typed-channel: detect payload type name conflicts across channels by @Torkan
typed-channel: add config accessors and orchestrator integration by @Torkan
typed-channel: add DSL, verifier, and codegen for typed channel event subscriptions by @Torkan
add typed_controller_base_path config for route URL prefixing by @Torkan
add HTTP verb shortcuts and positional method arg to typed controller DSL by @Torkan
add controller namespace support and simplify codegen orchestration by @Torkan
add multi-file codegen architecture and typed controller enhancements by @Torkan
add typed_controller_mode config for paths_only generation by @Torkan
generate query params and typed path helpers for TypedController routes by @Torkan
validate that path params have matching DSL arguments by @Torkan
typed-controller: validate route and argument names for TypeScript compatibility by @Torkan
add TypedController as standalone Spark DSL with argument extraction and type casting by @Torkan
controller-resource: normalize camelCase request params to snake_case by @Torkan
codegen: integrate controller resource route generation into mix task by @Torkan
add TypeScript route codegen with router introspection by @Torkan
add ControllerResource DSL extension with controller generation by @Torkan
codegen: add
always_regenerateconfig to skip diff check by @Torkanconfig: add developer experience configuration options by @Torkan
mix: handle multi-file output and manifest generation by @Torkan
codegen: add multi-file namespace output support by @Torkan
codegen: add markdown manifest generator by @Torkan
codegen: add JSDoc generator with configurable tags by @Torkan
codegen: add namespace resolution and domain grouping by @Torkan
dsl: add namespace, description, deprecated, and see options by @Torkan
rpc: generate restricted schemas for allowed_loads actions by @Torkan
rpc: support first aggregates returning embedded resources and unions by @Torkan
rpc: add allowed_loads and denied_loads options for rpc_action by @Torkan
rpc: add enable_filter? and enable_sort? options for rpc_action by @Torkan
All field mapping dsls and callbacks now require strings instead of atoms.
Fields requested from calculations without arguments no longer need to be wrapped in
{fields: [...]}add VerifyActionTypes and VerifyUniqueInputFieldNames verifiers by @Torkan
add ResourceFields helper and extend Introspection by @Torkan
add FieldSelector for unified type-driven field selection by @Torkan
add ValueFormatter for unified type-aware value formatting by @Torkan
primaryKeyinput field for update & destroy rpc actions are now replaced by the more flexibleidentities-fieldidentities: add compile-time identity verification by @Torkan
identities: add identity-based record lookup for update/destroy actions by @Torkan
codegen: generate TypeScript types for get? and get_by actions by @Torkan
rpc: add compile-time verification for get options by @Torkan
rpc: implement get? and get_by runtime execution by @Torkan
rpc: add get?, get_by, and not_found_error? DSL options by @Torkan
codegen: generate TypeScript types for get? and get_by actions by @Torkan
rpc: add compile-time verification for get options by @Torkan
rpc: implement get? and get_by runtime execution by @Torkan
rpc: add get?, get_by, and not_found_error? DSL options by @Torkan
add FieldExtractor module for unified tuple/keyword/map extraction by @Torkan
preserve TypedStruct instance_of for field name mappings by @Torkan
standardize RPC error structure with vars, path, fields, details by @Torkan
use bulk actions for update/destroy by @zachdaniel (#17)
support
read_actionconfiguration by @zachdaniel (#17)better error handling & struct field selection in RPC by @zachdaniel (#17)
add configurable warnings for RPC resource discovery and references by @Torkan
add resource scanner for embedded resource discovery by @Torkan
rpc: implement lifecycle hooks in TypeScript codegen by @Torkan
rpc: add lifecycle hooks configuration API by @Torkan
codegen: add configurable untyped map type by @Torkan
rpc: add custom error response handler support by @Torkan
rpc: add support for dynamic endpoint configuration via imported TypeScript functions by @Torkan
rpc: add typed query field verification at compile time by @Torkan
add type_mapping_overrides config setting by @Torkan
codegen: warn when resources have extension but missing from domain by @Torkan
add action metadata support with field name mapping by @Torkan
add precise pagination type constraints to prevent misuse by @Torkan
add VerifierChecker utility for Spark verifier validation by @Torkan
support typescript_field_names callback in codegen by @Torkan
add map field name validation for custom types by @Torkan
add field_names & argument_names for mapping invalid typescript names to valid ones by @Torkan
Properly handle map without constraints, both as input and output. by @Torkan
add unique type_name verifier for AshTypescript.Resource by @Torkan
remove redundant path-tracking & cleanup of code in formatters. by @Torkan
remove redundant cast_input in color_palette.ex by @Torkan
run npm install automatically on installation by Zach Daniel
add igniter install notices. by Torkild Kjevik
add igniter installer by Torkild Kjevik
add rpc routes & basic react setup in installer by Torkild Kjevik
use String.contains? for checking if rpc routes already exist by Torkild Kjevik
Set default config in config.exs by Torkild Kjevik
Usage Rules: 0.1.25-1.2.6
include sub_rules by default instead of on selection or
:allby Zach DanielFix examples in error outputs and docs
regexes in usage rule deps, add examples by Zach Daniel
use refernece files for all usage rules by Zach Daniel
reference mode for skill deps by Zach Daniel
make package inlining configured per-dep, clean ups by Zach Daniel
rebuild usage rules to be config-driven and support agent skills by Zach Daniel
Impl
supports_umbrella?(#33) by WignyAdd ability to extract one or more usage rules to folder without modifying any files. (#29) by olivermt
Igniter: 0.6.29-0.7.9
check compiled manifest and simple defmodule patterns early by Zach Daniel
add and manage a module index cache by Zach Daniel
error messages for task compilation (#364) by celeste-wahlquist
error messages for task compilation (#364) by celeste-wahlquist
Add more context to umbrella error message (#358) by José Valim
Add support for SiteEncrypt.Phoenix.Endpoint detection (#339) by Herman verschooten
add
delay_taskto run tasks at the end by Zach Daniel
Spark: 2.2.69-2.6.1
sort persisters using before/after callbacks (#264) by Torkild Gundersen Kjevik
Builder API for Sections and Entities (#253) by leonqadirie
add
singleton_entity_keysto sections by Zach Danieladd new
{:function, ...type by Zach DanielAdd
{:and, subtypes}option type. (#246) by James Hartonadd
Spark.Docs.redirects_for/2to generate DSL doc redirects by Zach Danieladd :regex builtin type by Zach Daniel
only compile on uncompiled extension in formatter by Zach Daniel
only store source location if :debug_info enabled (#222) by Jonatan Männchen
Note: you will potentially need to update your DSL tests. See the anno guide for more.
check spark_metadata presence in nested entities (#220) by Jonatan Männchen
Add DSL entity validation and transformation (#218) by marot
add setting for skipping diagnostic warnings by Zach Daniel
warn and error on transformer errors by Zach Daniel
cleaner warnings on dsl errors by Zach Daniel
Record Source Annotations (#216) by Jonatan Männchen
Splode: 0.2.10-0.3.1
add
traverse_errors/2callback and function to Splode by Zach Danielwarn on using reserved splode fields by Zach Daniel
support filtering stacktrace modules in Splode errors by Zach Daniel
add
error_class?flag to Splode.ErrorClass structs by Zach Daniel
AshGraphql: 1.8.4-1.9.4
support field?: false calculations in graphql by @zachdaniel
support Ash’s new public? action option by @zachdaniel
include builtin predicate functions in GraphQL filter schema (#413) by @nallwhy (#413)
support per-field operator allowlists in filterable_fields (#407) by @nallwhy (#407)
validate cross-field dependencies in graphql DSL options at compile time (#416) by @nallwhy (#416)
validate field references in graphql DSL options at compile time (#415) by @nallwhy (#415)
raise at compile time when related resource’s domain is missing from schema (#414) by @nallwhy (#414)
Split up usage rules (#404) by @mylanconnolly (#404)
Add GraphQL tracer integration for AppSignal monitoring by @lukegalea
AshJsonApi: 1.4.45-1.6.5
support mapping join resource keys to meta (#419) by lincolnhuls (#419)
support
field? :falsecalculations by @zachdanielhandle Reactor.Error.Invalid.RunStepError in error conversion (#424) by @Torkan (#424)
support the new
public?option on actions by @zachdanieladd dedicated calculation argument transformer by @zachdaniel
add builtin transformers
:camelizeand:dasherizeby @zachdanieladd field mapping utilities by @zachdaniel
add config to use correct
objecttype for filter schemas by olivermt (#413)add an
error_handleroption by @zachdanielAdd pagination support for included relationships (#392) by srikanthkyatham
AshJsonApi: 1.4.45-1.6.5
support mapping join resource keys to meta (#419) by lincolnhuls (#419)
support
field? :falsecalculations by @zachdanielhandle Reactor.Error.Invalid.RunStepError in error conversion (#424) by @Torkan (#424)
support the new
public?option on actions by @zachdanieladd dedicated calculation argument transformer by @zachdaniel
add builtin transformers
:camelizeand:dasherizeby @zachdanieladd field mapping utilities by @zachdaniel
add config to use correct
objecttype for filter schemas by olivermt (#413)add an
error_handleroption by @zachdanielAdd pagination support for included relationships (#392) by srikanthkyatham
Paginated Relationships - Add support for paginating included relationships via
included_pagequery parameter
AshAuthentication: 4.11.0-5.0.0-rc.2
add recovery code authentication strategy (#1135) by adamtharani
add microsoft strategy (#1136) by MikaelFangel
move Phoenix concerns out of AA igniters (#1145) by James Harton
split igniter generators into per-strategy and per-add-on tasks (#1143) by James Harton
add
grace_periodoption to TOTP strategy (#1134) by James Hartonadd
remember_meto password sign-in strategy by default (#1131) by Zach Danielpropagate sender failures as action errors (#1126) by James Harton
propagate sender failures as action errors by James Harton
convert request actions from read to generic action (#1125) by James Harton
change token revoked action from read to generic action (#1124) by James Harton
Add TOTP authentication strategy. (#1086) by James Harton
add TOTP authentication components and routes by James Harton
totp: add
read_secret_fromoption for AshCloak support by James Hartonadd support for extra JWT claims (#1122) by James Harton
make auto signout possible in AshAuthentication.Phoenix (#1070) by Abdessabour Moutik
added options to allow for the specification of the endpoints + a template function for the live socket id by Abdessabour Moutik
consolidate audit log code and remove redundant nil checks by James Harton
properly configure remember_me strategy in installer by Zach Daniel
add return_error_on_invalid_magic_link_token? config by Robert Graff
Add MaybeGenerateTokenChange for remember me support in create actions (#1093) by weljoda
Openid configuration uri type change (#1095) by andreas-ementio
add return_error_on_invalid_magic_link_token? config by Robert Graff
Add MaybeGenerateTokenChange for remember me support in create actions (#1093) by weljoda
Openid configuration uri type change (#1095) by andreas-ementio
Audit Logging add-on. (#1074) by James Harton
Audit logging add-on. by James Harton
enhance error messages in hash_password_change.ex (#1058) by pupdogg
remember me strategy (#1016) by Robert Graff
allow setting extra context on magic links (#1081) by Zach Daniel
more conventional action result status by James Harton
add allowlist for actions and strategies by James Harton
Add warning message when logging sensitive fields by James Harton
audit_log: add IP address privacy options with configurable truncation masks by James Harton
default confirm action name to add-on name by James Harton
add support for AshEvents.Events.ReplayChangeWrapper in validate_action_has_change (#1066) by Torkild Gundersen Kjevik
pass magic link request source context to mail sender (#1048) by marcnnn
Audit Logging add-on. (#1074) by James Harton
enhance error messages in hash_password_change.ex (#1058) by pupdogg
AshAuthentication: 2.11.0-3.0.0-rc.2
add Phoenix integration for recovery code strategy (#724) by @jimsynz
add convention-named Phoenix strategy tasks for auth integration (#719) by @jimsynz
add TOTP authentication components and routes (#706) by James Harton
prevent logout CSRF by replacing GET sign-out with confirmation page by @jimsynz
After user sign out all other tabs will disconnect (#662) by Abdessabour Moutik
After user sign out all other tabs will disconnect by Abdessabour Moutik
final implementation hopefully we can put this to rest by Abdessabour Moutik
add TOTP authentication components and routes by James Harton
Allow filtering auth routes (#696) by Andrés
add TOTP authentication components and routes (#706) by @jimsynz
After user sign out all other tabs will disconnect (#662) by Abdessabour Moutik
After user sign out all other tabs will disconnect by Abdessabour Moutik
final implementation hopefully we can put this to rest by Abdessabour Moutik
add TOTP authentication components and routes by @jimsynz
Allow filtering auth routes (#696) by Andrés (#696)
prevent logout CSRF by replacing GET sign-out with confirmation page by @jimsynz
make flash overridable (#702) by aidalgol (#702)
Add remember_me checkbox field to magic link forms (#693) by Matt Van Horn (#693)
Add support for custom extra components in authentication forms (#689) by @benjaminjacobberg (#689)
Add support for custom extra components in authentication forms by @benjaminjacobberg (#689)
Add support for remember me (#625) by Robert Graff (#625)
added token validation on socket mount by Abdessabour Moutik (#666)
add icon_src override by Dawid Danieluk (#660)
Deprecate Router.auth_routes_for/2..3 (#653) by @jimsynz (#653)
install with daisyUI overrides if using daisyUI (#650) by pikdum (#650)
Add remember_me checkbox field to magic link forms (#693) by Matt Van Horn (#693)
Add support for custom extra components in authentication forms (#689) by @benjaminjacobberg (#689)
Add support for custom extra components in authentication forms by @benjaminjacobberg (#689)
added token validation on socket mount by Abdessabour Moutik (#666)
add icon_src override by Dawid Danieluk (#660)
Deprecate Router.auth_routes_for/2..3 (#653) by James Harton (#653)
install with daisyUI overrides if using daisyUI (#650) by pikdum (#650)
AshPostgres: 2.6.19-2.9.0
relationship through (#686) by Kenneth Kostrešević
add support for
:identitytypes (#715) by Jatanasioadd native_in/2 function for SQL IN (...) syntax (#728) by jkreddy020203
Drop tables on missing resources & table name change handling (#713) by obviouslyweb
Add required!/1, ash_required/1, and ash_required!/2 (issue #261) (#707) by dallingson
add --use_fragments option to resource generator | Closes #437 (#709) by henryzhan013
support offset option in lateral join queries (#700) by Jinkyou Son
support touch_update_defaults? option to skip update_default fields on upsert by Michael Bärtschi
read touch_update_defaults? from options instead of changeset context (#701) by Michael Bärtschi
Split up usage rules into sub-rules (#691) by Mylan Connolly
fix for atomic create support
support atomic creates by Zach Daniel
Update AshFunctions, remove timestamp_from_uuid_v7 (#676) by Matt Savoia
Update MigrationGenerator to use uuidv7 when available (#674) by Matt Savoia
add create_table_options for partitioned tables and more (#664) by Robert Graff
add generator to tsvector type (#655) by Jesse Williams
verify check constraint attributes at compile time by Zach Daniel
update deps for bug fixes by Zach Daniel
remove unused bulk operation metadata function & update ash by Zach Daniel
implement combination_acc/1 by Zach Daniel
leverage new aggregate loading optimization by Zach Daniel
Add immutable version of
ash_raise_errorfunction to support extensions like Citus (#620) by Steve Brambillalocation in spark errors and migration generator fixes by Zach Daniel
use default constraint of ‘now()’ for AshPostgres.Timestamptz (#621) by siassaj
AshSql: 0.3.0-0.6.0
support relationship through (#212) by Kenneth Kostrešević (#212)
support offset option in relationship joins (#214) by @nallwhy (#214)
don’t cast integer/string equality check unnecessarily by @zachdaniel
do manual rel subquery regardless of no_attributes for aggregates (#213) by zackattackz (#213)
support atomics as insert values via subqueries by @zachdaniel
add support for is_distinct_from and is_not_distinct_from functions (#200) by @jechol (#200)
add SQL generation for is_distinct_from operators by @jechol (#200)
add support for is_distinct_from and is_not_distinct_from functions by @jechol (#200)
update Ash to 3.7 and fix deprecated calls by @zachdaniel
support combination_acc/1 function to get current combination accumulator by @zachdaniel
support massive aggregate optimization by @zachdaniel
Support calling immutable version of
ash_raise_error(#175) by @stevebrambilla (#175)add immutable_errors? to sql behaviour by @stevebrambilla (#175)
implemented the SQL translation for Has/Intersects functions (#176) by Abdessabour Moutik (#176)
AshSqlite: 0.2.14-0.2.16
support positional name argument in
generate_migrationsby Zach Danielread touch_update_defaults? from options instead of changeset context (#208) by Michael Bärtschi
support
nils_distinct?in identities by Zach Danielraise clearer error on unsupported foreign key drops in SQLite migrations by Zach Daniel
update to use bulk refs from latest ash by Zach Daniel
AshCsv: 0.9.8
use NimbleCSV (#15) by Jatanasio
AshAdmin: 0.13.19-1.1.0
completely rework the UI w/ dark mode by Zach Daniel
completely rework the UI w/ dark mode by Zach Daniel
rework json and markdown editors for CSP compliance by Zach Daniel
add forbidden banner by Zach Daniel
support typeahead/pills for many cardinality relationships by Zach Daniel
add list_tenants logic by Zach Daniel
Redo of Cinder integration (#380) by sevenseacat
incoporate sevenseacat theme into cinder table for consistent styling and enhanced features by Zach Daniel
Add :datetime_step form field configuration (#376) by capoccias
allow gettext ~> 1.0 (#368) by Aleksandr Lossenko
support
actor_loadoption by Zach Daniel
AshAppsignal: 0.2.0-0.2.2
extract single errors for much clearer AppSignal reporting by Zach Daniel
AshRateLimiter: 1.0.0
make rate limiter backend-pluggable with configurable lifecycle hooks (#62) by adamtharani
make rate limiter backend-pluggable with configurable lifecycle hooks by adamtharani
add hammer dep to igniter installer and create upgrade task by James Harton
add generic action support. (#56) by wjrtz
Adding support for igniter install (#48) by srikanthkyatham
Adding support for igniter install by srikanthkyatham
AshCloak: 0.2.0-0.2.1
don't encrypt attributes not in action accept list by Zach Daniel
AshMoney: 0.2.5
implement generator for Money type (#156) by Scott Bennett
AshOban: 0.5.0-0.8.8
support
scopeinAshOban.run_triggerby Zach Danieldeprecate
shared_context?in favor ofshared_contextby Zach Danieladd new test helpers for triggers & schedulers by Zach Daniel
add support for snoozing and cancelling Oban jobs from actions by Zach Daniel
validate that
on_erroraction exists by Zach Danielsupport setting tags in DSL by Zach Daniel
set job into context to allow for better logging and error handling by Zach Daniel
experiment with new chunk worker logic by Zach Daniel
Split up usage rules into sub-rules (#214) by Mylan Connolly
support
list_tenantsfor scheduled actions by Zach DanielBetter formatting for error messages (#208) by DVSLabs
use new oban 2.20 state groups (#201) by Barnabas Jovanovics
use new oban 2.20 state groups by Barnabas Jovanovics
Disable peer leadership when plugins are disabled (#202) by Parker Selbert
set tenant from record in case of attribute multitenancy (#195) by Barnabas Jovanovics
add use_tenant_from_record? DSL flag by Barnabas Jovanovics
add verifier for use_tenant_from_record? consistency by Barnabas Jovanovics
add oban-level use_tenant_from_record? default by Barnabas Jovanovics
use cancel & oban’s native batch inserting by Zach Daniel
use shared context for ash_oban? interaction if shared_context? DSL option is set (#194) by Barnabas Jovanovics
added stream_with option (default: :keyset) (#193) by paugramming
AshStateMachine: 0.2.13
error message on attribute that violates one_of constraint (#139) by Travis Simon
AshDoubleEntry: 1.0.16-1.0.17
Make read_transfers pagination optional (required?: false) (#159) by olivermt
AshPhoenix: 2.3.17-2.3.21
Add multitenancy to and create consistency between gen.html and gen.live (#459) by aVikingTrex (#459)
add
--resource-plural-for-routesto gen tasks by @zachdanielallow dynamic subscriptions in
keep_liveby @zachdanielSplit up usage rules into sub-rules (#458) by @mylanconnolly (#458)
add AshPhoenix.AshEnum by sevenseacat (#413)
soft deprecate page_from_params/3 and introduce params_to_page_opts/3 (#422) by hy2k (#422)
add AshPhoenix.AshEnum by Aidan Gauland (#413)


