Arduino IDE 2.0.4 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!

Fix corruption of multi-byte UTF-8 symbols in Serial Monitor

arduino/arduino-ide#1758, arduino/arduino-ide#589

Multi-byte characters (e.g., °) received by Serial Monitor were sometimes corrupted (appearing as ).

(Thanks @RudolfAtRTC)

Fix IDE startup hang if sketchbook folder location not accessible

arduino/arduino-ide#1774, arduino/arduino-ide#1764

Arduino IDE requires access to a "sketchbook" folder in order to be fully functional. If the folder does not exist, Arduino IDE will create it. However, in cases where the configured location is not accessible this is not possible.

Arduino IDE hung on startup under these conditions. It will now start up fully and communicate the problem to the user via a notification:

image

(Thanks @rpgfabi)

Show custom board option settings in Tools menu

arduino/arduino-ide#1746, arduino/arduino-ide#343

It was necessary to open the custom board option menus in order to see which option was selected:

image

The current settings are now visible simply by opening the Tools menu:

image

Make Sketchbook menu reflect sketchbook folder structure

arduino/arduino-ide#1814, arduino/arduino-ide#1185

Sketches may be organized into subfolders of the sketchbook folder. The structure of the File > Sketchbook menu now reflects the folder structure instead of a flat listing:

image

Fix Preferences menu item disabled if dialog used soon after IDE startup

arduino/arduino-ide#1735

If the "Preferences" dialog was opened soon after Arduino IDE was started, after closing the menu the File > Preferences menu item was disabled.

Fix "Upload"/"Upload Using Programmer" menu items remaining disabled after completion of upload

arduino/arduino-ide#1750, arduino/arduino-ide#1722

While an "Upload" or "Upload Using Programmer" operation is in progress, Arduino IDE disables the buttons and Sketch > Upload/Upload Using Programmer menu items to prevent the user from accidentally triggering multiple concurrent uploads.

Under certain conditions the menu items were not re-enabled after the completion of the upload process.

(Thanks @weshowe)

Always show Sketchbook and Port menu items

arduino/arduino-ide#1774, arduino/arduino-ide#569, arduino/arduino-ide#655

Arduino IDE did not add a "Sketchbook" menu item to the "File" if the sketchbook folder didn't contain any sketches. Likewise, it did not create a Tools > Port menu item if no ports were found.

Feedback indicated this behavior resulted in a poor user experience, so it was changed to more clearly communicate the situation to the user by always adding these menu items even when there is nothing to populate them, consistent with the behavior of Arduino IDE 1.x.

(Thanks @pupa571)

Update affected UI elements after "Sketchbook location" preference change

arduino/arduino-ide#1774, arduino/arduino-ide#796

The user can configure the location of the sketchbook folder via the Arduino IDE preferences. Various UI elements in the IDE are populated according to the contents of the sketchbook folder (sketches, libraries, manually installed boards platforms).

Some of these UI elements were not updated following a change to the "Sketchbook location" preference, resulting in incorrect data being shown in the UI.

Update affected UI elements after "Add .ZIP Library..." operation

arduino/arduino-ide#1807, arduino/arduino-ide#659

Various UI elements in the IDE are populated according to the installed libraries.

Some of these UI elements were not updated following a library installation via Sketch > Include Library > Add .ZIP Library..., resulting in incomplete data being shown in the UI.

Don't allow duplicate library installations

arduino/arduino-ide#1909, arduino/arduino-cli#1983, arduino/arduino-cli#1871

Installation of multiple libraries with the same name created a situation where the library was in a perpetually updatable state.

Installations of libraries when another library of that name is already installed now fail with a notification that explains the problem:

image

Use established sort order in Boards Manager and Library Manager listings

arduino/arduino-ide#1866, arduino/arduino-ide#1106

Boards platform and library listings now have sorting consistent with the Arduino IDE 1.x Boards Manager and Library Manager:

  1. Official
  2. Contributed
  3. Retired/deprecated

Always set "Updatable" filter when Boards Manager/Library Manager opened from update offer dialog

arduino/arduino-ide#1748, arduino/arduino-ide#1740

Arduino IDE automatically checks for available updates to boards platforms and libraries. The update dialog includes an "INSTALL MANUALLY" button that opens Boards Manager or Library Manager with a listing of the available updates.

Under specific conditions, the "Updatable" filter was not set when that button was clicked by the user.

(Thanks @KurtE)

Store temporary files under a dedicated folder

arduino/arduino-ide#1909, arduino/arduino-cli#2031, arduino/arduino-cli#2028, arduino/arduino-cli#2033, arduino/arduino-ide#1811, arduino/arduino-language-server#146, arduino/arduino-language-server#145, arduino/arduino-ide#1779

In order to make it easier to find and clean up the temporary files created by Arduino IDE, they are now stored under a dedicated folder named arduino in the system temporary folder.

(Thanks @sterretje)

Delete unused compilation caches

arduino/arduino-ide#1909, arduino/arduino-cli#2033, arduino/arduino-cli#2029

Arduino CLI caches the objects produced by compiling a sketch program under the temporary folder. These folders are intentionally left behind in the temporary folder after an Arduino CLI process exits so that they can be reused for subsequent compilations as applicable.

This resulted in a significant accumulation of files in the temporary folder of active users with operating systems that don't automatically clean the temporary folder. The caches are now automatically deleted if they haven't been used for 30 days (configurable).

(Thanks @Dougl)

Remove encoding from status bar

arduino/arduino-ide#1804, arduino/arduino-ide#1393

The file encoding (e.g., UTF-8) was shown in the Arduino IDE status bar. This information might be useful occasionally in a general purpose text editor, but is not needed in the application-specific Arduino IDE.

It was removed to reduce unnecessary clutter and complexity from the Arduino IDE UI.

The file encoding modification capability is still available by running the "Editor: Change File Encoding" command from the Command Palette.

Allow addition of existing code files to sketch

arduino/arduino-ide#1805, arduino/arduino-ide#284

Arduino IDE's Sketch > Add File... feature is used to add existing files to the sketch.

This feature only supported the addition of supplemental non-code files to the data subfolder of the sketch. However, the user might also find it convenient to add existing code files (e.g., a reusable header) to the sketch.

Arduino IDE now automatically places files with supported code file extensions in the root of the sketch folder when added via the "Add File.." feature, consistent with the behavior of Arduino IDE 1.x.

(Thanks @lorandil)

Restart language server after change to platform or library

arduino/arduino-ide#1808, arduino/arduino-ide#670

Arduino IDE uses a language server to provide features such as autocomplete and "go to definition". The language server must have an understanding of the complete sketch program, including its dependencies.

The language server data was not refreshed immediately after the installed platforms or libraries were updated, which could lead to incorrect results from the language server-based features until a refresh was triggered by a change to the sketch code.

Pass custom board option settings to language server

arduino/arduino-ide#1812, arduino/arduino-ide#1029

The Arduino boards platform framework allows platform authors to provide additional configurability to their board definitions by adding arbitrary "custom board options". These custom board options may affect the compilation of the sketch program.

The IDE's language server always used the default custom board option values even when the user had selected other settings. This could cause inaccurate language server results.

(Thanks @pjrc)

Support IDE installation paths that contain #

arduino/arduino-ide#1811, arduino/arduino-ide#1124, bugst/go-lsp#1

Arduino IDE was non-functional when a # character was present in any part of the installation path.

(Thanks @wezz19)

Communicate cause of debugger not starting with uncompiled sketch

arduino/arduino-ide#1809, arduino/arduino-ide#808

The sketch must be compiled before starting the IDE's integrated sketch debugger.

If this was not done, the debugger initialization failed silently, giving the user no indication of the cause. It is now clearly communicated by a notification which also offers to compile the sketch for the user:

image

Add leading+trailing line break to "Copy for Forum" content

arduino/arduino-ide#1859

The Edit > Copy for Forum feature copies the selection with the appropriate code block markup for posting to Arduino Forum (and any other communication channel that supports Markdown). In order for the markup to be correctly recognized by the forum software, it must be on its own line.

The copied text did not include the line breaks to ensure that, which placed the burden of correct formatting to the user.

(Thanks @J-M-L)

Populate "Board Info" dialog from port data (#1489)

arduino/arduino-ide#1803, arduino/arduino-ide#1489

The dialog accessed via the Tools > Get Board Info menu showed information from the definition of the currently selected board. This information was not very useful. The information shown in the dialog is now read from the hardware attached to the currently selected port, consistent with the behavior of Arduino IDE 1.x:

image

Fix support for user-installed theme extensions

arduino/arduino-ide#1743, arduino/arduino-ide#1742

Additional theme extensions were no longer listed in the "Theme" menu of the Arduino IDE preferences.

(Thanks @Willem43)

Improve contrast of cursor color in "Dark (Arduino)" theme

arduino/arduino-ide#1836, arduino/arduino-ide#1251

User feedback indicated that the previous cursor color when using the "Dark (Arduino)" theme had too low a contrast against the background color.

Improve contrast of "Output" view stderr text in "Light (Arduino)" theme

arduino/arduino-ide#1836, arduino/arduino-ide#1087

Output received from the standard error stream ("stderr") of the compilation and upload tools is colored red when printed in the Arduino IDE "Output" panel.

The dark shade of red used by the "Light (Arduino)" theme had poor contrast against the panel's black background.

Prevent creation of sketches with non-compliant names

arduino/arduino-ide#1833, arduino/arduino-ide#1599

The Arduino Sketch Specification defines the valid name format for Arduino sketches and code files.

Arduino IDE 2.x now prevents the creation of sketches with invalid names, consistent with the behavior of Arduino IDE 1.x:

image

(Thanks @UKHeliBob)

Fix missing toolbar context menu items when editor doesn't have focus

arduino/arduino-ide#1833, arduino/arduino-ide#1847

The "Rename" and "Delete" menu items were missing from the editor toolbar context menu when the editor panel didn't have focus.

Fix handling of primary sketch tab deletion

arduino/arduino-ide#1833, arduino/arduino-ide#649

When the user deleted the primary sketch tab via Arduino IDE, they were presented with a "Do you want to delete the current sketch?" dialog, but then the sketch was not deleted if the user confirmed.

Fix unexpected sketch deletion when location inside sketch folder selected as rename target

arduino/arduino-ide#1833, arduino/arduino-ide#1882

The sketch can be renamed by selecting "Rename" from the editor toolbar context menu for the primary sketch tab.

If the rename was made inside the sketch's original folder, the sketch was unexpectedly deleted.

(Thanks @digibytes)

Use hardware ID for board auto-selection

arduino/arduino-ide#1913, arduino/arduino-cli#2065, arduino/arduino-cli#2024, arduino/serial-discovery#60

Port data may now include a "hardware ID" (e.g., a serial number), which identifies a specific hardware instance.

This ID is now used to automatically select the board previously associated with that ID after the port address changes.

Enable rename and delete of Cloud sketches

arduino/arduino-ide#1833, arduino/arduino-ide#1825

Cloud sketches and individual Cloud sketch files can now be renamed and deleted via the Arduino IDE interface.

Add activity bar icon for Arduino Cloud login

arduino/arduino-ide#1881, arduino/arduino-ide#1877

An icon for convenient login to your Arduino Cloud account has been added to the "Activity Bar" on the left side of the Arduino IDE. This is used for the integration of the Cloud sketchbook into Arduino IDE:

Transition "Remote Sketchbook" terminology to "Cloud Sketchbook"

arduino/arduino-ide#1833

The previous use of the term "remote" to refer to the Arduino Cloud integration features is being transitioned to the more intuitive "Cloud".

Fix proxy protocol incorrectly shown as "SOCKS" in "Preferences" dialog

arduino/arduino-ide#1778, arduino/arduino-ide#1775

Arduino IDE can be configured to access the Internet via a proxy server. Two protocols are supported: "HTTP" and "SOCKS5".

After the user configured a proxy with HTTP protocol, the "Preferences" dialog incorrectly showed the "SOCKS" protocol option was selected.

Fix support for SOCK5 proxy server protocol

arduino/arduino-ide#1776, arduino/arduino-ide#1769

A bug caused Arduino IDE to not be able to access the Internet via proxy servers using the SOCKS5 protocol.

Update translations

arduino/arduino-ide#1763

The community work to make Arduino IDE accessible to everyone in the world continues, reaching high coverage levels for 17 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

Use a local npm registry for app packaging

arduino/arduino-ide#1757

The system used to build the Arduino IDE application from the source code was changed to use a local npm registry. This reduces the duration of the Arduino IDE application build process.


Full changelog here:

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


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

https://forum.arduino.cc/c/software/arduino-ide-2-0-beta/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

2 Likes

This is really a great release - it "feels" much better - with one really nagging exception: output to the serial monitor pane doesn't scroll correctly. The last line of output remains hidden unless you manually scroll down. It's a minor thing but -- oof - annoying.

Hi @svdasein. Thanks for your feedback.

The Arduino IDE developers are tracking this bug here:

You'll be glad to know that a fix has already been prepared:

So hopefully the problem will be resolved soon.

If you have a GitHub account, you can subscribe to that issue to get notifications of any new developments related to this subject. It will be closed as soon as the bug is fixed. After that the fix will be in the Arduino IDE release as well as in the nightly build of Arduino IDE the following day.

I DISLIKE this update. And I felt forced to it to get rid of that annoying popup screen all the time.

  1. Its really annoying that this update destroyed the access to allL my sketch files.
    Why in earth go back to something oldfashioned DOS-filenaming anno 1980?
    We are 2023 and ALL programs are accepting spaces, "&" signs, long filenames etc. And Arduino was also.
    Why brake somthing and take it 50 years back in time!?
    Who in earth are naming files with "_" in 2023?
    It makes no sense at all.

  2. Also compiling is very slow now sometimes.

  3. System hangs writing "Indexing..." in the statusline, even with simple small 10 lines code.

  4. Dont know if its me, but it seems like the way arrays are handled now looses end-pointer of byte strings, so if I have an array of 3 bytestrings and read and trace out the value of record 1, 2 and 3, then record 1 now contains all 3, record 2 contains the last 2 and only record 3 contains the correct only 1 records value.
    So now I had t recode my struct dataset from using bytes of a certain length to String.
    Strangely earlier it didnt work with String, so I had to create a string out of bytes.
    Is this a bug changed in v.2.0.4? or behavior changed? I cannot see arrays mentioned in the above release notes.

Please post a full sketch illustrating the problem that you list as problem number 4

If you would like to skip an Arduino IDE update, just click the "SKIP VERSION" button. Arduino IDE will then no longer notify you of the available update to that version.

In case you later decide you do want to update to the "skipped" version, select Help > Check for Arduino IDE Updates from the Arduino IDE menus to trigger the update offer.

Arduino IDE doesn't have anything to do with the handling of arrays so an IDE update would not cause a change in their handling. Did you check to see if the problem still occurs with the previous IDE version?

This sort of change would only be caused by updating the platform of the board you are compiling for using the Arduino IDE Boards Manager (or by clicking the "UPDATE ALL" button on "Updates are available for some of your boards." notification). Boards platform updates are completely independent from Arduino IDE version updates.

Despite having used ‘_’ throughout my (quite long) filenames ( except for ONE “space ), I assume I fall fowl of the newly imposed regime … irritating but not the end of the world.