2.3.2.0 release notes

2.3.2.0

  • Issue 2565 - Eliminated a large set of "Slow operations are prohibited on the EDT" warnings by changing the way that key IDE project/module information is requested by IC2. This should be an effective no-op for end users and is more about having IC2 play nicely in the JetBrains IDE plugin model.

    I've had a small set of kind users helping to burn in these changes over the past ~2 months, reporting issues as they've found them and helping to verify the corresponding fixes (which in some cases took repeated attempts). I'd like to personally thank all of the users who were willing to endure — and provide invaluable diagnostic information for — issues in these test builds. Their patience and generous donations of their valuable time are greatly appreciated!

    If new issues are found that were not present in previous builds without these changes, please report them ASAP with as much diagnostic information as possible (though of course I'll prompt you for anything I need that hasn't already been provided) and I'll try to turn around a resolution ASAP. Hopefully that won't be the case as things have seemed quite solid for the test users for the past month or so, but obviously when such changes have much wider exposure, there's always a chance of kicking over some new stones.
  • Issue 2566 - Fixed an issue getter/setter code generation where accessor methods for non-Boolean fields with names beginning with is would end up using only the portion after that incorrectly-inferred prefix, e.g., private String[] issues would previously result in accessor methods named getSues() and setSues() and should now result in the correct accessor methods named getIssues() and setIssues() respectively.
  • Issue 2571 - Fixed an issue with deployments that include actively-scheduled Schedulable implementations and/or transitive dependencies of such implementations. These deployments are now automatically routed to the Metadata API even if the overall deployment could otherwise have occurred via the Tooling API. Note that the org must still have the Deployment Settings | Allow deployments of components when corresponding Apex jobs are pending or in progress option enabled for these deployments to succeed. Please see this article for more information on the exact restrictions.
  • Issue 2573 - Fixed an issue where the selected connection was not being used consistently in components that allow alternative connection selection, e.g., the build options dialog and Apex unit test run configurations.
  • Issue 2582 - The OST should now include @NamespaceAccessible types and members from installed namespaced packages with the same namespace as the target org. Note that OST regeneration is required to see the effect of this enhancement.
  • Issue 2588 - Fixed a compatibility issue with PMD 7.3.0.
  • More fixes and improvements for the recent Apex unit test and code coverage enhancements:
    • Locally-modified files are now included in Changed Only pre-unit test execution deployments. This ensures that files that are changed locally since the last successful deployment but don't appear changed in version control — most likely due to being rolled back/reverted — are included in the next pre-test execution deployment to ensure that the org is properly up-to-date even though those files don't register as changed in version control.
    • The Changed Only option is now displayed in the Apex unit test run configuration editor only when the project is enabled for version control.
    • For projects not configured for version control but configured to keep the org up-to-date against non-source-tracked orgs, all source files are now included in the deployment. That obviously isn't ideal for shared login conflict detection, but in that very specific project/connection configuration — no version control and shared login conflict detection — the user will need to decide whether or not to enable the deploy-on-test feature.
  • Added @TestSetup methods as first-class entities during Apex unit test execution. When present, these methods are now reported as the first method in the parent class with their time added to the overall class' time accordingly.
  • Added a notification upon Apex unit test execution completion that displays the actual (local elapsed time) and reported (via the Salesforce Tooling API) total durations. Note that these values generally differ due to server-side queueing, parallel test execution, etc. The latter value — the time reported by the API — is what is displayed in the actual test results.
  • Improved the behavior of the Deploy on save | Deploy all modified files configuration option to properly evict queued modified files when they are deployed successfully via a mechanism other than deploy-on-save.
  • After speaking with Salesforce about the expected/proper behavior of the new @InvocableVariable annotation DefaultValue and PlaceholderText attributes from Summer '24, I updated the Apex parser to allow only string literal-based values for those attributes and enhanced the Apex Annotation and Modifier Agreement code inspection to validate values for DefaultValue based on the annotated field's declared data type as follows:
    • Boolean fields must have a value of 'true' or 'false' (case-insensitive).
    • Integer fields must have a value of 'validIntegerValue' where the integer value cannot have any suffix.
    • Long fields must have a value of 'validLongValuel' where the l suffix is required and case-insensitive.
    • Decimal fields must have a value of 'validDecimalValue' where the floating point value cannot have any suffix.
    • Double fields must have a value of 'validDoubleValued' where the d suffix is required and case-insensitive.
    • String fields can use any valid string value including the empty string.
  • Fixed a bug where expressions like Trigger.new[0].addError() could result in the addError() member reference not being properly resolved because Trigger.new[0] was being evaluated as a type reference in spite of the .new (or .class) selector.
  • Changed file type-based file icon determination in source format projects for *.ext-meta.xml files to use only file types registered specifically by IC2 for the *.ext file extension. This primarily addresses an issue where custom metadata files would end up using the IDE's Markdown file type icon, though it can certainly help with other unexpected file type icon usages.
  • Changed the data type of the lightning-input LWC component's value property from string to any.
  • Added a defensive check against a potential NPE in the Apex Duplicate Declaration code inspection that could result in stale static code analysis results being displayed in the Apex editor.
  • Prospective fix for an issue where the OST could be reported as out-of-date even immediately after successful OST (re)generation.
  • Other related fixes and improvements.