Download Latest Version intellij-elixir-24.0.1.zip (8.4 MB)
Email in envelope

Get an email when there's a new version of Elixir plugin for JetBrain's IntelliJ

Home / v24.0.1
Name Modified Size InfoDownloads / Week
Parent folder
intellij-elixir-24.0.1.zip 2026-08-09 8.4 MB
README.md 2026-08-09 5.6 kB
v24.0.1 source code.tar.gz 2026-08-09 17.7 MB
v24.0.1 source code.zip 2026-08-09 21.6 MB
Totals: 4 Items   47.7 MB 0

Enhancements

  • @sh41
  • The plugin's "What's New" now shows the last six releases instead of the whole history. Each version is listed with its release date, so upgrading after skipping a few releases shows what you missed rather than one undifferentiated list.

Bug Fixes

  • @sh41
  • Adding an Elixir SDK registers it again. #3888 - the SDK list stayed empty and "Elixir Facet SDK is not defined" persisted, because setting up the SDK's paths read the SDK table without a read lock and the resulting error aborted registration before the SDK reached the list.
  • A newly added Elixir SDK is paired with the Erlang SDK you picked, rather than whichever one happened to be registered first. The chosen SDK is not committed until the dialog is applied, and the pairing was resolved without consulting the dialog's uncommitted SDKs.
  • The "Configure from mise" action no longer goes missing from the SDK banner. The startup scan request could be dropped before its collector was listening, leaving the project with no tool manager scan at all.
  • #3901 - @sh41
  • Semantic syntax highlighting now appears in decompiled .beam files. Function names, types and the rest were being coloured by the annotators and then discarded before they reached the editor, so decompiled code showed only the plain lexer colours. v24.0.0 announced this as working; it was not.
  • Opening a decompiled .beam file no longer reports "PsiFile's context does not match the context of the editor", which reached users as an IDE error report.

Build / CI

  • @sh41
  • CHANGELOG.md is now in Keep a Changelog format and is the single source of the plugin change notes, rendered by the Gradle Changelog Plugin. resources/META-INF/changelog.html, which held a separately hand-written copy, is removed - it had gone stale, so 24.0.0 shipped with v23.9.0 as its newest section.
  • Every pull request now needs a CHANGELOG.md entry, checked by changelog.yml: it must land under ## [Unreleased], be a list item, and use a known group. Apply the no-changelog label when there

    is genuinely nothing to record.

  • The Tag Release workflow validates the tag shape against the prerelease input, that a release is cut from main, that the tag is new and increases, and that it matches pluginVersion.

  • Plugin verifier reports are now uploaded whenever a verification leg fails, including on pull requests. Previously the upload was gated on an input that is always empty for pull_request, so the reports were unobtainable on exactly the runs that needed them and the evidence had to be dug out of a raw job log. Green runs still upload nothing unless a caller asks.
  • Everything scoped to an Elixir/OTP pair is now keyed on the pair: MIX_HOME joins MIX_ARCHIVES, and the quoter's _build/deps join both. Two OTPs for one Elixir previously shared a build tree and overwrote each other, and switching versions re-downloaded hex and rebar. The first build per pair after this change reinstalls and rebuilds once.
  • CI now covers OTP 25, and runs a decompiler sweep against OTP 28 for the first time. Two beam.additional pairs were added, 1.13.4 / 25.3.2.21 and 1.18.4 / 28.4, chosen to cover OTP majors rather than Elixir minors: most of the decompiled surface is Erlang and the BEAM chunk formats track OTP. OTP 25 is now a supported pair - measured locally at 6 560 tests, 0 failures, so its leg is required and any later change that breaks it fails the pipeline. OTP 28 stays informational: its 291 failures are all pre-existing Elixir-keyed quoting cases, with no OTP-28 decompiler failures.
  • Switching Elixir/OTP versions now re-runs the tests. The versions reach the test JVM as environment variables, which Gradle could not see, so mise use erlang@X elixir@Y followed by check reported the previous pair's results - the task was up to date, and the build cache would even restore those results after a cleanTest. Both test tasks now declare the versions as inputs.
  • A transient 5xx from JetBrains' artifact CDN no longer loses a whole test leg. Gradle already treats repository server errors as retryable, but its default budget is three attempts over about three seconds; gradle.properties now allows eight from a 3-second doubling backoff, roughly six minutes, for every build - CI and local alike.
  • CI restores the Elixir quoter cache again - it never had. actions/cache identifies an entry by key and by a version hashed from the literal path: lines, and the restore and save steps listed different paths, so they addressed different entries under one key. Every leg missed, rebuilt its quoter dependencies from Hex, then failed to save against the entry an earlier run had left there - reported as Unable to reserve cache, which reads as a harmless race between legs. Both steps now take the path list from one place.
  • The test results comment now leads with failures on the required legs, the only figure that decides whether a pull request can merge, and reports tests per leg in place of a cross-leg union that read 12,913 for a run in which no leg ran more than 6,659.
Source: README.md, updated 2026-08-09