Files
arduino-ide/arduino-ide-extension
502E532E 93d27ea72a feat: add a copy button to serial monitor (#2718)
* Add a copy output button to serial monitor

If the arduino collects some data that you want to store on your
computer, a rather simple way is to write it to the serial monitor and
copy it to the clipboard. This commit introduces a button that copies
the whole content of the serial monitor to the clipboard to make this
rather simple. It is a new component added to the menu, and does not
change the behaviour of other compontents.

* Test merging lines to str in serial monitor utils

Adds a test for merging one or more lines to a single string. It is
supposed to just concatenate the content of the lines, without doing
anything else. This method is used when copying the serial monitor content to
the clipboard.

* Add copy output translation key

This serves as an addition to the previous commits. It is the result of
running `yarn i18n:generate` on the state after adding the copy output
button to the serial monitor (see 2df3f465). I hope that this will
resolve the current Github action failure.

* Improve readability for serial monitor utils

Replace return statement in inline method by direct statement, some
minor formatting changes. Does not affect the functionality.

* Rename linesToMergedStr in monitor-utils

Renames the method linesToMergedStr to joinLines in the serial monitor
utils. This brings the name more in line with truncateLines. No
functionality changes.

* Move label and icon registration for copy serial

Moves the registration of the label and icon for the copy output
button of the serial monitor to the toolbar item registration. Before,
it happened at the command registration, but is not necessary at this
level, as the icon and label are meant for the toolbar button only.

* Do not update widget when copying output

No longer updates the serial monitor output after its content is copied.
Copying the content does not change anything for the view, so there is
no need to update.
2025-11-05 16:56:04 +01:00
..
2023-09-26 10:06:47 +02:00
2025-03-29 01:33:25 +09:00

Arduino IDE Extension

Arduino IDE is based on Theia, and most of its IDE features, UIs and customizations are implemented in this Theia extension.

IDE Services

IDE services typically have a backend part in src/node/ and a front-end part in src/browser/.

Boards Service

The Boards Service continuously checks the computer's ports, in order to detect when you connect or disconnect an Arduino board.

The Boards Manager lists all the known board types, and allows downloading new cores to get additional board types.

Core Service

The Core Service is responsible for building your sketches and uploading them to a board.

Serial Service

The Serial Service allows getting information back from sketches running on your Arduino boards.

Config Service

The Config Service knows about your system, like for example the default sketch locations.

"arduino" configuration in the package.json:

  • "cli":
    • "version" type string | { owner: string, repo: string, commitish?: string }: if the type is a string and is a valid semver, it will get the corresponding released CLI. If the type is string and is a date in YYYYMMDD format, it will get a nightly CLI. If the type is an object, a CLI, build from the sources in the owner/repo will be used. If commitish is not defined, the HEAD of the default branch will be used. In any other cases an error is thrown.

Rebuild gRPC protocol interfaces

  • Some CLI updates can bring changes to the gRPC interfaces, as the API might change. gRPC interfaces can be updated running the command yarn --cwd arduino-ide-extension generate-protocol

Update clangd and ClangFormat

The clangd C++ language server and the ClangFormat code formatter tool dependencies are managed in parallel. Updating them to a different version is done by the following procedure:

  1. If the target version is not already available from the arduino/clang-static-binaries repository, submit an issue there requesting a build and wait for that to be completed.
  2. Validate the ClangFormat configuration for the target version by following the instructions here
  3. Submit a pull request in the arduino/arduino-ide repository to update the version in the arduino.clangd.version key of package.json.
  4. Submit a pull request in the arduino/tooling-project-assets repository to update the version in the vars.DEFAULT_CLANG_FORMAT_VERSION field of Taskfile.yml.

Customize Icons

ArduinoIde uses a customized version of FontAwesome. In order to update/replace icons follow the following steps:

  • import the file arduino-icons.json in Icomoon
  • load it
  • edit the icons as needed
  • !! download the new arduino-icons.json file and put it in this repo
  • Click on "Generate Font" in Icomoon, then download
  • place the updated fonts in the src/style/fonts directory