chore: update toolchain and dependencies#2
Merged
Conversation
Bump the Nix-pinned toolchain to Elixir 1.20.1 / OTP 28 and refresh Hex dependencies for compatibility. Toolchain: - nix flake update (nixpkgs + nixpkgs-unstable) - Pin Elixir 1.20 on OTP 28 explicitly (the default `elixir` attr still tracks 1.18), via `beam.packages.erlang_28.elixir_1_20` - Bump `mix.exs` elixir requirement to ~> 1.20 Dependencies (mix deps.update --all): - credo 1.7.12 -> 1.7.19 - decimal 2.3.0 -> 3.1.1 (transitive via ecto) - dialyxir 1.4.6 -> 1.4.7 - earmark_parser 1.4.44 -> 1.4.45 - ecto 3.13.3 -> 3.14.0 - erlex 0.2.7 -> 0.2.9 - ex_doc 0.38.4 -> 0.40.3 - jason 1.4.4 -> 1.4.5 - makeup_erlang 1.0.2 -> 1.1.0 - stream_data 1.2.0 -> 1.3.0 - telemetry 1.3.0 -> 1.4.2 Mix 1.20 compatibility: - Move `preferred_cli_env` from `project/0` into the new `cli/0` callback as `preferred_envs` (the old location is deprecated in Mix 1.20) Compiles with zero warnings under --warnings-as-errors; format, credo, and the full test suite (197 passed) are green.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Modernizes the dev toolchain and Hex dependencies, and ensures the library builds cleanly on the latest compiler (Elixir 1.20.1 / OTP 28) with zero warnings.
Toolchain
nix flake updaterefreshednixpkgs(2025-10-04 → 2026-01-02) andnixpkgs-unstable(2025-10-04 → 2026-06-16).elixirattr in unstable still tracks 1.18, so the flake now pins Elixir 1.20 on OTP 28 explicitly viabeam.packages.erlang_28.elixir_1_20(anderlang_28,beam.elixir-ls).mix.exselixir:requirement bumped~> 1.14→~> 1.20.Dependencies (
mix deps.update --all)No deps held back — all updated to latest resolvable.
Mix 1.20 compatibility
preferred_cli_envout ofproject/0(deprecated in Mix 1.20) into the newcli/0callback aspreferred_envs.CI confirmation (run locally inside the Nix flake)
mix compile --warnings-as-errors --force— zero warningsmix test— 197 passed (11 properties, 186 tests), 8 excluded (:claude_code_acp, require an API key)mix format --check-formatted— cleanmix credo— no issuesKnown limitations / blockers
mix dialyzerreports pre-existingno_return/ contract warnings on every schemachangeset/1function (the@spec changeset(t(), map())combined with thestruct \\ %__MODULE__{}default arg). These are not a regression — they reproduce identically onmainwith the new toolchain, and Dialyzer is not part of the CI workflow (ci.ymlruns compile/test/format/credo only). Left out of scope for this dependency/toolchain PR; worth a separate follow-up to either relax the specs or add a Dialyzer ignore file and wire it into CI.