* fix(plugin): decouple state update from the LS
To enhance the reliability of Arduino IDE extensions, the update
process for `ArduinoState` has been modified to ensure independence
from the language server's availability. This change addresses issues
caused by `compileSummary` being `undefined` due to potential startup
failures of the Arduino Language Server, as noted in
https://github.com/dankeboy36/esp-exception-decoder/issues/28#issuecomment-2681800772.
The `compile` command now resolves with a `CompileSummary` rather than
`void`, facilitating a more reliable way for extensions to access
necessary data. Furthermore, the command has been adjusted to allow
resolution with `undefined` when the compiled data is partial.
By transitioning to direct usage of the resolved compile value for
state updates, the reliance on executed commands for extensions is
eliminated. This update also moves the VSIX command execution to the
frontend without altering existing IDE behavior.
Closesarduino/arduino-ide#2642
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* fix: install missing libx11-dev and libxkbfile-dev
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* fix: pick better GH step name
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* fix: install the required dependencies on Linux
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* fix(revert): do not manually install deps on Linux
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* chore: pin `ubuntu-22.04` for linux actions
* fix: restore accidentally removed dispose on finally
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* fix(test): align mock naming 💄
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* fix: let the ino contribution notify the LS
+ event emitter dispatches the new state.
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* fix(test): emit the new compiler summary state
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
* chore(revert): unpin linux version, use latest
revert of b11bde1c47
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
---------
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
Co-authored-by: Giacomo Cusinato <7659518+giacomocusinato@users.noreply.github.com>
* fix: use `Status` enum for status code in `ServiceError` type guards
This change resolves the issue where the intersection of `ServiceError` error codes of type `number` resulted in the `never` type due to conflict between number and `State` enum if `StatusObject`
* feat: add `isInvalidArgument` type guard to `ServiceError`
* fix: retry compilation if grpc client needs to be reinitialized
See https://github.com/arduino/arduino-ide/issues/2547
* fix: use `@pingghost/protoc` to compile proto files
The npm package previously used (`protoc`) is still lacking apple arm32 support, see https://github.com/YePpHa/node-protoc/pull/10
* feat: use Arduino CLI 1.0.4
* fix: allow use of node16 in github actions
* chore: update `arduino-language-server` version for cli-1.0.0
* fix: deprecated platform order test
Arduino deprecated platforms should have more priority then other deprecated ones
- Update a shared state on fqbn, port, sketch path, and etc. changes.
VS Code extensions can access it and listen on changes.
- Force VISX activation order: API VSIX starts first.
Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
Previously, if the `port` was not set in IDE2, the compile request
object has been created with an empty port object (`{}`). From now on,
if the port is not specified, IDE2 will create a compile request with
the default `null` `port` value.
Closes#2089
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
- Updated `@theia/*` to `1.37.0`.
- Fixed all `yarn audit` security vulnerabilities.
- Updated to `electron@23.2.4`:
- `contextIsolation` is `true`,
- `nodeIntegration` is `false`, and the
- `webpack` target is moved from `electron-renderer` to `web`.
- Updated to `typescript@4.9.3`.
- Updated the `eslint` plugins.
- Added the new `Light High Contrast` theme to the IDE2.
- High contrast themes use Theia APIs for style adjustments.
- Support for ESM modules: `"moduleResolution": "node16"`.
- Node.js >= 16.14 is required.
- VISX langage packs were bumped to `1.70.0`.
- Removed undesired editor context menu items. (Closes#1394)
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
* 1032 failing upload flag for monitor mgr
* move upload failure fix logic to frontend
* misc corrections
* avoid starting monitor when upload is in progress
* avoid starting monitor when upload is in progress
* prevent monitor side effects on upload (WIP)
* send upload req after notifying mgr
* dispose instead of pause on upld (code not final)
* Revert "dispose instead of pause on upld (code not final)"
This reverts commit 2d5dff2a2d85754467470b5973b7ecac8017aa58.
* force wait before upload (test)
* always start queued services after uplaod finishes
* test cli with monitor close delay
* clean up unnecessary await(s)
* remove unused dependency
* revert CLI to 0.23
* use master cli for testing, await in upload finish
* remove upload port from pending monitor requests
* fix startQueuedServices
* refinements queued monitors
* clean up monitor mgr state
* fix typo from prev cleanup
* avoid dupl queued monitor services
* variable name changes
* reference latest cli commit in package.json
Co-authored-by: Alberto Iannaccone <a.iannaccone@arduino.cc>
* backend structure WIP
* Scaffold interfaces and classes for pluggable monitors
* Implement MonitorService to handle pluggable monitor lifetime
* Rename WebSocketService to WebSocketProvider and uninjected it
* Moved some interfaces
* Changed upload settings
* Enhance MonitorManager APIs
* Fixed WebSocketChange event signature
* Add monitor proxy functions for the frontend
* Moved settings to MonitorService
* Remove several unnecessary serial monitor classes
* Changed how connection is handled on upload
* Proxied more monitor methods to frontend
* WebSocketProvider is not injectable anymore
* Add generic monitor settings storaging
* More serial classes removal
* Remove unused file
* Changed plotter contribution to use new manager proxy
* Changed MonitorWidget and children to use new monitor proxy
* Updated MonitorWidget to use new monitor proxy
* Fix backend logger bindings
* Delete unnecessary Symbol
* coreClientProvider is now set when constructing MonitorService
* Add missing binding
* Fix `MonitorManagerProxy` DI issue
* fix monitor connection
* delete duplex when connection is closed
* update arduino-cli to 0.22.0
* fix upload when monitor is open
* add MonitorSettingsProvider interface
* monitor settings provider stub
* updated pseudo code
* refactor monitor settings interfaces
* monitor service provider singleton
* add unit tests
* change MonitorService providers to injectable deps
* fix monitor settings client communication
* refactor monitor commands protocol
* use monitor settings provider properly
* add settings to monitor model
* add settings to monitor model
* reset serial monitor when port changes
* fix serial plotter opening
* refine monitor connection settings
* fix hanging web socket connections
* add serial plotter reset command
* send port to web socket clients
* monitor service wait for success serial port open
* fix reset loop
* update serial plotter version
* update arduino-cli version to 0.23.0-rc1 and regenerate grpc protocol
* remove useless plotter protocol file
* localize web socket errors
* clean-up code
* update translation file
* Fix duplicated editor tabs (#1012)
* Save dialog for closing temporary sketch and unsaved files (#893)
* Use normal `OnWillStop` event
* Align `CLOSE` command to rest of app
* Fixed FS path vs encoded URL comparision when handling stop request.
Ref: https://github.com/eclipse-theia/theia/issues/11226
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
* Fixed the translations.
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
* Fixed the translations again.
Removed `electron` from the `nls-extract`. It does not contain app code.
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
* Aligned the stop handler code to Theia.
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
Co-authored-by: Akos Kitta <a.kitta@arduino.cc>
* fix serial monitor send line ending
* refactor monitor-service poll for test/readability
* localize web socket errors
* update translation file
* Fix duplicated editor tabs (#1012)
* i18n:check rerun
* Speed up IDE startup time.
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
* override coreClientProvider in monitor-service
* cleanup merged code
Co-authored-by: Francesco Stasi <f.stasi@me.com>
Co-authored-by: Silvano Cerza <silvanocerza@gmail.com>
Co-authored-by: Mark Sujew <mark.sujew@typefox.io>
Co-authored-by: David Simpson <45690499+davegarthsimpson@users.noreply.github.com>
Co-authored-by: Akos Kitta <a.kitta@arduino.cc>
An extra brace was inadvertently introduced into a template literal used to format output text in the event of an error
during compilation. This caused the text to end in a pointless `}`
For example:
```
Compilation error: exit status 1}
```
After this change, the output text is as expected:
```
Compilation error: exit status 1
```
* get serial connection status from BE
* handle serial connect in the BE
* allow breakpoints on vscode (windows)
* Timeout on config change to prevent serial busy
* serial-service tests
* Rebuild gRPC protocol interfaces
* Implement methods to get user fields for board/port combination
* Implement dialog to input board user fields
* Add configure and upload step when uploading to board requiring user fields
* Disable Sketch > Configure and Upload menu if board doesn't support user fields
* Fix serial upload not working with all boards
* Update i18n source file
* fix user fields UI
* regenerate cli protocol
* fix localisation
* check if user fields are empty
Co-authored-by: Alberto Iannaccone <a.iannaccone@arduino.cc>
* spawn new window where to instantiate serial plotter app
* initialize serial monito web app
* connect serial plotter app with websocket
* use npm serial-plotter package
* refactor monitor connection and fix some connection issues
* fix clearConsole + refactor monitor connection
* add serial unit tests
* refactoring and cleaning code
* integrate cli 0.19.0
* Update CLI version used to fix crash on lib/core install/uninstall
* Update CLI version
* Update CLI version
* update cli version
Co-authored-by: Silvano Cerza <silvanocerza@gmail.com>
- Merged the Arduino channels into one,
- Removed the channel selector dropdown from the UI.
Closesarduino/arduino-pro-ide#421.
Signed-off-by: Akos Kitta <kittaakos@typefox.io>
Made the port/fqbn/programmer optional for upload, verify,
and burn bootloader. From now on, the IDE does not warn the user before
performing the desired CLI command.
Closesarduino/arduino-pro-ide#364
Signed-off-by: Akos Kitta <kittaakos@typefox.io>