Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: arduino/arduino-ide
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 2.0.4
Choose a base ref
...
head repository: arduino/arduino-ide
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 2.1.0
Choose a head ref
Loading
Showing with 8,764 additions and 2,363 deletions.
  1. +3 −0 .github/label-configuration-files/labels.yml
  2. +12 −2 .github/workflows/build.yml
  3. +1 −1 .github/workflows/check-i18n-task.yml
  4. +1 −1 .github/workflows/i18n-nightly-push.yml
  5. +2 −2 .github/workflows/i18n-weekly-pull.yml
  6. +2 −2 .github/workflows/themes-weekly-pull.yml
  7. +1 −1 arduino-ide-extension/arduino-icons.json
  8. +6 −6 arduino-ide-extension/package.json
  9. +40 −18 arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts
  10. +1 −1 arduino-ide-extension/src/browser/boards/boards-auto-installer.ts
  11. +14 −4 arduino-ide-extension/src/browser/contributions/account.ts
  12. +1 −1 arduino-ide-extension/src/browser/contributions/cloud-contribution.ts
  13. +28 −3 arduino-ide-extension/src/browser/contributions/contribution.ts
  14. +118 −0 arduino-ide-extension/src/browser/contributions/create-cloud-copy.ts
  15. +91 −39 arduino-ide-extension/src/browser/contributions/examples.ts
  16. +49 −10 arduino-ide-extension/src/browser/contributions/new-cloud-sketch.ts
  17. +5 −1 arduino-ide-extension/src/browser/contributions/open-sketch-files.ts
  18. +1 −1 arduino-ide-extension/src/browser/contributions/rename-cloud-sketch.ts
  19. +55 −53 arduino-ide-extension/src/browser/contributions/save-as-sketch.ts
  20. +63 −51 arduino-ide-extension/src/browser/create/create-api.ts
  21. +51 −4 arduino-ide-extension/src/browser/create/create-features.ts
  22. +2 −1 arduino-ide-extension/src/browser/create/create-fs-provider.ts
  23. +50 −8 arduino-ide-extension/src/browser/dialogs/settings/settings-component.tsx
  24. +11 −0 arduino-ide-extension/src/browser/dialogs/settings/settings.ts
  25. 0 arduino-ide-extension/src/browser/{style/pull-sketch-icon.svg → icons/arduino-cloud-download.svg}
  26. +4 −0 arduino-ide-extension/src/browser/icons/arduino-cloud-filled-offline.svg
  27. +3 −0 arduino-ide-extension/src/browser/icons/arduino-cloud-filled.svg
  28. +4 −0 arduino-ide-extension/src/browser/icons/arduino-cloud-offline.svg
  29. 0 arduino-ide-extension/src/browser/{style/push-sketch-icon.svg → icons/arduino-cloud-upload.svg}
  30. +3 −0 arduino-ide-extension/src/browser/icons/arduino-cloud.svg
  31. +12 −1 arduino-ide-extension/src/browser/library/library-list-widget.ts
  32. +15 −1 arduino-ide-extension/src/browser/menu/arduino-menus.ts
  33. +65 −27 arduino-ide-extension/src/browser/monitor-manager-proxy-client-impl.ts
  34. +37 −47 arduino-ide-extension/src/browser/monitor-model.ts
  35. +4 −4 arduino-ide-extension/src/browser/serial/monitor/monitor-view-contribution.tsx
  36. +67 −32 arduino-ide-extension/src/browser/serial/monitor/monitor-widget.tsx
  37. +69 −17 arduino-ide-extension/src/browser/serial/monitor/serial-monitor-send-input.tsx
  38. +14 −14 arduino-ide-extension/src/browser/serial/monitor/serial-monitor-send-output.tsx
  39. +0 −1 arduino-ide-extension/src/browser/style/account-icon.svg
  40. +1 −1 arduino-ide-extension/src/browser/style/boards-config-dialog.css
  41. +12 −22 arduino-ide-extension/src/browser/style/cloud-sketchbook.css
  42. +3 −3 arduino-ide-extension/src/browser/style/dialogs.css
  43. +26 −3 arduino-ide-extension/src/browser/style/fonts.css
  44. +6 −0 arduino-ide-extension/src/browser/style/fonts/FontAwesome.svg
  45. BIN arduino-ide-extension/src/browser/style/fonts/FontAwesome.ttf
  46. BIN arduino-ide-extension/src/browser/style/fonts/FontAwesome.woff
  47. +2 −2 arduino-ide-extension/src/browser/style/ide-updater-dialog.css
  48. +31 −19 arduino-ide-extension/src/browser/style/index.css
  49. +118 −48 arduino-ide-extension/src/browser/style/list-widget.css
  50. +9 −5 arduino-ide-extension/src/browser/style/main.css
  51. +29 −4 arduino-ide-extension/src/browser/style/monitor.css
  52. +0 −4 arduino-ide-extension/src/browser/style/sketch-folder-icon.svg
  53. +0 −7 arduino-ide-extension/src/browser/style/sketchbook.css
  54. +280 −62 arduino-ide-extension/src/browser/theia/core/connection-status-service.ts
  55. +14 −6 arduino-ide-extension/src/browser/theia/core/sidebar-bottom-menu-widget.tsx
  56. +170 −10 arduino-ide-extension/src/browser/theia/core/theming.ts
  57. +69 −5 arduino-ide-extension/src/browser/theia/core/window-title-updater.ts
  58. +78 −0 arduino-ide-extension/src/browser/theia/filesystem/file-resource.ts
  59. +0 −8 arduino-ide-extension/src/browser/theia/messages/notifications-manager.ts
  60. +218 −10 arduino-ide-extension/src/browser/theia/monaco/monaco-theming-service.ts
  61. +37 −0 arduino-ide-extension/src/browser/utils/dom.ts
  62. +10 −2 arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketch-cache.ts
  63. +88 −0 arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-commands.ts
  64. +6 −1 arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-composite-widget.tsx
  65. +220 −142 arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-contributions.ts
  66. +11 −3 arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-tree-model.ts
  67. +28 −1 arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-tree-widget.tsx
  68. +134 −82 arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-tree.ts
  69. +30 −28 ...ino-ide-extension/src/browser/widgets/cloud-sketchbook/{cloud-user-status.tsx → cloud-status.tsx}
  70. +57 −33 arduino-ide-extension/src/browser/widgets/component-list/component-list-item.tsx
  71. +23 −131 arduino-ide-extension/src/browser/widgets/component-list/component-list.tsx
  72. +38 −14 arduino-ide-extension/src/browser/widgets/component-list/filterable-list-container.tsx
  73. +752 −106 arduino-ide-extension/src/browser/widgets/component-list/list-item-renderer.tsx
  74. +28 −15 arduino-ide-extension/src/browser/widgets/component-list/list-widget.tsx
  75. +0 −3 arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-commands.ts
  76. +7 −4 arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-composite-widget.tsx
  77. +17 −11 arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-tree-widget.tsx
  78. +15 −3 arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-tree.ts
  79. +12 −6 arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-widget-contribution.ts
  80. +1 −7 arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-widget.tsx
  81. +17 −16 arduino-ide-extension/src/common/protocol/arduino-component.ts
  82. +5 −5 arduino-ide-extension/src/common/protocol/core-service.ts
  83. +4 −0 arduino-ide-extension/src/common/protocol/examples-service.ts
  84. +40 −0 arduino-ide-extension/src/common/protocol/installable.ts
  85. +11 −3 arduino-ide-extension/src/common/protocol/library-service.ts
  86. +165 −21 arduino-ide-extension/src/common/protocol/monitor-service.ts
  87. +14 −19 arduino-ide-extension/src/common/protocol/sketches-service.ts
  88. +18 −0 arduino-ide-extension/src/common/utils.ts
  89. +28 −51 arduino-ide-extension/src/node/arduino-daemon-impl.ts
  90. +3 −0 arduino-ide-extension/src/node/arduino-ide-backend-module.ts
  91. +0 −2 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/commands_grpc_pb.js
  92. +32 −0 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/commands_pb.d.ts
  93. +193 −0 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/commands_pb.js
  94. +0 −4 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/compile_pb.d.ts
  95. +0 −30 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/compile_pb.js
  96. +17 −0 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/core_pb.d.ts
  97. +123 −0 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/core_pb.js
  98. +10 −0 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/lib_pb.d.ts
  99. +89 −3 arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/lib_pb.js
  100. +2 −2 arduino-ide-extension/src/node/core-service-impl.ts
  101. +10 −0 arduino-ide-extension/src/node/examples-service-impl.ts
  102. +8 −8 arduino-ide-extension/src/node/library-service-impl.ts
  103. +9 −5 arduino-ide-extension/src/node/monitor-manager-proxy-impl.ts
  104. +21 −12 arduino-ide-extension/src/node/monitor-manager.ts
  105. +217 −155 arduino-ide-extension/src/node/monitor-service.ts
  106. +2 −3 arduino-ide-extension/src/node/monitor-settings/monitor-settings-provider.ts
  107. +53 −0 arduino-ide-extension/src/node/settings-reader.ts
  108. +85 −126 arduino-ide-extension/src/node/sketches-service-impl.ts
  109. +46 −0 arduino-ide-extension/src/test/browser/connection-status-service.test.ts
  110. +34 −0 arduino-ide-extension/src/test/browser/create-api.test.ts
  111. +0 −1 arduino-ide-extension/src/test/browser/fixtures/boards.ts
  112. +179 −0 arduino-ide-extension/src/test/browser/theming.test.ts
  113. +5 −5 arduino-ide-extension/src/test/browser/workspace-commands.test.ts
  114. +99 −0 arduino-ide-extension/src/test/common/installable.test.ts
  115. +14 −18 arduino-ide-extension/src/test/common/sketches-service.test.ts
  116. +6 −14 arduino-ide-extension/src/test/node/boards-service-impl.slow-test.ts
  117. +5 −13 arduino-ide-extension/src/test/node/core-service-impl.slow-test.ts
  118. +5 −13 arduino-ide-extension/src/test/node/library-service-impl.slow-test.ts
  119. +45 −0 arduino-ide-extension/src/test/node/settings.reader.test.ts
  120. +262 −0 arduino-ide-extension/src/test/node/sketches-service-impl.slow-test.ts
  121. +14 −4 arduino-ide-extension/src/test/node/test-bindings.ts
  122. +14 −6 docs/internal/release-procedure.md
  123. +2 −2 electron-app/package.json
  124. +10 −4 electron/build/scripts/arduino-ide-electron-main.js
  125. +2 −2 electron/build/template-package.json
  126. +42 −7 i18n/af.json
  127. +42 −7 i18n/ar.json
  128. +42 −7 i18n/az.json
  129. +42 −7 i18n/bg.json
  130. +538 −0 i18n/bn.json
  131. +68 −33 i18n/ca_ES.json
  132. +42 −7 i18n/cs.json
  133. +42 −7 i18n/da.json
  134. +71 −36 i18n/de.json
  135. +44 −9 i18n/el.json
  136. +36 −6 i18n/en.json
  137. +49 −14 i18n/es.json
  138. +42 −7 i18n/eu.json
  139. +42 −7 i18n/fa.json
  140. +43 −8 i18n/fil.json
  141. +42 −7 i18n/fr.json
  142. +42 −7 i18n/he.json
  143. +196 −38 i18n/hi.json
  144. +42 −7 i18n/hu.json
  145. +42 −7 i18n/id.json
  146. +69 −34 i18n/it.json
  147. +46 −11 i18n/ja.json
  148. +42 −7 i18n/ko.json
  149. +42 −7 i18n/my_MM.json
  150. +42 −7 i18n/ne.json
  151. +104 −69 i18n/nl.json
  152. +42 −7 i18n/pl.json
  153. +167 −132 i18n/pt.json
  154. +43 −8 i18n/ro.json
  155. +45 −10 i18n/ru.json
  156. +42 −7 i18n/sl.json
  157. +42 −7 i18n/sr.json
  158. +538 −0 i18n/sv.json
  159. +42 −7 i18n/th.json
  160. +42 −7 i18n/tr.json
  161. +42 −7 i18n/uk.json
  162. +42 −7 i18n/vi.json
  163. +42 −7 i18n/zh-Hant.json
  164. +49 −14 i18n/zh.json
  165. +42 −7 i18n/zh_TW.json
  166. +2 −6 package.json
  167. +245 −55 yarn.lock
3 changes: 3 additions & 0 deletions .github/label-configuration-files/labels.yml
Original file line number Diff line number Diff line change
@@ -7,6 +7,9 @@
- name: "topic: CLI"
color: "00ffff"
description: Related to Arduino CLI
- name: "topic: cloud"
color: "00ffff"
description: Related to Arduino Cloud and cloud sketches
- name: "topic: debugger"
color: "00ffff"
description: Related to the integrated debugger
14 changes: 12 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ jobs:
certificate-secret: WINDOWS_SIGNING_CERTIFICATE_PFX # Name of the secret that contains the certificate.
certificate-password-secret: WINDOWS_SIGNING_CERTIFICATE_PASSWORD # Name of the secret that contains the certificate password.
certificate-extension: pfx # File extension for the certificate.
- os: ubuntu-18.04 # https://github.com/arduino/arduino-ide/issues/259
- os: ubuntu-20.04
- os: macos-latest
# APPLE_SIGNING_CERTIFICATE_P12 secret was produced by following the procedure from:
# https://www.kencochrane.com/2020/08/01/build-and-sign-golang-binaries-for-macos-with-github-actions/#exporting-the-developer-certificate
@@ -69,7 +69,7 @@ jobs:
python-version: '3.x'

- name: Install Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

@@ -99,6 +99,7 @@ jobs:
export CSC_LINK="${{ runner.temp }}/signing_certificate.${{ matrix.config.certificate-extension }}"
echo "${{ secrets[matrix.config.certificate-secret] }}" | base64 --decode > "$CSC_LINK"
export CSC_KEY_PASSWORD="${{ secrets[matrix.config.certificate-password-secret] }}"
export CSC_FOR_PULL_REQUEST=true
fi
if [ "${{ runner.OS }}" = "Windows" ]; then
@@ -244,6 +245,15 @@ jobs:
file_glob: true
body: ${{ needs.changelog.outputs.BODY }}

# Temporary measure to prevent release update offers before the manually produced builds are uploaded.
# The step must be removed once fully automated builds are regained.
- name: Remove "channel update info files" related to manual builds
run: |
# See: https://github.com/arduino/arduino-ide/issues/2018
rm "${{ env.JOB_TRANSFER_ARTIFACT }}/stable-linux.yml"
# See: https://github.com/arduino/arduino-ide/issues/408
rm "${{ env.JOB_TRANSFER_ARTIFACT }}/stable-mac.yml"
- name: Publish Release [S3]
if: github.repository == 'arduino/arduino-ide'
uses: docker://plugins/s3
2 changes: 1 addition & 1 deletion .github/workflows/check-i18n-task.yml
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@ jobs:
registry-url: 'https://registry.npmjs.org'

- name: Install Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

2 changes: 1 addition & 1 deletion .github/workflows/i18n-nightly-push.yml
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ jobs:
registry-url: 'https://registry.npmjs.org'

- name: Install Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

4 changes: 2 additions & 2 deletions .github/workflows/i18n-weekly-pull.yml
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ jobs:
registry-url: 'https://registry.npmjs.org'

- name: Install Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

@@ -45,7 +45,7 @@ jobs:
TRANSIFEX_API_KEY: ${{ secrets.TRANSIFEX_API_KEY }}

- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
with:
commit-message: Updated translation files
title: Update translation files
4 changes: 2 additions & 2 deletions .github/workflows/themes-weekly-pull.yml
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@ jobs:
registry-url: 'https://registry.npmjs.org'

- name: Install Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}

@@ -54,7 +54,7 @@ jobs:
run: yarn run themes:generate

- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
with:
commit-message: Updated themes
title: Update themes
2 changes: 1 addition & 1 deletion arduino-ide-extension/arduino-icons.json

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions arduino-ide-extension/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "arduino-ide-extension",
"version": "2.0.4",
"version": "2.1.0",
"description": "An extension for Theia building the Arduino IDE",
"license": "AGPL-3.0-or-later",
"scripts": {
@@ -53,12 +53,10 @@
"@types/js-yaml": "^3.12.2",
"@types/keytar": "^4.4.0",
"@types/lodash.debounce": "^4.0.6",
"@types/ncp": "^2.0.4",
"@types/node-fetch": "^2.5.7",
"@types/p-queue": "^2.3.1",
"@types/ps-tree": "^1.1.0",
"@types/react-tabs": "^2.3.2",
"@types/react-virtualized": "^9.21.21",
"@types/temp": "^0.8.34",
"@types/which": "^1.3.1",
"@vscode/debugprotocol": "^1.51.0",
@@ -67,6 +65,7 @@
"auth0-js": "^9.14.0",
"btoa": "^1.2.1",
"classnames": "^2.3.1",
"cpy": "^8.1.2",
"cross-fetch": "^3.1.5",
"dateformat": "^3.0.3",
"deepmerge": "2.0.1",
@@ -77,13 +76,14 @@
"glob": "^7.1.6",
"google-protobuf": "^3.20.1",
"hash.js": "^1.1.7",
"is-online": "^9.0.1",
"js-yaml": "^3.13.1",
"jsonc-parser": "^2.2.0",
"just-diff": "^5.1.1",
"jwt-decode": "^3.1.2",
"keytar": "7.2.0",
"lodash.debounce": "^4.0.8",
"minimatch": "^3.1.2",
"ncp": "^2.0.0",
"node-fetch": "^2.6.1",
"open": "^8.0.6",
"p-debounce": "^2.1.0",
@@ -95,7 +95,6 @@
"react-perfect-scrollbar": "^1.5.8",
"react-select": "^5.6.0",
"react-tabs": "^3.1.2",
"react-virtualized": "^9.22.3",
"react-window": "^1.8.6",
"semver": "^7.3.2",
"string-natural-compare": "^2.0.3",
@@ -121,6 +120,7 @@
"mocha": "^7.0.0",
"mockdate": "^3.0.5",
"moment": "^2.24.0",
"ncp": "^2.0.0",
"protoc": "^1.0.4",
"shelljs": "^0.8.3",
"uuid": "^3.2.1",
@@ -163,7 +163,7 @@
],
"arduino": {
"cli": {
"version": "0.31.0"
"version": "0.32.2"
},
"fwuploader": {
"version": "2.2.2"
58 changes: 40 additions & 18 deletions arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts
Original file line number Diff line number Diff line change
@@ -79,7 +79,10 @@ import { ProblemManager as TheiaProblemManager } from '@theia/markers/lib/browse
import { ProblemManager } from './theia/markers/problem-manager';
import { BoardsAutoInstaller } from './boards/boards-auto-installer';
import { ShellLayoutRestorer } from './theia/core/shell-layout-restorer';
import { ListItemRenderer } from './widgets/component-list/list-item-renderer';
import {
ArduinoComponentContextMenuRenderer,
ListItemRenderer,
} from './widgets/component-list/list-item-renderer';
import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution';

import {
@@ -90,6 +93,8 @@ import { EditorCommandContribution as TheiaEditorCommandContribution } from '@th
import {
FrontendConnectionStatusService,
ApplicationConnectionStatusContribution,
DaemonPort,
IsOnline,
} from './theia/core/connection-status-service';
import {
FrontendConnectionStatusService as TheiaFrontendConnectionStatusService,
@@ -233,7 +238,6 @@ import {
UploadFirmwareDialog,
UploadFirmwareDialogProps,
} from './dialogs/firmware-uploader/firmware-uploader-dialog';

import { UploadCertificate } from './contributions/upload-certificate';
import {
ArduinoFirmwareUploader,
@@ -323,9 +327,13 @@ import { NewCloudSketch } from './contributions/new-cloud-sketch';
import { SketchbookCompositeWidget } from './widgets/sketchbook/sketchbook-composite-widget';
import { WindowTitleUpdater } from './theia/core/window-title-updater';
import { WindowTitleUpdater as TheiaWindowTitleUpdater } from '@theia/core/lib/browser/window/window-title-updater';
import { ThemeServiceWithDB } from './theia/core/theming';
import { ThemeServiceWithDB as TheiaThemeServiceWithDB } from '@theia/monaco/lib/browser/monaco-indexed-db';
import { MonacoThemingService } from './theia/monaco/monaco-theming-service';
import {
MonacoThemingService,
CleanupObsoleteThemes,
ThemesRegistrationSummary,
MonacoThemeRegistry,
} from './theia/monaco/monaco-theming-service';
import { MonacoThemeRegistry as TheiaMonacoThemeRegistry } from '@theia/monaco/lib/browser/textmate/monaco-theme-registry';
import { MonacoThemingService as TheiaMonacoThemingService } from '@theia/monaco/lib/browser/monaco-theming-service';
import { TypeHierarchyServiceProvider } from './theia/typehierarchy/type-hierarchy-service';
import { TypeHierarchyServiceProvider as TheiaTypeHierarchyServiceProvider } from '@theia/typehierarchy/lib/browser/typehierarchy-service';
@@ -350,6 +358,9 @@ import { CreateFeatures } from './create/create-features';
import { Account } from './contributions/account';
import { SidebarBottomMenuWidget } from './theia/core/sidebar-bottom-menu-widget';
import { SidebarBottomMenuWidget as TheiaSidebarBottomMenuWidget } from '@theia/core/lib/browser/shell/sidebar-bottom-menu-widget';
import { CreateCloudCopy } from './contributions/create-cloud-copy';
import { FileResourceResolver } from './theia/filesystem/file-resource';
import { FileResourceResolver as TheiaFileResourceResolver } from '@theia/filesystem/lib/browser/file-resource';

export default new ContainerModule((bind, unbind, isBound, rebind) => {
// Commands and toolbar items
@@ -488,15 +499,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
bind(TabBarToolbarContribution).toService(MonitorViewContribution);
bind(WidgetFactory).toDynamicValue((context) => ({
id: MonitorWidget.ID,
createWidget: () => {
return new MonitorWidget(
context.container.get<MonitorModel>(MonitorModel),
context.container.get<MonitorManagerProxyClient>(
MonitorManagerProxyClient
),
context.container.get<BoardsServiceProvider>(BoardsServiceProvider)
);
},
createWidget: () => context.container.get(MonitorWidget),
}));

bind(MonitorManagerProxyFactory).toFactory(
@@ -738,6 +741,8 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
Contribution.configure(bind, ValidateSketch);
Contribution.configure(bind, RenameCloudSketch);
Contribution.configure(bind, Account);
Contribution.configure(bind, CloudSketchbookContribution);
Contribution.configure(bind, CreateCloudCopy);

bindContributionProvider(bind, StartupTaskProvider);
bind(StartupTaskProvider).toService(BoardsServiceProvider); // to reuse the boards config in another window
@@ -916,8 +921,6 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
bind(CreateFsProvider).toSelf().inSingletonScope();
bind(FrontendApplicationContribution).toService(CreateFsProvider);
bind(FileServiceContribution).toService(CreateFsProvider);
bind(CloudSketchbookContribution).toSelf().inSingletonScope();
bind(CommandContribution).toService(CloudSketchbookContribution);
bind(LocalCacheFsProvider).toSelf().inSingletonScope();
bind(FileServiceContribution).toService(LocalCacheFsProvider);
bind(CloudSketchbookCompositeWidget).toSelf();
@@ -973,11 +976,19 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
rebind(TheiaWindowTitleUpdater).toService(WindowTitleUpdater);

// register Arduino themes
bind(ThemeServiceWithDB).toSelf().inSingletonScope();
rebind(TheiaThemeServiceWithDB).toService(ThemeServiceWithDB);
bind(MonacoThemingService).toSelf().inSingletonScope();
rebind(TheiaMonacoThemingService).toService(MonacoThemingService);

// workaround for themes cannot be removed after registration
// https://github.com/eclipse-theia/theia/issues/11151
bind(CleanupObsoleteThemes).toSelf().inSingletonScope();
bind(FrontendApplicationContribution).toService(
CleanupObsoleteThemes
);
bind(ThemesRegistrationSummary).toSelf().inSingletonScope();
bind(MonacoThemeRegistry).toSelf().inSingletonScope();
rebind(TheiaMonacoThemeRegistry).toService(MonacoThemeRegistry);

// disable type-hierarchy support
// https://github.com/eclipse-theia/theia/commit/16c88a584bac37f5cf3cc5eb92ffdaa541bda5be
bind(TypeHierarchyServiceProvider).toSelf().inSingletonScope();
@@ -1021,4 +1032,15 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {

bind(SidebarBottomMenuWidget).toSelf();
rebind(TheiaSidebarBottomMenuWidget).toService(SidebarBottomMenuWidget);

bind(ArduinoComponentContextMenuRenderer).toSelf().inSingletonScope();

bind(DaemonPort).toSelf().inSingletonScope();
bind(FrontendApplicationContribution).toService(DaemonPort);
bind(IsOnline).toSelf().inSingletonScope();
bind(FrontendApplicationContribution).toService(IsOnline);

// https://github.com/arduino/arduino-ide/issues/437
bind(FileResourceResolver).toSelf().inSingletonScope();
rebind(TheiaFileResourceResolver).toService(FileResourceResolver);
});
Original file line number Diff line number Diff line change
@@ -174,7 +174,7 @@ export class BoardsAutoInstaller implements FrontendApplicationContribution {
// CLI returns the packages already sorted with the deprecated ones at the end of the list
// in order to ensure the new ones are preferred
const candidates = packagesForBoard.filter(
({ installable, installedVersion }) => installable && !installedVersion
({ installedVersion }) => !installedVersion
);

return candidates[0];
18 changes: 14 additions & 4 deletions arduino-ide-extension/src/browser/contributions/account.ts
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@ import { inject, injectable } from '@theia/core/shared/inversify';
import { CloudUserCommands, LEARN_MORE_URL } from '../auth/cloud-user-commands';
import { CreateFeatures } from '../create/create-features';
import { ArduinoMenus } from '../menu/arduino-menus';
import { ApplicationConnectionStatusContribution } from '../theia/core/connection-status-service';
import {
Command,
CommandRegistry,
@@ -29,6 +30,8 @@ export class Account extends Contribution {
private readonly windowService: WindowService;
@inject(CreateFeatures)
private readonly createFeatures: CreateFeatures;
@inject(ApplicationConnectionStatusContribution)
private readonly connectionStatus: ApplicationConnectionStatusContribution;

private readonly toDispose = new DisposableCollection();
private app: FrontendApplication;
@@ -50,21 +53,28 @@ export class Account extends Contribution {
override registerCommands(registry: CommandRegistry): void {
const openExternal = (url: string) =>
this.windowService.openNewWindow(url, { external: true });
const loggedIn = () => Boolean(this.createFeatures.session);
const loggedInWithInternetConnection = () =>
loggedIn() && this.connectionStatus.offlineStatus !== 'internet';
registry.registerCommand(Account.Commands.LEARN_MORE, {
execute: () => openExternal(LEARN_MORE_URL),
isEnabled: () => !Boolean(this.createFeatures.session),
isEnabled: () => !loggedIn(),
isVisible: () => !loggedIn(),
});
registry.registerCommand(Account.Commands.GO_TO_PROFILE, {
execute: () => openExternal('https://id.arduino.cc/'),
isEnabled: () => Boolean(this.createFeatures.session),
isEnabled: () => loggedInWithInternetConnection(),
isVisible: () => loggedIn(),
});
registry.registerCommand(Account.Commands.GO_TO_CLOUD_EDITOR, {
execute: () => openExternal('https://create.arduino.cc/editor'),
isEnabled: () => Boolean(this.createFeatures.session),
isEnabled: () => loggedInWithInternetConnection(),
isVisible: () => loggedIn(),
});
registry.registerCommand(Account.Commands.GO_TO_IOT_CLOUD, {
execute: () => openExternal('https://create.arduino.cc/iot/'),
isEnabled: () => Boolean(this.createFeatures.session),
isEnabled: () => loggedInWithInternetConnection(),
isVisible: () => loggedIn(),
});
}

Original file line number Diff line number Diff line change
@@ -93,7 +93,7 @@ export abstract class CloudSketchContribution extends SketchContribution {
);
}
try {
await treeModel.sketchbookTree().pull({ node });
await treeModel.sketchbookTree().pull({ node }, true);
return node;
} catch (err) {
if (isNotFound(err)) {
Loading