Skip to content

v24.0.1

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Aug 21:21
52c600e

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.