Skip to content

Commit 541c9c8

Browse files
Merge branch 'main' into main
2 parents 2368b32 + 20c79f3 commit 541c9c8

23 files changed

Lines changed: 563 additions & 64 deletions

File tree

.formatter.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ spark_locals_without_parens = [
223223
on: 1,
224224
only_when_valid?: 1,
225225
page: 1,
226+
paginate_by_default?: 1,
226227
pagination: 0,
227228
pagination: 1,
228229
parse_attribute: 1,

.github/workflows/ash-ci.yml

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,21 @@ on:
88
secrets:
99
HEX_API_KEY:
1010
required: false
11+
OBAN_PRO_LICENSE_KEY:
12+
required: false
1113
inputs:
14+
oban-pro:
15+
type: boolean
16+
default: false
1217
release:
1318
type: boolean
1419
default: true
1520
publish-docs:
1621
type: boolean
1722
default: true
23+
unused-deps:
24+
type: boolean
25+
default: true
1826
spark-formatter:
1927
type: boolean
2028
default: true
@@ -139,6 +147,18 @@ jobs:
139147
else
140148
echo "erlang ${{ inputs.erlang-version }}" > .tool-versions
141149
fi
150+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
151+
if: ${{ inputs.oban-pro }}
152+
- name: Configure Oban Pro hex repo
153+
if: ${{ inputs.oban-pro }}
154+
run: |
155+
mix local.hex --if-missing --force
156+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
157+
shell: bash
158+
env:
159+
HEX_HOME: ${{ runner.temp }}/.hex
160+
MIX_HOME: ${{ runner.temp }}/.mix
161+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
142162
- uses: team-alembic/staple-actions/actions/mix-hex-audit@59199173e18eee6748b65d01626ef82d51c6e963 # main
143163
- uses: team-alembic/staple-actions/actions/mix-task@59199173e18eee6748b65d01626ef82d51c6e963 # main
144164
with:
@@ -270,6 +290,16 @@ jobs:
270290
echo "erlang ${{ inputs.erlang-version }}" > .tool-versions
271291
fi
272292
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
293+
- name: Configure Oban Pro hex repo
294+
if: ${{ inputs.oban-pro }}
295+
run: |
296+
mix local.hex --if-missing --force
297+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
298+
shell: bash
299+
env:
300+
HEX_HOME: ${{ runner.temp }}/.hex
301+
MIX_HOME: ${{ runner.temp }}/.mix
302+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
273303
- name: Set OS deps compile partition count
274304
run: echo "MIX_OS_DEPS_COMPILE_PARTITION_COUNT=$(($(lscpu -p | grep -v '^#' | sort -u -t, -k 2,4 | wc -l) / 2))" >> $GITHUB_ENV
275305
- uses: team-alembic/staple-actions/actions/mix-compile@04f27881d51ef973841fc40c549aefb7b52db7f7 # main
@@ -285,6 +315,18 @@ jobs:
285315
- spark-cheat-sheets
286316
steps:
287317
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
318+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
319+
if: ${{ inputs.oban-pro }}
320+
- name: Configure Oban Pro hex repo
321+
if: ${{ inputs.oban-pro }}
322+
run: |
323+
mix local.hex --if-missing --force
324+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
325+
shell: bash
326+
env:
327+
HEX_HOME: ${{ runner.temp }}/.hex
328+
MIX_HOME: ${{ runner.temp }}/.mix
329+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
288330
- uses: team-alembic/staple-actions/actions/mix-docs@59199173e18eee6748b65d01626ef82d51c6e963 # main
289331
with:
290332
mix-env: dev
@@ -316,6 +358,18 @@ jobs:
316358
if: ${{inputs.conventional-commit}}
317359
steps:
318360
- uses: actions/checkout@v6.0.2
361+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
362+
if: ${{ inputs.oban-pro }}
363+
- name: Configure Oban Pro hex repo
364+
if: ${{ inputs.oban-pro }}
365+
run: |
366+
mix local.hex --if-missing --force
367+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
368+
shell: bash
369+
env:
370+
HEX_HOME: ${{ runner.temp }}/.hex
371+
MIX_HOME: ${{ runner.temp }}/.mix
372+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
319373
- uses: team-alembic/staple-actions/actions/conventional-commit@main
320374
with:
321375
mix-env: test
@@ -327,6 +381,18 @@ jobs:
327381
- build-test
328382
steps:
329383
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
384+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
385+
if: ${{ inputs.oban-pro }}
386+
- name: Configure Oban Pro hex repo
387+
if: ${{ inputs.oban-pro }}
388+
run: |
389+
mix local.hex --if-missing --force
390+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
391+
shell: bash
392+
env:
393+
HEX_HOME: ${{ runner.temp }}/.hex
394+
MIX_HOME: ${{ runner.temp }}/.mix
395+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
330396
- uses: team-alembic/staple-actions/actions/mix-format@59199173e18eee6748b65d01626ef82d51c6e963 # main
331397
with:
332398
mix-env: test
@@ -338,6 +404,18 @@ jobs:
338404
- build-test
339405
steps:
340406
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
407+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
408+
if: ${{ inputs.oban-pro }}
409+
- name: Configure Oban Pro hex repo
410+
if: ${{ inputs.oban-pro }}
411+
run: |
412+
mix local.hex --if-missing --force
413+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
414+
shell: bash
415+
env:
416+
HEX_HOME: ${{ runner.temp }}/.hex
417+
MIX_HOME: ${{ runner.temp }}/.mix
418+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
341419
- uses: team-alembic/staple-actions/actions/mix-task@59199173e18eee6748b65d01626ef82d51c6e963 # main
342420
if: ${{inputs.spark-formatter}}
343421
with:
@@ -351,6 +429,18 @@ jobs:
351429
- build-test
352430
steps:
353431
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
432+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
433+
if: ${{ inputs.oban-pro }}
434+
- name: Configure Oban Pro hex repo
435+
if: ${{ inputs.oban-pro }}
436+
run: |
437+
mix local.hex --if-missing --force
438+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
439+
shell: bash
440+
env:
441+
HEX_HOME: ${{ runner.temp }}/.hex
442+
MIX_HOME: ${{ runner.temp }}/.mix
443+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
354444
- uses: team-alembic/staple-actions/actions/mix-task@59199173e18eee6748b65d01626ef82d51c6e963 # main
355445
if: ${{inputs.spark-cheat-sheets}}
356446
with:
@@ -363,6 +453,18 @@ jobs:
363453
- build-test
364454
steps:
365455
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
456+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
457+
if: ${{ inputs.oban-pro }}
458+
- name: Configure Oban Pro hex repo
459+
if: ${{ inputs.oban-pro }}
460+
run: |
461+
mix local.hex --if-missing --force
462+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
463+
shell: bash
464+
env:
465+
HEX_HOME: ${{ runner.temp }}/.hex
466+
MIX_HOME: ${{ runner.temp }}/.mix
467+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
366468
- uses: team-alembic/staple-actions/actions/mix-task@59199173e18eee6748b65d01626ef82d51c6e963 # main
367469
if: ${{inputs.sobelow}}
368470
with:
@@ -375,6 +477,18 @@ jobs:
375477
if: ${{inputs.doctor}}
376478
steps:
377479
- uses: actions/checkout@v6.0.2
480+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
481+
if: ${{ inputs.oban-pro }}
482+
- name: Configure Oban Pro hex repo
483+
if: ${{ inputs.oban-pro }}
484+
run: |
485+
mix local.hex --if-missing --force
486+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
487+
shell: bash
488+
env:
489+
HEX_HOME: ${{ runner.temp }}/.hex
490+
MIX_HOME: ${{ runner.temp }}/.mix
491+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
378492
- uses: team-alembic/staple-actions/actions/mix-doctor@main
379493
with:
380494
mix-env: test
@@ -386,6 +500,18 @@ jobs:
386500
security-events: write
387501
steps:
388502
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
503+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
504+
if: ${{ inputs.oban-pro }}
505+
- name: Configure Oban Pro hex repo
506+
if: ${{ inputs.oban-pro }}
507+
run: |
508+
mix local.hex --if-missing --force
509+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
510+
shell: bash
511+
env:
512+
HEX_HOME: ${{ runner.temp }}/.hex
513+
MIX_HOME: ${{ runner.temp }}/.mix
514+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
389515
- uses: team-alembic/staple-actions/actions/mix-credo@59199173e18eee6748b65d01626ef82d51c6e963 # main
390516
with:
391517
mix-env: test
@@ -406,17 +532,42 @@ jobs:
406532
if: ${{inputs.codegen}}
407533
steps:
408534
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
535+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
536+
if: ${{ inputs.oban-pro }}
537+
- name: Configure Oban Pro hex repo
538+
if: ${{ inputs.oban-pro }}
539+
run: |
540+
mix local.hex --if-missing --force
541+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
542+
shell: bash
543+
env:
544+
HEX_HOME: ${{ runner.temp }}/.hex
545+
MIX_HOME: ${{ runner.temp }}/.mix
546+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
409547
- uses: team-alembic/staple-actions/actions/mix-task@59199173e18eee6748b65d01626ef82d51c6e963 # main
410548
with:
411549
mix-env: test
412550
task: ash.codegen --check
413551
unused-deps:
414552
name: mix deps.unlock --check-unused
415553
runs-on: ubuntu-latest
554+
if: ${{inputs.unused_deps}}
416555
needs:
417556
- build-test
418557
steps:
419558
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
559+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
560+
if: ${{ inputs.oban-pro }}
561+
- name: Configure Oban Pro hex repo
562+
if: ${{ inputs.oban-pro }}
563+
run: |
564+
mix local.hex --if-missing --force
565+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
566+
shell: bash
567+
env:
568+
HEX_HOME: ${{ runner.temp }}/.hex
569+
MIX_HOME: ${{ runner.temp }}/.mix
570+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
420571
- uses: team-alembic/staple-actions/actions/mix-task@59199173e18eee6748b65d01626ef82d51c6e963 # main
421572
with:
422573
mix-env: test
@@ -439,6 +590,18 @@ jobs:
439590
fetch-depth: 0
440591
ref: ${{ github.head_ref }}
441592
if: github.event.pull_request.user.login == 'dependabot[bot]'
593+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
594+
if: ${{ inputs.oban-pro && github.event.pull_request.user.login == 'dependabot[bot]' }}
595+
- name: Configure Oban Pro hex repo
596+
if: ${{ inputs.oban-pro && github.event.pull_request.user.login == 'dependabot[bot]' }}
597+
run: |
598+
mix local.hex --if-missing --force
599+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
600+
shell: bash
601+
env:
602+
HEX_HOME: ${{ runner.temp }}/.hex
603+
MIX_HOME: ${{ runner.temp }}/.mix
604+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
442605
- uses: team-alembic/staple-actions/actions/mix-task@59199173e18eee6748b65d01626ef82d51c6e963 # main
443606
with:
444607
task: igniter.upgrade --git-ci --yes
@@ -477,6 +640,18 @@ jobs:
477640
- 3306:3306
478641
steps:
479642
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
643+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
644+
if: ${{ inputs.oban-pro }}
645+
- name: Configure Oban Pro hex repo
646+
if: ${{ inputs.oban-pro }}
647+
run: |
648+
mix local.hex --if-missing --force
649+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
650+
shell: bash
651+
env:
652+
HEX_HOME: ${{ runner.temp }}/.hex
653+
MIX_HOME: ${{ runner.temp }}/.mix
654+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
480655
- uses: team-alembic/staple-actions/actions/mix-task@59199173e18eee6748b65d01626ef82d51c6e963 # main
481656
if: ${{inputs.postgres && inputs.ash_postgres}}
482657
with:
@@ -568,6 +743,18 @@ jobs:
568743
- build-test
569744
steps:
570745
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
746+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
747+
if: ${{ inputs.oban-pro }}
748+
- name: Configure Oban Pro hex repo
749+
if: ${{ inputs.oban-pro }}
750+
run: |
751+
mix local.hex --if-missing --force
752+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
753+
shell: bash
754+
env:
755+
HEX_HOME: ${{ runner.temp }}/.hex
756+
MIX_HOME: ${{ runner.temp }}/.mix
757+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
571758
- uses: team-alembic/staple-actions/actions/mix-dialyzer@59199173e18eee6748b65d01626ef82d51c6e963 # main
572759
with:
573760
mix-env: dev
@@ -588,6 +775,18 @@ jobs:
588775
- build-test
589776
steps:
590777
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
778+
- uses: team-alembic/staple-actions/actions/install-elixir@59199173e18eee6748b65d01626ef82d51c6e963 # main
779+
if: ${{ inputs.oban-pro }}
780+
- name: Configure Oban Pro hex repo
781+
if: ${{ inputs.oban-pro }}
782+
run: |
783+
mix local.hex --if-missing --force
784+
mix hex.repo add oban https://repo.oban.pro --fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc --auth-key $OBAN_PRO_LICENSE_KEY
785+
shell: bash
786+
env:
787+
HEX_HOME: ${{ runner.temp }}/.hex
788+
MIX_HOME: ${{ runner.temp }}/.mix
789+
OBAN_PRO_LICENSE_KEY: ${{ secrets.OBAN_PRO_LICENSE_KEY }}
591790
- uses: team-alembic/staple-actions/actions/mix-compile@59199173e18eee6748b65d01626ef82d51c6e963 # main
592791
with:
593792
mix-env: dev

CHANGELOG.md

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

99
<!-- changelog -->
1010

11+
## [v3.21.3](https://github.com/ash-project/ash/compare/v3.21.2...v3.21.3) (2026-03-25)
12+
13+
14+
15+
16+
### Bug Fixes:
17+
18+
* make bulk actions opt-in for managed relationships by [@zachdaniel](https://github.com/zachdaniel)
19+
20+
### Improvements:
21+
22+
* add paginate_by_default? option to read actions (#2648) by Juan Martin [(#2648)](https://github.com/ash-project/ash/pull/2648)
23+
24+
## [v3.21.2](https://github.com/ash-project/ash/compare/v3.21.1...v3.21.2) (2026-03-25)
25+
26+
27+
28+
29+
### Bug Fixes:
30+
31+
* recompute changed? after setup_managed_belongs_to_relationships (#2647) by [@barnabasJ](https://github.com/barnabasJ) [(#2647)](https://github.com/ash-project/ash/pull/2647)
32+
33+
### Improvements:
34+
35+
* support structs in type inference by [@zachdaniel](https://github.com/zachdaniel)
36+
1137
## [v3.21.1](https://github.com/ash-project/ash/compare/v3.21.0...v3.21.1) (2026-03-23)
1238

1339

0 commit comments

Comments
 (0)