2.1.9.3 Release Notes

posted Oct 21, 2021, 7:22 AM by Scott Wells

2.1.9.3

  • Issue 1589 - Provided an automated workaround for the known issues with deployment of LWC component bundle files via the Tooling API. Tooling API-based LWC deployment is now enabled by default. If an LWC bundle file is requested for deployment and any non-test JavaScript file in the same bundle imports a custom SObject field or a field from the standard User object, deployment is automatically routed to the Metadata API. Similarly, if Tooling API deployment of an LWC bundle file fails specifically due to a FIELD_INTEGRITY_EXCEPTION with an error message denoting a transitive compilation failure due to an unresolvable reference to a custom SObject or User field, deployment of the entire bundle containing that file is automatically retried using the Metadata API.

    In my experience, this seems to provide superior deployment performance for individual LWC bundle files most of the time. I've tested the deployment routing logic extensively and it seems to work very well, but given that it uses a heuristic-based approach, it's possible that there may be variants that are not currently covered. If that's the case, please let me know about these failures–in particular the exact error code and message included in the Tooling API deployment failure response–and I'll update the heuristic accordingly. If you do find this approach to be problematic while waiting for the logic to be updated to cover additional scenarios–or if you're finding deployment performance to be worse than before, perhaps because retries are often needed–you can disable Tooling API deployment for LWC and the Metadata API will be used for all LWC deployments.

  • Issue 1809 - PMD Apex is now integrated into IC2 as a real-time code inspection as opposed to the bulk inspection integration that has been provided previously. The PMD distribution and ruleset must still be downloaded and registered with IC2's PMD Apex inspection, but once registered, IC2 engages PMD in-memory and reports issues in real-time just as with its own first-class code inspections. Support is also provided for suppression of issues reported by PMD Apex via both @SuppressWarnings annotation and NOPMD end-of-line comment. A demonstration video has been published detailing this new integration.
  • Issue 1963 - It is no longer necessary to use namespace prefixes in the Anonymous Apex or SOQL Query tool windows when working against a connection to an org with a namespace. Code completion and reference resolution now work in those REPL-style editors exactly as they do in standard editors where the code is inferred to be "inside" the namespace.
  • Added a new template for SFDX project creation, Illuminated Cloud, that runs the Salesforce CLI force:project:create command with the standard template, then removes all template-generated files that are not relevant for IC2/JetBrains development. For those exclusively using IC2 for Salesforce development, this is now the recommended SFDX project template.
  • Made several changes in anticipation of the upcoming 2021.3 JetBrains IDE update to help ensure that IC2 is compatible with that release immediately, at least based on the current EAP builds. As new builds are released between now and 2021.3 GA, I will work to ensure continued compatibility.
  • Other related fixes and improvements.

2.1.9.2 release notes

posted Oct 14, 2021, 8:07 AM by Scott Wells

2.1.9.2

  • Issue 1903 - Fixed a few issues around how project details are inferred from an existing directory structure. Improved the project import/adoption workflow to eliminate obvious intermediate steps such as automatically selecting a newly-created connection for the project.
  • Issue 1972 - When switching connections for deployment, if there's no previous test level to restore for the newly-selected connection, the existing test level is now retained.
  • Updated the deployment and retrieval substitution rules tables to use regular expression-aware cell renderers and editors.
  • Added the standard console toolbar buttons to the Anonymous Apex, Log Analyzer, and Message View console views.
  • Fixed an issue where stopping a locally-deployed Salesforce function could falsely report that the process had not in fact been terminated when it actually had.
  • Other related fixes and improvements.

2.1.9.1 Release Notes

posted Oct 11, 2021, 11:14 AM by Scott Wells

2.1.9.1

  • Issue 1944 - JetBrains 2021.2 support status - Things continue to look good, so I'm going to remove the warnings and begin treating 2021.2.2+ like a fully-supported version of the underlying JetBrains IDEs. If you do see issues unique to the latest JetBrains versions, please let me know via either email or the public issue tracker.
  • Issue 1985 - Winter '22 / API v53.0 support
    • Updated all SOAP API clients to be based on the API v53.0 WSDLs.
    • Updated the API version used for primary communication with Salesforce APIs to 53.0.
    • Added 53.0 as an available API version number for configured connections.
    • Updated metadata.xsd used for validation and code completion in metadata XML files to API v53.0.
    • Updated the OST version number to prompt regeneration for system API changes in API v53.0.
    • Updated Visualforce, Aura, and LWC component components, functions, modules, etc., for Winter '22 changes.
    • Updated the bundled SLDS to 2.16.1.
    • Updated all integrated API documentation.
    • Added support for the new Apex enum valueOf(name) class method.
    • Added full support for Salesforce Functions development. See below for details.
  • Issue 1951 - Salesforce Functions support - Implemented full support for development, deployment, monitoring, etc., of Salesforce Functions in all supported languages (see below for IDE-specific details). For a relatively complete overview of these features as well as a more general description of Salesforce Functions, please see this demonstration video.

    Features

    Salesforce Functions development features provided by Illuminated Cloud 2 include:
    • A new Salesforce Functions tool window that is the primary interface for managing the project's Salesforce functions.
    • Creation of Salesforce functions in all supported languages. Illuminated Cloud 2 enriches the CLI's generated function source files for package/class name specification in Java, stronger typing in JavaScript via type inference hints, optional source code formatting, etc.
    • Removal of Salesforce functions including removal of all IDE configuration scaffolding, automatic termination of associated running processes, etc.
    • Automatic detection of existing functions in opened projects and assistance with the required IDE project configuration, function SDK processing, etc., to provide the full set of IDE features for development and management of those functions.
    • Integrated unit test execution and interactive debugging (as supported by the host IDE based on the implementation language; see below).
    • Integrated local Salesforce function deployment to Docker. Locally-deployed functions can be monitored, invoked, debugged, terminated, etc. Per-function local deployment configurations are possible including specification of function invocation port, remote debug port, environment variables, etc.
    • Integrated local Salesforce function invocation as a standard IDE run configuration with a configurable payload (file-based or explicitly-provided). Gutter annotations are automatically added to Salesforce function source files for easy invocation and debugging via the IDE's standard run configuration features.
    • Integrated remote Salesforce function deployment to a Heroku compute environment. Remotely-deployed functions can be monitored, invoked, etc. NOTE: At this time it's not possible to specify the -b branch or --force arguments for remote deployments.
    • Integrated compute environment management.
    • Automatic detection and assistance with the most common types of deployment issues, e.g., port conflicts, unfulfilled version control dependencies, unauthenticated or expired sessions, missing or invalid compute environments, etc.
    • Cross-language code completion, validation, reference navigation, etc., for:
      • SOQL in Java, JavaScript, and TypeScript string literals used for query execution.
      • JSON payloads in Apex string literals used for function invocation.
      • Function names in Apex string literals used for function lookup.

    Language Support

    As stated, function language support varies based on the host JetBrains IDE:
    • IntelliJ IDEA Commercial Edition fully-supports development of functions in Java, JavaScript, and TypeScript.
    • IntelliJ IDEA Community Edition fully-supports development of functions in Java with very limited support for JavaScript and TypeScript. Functions of the latter types can be created, deployed both locally and remotely and invoked, but editor features are limited and interactive debugging is not available for those languages.
    • PhpStormPyCharm Professional EditionRubyMine, and WebStorm fully-support development of functions in JavaScript and TypeScript with very limited support for Java. Functions of the latter type can be created, deployed both locally and remotely and invoked, but editor features are limited and interactive debugging is not available for Java.
    • PyCharm Community Edition provides very limited support for Java, JavaScript, and TypeScript. Functions can be created, deployed both locally and remotely and invoked, but editor features are limited and interactive debugging is not available for any function language.

    Software Prerequisites

    Several prerequisites must be installed for Salesforce Functions development. Specifically the following command-line utilities must be installed and available to the IDE process' via the operating system's search path (i.e., PATH environment variable):
    • Salesforce CLI - The Salesforce CLI (sfdx) must be installed and registered with IC2, and the sf executable must be available via the search path.
    • Salesforce Functions plugin - The Salesforce Functions plugin for sf must be installed using sf plugins install functions.
    • Docker - Docker must be installed and running for local deployment.
    • Git - The Git command-line must be installed for remote deployment. Note that project version control is strongly-recommended regardless of whether remote deployment occurs.

    Additionally the following JetBrains IDE plugins should be enabled for the best Salesforce Functions development experience:

    • Maven (IntelliJ IDEA only) - Required for Java-based function development.
    • JUnit (IntelliJ IDEA only) - Required for Java-based function unit testing.
    • JavaScript and TypeScript (commercial IDEs only) - Required for JavaScript- and TypeScript-based function development.
    • JavaScript Debugger (commercial IDEs only) - Required for JavaScript- and TypeScript-based function interactive debugging.
    • Node.js (commercial IDEs only) - Required for JavaScript- and TypeScript-based function development and Mocha-based unit testing.
    • Git (all IDEs) - Required for integrated Git version control management.
    • Docker (commercial IDEs only) - Optional for management of locally-deployed function Docker containers, images, etc.

    What Can You Do Right Now?

    Salesforce Functions are an add-on feature that must be licensed and enabled in your organization(s) for production use. However, even without a license you can create functions in all supported languages, write and execute unit tests for them, and even deploy them locally into Docker containers connected to your existing organizations where they can be invoked and debugged interactively.

    Without a Salesforce Functions license, you cannot deploy your functions remotely into Heroku compute environments or consequently invoke them from Apex.

    This level of available functionality, albeit limited, should provide all users the opportunity to experiment with Salesforce Functions immediately to gain an understanding of how they work and how they might be used in existing and/or future Salesforce projects.

    Known Issues and Limitations

    • The CLI commands for Salesforce Functions do not currently support a formal programmatic interface. As a result, the type of CLI-based integration employed by Illuminated Cloud 2 may be fragile until a more formal interface is provided. I have shared IC2's current assumptions and expectations with the team responsible for this work in hopes that it helps to ensure a stable integration, but issues are possible as the plugin is updated in the interim. If such issues occur, please bring them to my attention and I will work quickly to resolve them. However, it will be critically important that the versions of IC2 and the functions plugin are kept up-to-date and in sync to ensure the best results.
    • The env list -t compute CLI command that is used by IC2 to derive a project's compute environment name was erroneously removed between beta and GA. Salesforce is aware of this, and it should hopefully be restored shortly. In the interim, IC2 is not able to determine an existing compute environment name unless it was explicitly created from within IC2 itself. As a workaround, you can use IC2's Create Compute Environment action in the Salesforce Functions tool window's Details tab under Remote Execution with the exact same compute environment name, and it will be properly registered with IC2.
    • Source maps are not published for TypeScript-based functions. As a result, remote debugging of such functions deployed locally into a Docker container will result in stepping through the transpiled JavaScript function source instead.
    • I've observed an issue with local Docker-based deployment of Java-based functions on an M1 Mac where deployment simply fails with either a Node.js stack trace that goes through benny.js or even a core dump. I have not seen this issue on an Intel Mac, nor have I seen it on Windows or Linux.
  • Other related fixes and improvements.

2.1.9.0 release notes

posted Sep 29, 2021, 8:43 AM by Scott Wells

2.1.9.0

  • Issue 1944 - JetBrains 2021.2 support status - So far things are either going well for folks on 2021.2 since unlocking compatibility with it, or things aren't going well and folks aren't reporting the issues that they're having...or perhaps people are staying on 2021.1.3 until the remaining 2021.2 issues have been addressed by JetBrains. For now I'm just going to assume that silence is golden, but if you are on 2021.2 and are having issues with it, please let me know via either email or Issue 1944 so that I can have proper visibility into how things are really going. Thanks!
  • Issue 1983 - Fixed an issue where an incorrect type name would be used in the signature of an extracted method where the return type and/or formal parameter types are inner types of a different top-level class than the one that will contain the extracted method.
  • Fixed a few other issues similar to the one in issue 1983, primarily with the quick fix to generate an implementation of an unresolvable declaration. In the process I found another 2021.2 regression related to the underlying templating mechanism used when stubbing such declarations and logged it with JetBrains as IDEA-279205.
  • Implemented special handling for the issue described here with the WaveRecipe metadata type where instances also have a default WaveDataflow instance with the same name that's not reported by the metadata API. The latter is now automatically added to the org's list of metadata objects, and it also treats the WaveDataflow metadata type as not allowing wildcards to ensure that entries are listed explicitly in package.xml files used for retrieval and deployment. Otherwise a wildcard-based request for that metadata type will omit the default instances for WaveRecipe instances.
  • Fixed an issue that resulted in the connection status bar widget not displaying properly for newly-created source format projects until after the project window has been closed and reopened.
  • Tried to eliminate a number of errors and warnings, both presented to the end user–specifically the errors relating to Apache CXF fetching resources via the classloader with a leading slash–and in idea.log–specifically those warning about indeterminate progress indicators.
  • Updated the 2021.2 warning notification displayed when the IDE is started to be more specific about the host IDE product name and how to download a properly supported version for those having issues.
  • Other related fixes and improvements.

2.1.8.9 release notes

posted Sep 23, 2021, 9:17 AM by Scott Wells

2.1.8.9

  • Issue 1944 - Support for JetBrains 2021.2...with a caveat - As you're likely well aware, the JetBrains 2021.2 IDE updates included a number of issues and regressions. JetBrains has since issued two patches, and the latest version at the time of this writing is 2021.2.2. Most of the serious problems that were introduced in 2021.2 have been resolved, though there does still seem to be one, IDEA-274533, that is not completely addressed. In Illuminated Cloud 2, that issue manifests as problems with code completion, reference navigation, etc., in Visualforce and Aura code. More specifically, when it occurs you will see a NoClassDefFoundError for EmbeddedMarkupUtil in your idea.log file. This only seems to happen for some users, and it only happens to those users sometimes. For some users who have been affected, a full uninstall/reinstall of the base JetBrains IDE seems to resolve the issue completely, so it's possible that it's a result of one or more in-place IDE upgrades over time. Nonetheless, I'm continuing to pursue a proper resolution for that issue with JetBrains.

    You may also see the IDE report what seem to be critical errors originating in Illuminated Cloud 2, or even in JetBrains' own plugins. A few of these are completely benign in spite of the seeming severity, e.g., IDEA-274541 where it complains about resource loading via paths with a leading slash (/). Again, I've logged these misleading reports with JetBrains and will work with them toward minimizing the unnecessary noise.

    In the meantime, given that there only seems to be one remaining real issue (those feel like famous last words), and given that it doesn't seem to affect many users (I'm really digging a deep hole for myself here), I'm opening up Illuminated Cloud 2 for installation in the latest-and-greatest JetBrains IDEs. If installed into 2021.2 or higher, you'll see a warning banner each time the product is first started about these potential issues and the workaround of reverting to 2021.1.3 if you experience them. If you do experience issues, please let me know either via email or in the public issue tracker via Issue 1944.
  • Issue 1967 - Illuminated Cloud no longer uses the namespace in sfdx-project.json. Now it exclusively derives the namespace for CLI-managed connections from the output of sfdx force:org:list. Note that you must be on an up-to-date version of the Salesforce CLI for it to report org namespaces reliably.
  • Issue 1978 - Fixed the return type of System.List.add(Object).
  • Issue 1980 - Fixed an issue with the CLI invocation when trying to create a scratch org based on a source org ID where the edition cannot also be specified in the scratch org definition. I also updated the scratch org creation UI to conditionally disable the edition selector when a source org ID is specified.
  • Fixed an issue with deployment and retrieval of pseudo-decomposed metadata types such as Territory2Model.
  • Prospective fix for an error during SFDX project creation of the form A name parameter is required to create storage.
  • Fixed an issue that was preventing the unused declaration code inspection from treating fields annotated with @InvocableVariable as external entry points.
  • Fixed an issue with references to static resources in source format projects from Visualforce $Resource.resourceName expressions.
  • Other related fixes and improvements.

2.1.8.8 release notes

posted Aug 19, 2021, 7:13 AM by Scott Wells

2.1.8.8

  • Issue 1944 - Continued to block support for JetBrains 2021.2 updates - The 2021.2 JetBrains IDE updates appear to have significant issues. I've filed bugs in their issue tracker for the ones I've found, but in the interest of keeping things stable, current builds of Illuminated Cloud 2 constrain the maximum allowed base IDE to be 2021.1.*. JetBrains has a 2021.2.1 patch in preview now with at least some of these issues fixed. Once JetBrains has released fixes for all of the issues that prevent stable use of Illuminated Cloud 2, I'll remove this constraint. If you'd like to follow the status, please keep an eye on Issue 1944.
  • Issue 1143 - Fixed an issue with the Apex extract variable refactoring when extracting an expression from an if / else if clause where the extracted variable would end up before the nested if instead of before the top-level statement.
  • Issue 1952 - Fixed an issue where the Add to Metadata Subscription action wouldn't do anything when the automatic subscription management policy is set to Never Update.
  • Issue 1956 - Added hyperlinking support for Stacktrace:Class/Trigger.* in logged output.
  • Issue 1957 - Improved the declaration details displayed when using Ctrl/Cmd + Hover.
  • Issue 1958 - Constrained the log level preset combo-box width so that it fits the contents exactly, resulting in a slightly lower minimum window width requirement for host views, specifically the Apex unit test and offline debugger run configuration dialogs. NOTE: This only allows it to display properly in some slightly less wide windows. Those views will still truncate horizontally in windows are smaller than required to display the full log level configuration component. Addressing that will require a more significant layout change, so I'd like to hear from users with that issue what resolutions/widow sizes are being used.
  • Issue 1959 - Partial fix for an NPE that could occur when trying to correct a malformed LWC error in CLI deployment JSON results. The exception will now be properly handled, but I'm still hoping to get an example of the underlying result entry so that I can provide a proper fix.
  • Issue 1961 - Fixed an issue that could result in incorrect resolution of instances of system types in implicit namespaces (i.e., System and Schema) when a local class of the same name exists.
  • Fixed a regression in the incomplete concrete class code inspection introduced a bit back where it would never detect/flag such problems.
  • Other related fixes and improvements.

2.1.8.7 release notes

posted Aug 2, 2021, 8:42 AM by Scott Wells

2.1.8.7

  • Issue 1944 - Continued to block support for JetBrains 2021.2 updates - The 2021.2 JetBrains IDE updates appear to have significant issues. I've filed bugs in their issue tracker for the ones I've found, but in the interest of keeping things stable, current builds of Illuminated Cloud 2 constrain the maximum allowed base IDE to be 2021.1.*. Once JetBrains releases fixes for these issues and I've confirmed that IC2 works well under 2021.2.*, I'll remove this constraint. If you'd like to follow the status, please keep an eye on Issue 1944.
  • Issue 1948 - Fixed an issue with SOQL query row count validation (and therefore query execution) when the query editor includes content before the query to be executed.
  • Added an SVG logo image for the plugin repository and marketplace.
  • Updated some rasterized images to instead use SVGs for better rendering at various resolutions.
  • Other related fixes and improvements.

2.1.8.6 (2021.2-only) release notes

posted Jul 27, 2021, 4:46 PM by Scott Wells

2.1.8.6 (2021.2 advisory build)

  • Explicitly blocked support for JetBrains 2021.2 updates - The 2021.2 JetBrains IDE updates appear to have significant issues. I've filed bugs in their issue tracker for the ones I've found, but in the interest of keeping things stable, this build of Illuminated Cloud 2 constrains the maximum allowed base IDE to be 2021.1.*. Once JetBrains releases fixes for these issues and I've confirmed that IC2 works well under 2021.2.*, I'll remove this constraint. If you'd like to follow the status, please keep an eye on Issue 1944.

    NOTE: As you have already upgraded to 2021.2, please install the latest 2021.1 build instead from the Other versions link on the JetBrains product download page until these issues are resolved.

2.1.8.5 release notes

posted Jul 27, 2021, 2:30 PM by Scott Wells

2.1.8.5

  • Explicitly blocked support for JetBrains 2021.2 updates - The 2021.2 JetBrains IDE updates appear to have significant issues. I've filed bugs in their issue tracker for the ones I've found, but in the interest of keeping things stable, this build of Illuminated Cloud 2 constrains the maximum allowed base IDE to be 2021.1.*. Once JetBrains releases fixes for these issues and I've confirmed that IC2 works well under 2021.2.*, I'll remove this constraint. If you'd like to follow the status, please keep an eye on Issue 1944.

    NOTE: If you have already upgraded to 2021.2, please install the latest 2021.1 build instead from the Other versions link on the JetBrains product download page until these issues are resolved.

  • Issue 1938 - Provided proper support for LWC custom iterators.
  • Issue 1942 - Fixed an NPE that could occur when a JavaScript named element...didn't have a name?!
  • Fixed an issue where deploy-on-save would occur for implicit saves, e.g., the IDE frame losing focus.
  • Other related fixes and improvements.

2.1.8.4 release notes

posted Jul 22, 2021, 7:50 AM by Scott Wells

2.1.8.4

  • Issue 1932 - Improved the XSD entries for LWC component meta.xml file targets and targetConfigs elements for improved code completion and validation.
  • Issue 1936 (partial) - The Apex trigger creation dialog now adjusts the SObject type selection combo-box width to accommodate the longest SObject type name.
  • Updated the illegal assignment code inspection to detect and flag overridden methods and abstract/interface method implementations which change the return type in an incompatible manner. When this situation is detected, a new code intention/quick fix is provided to correct the return type.
  • Evidently Object.equals and Object.hashCode can be redeclared in custom classes with incompatible return types in which case they are not actually considered overrides of the base class methods. When this situation is found, IC2 no longer adds an override relationship reference.
  • Made aria-* attributes more strongly-typed so that code completions and validation are provided for those that are of an enumerated, boolean, or numeric type.
  • Added RemoteAction as an allowed identifier name.
  • Other related fixes and improvements.

1-10 of 217