Arduino IDE 2.2.0 is now available

If you are using a recent version of the IDE, you will get an auto-update offer simply by starting the IDE.

Otherwise, the release is available for download here:

https://www.arduino.cc/en/software


This release provides some nice advancements and fixes.

Thanks so much to the forum community for all the valuable testing and feedback that has helped us greatly in identifying and investigating these bugs and enhancements!

Highlights

  • Add "Light High Contrast" theme
  • Add support to "Firmware Updater" for UNO R4 WiFi and Portenta C33 boards
  • Support for Arduino-specific IDE extensions
  • Fix several bugs related to saving sketches
  • Fix bug that caused unavailability of language server-based features
  • Fix several bugs related to board and port selection handling

Add "Light High Contrast" theme

arduino/arduino-ide#2027

A new officially supported IDE theme has been added. Like the existing "Dark High Contrast" theme, the new "Light High Contrast" theme is intended to improve the accessibility of Arduino IDE. Those who prefer a higher level of contrast in the coloration of the Arduino IDE UI now have the choice between "light" and "dark" theme variants.

If you would like to try the new theme, you can enable it by following these instructions:

  1. Select File > Preferences... from the Arduino IDE menus.
    The "Preferences" dialog will open.
  2. Select "Light High Contrast" from the "Theme" menu in the "Preferences" dialog.
  3. Click the "OK" button.

Fix light coloration of title bar when using a dark theme

arduino/arduino-ide#2027, arduino/arduino-ide#321

Arduino IDE has "light" and "dark" UI theme variants. The title bar will now be colored appropriately when using a "dark" theme.

Bump Arduino Firmware Uploader dependency to 2.4.0

arduino/arduino-ide#2165, arduino/arduino-ide#2186

The underlying functionality of the Firmware Updater and Upload SSL Root Certificates features of Arduino IDE are provided by the Arduino Firmware Uploader tool.

In order to benefit from the ongoing development work in the Arduino Firmware Uploader project, Arduino IDE has been updated to using Arduino Firmware Uploader version 2.4.0.

Generalize name of "Firmware Updater"

arduino/arduino-ide#2176

Arduino IDE includes a feature to update the firmware on the supplemental modules of certain Arduino boards

Previously, the name of this tool ("WiFi101 / WiFiNINA Firmware Updater") included the names of the specific supported modules. The update of this tool has added support for additional modules as well as removed support for the "WiFi101" module, rendering the previous name obsolete.

Add support for Arduino UNO R4 WiFi and Portenta C33 to "Firmware Uploader"

arduino/arduino-fwuploader#173, arduino/uno-r4-wifi-fwuploader-plugin, arduino/portenta-c33-fwuploader-plugin, arduino/arduino-ide#2176, arduino/arduino-ide#2176

The Firmware Updater feature of Arduino IDE provides a convenient way to update firmware on the supplemental modules of certain Arduino boards.

Support for updating the firmware on the USB bridge/radio module of the UNO R4 WiFi and the radio module of the Portenta C33 boards has been added to the Firmware Updater.


:exclamation: It is necessary to unplug and then re-plug the USB cable of your UNO R4 WiFi board after updating the firmware.


:exclamation: The Upload SSL Root Certificates feature does not work with UNO R4 WiFi at this time. Work is in progress now to add support in the next release.


Drop support for MKR Vidor 4000 and WiFi101 module from "Firmware Uploader" and "Upload SSL Root Certificates" features

arduino/arduino-fwuploader#209, arduino/arduino-ide#2176

the Firmware Updater and Upload SSL Root Certificates features of Arduino IDE provide a convenient way to update firmware and upload SSL certificates on the supplemental modules of certain Arduino boards.

There has been a major reworking of the Arduino Firmware Uploader tool, making it more flexible in order to support the emerging requirements for working with the supplemental modules of new boards. The previous support for the MKR Vidor 4000 board and "WiFi101" module of the MKR 1000 WiFi was dropped during this work.

If you need to update the firmware or upload certificates to these boards, please use version 2.3.0 of the Arduino Firmware Uploader command line tool, which can be downloaded from the links listed under the "Assets" section of the release page:

https://github.com/arduino/arduino-fwuploader/releases/tag/2.3.0#:~:text=%23159)-,Assets

Instructions for using Arduino Firmware Uploader are available here:

https://arduino.github.io/arduino-fwuploader/

Correctly handle presence of multiple supported boards in Firmware Updater and Certificate Uploader UI

arduino/arduino-ide#2165, arduino/arduino-ide#2158

Previously if multiple boards supported by the Firmware Updater and Upload SSL Root Certificates features of Arduino IDE were connected to the computer, the UI in the dialogs of these features were bugged.

Update Eclipse Theia IDE framework to 1.39.0

arduino/arduino-ide#2027, arduino/arduino-ide#2144

Arduino IDE is built on the free open source Eclipse Theia framework.

In order to benefit from the ongoing development work in the Theia project, Arduino IDE has been updated to using Theia version 1.39.0.

Bump Arduino CLI dependency to 0.34.0

arduino/arduino-ide#2121, arduino/arduino-ide#2126, arduino/arduino-ide#2178, arduino/arduino-ide#2186

Arduino IDE uses the Arduino CLI tool for much of the non-GUI functionality.

In order to benefit from the ongoing development work in the Arduino CLI project, Arduino IDE has been updated to using Arduino CLI version 0.34.0.

Expose Arduino state data for use by VS Code extensions

arduino/arduino-ide#2110, arduino/arduino-ide#58

Arduino IDE 1.x has a "Tools" (AKA "plugins") system that allows the community to add additional capabilities to the IDE without having to modify the source code.

Arduino IDE 2.x inherits support for VS Code extensions from the the Eclipse Theia framework it is built on. Although it was possible to do quite a lot with that existing support, previously extensions didn't have any way of getting Arduino-specific data (e.g., the currently selected board, the path to the sketch build folder) from Arduino IDE. That made it either difficult or impossible to create VS Code extensions that would be equivalent to the popular Arduino IDE 1.x "Tools" the community has created.

Arduino IDE 2.x now makes that Arduino-specific data available to extensions, meaning it is now possible to create extensions that replace and exceed the Arduino IDE 1.x Tools.

The new capability has already been leveraged to create an Arduino IDE extension equivalent to the popular "ESP Exception Decoder" Tool for Arduino IDE 1.x.

You can get that extension here:

https://github.com/dankeboy36/esp-exception-decoder

(Thanks @dankeboy36)

Fix sketch save failure when offline

arduino/arduino-ide#2080, arduino/arduino-ide#2079

Previously it was not possible to save the sketch when the computer was not connected to the Internet.

Fix failure of "Save As.." operation when sketch path contains certain characters

arduino/arduino-ide#2046, arduino/arduino-ide#2043

Previously, if the path of the source sketch contained (, ), [, ] characters, a "Save As.." operation would fail silently, leaving the unsaved source sketch open in the IDE instead of the expected behavior of saving the sketch to the target path and opening that sketch in the IDE.

(Thanks @chromorphous)

Fix truncation of sketch content on "Save As..." operation when file exceeds 64 kB

arduino/arduino-ide#2027, arduino/arduino-ide#2086

Previously, when the user attempted to perform a "Save As..." operation on a sketch with a lot of content, the content at the end of the file was missing in the saved sketch.

Fix silent failure of save when sketch out of sync with file system

arduino/arduino-ide#2055, arduino/arduino-ide#2051

Previously, if changes were made externally to the sketch files, attempting to overwrite those changes (according to the direction of the user via a dialog that appears under these conditions) with the changes staged in Arduino IDE would fail silently.

Arduino IDE will now overwrite the on-disk content with the unsaved content staged in the IDE if the user directs it to do so via the out of sync warning dialog.

Warn user when IDE is unable to save the sketch

arduino/arduino-ide#2082, arduino/arduino-ide#2081

Under certain rare conditions, Arduino IDE might get into a state where it is unable to save the user's sketch. In this case, it resorts to clearly communicating about this problem to the user so they can avoid losing their work.

The system for gracefully handling this situation stopped working, causing Arduino IDE to no longer communicate this important information to the user. That system has been restored to functionality once more.

Fix unavailability of language server-based features when sketch stored on different drive from system temp folder

arduino/arduino-cli#2163, arduino/arduino-cli#2156, arduino/arduino-ide#2083, arduino/arduino-ide#2034

Arduino IDE uses a language server to provide "context-aware" features (e.g., autocomplete, "IntelliSense", suggestions, "Go to Definition").

Previously, if the sketch was stored on a different drive from the drive where the system temporary folder was located, these language server-based features were not available.

(Thanks @econjack)

Remove non-functional language server-related items from editor context menu

arduino/arduino-ide#2027, arduino/arduino-ide#1394

Previously, the context menu opened by right clicking on the IDE's editor panel contained some items that required functionality not currently implemented in the Arduino Language Server and so didn't have any effect:

  • "Refactor..."
  • "Source Action..."

These items have been removed from the menu to avoid confusion. They will be added back once the required functionality has been implemented in Arduino Language Server (arduino/arduino-language-server#156).

Fix unexpected board+port selection change when board is disconnected

arduino/arduino-ide#2165, arduino/arduino-ide#2143

Previously, under certain conditions, the board and port selections in the Arduino IDE menus would change unexpectedly when the previously selected board was disconnected from the computer.

Indicate submenu containing selected board in Tools > Board menu

arduino/arduino-ide#2165, arduino/arduino-ide#2035

The Tools > Board menu contains a submenu for each of the installed boards platforms. The board is selected from one of those submenus. Previously, there was no indication of which submenu contained the currently selected board, which could be confusing in the case where multiple platforms contain a board definition with the same name.

A checkmark is now shown next to the Tools > Board menu item that contains the currently selected board.

Fix unexpected port selection loss during upload to certain boards (#43, #82)

arduino/arduino-ide#2165, arduino/arduino-ide#43, arduino/arduino-ide#82, arduino/arduino-ide#1366

Previously, when uploading to certain boards, the port had to be reselected from the Arduino IDE menus after each upload.

(Thanks @rbarris)

Allow recovery of all types of soft bricked native USB boards

arduino/arduino-cli#2173, arduino/arduino-cli#2202, arduino/arduino-cli#1943, arduino/arduino-ide#2090, arduino/arduino-ide#2089

On boards with native USB capabilities the code that produces the produces the serial port is part of the same program as the user's sketch code. This means it is possible for the user's code to disable, interfere with, or break the USB communication with the computer. When this happens, the board no longer produces a port. This can make it difficult to upload to the board since that port is used in the upload process.

In order to facilitate the recovery from this "soft bricked" state, some bootloaders have a feature where they run indefinitely on the second of two resets in quick succession. However, not all boards have this "double-tap" feature (e.g., Leonardo, Micro). On those boards, the bootloader runs only for a short time after a reset so it is necessary for the user to wait until the compilation stage of the upload operation has finished before activating the bootloader. This means that these board will not produce a port when the upload operation is initiated.

Previously, it was not possible to initiate an upload in Arduino IDE when no port was selected, which made the process of recovering these boards from a soft brick unpleasant. This unnecessary requirement is no longer imposed.

(Thanks @amowry)

Add advanced setting for moving Serial Monitor to the right panel

arduino/arduino-ide#2102

By default, the Serial Monitor is located in the bottom panel of the Arduino IDE window, below the editor panel. Some users may find their screen real estate is more effectively used by a layout that places the editor panel side-by-side with the Serial Monitor. It is now possible to select the location of the Serial Monitor via the Arduino IDE advanced settings:

  1. Press the Ctrl+Shift+P keyboard shortcut (Command+Shift+P for macOS users) to open the "Command Palette".
    A menu will appear on the editor toolbar.
  2. Select the "Preferences: Open Settings (UI)" command from the menu.
    A "Preferences" tab will open in the Arduino IDE main panel.
  3. Type arduino.monitor.dockPanel in the "Search Settings" field of the "Preferences" tab.
  4. Select "right" from the menu under the "Arduino › Monitor: Dock Panel" setting.
  5. Close the Preferences tab by clicking its X icon.

(Thanks @dankeboy36)

Fix lack of response to first click on "New Tab" menu item

arduino/arduino-ide#2183

Additional tabs can be added to the sketch by selecting "New Tab" from the editor toolbar context menu.

Previously, the first time this menu item was used there was no effect.

(Thanks @KurtE)

Improve resilience to failed helper tool installation

arduino/arduino-cli#2107, arduino/arduino-cli#2168, arduino/arduino-cli#1669, arduino/arduino-ide#2126

Arduino IDE relies on several helper tools. On startup, Arduino IDE checks to see whether certain of these tools are missing or outdated. If so, it downloads them from the Internet and installs them.

It is possible that this installation could be interrupted or damaged, leaving an unusable partial installation of the tool. Since these tools are essential to the basic functionality of Arduino IDE, this typically causes it to hang on startup.

Previously, once a partial installation of the tool was present on the users system, the IDE could not recover from that state on its own. The partial installation of a tool will now be detected and the IDE will attempt to reinstall it.

(Thanks @dfeng)

Fix hang on startup when attempting to restore sketch from previous session fails with unusual error

arduino/arduino-ide#2174, arduino/arduino-ide#2166

When Arduino IDE is started, the sketches that were open at exit of the previous session are reopened. Since this is only a convenience feature, if a sketch is no longer available Arduino IDE should simply skip the attempt to reopen it, falling back to starting with a new sketch open if there are no sketches to be restored.

Under certain conditions (e.g., the sketch was on a CD-ROM that has since been removed from the drive), the attempt to open the sketch fails with a special error that was not previously handled, causing the IDE to hang on startup.

Handle corruption of inventory.yaml data file

arduino/arduino-cli#2232, arduino/arduino-cli#2229, arduino/arduino-ide#2186

Arduino IDE uses various data files to persistently store information. In some rare cases, these files might somehow be corrupted. Previously, if one of these files (inventory.yaml) became corrupted, Arduino IDE would hang on startup. It was necessary for the user to manually remove the corrupted file in order to restore the IDE to functionality.

Arduino IDE will now recover automatically from this problem.

(Thanks @jocardu)

Show notification if installation via Boards Manager or Library Manager fails

arduino/arduino-ide#2061, arduino/arduino-ide#621, arduino/arduino-ide#2065, arduino/arduino-ide#2063

Previously if installation or update of a platform via Boards Manager or installation of a library via Library Manager failed unexpectedly, Arduino IDE did not communicate about the problem to the user.

The failure of the operation and information about its cause will now be indicated by a notification.

Handle missing referenced platform dependency gracefully

arduino/arduino-cli#2211, arduino/arduino-cli#2042, arduino/arduino-ide#2186

Arduino boards platforms can reference resources from other platforms. This introduces a dependency on the referenced platform, meaning the user must install the referenced platform in addition to the board's platform in order to be able to compile and/or upload to that board.

Previously, if the user forgot to install the referenced platform attempting to compile or upload for the board with missing dependency caused Arduino IDE to go into a completely non-functional state without any useful communication to the user about the cause of the problem. It will now handle the absence of the dependency gracefully, retaining its basic functionality and more effectively communicating about the problem to the user.

(Thanks @lj001)

Fix inappropriate use of cached core after board option change

arduino/arduino-cli#2145, arduino/arduino-cli#2144, arduino/arduino-ide#2126

In order to reduce the duration of a compile operation, Arduino IDE caches the compilation output. This compilation output is reused if possible on subsequent compilations, but it is essential for a fresh compilation to be done on the compilation after the user has made changes that would affect the compilation output:

  • Code files have been modified (either by being edited or dependencies upgrade)
  • Build options have changed

Some boards define "custom board options" that allow the user to adjust the configuration of the selected board definition. This configuration might include changes to the build options, meaning that the compile cache associated with the previous option setting should not be used after the option has been changed by the user.

Previously the previous cache was used under certain conditions, which might result in unexpected sketch compilation results. The cache is now correctly handled.

(Thanks @KurtE, @pjrc)

Fix hang during compile under certain conditions

arduino/arduino-cli#2169, arduino/arduino-cli#2171, arduino/arduino-ide#2126

Previously there was an intermittent hang during compilations that generated a large quantity of verbose output.

(Thanks @KurtE)

Add 中文(繁體) ("Chinese (Traditional)") localization

arduino/arduino-ide#2151

In addition to 17 other locales, the Arduino IDE user interface is now localized to 中文(繁體) ("Chinese (Traditional)"). This can be selected from the "Language" menu in the Arduino IDE preferences.

Update translation files

arduino/arduino-ide#2031, arduino/arduino-ide#2027, arduino/arduino-ide#2144

The community work to make Arduino IDE accessible to everyone in the world through localization of the text of the IDE's UI continues, reaching high coverage levels for 18 languages.

If you would like to contribute to the Arduino IDE translations, please see the information here:

https://github.com/arduino/arduino-ide/blob/main/docs/contributor-guide/translation.md#translator-guide

Reduce application size

arduino/arduino-ide#2144

The Arduino IDE application build system now uses webpack to bundle the application. This resulted in a significant reduction in the size of the application, which means faster IDE updates and less disk space utilization.

Add Linux ARM 64-bit support to build system

arduino/arduino-ide#2078

While building Arduino IDE from source code, it is necessary to download the pre-built artifacts for some of the IDE's helper tools. The build script is configured to download the appropriate variant of the tools for the target host.

Previously the build script's configuration for the download of the clangd C++ language server did not support Linux ARM 64-bit target hosts, causing builds for that host to fail. This was unnecessary since Linux ARM 64-bit builds of clangd are available.

The missing support for Linux ARM 64-bit has been added to the script. Note that Arduino is still unable to distribute builds of Arduino IDE for Linux ARM 64-bit hosts due to limitations of our build infrastructure (arduino/arduino-ide#107). However, this change makes it easier for the users who need such a build to generate it themselves.

Remove unsafe/fragile use of shell option in process spawning code

arduino/arduino-ide#2067, arduino/arduino-ide#2182, arduino/arduino-ide#2112

Arduino IDE relies on several helper tools. These tools are invoked using the Node.js child_process.spawn.

Previously the shell option was enabled when spawning these processes, which caused the invocation command to run via the system's default shell. In addition to introducing a risk of command injection, this option cause the invocations to fail on some unusual systems where the default shell was either not available or non-standard.

Processes are now spawned directly by Arduino IDE, without using the shell.

Remove unsafe use of innerHTML

arduino/arduino-ide#2064

Setting the innerHTML in an unsafe way has been removed, as it was potentially vulnerable to stored cross-site scripting.

Enable error diagnostics for sketches in Cloud sketchbook

arduino/arduino-ide#2037, arduino/arduino-ide#669

"Diagnostics" are an advanced capability of Arduino IDE, where it is possible to configure the IDE to indicate potential problems in the sketch code via "squiggles" and the "Problems View".

Previously this capability was not available when a sketch from Arduino Cloud was open in Arduino IDE.


Full changelog here:

https://github.com/arduino/arduino-ide/releases/tag/2.2.0


If you have any questions or feedback please post here in the dedicated forum category for Arduino IDE 2.x:

https://forum.arduino.cc/c/software/ide-2-x/93

If you want to see the list of known issues, work in progress, submit a formal report, or contribute to development, the IDE 2.x source code is hosted in this public repository:

https://github.com/arduino/arduino-ide

1 Like

Nice work @ptillisch and the rest of the Arduino team!

2 Likes

Great!

1 Like

Achhh all these improvements and you couldn't include a check for Win7 and prevent update suggestion? I saw the update, clicked to update, then borked my install. Why offer it when you can do a simple check for OS?

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.