2.4.0.0 release notes

2.4.0.0

  • Issue 2939 - Fixed an issue that could occur when an error is reported for a source file by the API or CLI with a simplified path, e.g., classes/Foo.cls, where the local path is more complex, e.g., classes/subfolder/Foo.cls. Now if no matches are found using the reported path, IC looks for a unique source file with the same name and, if found, reports against it.
  • Issue 2941 - As of 2026.1, IntelliJ IDEA includes first-class language support for JavaScript, TypeScript, and CSS for free (i.e., without an Ultimate subscription). This includes not just basic language support features like intelligent code completion, reference navigation, source code formatting, etc., but also extensive refactorings, static code analysis including integration of ESLint and Stylelint, tight npm integration, and much more.

    The main things that are notably missing are the JavaScript debugger and Jest support, but I'm working on a very tight integration of those now using LSP4IJ's DAP support and the DAP JavaScript debugger, specifically in support of Jest unit test execution, interactive debugging, and (hopefully) code coverage.

    IC now automatically detects this specific IDE state (unlicensed 2026.1+ IntelliJ IDEA) and enables all of the JS/TS/CSS-specific plugin extension points that would have previously only been enabled in licensed IDEs. IC also helps associate JS and CSS files with their native file types and disable any configured LSP4IJ language servers that were providing support for those languages in earlier free IDEs.
  • Issue 2943 - Fixed a "Comparison method violates its general contract" error that could occur in (large?) metadata retrievals in source format projects while sorting the retrieve results.
  • Added support for an Apex unit test execution continuous feedback loop via Apex Execution Runtime (aer)'s support for test-driven development. When aer is integrated, IC now includes a Watch with aer Apex unit test executor that runs all tests in the specified run configuration, then automatically re-runs them when project source files are modified, displaying new test results (typically) in near-real-time thanks to aer's incremental compiler. This cycle continues until/unless explicitly stopped by the user. A demonstration video is available here.

    This feature includes two new application-level configuration options in Illuminated Cloud | Configure Application | Apex | Apex Execution Runtime (aer):
    • Enable 'Watch with aer' - When enabled, the Watch with aer executor is included alongside other enabled Apex unit test executors. Enabled by default.
    • Disable deploy-on-save when 'Watch with aer' is running - When enabled alongside Enable 'Watch with aer' and a Watch with aer run configuration is actively running, deploy-on-save is automatically disabled. It is still possible to deploy metadata files using the Force Save and Deploy All/Modified Metadata actions, but simply typing Ctrl/Cmd+S will only save files to the local file system — triggering the aer watcher — and not the connected Salesforce organization. Enabled by default.

    I have also investigated integrating this with Apex code coverage so that coverage metrics are constantly updated, but unfortunately I haven't found a good way to keep the IDE's coverage view open across test runs, and the resulting constant opening/closing of the coverage view is quite disruptive. I'll keep investigating and will hopefully find a good solution.