Update toolchain to Elixir 1.20 final#77
Conversation
Reviewer's guide (collapsed on small PRs)Reviewer's GuideUpdates the Elixir/OTP toolchain from 1.20 RC to the final 1.20.0 release across local dev (mise/asdf), CI, and release workflows, updates the Dune dependency, and adjusts the Mix compiler list to drop the deprecated Phoenix compiler entry. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Code Review
This pull request updates the Elixir version to 1.20.0 across .tool-versions, mise.toml, and mix.exs, and upgrades the dune dependency to version 0.3.16. It also modifies the compilers list in mix.exs to subtract :phoenix. Feedback indicates that subtracting :phoenix from Mix.compilers() is redundant as it is not included in the default compilers list, and suggests simplifying the compilers configuration.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Hey - I've found 2 issues
Prompt for AI Agents
Please address the comments from this code review:
## Individual Comments
### Comment 1
<location path="app/mix.exs" line_range="116" />
<code_context>
version: "0.0.11",
elixir: "~> 1.18",
- compilers: [:gleam_deps, :gleam] ++ Mix.compilers(),
+ compilers: [:gleam_deps, :gleam] ++ (Mix.compilers() -- [:phoenix]),
aliases: ["deps.get": ["deps.get", "gleam.deps.get"]],
erlc_paths: [
</code_context>
<issue_to_address>
**issue (bug_risk):** Double‑check that removing the :phoenix compiler won’t skip any Phoenix-specific compilation steps you still rely on.
`Mix.compilers() -- [:phoenix]` changes behavior from the default pipeline. If any Phoenix templates/views or other compile-time hooks still rely on the `:phoenix` compiler (e.g. `.eex`/`.heex` compilation), they’ll stop running. Please confirm those responsibilities are either obsolete or handled elsewhere before making this change.
</issue_to_address>
### Comment 2
<location path=".github/workflows/ci.yml" line_range="25" />
<code_context>
with:
otp-version: "29.0"
- elixir-version: "1.20.0-rc.6"
+ elixir-version: "1.20.0"
gleam-version: "1.17.0"
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
</code_context>
<issue_to_address>
**suggestion:** Consider reducing duplication of Elixir version strings across workflows and config to simplify future bumps.
The Elixir version is duplicated across `ci.yml`, `wardwright-release.yml`, `mise.toml`, and `mix.exs`, increasing the chance of inconsistency on future bumps. Within each workflow, consider centralizing it via a top-level `env:` value or YAML anchor so you only update it in one place per file.
Suggested implementation:
```
elixir-version: "${{ env.ELIXIR_VERSION }}"
```
```
elixir-version: "${{ env.ELIXIR_VERSION }}"
```
To fully implement the suggestion and avoid duplication in this workflow, you should also:
1. Add a top-level `env:` block in `.github/workflows/ci.yml` (likely near the top of the file, alongside `name:` and `on:`) defining a single `ELIXIR_VERSION` value, for example:
```yaml
env:
ELIXIR_VERSION: "1.20.0"
```
2. If there are other `elixir-version:` occurrences elsewhere in `ci.yml`, update them to also use `${{ env.ELIXIR_VERSION }}` so there is exactly one Elixir version definition per workflow file.
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
There was a problem hiding this comment.
Pull request overview
Updates the repository’s Elixir toolchain configuration and CI/release workflows to target Elixir 1.20 (moving from an RC to a final version), and adjusts app build configuration accordingly.
Changes:
- Bump Elixir toolchain references from
1.20.0-rc.6to1.20.0(mise/asdf, CI, release workflow, and tinfoil metadata). - Update the app’s Mix configuration to exclude the deprecated Phoenix compiler entry and bump
:dunedependency. - Update the lockfile to reflect the new
:duneversion.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
mise.toml |
Updates mise-managed Elixir toolchain version. |
app/mix.exs |
Adjusts compiler list, tinfoil CI metadata, and bumps :dune requirement. |
app/mix.lock |
Updates locked :dune version/checksums. |
.tool-versions |
Updates asdf-managed Elixir toolchain version. |
.github/workflows/ci.yml |
Aligns CI setup-beam Elixir version to the new target. |
.github/workflows/wardwright-release.yml |
Aligns release workflow setup-beam Elixir version to the new target. |
Summary
Verification
cd app && MIX_HOME=/tmp/wardwright-mix-otp29 HEX_HOME=/tmp/wardwright-hex-otp29 mise exec -- mix format --check-formattedcd app && MIX_HOME=/tmp/wardwright-mix-otp29 HEX_HOME=/tmp/wardwright-hex-otp29 mise exec -- mix testcd app && MIX_HOME=/tmp/wardwright-mix-otp29 HEX_HOME=/tmp/wardwright-hex-otp29 mise exec -- mix compile --warnings-as-errorsgit diff --checkSummary by Sourcery
Update the Elixir toolchain and related configuration to target the final Elixir 1.20.0 on OTP 29 and align dependencies and compilers accordingly.
Enhancements:
Build:
CI: