2.2.6.0 release notes

 2.2.6.0

  • JetBrains 2023.1 update - Changes required for compatibility with JetBrains' 2023.1 IDE releases.
  • Quality of life improvements
    • Issue 2318 - Changed the way that IC2 determines whether or not a file is a source or SDK file so that it uses the IDE's native project file index. For the few who have experienced a deadlock on initial project startup, this should take care of it. For all users, this might result in a slight overall performance increase.
    • Issue 2331 - The user is now prompted when closing Anonymous Apex and SOQL Query tool window tabs if the tab is unsaved and has contents or is saved and modified relative to the corresponding file.
    • Issue 2333 - ApexDoc comments are no longer required to be on the line immediately preceding the documented declaration. There can now be any number of intermediate blank lines separating the comment and the declaration.
    • Fixed a memory leak that would result in accumulated cached data as projects are closed across the lifetime of a single IDE process instance. That alone is quite nice, but the fix for that memory leak exposed another path where the same cached data would not be cleaned up in the lifetime of an open project. Addressing that stale cache issue actually seems to have (finally!) taken care of the last remaining issue that forced me to recommend closing/reopening the project after OST regeneration and other large-scale changes to project files. As a result, that prompt has been removed and should no longer be necessary. If you see any issues with unexpected/false errors, cache inconsistencies, etc., after taking this update—particularly if those issues are resolved by closing and reopening the project—please let me know ASAP.
    • Implemented a number of optimizations for the Salesforce CLI connection cache. There should now be significantly less cache read-through required (i.e., less modal progress dialogs for loading of the connection list and details). If you continue to see these more often than you think you should, please let me know as I've also added more diagnostic logging to understand why IC2 thinks it needs to refresh connection information from the CLI.
    • Fixed a long-standing issue with the custom labels cache becoming stale when new custom labels file are retrieved into the project.
    • Speaking of custom labels, all custom labels in the organization are now included in the generated OST, removing the need to retrieve custom labels into a project for Label.* code completion and references to work properly. If the custom labels are part of the project's "single source of truth", they should of course still be retrieved and managed with the project. When custom labels files are available in the project, code completion and references are prioritized against the corresponding entries in those file and degrade gracefully to the OST. Note that this change requires OST regeneration.
    • After re-creating a scratch org for an existing project in response to the module validator, the user is now prompted to push metadata to the newly-created org.
    • When creating a new source format project against a non-scratch org, the user is now prompted to retrieve org metadata before OST generation.
    • Issues found by the module validator that do not require end user input, e.g., directory exclusions, are now resolved automatically.
    • Metadata file creation actions are now available for contexts "above" a single deployable source root, e.g., the project node itself. Note that if the contextually-derived directory is an ancestor to multiple source roots, a specific source root must still be used for these actions.
  • Fixed the return type for Database.insert(List<SObject>, AccessLevel). The OST must be regenerated to see the effect of this fix.
  • Fixed an issue where the Illegal Assignment code inspection would flag calls to Database.queryWithBinds() that are assigned to a single SObject instead of a list or array.
  • Fixed an issue with IC2 module resolution from string literal-injected SOQL queries in Salesforce Functions source files.