From 65e53cc7bdd84a6dadabdd089f42186faa4b1f4e Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Tue, 17 Dec 2024 16:55:12 +0100 Subject: [PATCH 01/66] Auto connect if only one port available --- ui/arduino/store.js | 14 ++++++++++++++ ui/arduino/views/components/toolbar.js | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 09a373e..116c0dc 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -210,6 +210,20 @@ async function store(state, emitter) { emitter.emit('render') }) + emitter.on('connect', async () => { + try { + state.availablePorts = await getAvailablePorts() + } catch(e) { + console.error('Could not get available ports. ', e) + } + + if(state.availablePorts.length == 1) { + emitter.emit('select-port', state.availablePorts[0]) + } else { + emitter.emit('open-connection-dialog') + } + }) + // CODE EXECUTION emitter.on('run', async (onlySelected = false) => { log('run') diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index 70982b0..eff0731 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -16,7 +16,7 @@ function Toolbar(state, emit) { ${Button({ icon: state.isConnected ? 'connect.svg' : 'disconnect.svg', tooltip: state.isConnected ? `Disconnect (${metaKeyString}+Shift+D)` : `Connect (${metaKeyString}+Shift+C)`, - onClick: () => state.isConnected ? emit('disconnect') : emit('open-connection-dialog'), + onClick: () => state.isConnected ? emit('disconnect') : emit('connect'), active: state.isConnected })} From 07fa1cea111127303b839bbc31c2da1c62d670c2 Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Tue, 17 Dec 2024 16:55:55 +0100 Subject: [PATCH 02/66] Display connection status --- ui/arduino/main.css | 15 ++++++++++++++- ui/arduino/views/components/repl-panel.js | 4 ++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index cc0e95c..37fa561 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -273,7 +273,7 @@ button.small .icon { } #panel #drag-handle { - width: 100%; + flex-grow: 2; height: 100%; cursor: grab; } @@ -293,6 +293,19 @@ button.small .icon { background: #008184; } +.panel-bar #connection-status { + display: flex; + align-items: center; + gap: 10px; + color: white; +} + +.panel-bar #connection-status img { + width: 1.25em; + height: 1.25em; + filter: invert(1); +} + .panel-bar .term-operations { transition: opacity 0.15s; display: flex; diff --git a/ui/arduino/views/components/repl-panel.js b/ui/arduino/views/components/repl-panel.js index 3974d50..7a89fbd 100644 --- a/ui/arduino/views/components/repl-panel.js +++ b/ui/arduino/views/components/repl-panel.js @@ -13,6 +13,10 @@ function ReplPanel(state, emit) { return html`
+
+ +
${state.isConnected ? 'Connected to ' + state.connectedPort : ''}
+
emit('start-resizing-panel')} onmouseup=${() => emit('stop-resizing-panel')} From e2784f4d043c8f2e66f3eb5a336a88bff06fe9ed Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 18 Dec 2024 18:24:57 +0100 Subject: [PATCH 03/66] WIP: new file from editor. Signed-off-by: ubi de feo --- ui/arduino/index.html | 1 + ui/arduino/main.css | 17 +++++---- ui/arduino/store.js | 38 +++++++++++++------ .../views/components/connection-dialog.js | 4 +- .../components/new-file-destination-dialog.js | 22 +++++++++++ ui/arduino/views/components/toolbar.js | 7 ++++ ui/arduino/views/editor.js | 1 + ui/arduino/views/file-manager.js | 1 + 8 files changed, 71 insertions(+), 20 deletions(-) create mode 100644 ui/arduino/views/components/new-file-destination-dialog.js diff --git a/ui/arduino/index.html b/ui/arduino/index.html index 8478cc7..63a5981 100644 --- a/ui/arduino/index.html +++ b/ui/arduino/index.html @@ -25,6 +25,7 @@ + diff --git a/ui/arduino/main.css b/ui/arduino/main.css index cc0e95c..f25c61e 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -330,7 +330,7 @@ button.small .icon { opacity: 0.5; } -#dialog { +.dialog { display: flex; flex-direction: column; justify-content: center; @@ -350,13 +350,16 @@ button.small .icon { line-height: normal; background: rgba(236, 241, 241, 0.50); } -#dialog.open { + +.dialog.open { opacity: 1; pointer-events: inherit; transition: opacity 0.15s; } -#dialog .dialog-content { + + +.dialog .dialog-content { display: flex; width: 576px; padding: 36px; @@ -372,16 +375,16 @@ button.small .icon { transition: transform 0.15s; } -#dialog.open .dialog-content { +.dialog.open .dialog-content { transform: translateY(0px); transition: transform 0.15s; } -#dialog .dialog-content > * { +.dialog .dialog-content > * { width: 100%; } -#dialog .dialog-content .item { +.dialog .dialog-content .item { border-radius: 4.5px; display: flex; padding: 10px; @@ -391,7 +394,7 @@ button.small .icon { cursor: pointer; } -#dialog .dialog-content .item:hover { +.dialog .dialog-content .item:hover { background: #008184; color: #ffffff; } diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 09a373e..67b2b70 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -49,6 +49,8 @@ async function store(state, emitter) { state.isConnected = false state.connectedPort = null + state.isNewFileDialogOpen = false + state.isSaving = false state.savingProgress = 0 state.isTransferring = false @@ -295,7 +297,17 @@ async function store(state, emitter) { window.removeEventListener('mousemove', state.resizePanel) }) - // SAVING + // NEW FILE AND SAVING + emitter.on('create-new-file', () => { + log('create-new-file') + state.isNewFileDialogOpen = true + emitter.emit('render') + }) + emitter.on('close-new-file-dialog', () => { + state.isNewFileDialogOpen = false + emitter.emit('render') + }) + emitter.on('save', async () => { log('save') let response = canSave({ @@ -514,18 +526,22 @@ async function store(state, emitter) { emitter.emit('render') }) - emitter.on('create-file', (device) => { + emitter.on('create-file', (device, fileName = null) => { log('create-file', device) if (state.creatingFile !== null) return state.creatingFile = device state.creatingFolder = null + if (fileName != null) { + emitter.emit('finish-creating-file', fileName) + } emitter.emit('render') }) - emitter.on('finish-creating-file', async (value) => { - log('finish-creating', value) + + emitter.on('finish-creating-file', async (fileNameParameter) => { + log('finish-creating', fileNameParameter) if (!state.creatingFile) return - if (!value) { + if (!fileNameParameter) { state.creatingFile = null emitter.emit('render') return @@ -535,10 +551,10 @@ async function store(state, emitter) { let willOverwrite = await checkBoardFile({ root: state.boardNavigationRoot, parentFolder: state.boardNavigationPath, - fileName: value + fileName: fileNameParameter }) if (willOverwrite) { - const confirmAction = await confirm(`You are about to overwrite the file ${value} on your board.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') + const confirmAction = await confirm(`You are about to overwrite the file ${fileNameParameter} on your board.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') if (!confirmAction) { state.creatingFile = null emitter.emit('render') @@ -550,7 +566,7 @@ async function store(state, emitter) { serialBridge.getFullPath( '/', state.boardNavigationPath, - value + fileNameParameter ), newFileContent ) @@ -558,10 +574,10 @@ async function store(state, emitter) { let willOverwrite = await checkDiskFile({ root: state.diskNavigationRoot, parentFolder: state.diskNavigationPath, - fileName: value + fileName: fileNameParameter }) if (willOverwrite) { - const confirmAction = await confirm(`You are about to overwrite the file ${value} on your disk.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') + const confirmAction = await confirm(`You are about to overwrite the file ${fileNameParameter} on your disk.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') if (!confirmAction) { state.creatingFile = null emitter.emit('render') @@ -573,7 +589,7 @@ async function store(state, emitter) { disk.getFullPath( state.diskNavigationRoot, state.diskNavigationPath, - value + fileNameParameter ), newFileContent ) diff --git a/ui/arduino/views/components/connection-dialog.js b/ui/arduino/views/components/connection-dialog.js index 2d99a47..56b1424 100644 --- a/ui/arduino/views/components/connection-dialog.js +++ b/ui/arduino/views/components/connection-dialog.js @@ -1,13 +1,13 @@ function ConnectionDialog(state, emit) { const stateClass = state.isConnectionDialogOpen ? 'open' : 'closed' function onClick(e) { - if (e.target.id == 'dialog') { + if (e.target.id == 'dialog-connection') { emit('close-connection-dialog') } } return html` -
+
${state.availablePorts.map( (port) => html` diff --git a/ui/arduino/views/components/new-file-destination-dialog.js b/ui/arduino/views/components/new-file-destination-dialog.js new file mode 100644 index 0000000..9979443 --- /dev/null +++ b/ui/arduino/views/components/new-file-destination-dialog.js @@ -0,0 +1,22 @@ +function NewFileDestinationDialog(state, emit) { + const stateClass = state.isNewFileDialogOpen ? 'open' : 'closed' + function onClick(e) { + if (e.target.id == 'dialog-new-file') { + emit('close-new-file-dialog') + } + } + let boardOption = '' + if (state.isConnected) { + boardOption = html` +
{emit('create-file','board', 'board_capocchia.py')}}>Board
+ ` + } + return html` +
+
+ ${boardOption} +
{emit('create-file', 'disk', 'disk_capocchia.py')}}>Computer
+
+
+ ` +} diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index 70982b0..2aaa447 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -49,6 +49,13 @@ function Toolbar(state, emit) {
+ ${Button({ + icon: 'new-file.svg', + tooltip: `New (${metaKeyString}+N)`, + disabled: state.view != 'editor', + onClick: () => emit('create-new-file') + })} + ${Button({ icon: 'save.svg', tooltip: `Save (${metaKeyString}+S)`, diff --git a/ui/arduino/views/editor.js b/ui/arduino/views/editor.js index fd93b08..796bdea 100644 --- a/ui/arduino/views/editor.js +++ b/ui/arduino/views/editor.js @@ -7,5 +7,6 @@ function EditorView(state, emit) { ${ReplPanel(state, emit)}
${ConnectionDialog(state, emit)} + ${NewFileDestinationDialog(state, emit)} ` } diff --git a/ui/arduino/views/file-manager.js b/ui/arduino/views/file-manager.js index eafdf65..fd8a3c8 100644 --- a/ui/arduino/views/file-manager.js +++ b/ui/arduino/views/file-manager.js @@ -44,5 +44,6 @@ function FileManagerView(state, emit) {
${ConnectionDialog(state, emit)} + ${NewFileDestinationDialog(state, emit)} ` } From 6f025a78c165578801ab655adc8117bd8f816088 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 18 Dec 2024 19:36:14 +0100 Subject: [PATCH 04/66] WIP: dialog style. Signed-off-by: ubi de feo --- ui/arduino/main.css | 2 +- ui/arduino/views/components/new-file-destination-dialog.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index f25c61e..36e9468 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -381,7 +381,7 @@ button.small .icon { } .dialog .dialog-content > * { - width: 100%; + /* width: 100%; */ } .dialog .dialog-content .item { diff --git a/ui/arduino/views/components/new-file-destination-dialog.js b/ui/arduino/views/components/new-file-destination-dialog.js index 9979443..cf6b620 100644 --- a/ui/arduino/views/components/new-file-destination-dialog.js +++ b/ui/arduino/views/components/new-file-destination-dialog.js @@ -14,6 +14,7 @@ function NewFileDestinationDialog(state, emit) { return html`
+ ${boardOption}
{emit('create-file', 'disk', 'disk_capocchia.py')}}>Computer
From 5a7bd0f6f77f50dd314b77d9e1d2c098f7ae8e96 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Thu, 19 Dec 2024 07:59:22 +0100 Subject: [PATCH 05/66] WIP: new file dialog box. Signed-off-by: ubi de feo --- ui/arduino/main.css | 20 +++++++++ ui/arduino/store.js | 3 ++ .../components/new-file-destination-dialog.js | 42 +++++++++++++++++-- ui/arduino/views/components/repl-panel.js | 7 +++- 4 files changed, 68 insertions(+), 4 deletions(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index 36e9468..e141767 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -272,6 +272,10 @@ button.small .icon { min-height: 45px; } +#panel.dialog-open { + pointer-events: none; +} + #panel #drag-handle { width: 100%; height: 100%; @@ -384,6 +388,10 @@ button.small .icon { /* width: 100%; */ } +.dialog .dialog-content input { + font-size: 1.4em; + width:100%; +} .dialog .dialog-content .item { border-radius: 4.5px; display: flex; @@ -399,6 +407,18 @@ button.small .icon { color: #ffffff; } +.dialog .buttons-horizontal { + display: flex; + flex-direction: row; + justify-content: center; + width: 100%; + gap: 20px; +} +.dialog .buttons-horizontal .item { + flex-basis: 40%; + align-items: center; + background-color: #eee;; +} #file-manager { display: flex; padding: 12px 32px 24px 32px; diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 67b2b70..51202d5 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -1467,6 +1467,9 @@ async function store(state, emitter) { if (state.isConnectionDialogOpen) { emitter.emit('close-connection-dialog') } + if (state.isNewFileDialogOpen) { + emitter.emit('close-new-file-dialog') + } } }) diff --git a/ui/arduino/views/components/new-file-destination-dialog.js b/ui/arduino/views/components/new-file-destination-dialog.js index cf6b620..c9944e9 100644 --- a/ui/arduino/views/components/new-file-destination-dialog.js +++ b/ui/arduino/views/components/new-file-destination-dialog.js @@ -11,13 +11,49 @@ function NewFileDestinationDialog(state, emit) {
{emit('create-file','board', 'board_capocchia.py')}}>Board
` } + const now = new Date(); + const dateStr = String(now.getMonth() + 1).padStart(2, '0') + + String(now.getDate()).padStart(2, '0') + + String(now.getHours()).padStart(2, '0') + + String(now.getMinutes()).padStart(2, '0') + + const fileName = `script_${dateStr}.py`; + + const newFileDialog = html` +
+
+ +
+ ${boardOption} +
{emit('create-file', 'disk', 'disk_capocchia.py')}}>Computer
+
+
+
+` + + + const observer = new MutationObserver((mutations, obs) => { + const el = newFileDialog.querySelector('input') + if (el) { + el.focus() + obs.disconnect() + } + }) + observer.observe(newFileDialog, { childList: true, subtree:true, attributes: true }) + + return newFileDialog + return html`
- - ${boardOption} -
{emit('create-file', 'disk', 'disk_capocchia.py')}}>Computer
+ +
+ ${boardOption} +
{emit('create-file', 'disk', 'disk_capocchia.py')}}>Computer
+
` + + } diff --git a/ui/arduino/views/components/repl-panel.js b/ui/arduino/views/components/repl-panel.js index 3974d50..63a608e 100644 --- a/ui/arduino/views/components/repl-panel.js +++ b/ui/arduino/views/components/repl-panel.js @@ -7,8 +7,13 @@ function ReplPanel(state, emit) { } } const panelOpenClass = state.isPanelOpen ? 'open' : 'closed' + // const pointerEventsClass = state.isNewFileDialogOpen || state.isDialogOpen ? 'open' : 'closed' const termOperationsVisibility = state.panelHeight > PANEL_TOO_SMALL ? 'visible' : 'hidden' - const terminalDisabledClass = state.isConnected ? 'terminal-enabled' : 'terminal-disabled' + let terminalDisabledClass = 'terminal-enabled' + if (!state.isConnected || state.isNewFileDialogOpen) { + terminalDisabledClass = 'terminal-disabled' + } + // const terminalDisabledClass = state.isConnected ? 'terminal-enabled' : 'terminal-disabled' return html`
From cc935436ef75cc80920c1a59c4e1017abc418fd5 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Thu, 19 Dec 2024 08:07:00 +0100 Subject: [PATCH 06/66] Removed ESC from global shortcuts to locally handle it in dialog. Signed-off-by: ubi de feo --- backend/shortcuts.js | 1 - ui/arduino/store.js | 10 +++++----- ui/arduino/views/components/connection-dialog.js | 13 +++++++++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/backend/shortcuts.js b/backend/shortcuts.js index e6b7159..49311a4 100644 --- a/backend/shortcuts.js +++ b/backend/shortcuts.js @@ -11,7 +11,6 @@ module.exports = { CLEAR_TERMINAL: 'CommandOrControl+L', EDITOR_VIEW: 'CommandOrControl+Alt+1', FILES_VIEW: 'CommandOrControl+Alt+2', - ESC: 'Escape' }, menu: { CONNECT: 'CmdOrCtrl+Shift+C', diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 09a373e..28e3a0a 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -1447,11 +1447,11 @@ async function store(state, emitter) { if (state.view != 'editor') return emitter.emit('change-view', 'file-manager') } - if (key === shortcuts.ESC) { - if (state.isConnectionDialogOpen) { - emitter.emit('close-connection-dialog') - } - } + // if (key === shortcuts.ESC) { + // if (state.isConnectionDialogOpen) { + // emitter.emit('close-connection-dialog') + // } + // } }) diff --git a/ui/arduino/views/components/connection-dialog.js b/ui/arduino/views/components/connection-dialog.js index 2d99a47..6b0e3ca 100644 --- a/ui/arduino/views/components/connection-dialog.js +++ b/ui/arduino/views/components/connection-dialog.js @@ -6,6 +6,19 @@ function ConnectionDialog(state, emit) { } } + function onKeyDown(e) { + if (e.key.toLowerCase() === 'escape') { + emit('close-connection-dialog') + } + } + + // Add/remove event listener based on dialog state + if (state.isConnectionDialogOpen) { + document.addEventListener('keydown', onKeyDown) + } else { + document.removeEventListener('keydown', onKeyDown) + } + return html`
From 7fbc40caf8941d4cb30e829b8121a47ea494f9a6 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Fri, 20 Dec 2024 14:58:37 +0100 Subject: [PATCH 07/66] Refactor of Tab creation and new file action/button. Signed-off-by: ubi de feo --- backend/shortcuts.js | 6 +- ui/arduino/index.html | 2 +- ui/arduino/main.css | 19 +++ ui/arduino/store.js | 149 ++++++++++++------ .../views/components/connection-dialog.js | 47 +++--- .../components/new-file-destination-dialog.js | 59 ------- .../views/components/new-file-dialog.js | 76 +++++++++ ui/arduino/views/editor.js | 2 +- ui/arduino/views/file-manager.js | 2 +- 9 files changed, 228 insertions(+), 134 deletions(-) delete mode 100644 ui/arduino/views/components/new-file-destination-dialog.js create mode 100644 ui/arduino/views/components/new-file-dialog.js diff --git a/backend/shortcuts.js b/backend/shortcuts.js index 49311a4..7d970fa 100644 --- a/backend/shortcuts.js +++ b/backend/shortcuts.js @@ -2,12 +2,13 @@ module.exports = { global: { CONNECT: 'CommandOrControl+Shift+C', DISCONNECT: 'CommandOrControl+Shift+D', - SAVE: 'CommandOrControl+S', RUN: 'CommandOrControl+R', RUN_SELECTION: 'CommandOrControl+Alt+R', RUN_SELECTION_WL: 'CommandOrControl+Alt+S', STOP: 'CommandOrControl+H', RESET: 'CommandOrControl+Shift+R', + NEW: 'CommandOrControl+N', + SAVE: 'CommandOrControl+S', CLEAR_TERMINAL: 'CommandOrControl+L', EDITOR_VIEW: 'CommandOrControl+Alt+1', FILES_VIEW: 'CommandOrControl+Alt+2', @@ -15,12 +16,13 @@ module.exports = { menu: { CONNECT: 'CmdOrCtrl+Shift+C', DISCONNECT: 'CmdOrCtrl+Shift+D', - SAVE: 'CmdOrCtrl+S', RUN: 'CmdOrCtrl+R', RUN_SELECTION: 'CmdOrCtrl+Alt+R', RUN_SELECTION_WL: 'CmdOrCtrl+Alt+S', STOP: 'CmdOrCtrl+H', RESET: 'CmdOrCtrl+Shift+R', + NEW: 'CmdOrCtrl+N', + SAVE: 'CmdOrCtrl+S', CLEAR_TERMINAL: 'CmdOrCtrl+L', EDITOR_VIEW: 'CmdOrCtrl+Alt+1', FILES_VIEW: 'CmdOrCtrl+Alt+2' diff --git a/ui/arduino/index.html b/ui/arduino/index.html index 63a5981..332dfc3 100644 --- a/ui/arduino/index.html +++ b/ui/arduino/index.html @@ -25,7 +25,7 @@ - + diff --git a/ui/arduino/main.css b/ui/arduino/main.css index e141767..68af001 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -392,6 +392,10 @@ button.small .icon { font-size: 1.4em; width:100%; } + +.dialog .dialog-content input:focus { + outline-color: #008184; +} .dialog .dialog-content .item { border-radius: 4.5px; display: flex; @@ -419,6 +423,21 @@ button.small .icon { align-items: center; background-color: #eee;; } + +.dialog-title{ + width: 100%; + font-size: 0.8em; + padding: 0.7em; + margin: 0; + flex-basis: max-content; +} +.dialog-feedback { + font-size: 0.6em; + align-self: stretch; + padding: 0.5em; + background: #eee; +} + #file-manager { display: flex; padding: 12px 32px 24px 32px; diff --git a/ui/arduino/store.js b/ui/arduino/store.js index c25fdc1..948e7f7 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -10,9 +10,12 @@ const newFileContent = `# This program was created in Arduino Lab for MicroPytho print('Hello, MicroPython!') ` -async function confirm(msg, cancelMsg, confirmMsg) { - cancelMsg = cancelMsg || 'Cancel' - confirmMsg = confirmMsg || 'Yes' +async function confirmDialog(msg, cancelMsg, confirmMsg) { + // cancelMsg = cancelMsg || 'Cancel' + // confirmMsg = confirmMsg || 'Yes' + let buttons = [] + if (cancelMsg) buttons.push(cancelMsg) + if (confirmMsg) buttons.push(confirmMsg) let response = await win.openDialog({ type: 'question', buttons: [cancelMsg, confirmMsg], @@ -36,6 +39,8 @@ async function store(state, emitter) { state.boardFiles = [] state.openFiles = [] state.selectedFiles = [] + + state.newTabFileName = null state.editingFile = null state.creatingFile = null state.renamingFile = null @@ -62,17 +67,7 @@ async function store(state, emitter) { state.isTerminalBound = false - const newFile = createEmptyFile({ - parentFolder: null, // Null parent folder means not saved? - source: 'disk' - }) - newFile.editor.onChange = function() { - newFile.hasChanges = true - emitter.emit('render') - } - state.openFiles.push(newFile) - state.editingFile = newFile.id - + await createNewTab('disk') state.savedPanelHeight = PANEL_DEFAULT state.panelHeight = PANEL_CLOSED state.resizePanel = function(e) { @@ -117,15 +112,19 @@ async function store(state, emitter) { emitter.on('open-connection-dialog', async () => { log('open-connection-dialog') // UI should be in disconnected state, no need to update + dismissOpenDialogs() await serialBridge.disconnect() state.availablePorts = await getAvailablePorts() state.isConnectionDialogOpen = true emitter.emit('render') + document.addEventListener('keydown', dismissOpenDialogs) }) emitter.on('close-connection-dialog', () => { state.isConnectionDialogOpen = false + dismissOpenDialogs() emitter.emit('render') }) + emitter.on('update-ports', async () => { state.availablePorts = await getAvailablePorts() emitter.emit('render') @@ -300,14 +299,17 @@ async function store(state, emitter) { // NEW FILE AND SAVING emitter.on('create-new-file', () => { log('create-new-file') + dismissOpenDialogs() state.isNewFileDialogOpen = true emitter.emit('render') + document.addEventListener('keydown', dismissOpenDialogs) }) emitter.on('close-new-file-dialog', () => { state.isNewFileDialogOpen = false + + dismissOpenDialogs() emitter.emit('render') }) - emitter.on('save', async () => { log('save') let response = canSave({ @@ -389,7 +391,7 @@ async function store(state, emitter) { } if (willOverwrite) { - const confirmation = await confirm(`You are about to overwrite the file ${openFile.fileName} on your ${openFile.source}.\n\n Are you sure you want to proceed?`, 'Cancel', 'Yes') + const confirmation = await confirmDialog(`You are about to overwrite the file ${openFile.fileName} on your ${openFile.source}.\n\n Are you sure you want to proceed?`, 'Cancel', 'Yes') if (!confirmation) { state.isSaving = false openFile.parentFolder = oldParentFolder @@ -446,7 +448,7 @@ async function store(state, emitter) { log('close-tab', id) const currentTab = state.openFiles.find(f => f.id === id) if (currentTab.hasChanges) { - let response = await confirm("Your file has unsaved changes. Are you sure you want to proceed?") + let response = await confirmDialog("Your file has unsaved changes. Are you sure you want to proceed?", "Cancel", "Yes") if (!response) return false } state.openFiles = state.openFiles.filter(f => f.id !== id) @@ -455,16 +457,7 @@ async function store(state, emitter) { if(state.openFiles.length > 0) { state.editingFile = state.openFiles[0].id } else { - const newFile = createEmptyFile({ - source: 'disk', - parentFolder: null - }) - newFile.editor.onChange = function() { - newFile.hasChanges = true - emitter.emit('render') - } - state.openFiles.push(newFile) - state.editingFile = newFile.id + await createNewTab('disk') } emitter.emit('render') @@ -525,10 +518,19 @@ async function store(state, emitter) { }) emitter.emit('render') }) - + emitter.on('create-new-tab', async (device, fileName = null) => { + const parentFolder = device == 'board' ? state.boardNavigationPath : state.diskNavigationPath + log('create-new-tab', device, fileName, parentFolder) + const success = await createNewTab(device, fileName, parentFolder) + if (success) { + emitter.emit('close-new-file-dialog') + emitter.emit('render') + } + }) emitter.on('create-file', (device, fileName = null) => { log('create-file', device) if (state.creatingFile !== null) return + state.creatingFile = device state.creatingFolder = null if (fileName != null) { @@ -554,7 +556,7 @@ async function store(state, emitter) { fileName: fileNameParameter }) if (willOverwrite) { - const confirmAction = await confirm(`You are about to overwrite the file ${fileNameParameter} on your board.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(`You are about to overwrite the file ${fileNameParameter} on your board.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') if (!confirmAction) { state.creatingFile = null emitter.emit('render') @@ -577,7 +579,7 @@ async function store(state, emitter) { fileName: fileNameParameter }) if (willOverwrite) { - const confirmAction = await confirm(`You are about to overwrite the file ${fileNameParameter} on your disk.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(`You are about to overwrite the file ${fileNameParameter} on your disk.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') if (!confirmAction) { state.creatingFile = null emitter.emit('render') @@ -597,6 +599,7 @@ async function store(state, emitter) { setTimeout(() => { state.creatingFile = null + dismissOpenDialogs() emitter.emit('refresh-files') emitter.emit('render') }, 200) @@ -625,7 +628,7 @@ async function store(state, emitter) { fileName: value }) if (willOverwrite) { - const confirmAction = await confirm(`You are about to overwrite ${value} on your board.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(`You are about to overwrite ${value} on your board.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') if (!confirmAction) { state.creatingFolder = null emitter.emit('render') @@ -654,7 +657,7 @@ async function store(state, emitter) { fileName: value }) if (willOverwrite) { - const confirmAction = await confirm(`You are about to overwrite ${value} on your disk.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(`You are about to overwrite ${value} on your disk.\n\nAre you sure you want to proceed?`, 'Cancel', 'Yes') if (!confirmAction) { state.creatingFolder = null emitter.emit('render') @@ -711,7 +714,7 @@ async function store(state, emitter) { } message += `Are you sure you want to proceed?` - const confirmAction = await confirm(message, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(message, 'Cancel', 'Yes') if (!confirmAction) { state.isRemoving = false emitter.emit('render') @@ -799,7 +802,7 @@ async function store(state, emitter) { let message = `You are about to overwrite the following file/folder on your board:\n\n` message += `${value}\n\n` message += `Are you sure you want to proceed?` - const confirmAction = await confirm(message, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(message, 'Cancel', 'Yes') if (!confirmAction) { state.isSaving = false state.renamingFile = null @@ -838,7 +841,7 @@ async function store(state, emitter) { let message = `You are about to overwrite the following file/folder on your disk:\n\n` message += `${value}\n\n` message += `Are you sure you want to proceed?` - const confirmAction = await confirm(message, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(message, 'Cancel', 'Yes') if (!confirmAction) { state.isSaving = false state.renamingFile = null @@ -993,7 +996,7 @@ async function store(state, emitter) { } if (willOverwrite) { - const confirmation = await confirm(`You are about to overwrite the file ${openFile.fileName} on your ${openFile.source}.\n\n Are you sure you want to proceed?`, 'Cancel', 'Yes') + const confirmation = await confirmDialog(`You are about to overwrite the file ${openFile.fileName} on your ${openFile.source}.\n\n Are you sure you want to proceed?`, 'Cancel', 'Yes') if (!confirmation) { state.renamingTab = null state.isSaving = false @@ -1256,7 +1259,7 @@ async function store(state, emitter) { willOverwrite.forEach(f => message += `${f.fileName}\n`) message += `\n` message += `Are you sure you want to proceed?` - const confirmAction = await confirm(message, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(message, 'Cancel', 'Yes') if (!confirmAction) { state.isTransferring = false emitter.emit('render') @@ -1321,7 +1324,7 @@ async function store(state, emitter) { willOverwrite.forEach(f => message += `${f.fileName}\n`) message += `\n` message += `Are you sure you want to proceed?` - const confirmAction = await confirm(message, 'Cancel', 'Yes') + const confirmAction = await confirmDialog(message, 'Cancel', 'Yes') if (!confirmAction) { state.isTransferring = false emitter.emit('render') @@ -1408,7 +1411,7 @@ async function store(state, emitter) { win.beforeClose(async () => { const hasChanges = !!state.openFiles.find(f => f.hasChanges) if (hasChanges) { - const response = await confirm('You may have unsaved changes. Are you sure you want to proceed?', 'Cancel', 'Yes') + const response = await confirmDialog('You may have unsaved changes. Are you sure you want to proceed?', 'Cancel', 'Yes') if (!response) return false } await win.confirmClose() @@ -1451,6 +1454,10 @@ async function store(state, emitter) { if (state.view != 'editor') return stopCode() } + if (key === shortcuts.NEW) { + if (state.view != 'editor') return + emitter.emit('create-new-file') + } if (key === shortcuts.SAVE) { if (state.view != 'editor') return emitter.emit('save') @@ -1471,6 +1478,14 @@ async function store(state, emitter) { }) + function dismissOpenDialogs(keyEvent = null) { + if (keyEvent && keyEvent.key != 'Escape') return + document.removeEventListener('keydown', dismissOpenDialogs) + state.isConnectionDialogOpen = false + state.isNewFileDialogOpen = false + emitter.emit('render') + } + function runCode() { if (canExecute({ view: state.view, isConnected: state.isConnected })) { emitter.emit('run') @@ -1507,14 +1522,60 @@ async function store(state, emitter) { } } - function createEmptyFile({ source, parentFolder }) { - return createFile({ - fileName: generateFileName(), - parentFolder, - source, + // function createEmptyFile({ source, parentFolder }) { + // return createFile({ + // fileName: generateFileName(), + // parentFolder, + // source, + // hasChanges: true + // }) + // } + + async function createNewTab(source, fileName = null, parentFolder = null) { + const navigationPath = source == 'board' ? state.boardNavigationPath : state.diskNavigationPath + const newFile = createFile({ + fileName: fileName === null ? generateFileName() : fileName, + parentFolder: parentFolder, + source: source, hasChanges: true }) + + let fullPathExists = false + + if (parentFolder != null) { + if (source == 'board') { + await serialBridge.getPrompt() + fullPathExists = await serialBridge.fileExists( + serialBridge.getFullPath( + state.boardNavigationRoot, + newFile.parentFolder, + newFile.fileName + ) + ) + } else if (source == 'disk') { + fullPathExists = await disk.fileExists( + disk.getFullPath( + state.diskNavigationRoot, + newFile.parentFolder, + newFile.fileName + ) + ) + } + } + const tabExists = state.openFiles.find(f => f.parentFolder === newFile.parentFolder && f.fileName === newFile.fileName && f.source === newFile.source) + if (tabExists || fullPathExists) { + const confirmation = confirmDialog(`File ${newFile.fileName} already exists on ${source}. Please choose another name.`, 'OK') + return false + } + newFile.editor.onChange = function() { + newFile.hasChanges = true + emitter.emit('render') + } + state.openFiles.push(newFile) + state.editingFile = newFile.id + return true } + } diff --git a/ui/arduino/views/components/connection-dialog.js b/ui/arduino/views/components/connection-dialog.js index c75b21c..8723464 100644 --- a/ui/arduino/views/components/connection-dialog.js +++ b/ui/arduino/views/components/connection-dialog.js @@ -1,36 +1,31 @@ function ConnectionDialog(state, emit) { const stateClass = state.isConnectionDialogOpen ? 'open' : 'closed' - function onClick(e) { + function clickDismiss(e) { if (e.target.id == 'dialog-connection') { emit('close-connection-dialog') } } - function onKeyDown(e) { - if (e.key.toLowerCase() === 'escape') { - emit('close-connection-dialog') - } - } - - // Add/remove event listener based on dialog state - if (state.isConnectionDialogOpen) { - document.addEventListener('keydown', onKeyDown) - } else { - document.removeEventListener('keydown', onKeyDown) - } - - return html` -
-
- ${state.availablePorts.map( - (port) => html` -
emit('select-port', port)}> - ${port.path} -
- ` - )} -
emit('update-ports')}>Refresh
-
+ const connectionDialog = html` +
+ +
+
Connect to...
+ ${state.availablePorts.map( + (port) => html` +
emit('select-port', port)}> + ${port.path} +
+ ` + )} +
emit('update-ports')}>Refresh
+
+ +
` + if (state.isConnectionDialogOpen) { + return connectionDialog + } + } diff --git a/ui/arduino/views/components/new-file-destination-dialog.js b/ui/arduino/views/components/new-file-destination-dialog.js deleted file mode 100644 index c9944e9..0000000 --- a/ui/arduino/views/components/new-file-destination-dialog.js +++ /dev/null @@ -1,59 +0,0 @@ -function NewFileDestinationDialog(state, emit) { - const stateClass = state.isNewFileDialogOpen ? 'open' : 'closed' - function onClick(e) { - if (e.target.id == 'dialog-new-file') { - emit('close-new-file-dialog') - } - } - let boardOption = '' - if (state.isConnected) { - boardOption = html` -
{emit('create-file','board', 'board_capocchia.py')}}>Board
- ` - } - const now = new Date(); - const dateStr = String(now.getMonth() + 1).padStart(2, '0') + - String(now.getDate()).padStart(2, '0') + - String(now.getHours()).padStart(2, '0') + - String(now.getMinutes()).padStart(2, '0') - - const fileName = `script_${dateStr}.py`; - - const newFileDialog = html` -
-
- -
- ${boardOption} -
{emit('create-file', 'disk', 'disk_capocchia.py')}}>Computer
-
-
-
-` - - - const observer = new MutationObserver((mutations, obs) => { - const el = newFileDialog.querySelector('input') - if (el) { - el.focus() - obs.disconnect() - } - }) - observer.observe(newFileDialog, { childList: true, subtree:true, attributes: true }) - - return newFileDialog - - return html` -
-
- -
- ${boardOption} -
{emit('create-file', 'disk', 'disk_capocchia.py')}}>Computer
-
-
-
- ` - - -} diff --git a/ui/arduino/views/components/new-file-dialog.js b/ui/arduino/views/components/new-file-dialog.js new file mode 100644 index 0000000..83ace3f --- /dev/null +++ b/ui/arduino/views/components/new-file-dialog.js @@ -0,0 +1,76 @@ +function NewFileDialog(state, emit) { + const stateClass = state.isNewFileDialogOpen ? 'open' : 'closed' + function clickDismiss(e) { + if (e.target.id == 'dialog-new-file') { + emit('close-new-file-dialog') + } + } + + function triggerTabCreation(device) { + return () => { + const input = document.querySelector('#file-name') + const fileName = input.value.trim() || input.placeholder + emit('create-new-tab', device, fileName) + } + } + + let boardOption = '' + let inputFocus = '' + if (state.isConnected) { + boardOption = html` +
Board
+ ` + } + + const newFileDialogObserver = new MutationObserver((mutations, obs) => { + const input = document.querySelector('#dialog-new-file input') + if (input) { + input.focus() + obs.disconnect() + } + }) + + newFileDialogObserver.observe(document.body, { + childList: true, + subtree: true + }) + + + + let inputFieldValue = `` + let inputFieldPlaceholder = `` + + inputFieldPlaceholder = generateFileName() + + const inputAttrs = { + type: 'text', + id: 'file-name', + value: inputFieldValue, + placeholder: inputFieldPlaceholder + } + + const randomFileName = generateFileName() + const placeholderAttr = state.newFileName === null ? `placeholder="${randomFileName}"` : '' + const newFileDialog = html` +
+
+
Create new file
+ +
+ ${boardOption} +
Computer
+
+
+
+` + + if (state.isNewFileDialogOpen) { + const el = newFileDialog.querySelector('#dialog-new-file .dialog-contents > input') + if (el) { + el.focus() + } + return newFileDialog + } + + +} diff --git a/ui/arduino/views/editor.js b/ui/arduino/views/editor.js index 796bdea..c6267f0 100644 --- a/ui/arduino/views/editor.js +++ b/ui/arduino/views/editor.js @@ -7,6 +7,6 @@ function EditorView(state, emit) { ${ReplPanel(state, emit)}
${ConnectionDialog(state, emit)} - ${NewFileDestinationDialog(state, emit)} + ${NewFileDialog(state, emit)} ` } diff --git a/ui/arduino/views/file-manager.js b/ui/arduino/views/file-manager.js index fd8a3c8..89f7b89 100644 --- a/ui/arduino/views/file-manager.js +++ b/ui/arduino/views/file-manager.js @@ -44,6 +44,6 @@ function FileManagerView(state, emit) {
${ConnectionDialog(state, emit)} - ${NewFileDestinationDialog(state, emit)} + ${NewFileDialog(state, emit)} ` } From ea5b62063dc02257b95e1eae64415a6288f1c4a4 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Fri, 20 Dec 2024 18:22:57 +0100 Subject: [PATCH 08/66] Rework toolbar and CSS. Signed-off-by: ubi de feo --- ui/arduino/main.css | 31 ++++++++++++++++--- .../views/components/elements/button.js | 3 ++ ui/arduino/views/components/toolbar.js | 8 +++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index 68af001..f137269 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -1,8 +1,8 @@ @font-face { - font-family: "RobotoMono", monospace; + font-family: "RobotoMono"; src: - url("https://github.com/media/roboto-mono-latin-ext-400-normal.woff"), - url("https://github.com/media/roboto-mono-latin-ext-400-normal.woff2"); + url("https://github.com/media/roboto-mono-latin-ext-400-normal.woff2") format("woff2"), + url("https://github.com/media/roboto-mono-latin-ext-400-normal.woff") format("woff"); font-weight: normal; font-style: normal; } @@ -73,6 +73,19 @@ button.small .icon { .button { position: relative; + display: flex; + flex-direction: column; + align-content: space-between; + align-items: center; + gap: 10px; +} +.button .label { + text-align: center; + color: #eee; + opacity: 50%; +} +.button .label.active { + opacity: 100%; } .button .tooltip { opacity: 0; @@ -124,11 +137,21 @@ button.small .icon { display: flex; padding: 20px; align-items: center; - gap: 20px; + gap: 16px; align-self: stretch; background: #008184; } +.separator { + height: 100%; + min-width: 1px; + flex-basis: fit-content; + background: #fff; + position: relative; + margin-left: 0.5em; + margin-right: 0.5em; +} + #tabs { display: flex; padding: 10px 10px 0px 60px; diff --git a/ui/arduino/views/components/elements/button.js b/ui/arduino/views/components/elements/button.js index 3d888dd..56cd77c 100644 --- a/ui/arduino/views/components/elements/button.js +++ b/ui/arduino/views/components/elements/button.js @@ -5,6 +5,7 @@ function Button(args) { onClick = (e) => false, disabled = false, active = false, + label, tooltip, background } = args @@ -14,11 +15,13 @@ function Button(args) { } let activeClass = active ? 'active' : '' let backgroundClass = background ? 'inverted' : '' + let labelActiveClass = disabled ? '' : 'active' return html`
+
${label}
${tooltipEl}
` diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index 2aaa447..4f8f484 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -15,6 +15,7 @@ function Toolbar(state, emit) {
${Button({ icon: state.isConnected ? 'connect.svg' : 'disconnect.svg', + label: state.isConnected ? 'Disconnect' : 'Connect', tooltip: state.isConnected ? `Disconnect (${metaKeyString}+Shift+D)` : `Connect (${metaKeyString}+Shift+C)`, onClick: () => state.isConnected ? emit('disconnect') : emit('open-connection-dialog'), active: state.isConnected @@ -24,6 +25,7 @@ function Toolbar(state, emit) { ${Button({ icon: 'run.svg', + label: 'Run', tooltip: `Run (${metaKeyString}+R)`, disabled: !_canExecute, onClick: (e) => { @@ -36,12 +38,14 @@ function Toolbar(state, emit) { })} ${Button({ icon: 'stop.svg', + label: 'Stop', tooltip: `Stop (${metaKeyString}+H)`, disabled: !_canExecute, onClick: () => emit('stop') })} ${Button({ icon: 'reboot.svg', + label: 'Reset', tooltip: `Reset (${metaKeyString}+Shift+R)`, disabled: !_canExecute, onClick: () => emit('reset') @@ -51,6 +55,7 @@ function Toolbar(state, emit) { ${Button({ icon: 'new-file.svg', + label: 'New', tooltip: `New (${metaKeyString}+N)`, disabled: state.view != 'editor', onClick: () => emit('create-new-file') @@ -58,6 +63,7 @@ function Toolbar(state, emit) { ${Button({ icon: 'save.svg', + label: 'Save', tooltip: `Save (${metaKeyString}+S)`, disabled: !_canSave, onClick: () => emit('save') @@ -67,12 +73,14 @@ function Toolbar(state, emit) { ${Button({ icon: 'code.svg', + label: 'Editor', tooltip: `Editor (${metaKeyString}+Alt+1)`, active: state.view === 'editor', onClick: () => emit('change-view', 'editor') })} ${Button({ icon: 'files.svg', + label: 'Files', tooltip: `Files (${metaKeyString}+Alt+2)`, active: state.view === 'file-manager', onClick: () => emit('change-view', 'file-manager') From 49d3ec82c4d1f1831c0e3e13424a4e93bbb63a9b Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Fri, 20 Dec 2024 19:28:11 +0100 Subject: [PATCH 09/66] UI font update, CSS update, labels. Signed-off-by: ubi de feo --- ui/arduino/main.css | 34 +++++++++++++----- .../open-sans_5.0.29_latin-wght-normal.woff2 | Bin 0 -> 48236 bytes ui/arduino/store.js | 3 ++ .../views/components/elements/button.js | 6 ++-- ui/arduino/views/components/toolbar.js | 3 +- 5 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 ui/arduino/media/open-sans_5.0.29_latin-wght-normal.woff2 diff --git a/ui/arduino/main.css b/ui/arduino/main.css index f137269..eff09bc 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -7,11 +7,18 @@ font-style: normal; } +@font-face { + font-family: "OpenSans"; + src: url("https://github.com/media/open-sans_5.0.29_latin-wght-normal.woff2") format("woff2"); + font-weight: normal; + font-style: normal; +} + * { -moz-user-select: none; -webkit-user-select: none; user-select: none; - font-family: "RobotoMono", monospace; + font-family: "OpenSans", sans-serif; } body, html { @@ -78,14 +85,19 @@ button.small .icon { align-content: space-between; align-items: center; gap: 10px; + width: 50px +} +.button.first{ + width:80px; } .button .label { text-align: center; color: #eee; - opacity: 50%; + opacity: 0.5; + font-family: "OpenSans", sans-serif; } .button .label.active { - opacity: 100%; + opacity: 1; } .button .tooltip { opacity: 0; @@ -147,6 +159,7 @@ button.small .icon { min-width: 1px; flex-basis: fit-content; background: #fff; + opacity: 0.7; position: relative; margin-left: 0.5em; margin-right: 0.5em; @@ -236,8 +249,12 @@ button.small .icon { font-size: 16px; height: 100%; overflow: hidden; + } +#code-editor * { + font-family: "RobotoMono", monospace; +} #code-editor .cm-editor { width: 100%; height: 100%; @@ -411,9 +428,10 @@ button.small .icon { /* width: 100%; */ } -.dialog .dialog-content input { - font-size: 1.4em; +.dialog .dialog-content #file-name { + font-size: 1.1em; width:100%; + font-family: "RobotoMono", monospace; } .dialog .dialog-content input:focus { @@ -439,10 +457,10 @@ button.small .icon { flex-direction: row; justify-content: center; width: 100%; - gap: 20px; + gap: 12px; } .dialog .buttons-horizontal .item { - flex-basis: 40%; + flex-basis: 50%; align-items: center; background-color: #eee;; } @@ -450,7 +468,7 @@ button.small .icon { .dialog-title{ width: 100%; font-size: 0.8em; - padding: 0.7em; + padding: 0; margin: 0; flex-basis: max-content; } diff --git a/ui/arduino/media/open-sans_5.0.29_latin-wght-normal.woff2 b/ui/arduino/media/open-sans_5.0.29_latin-wght-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0beab54695b31975886051af14f1ab9763d29f0c GIT binary patch literal 48236 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 listeners keep getting added and not removed when tabs are closed + // additionally I found that closing a tab has actually added an extra listener newFile.editor.onChange = function() { + console.log('editor has changes') newFile.hasChanges = true emitter.emit('render') } diff --git a/ui/arduino/views/components/elements/button.js b/ui/arduino/views/components/elements/button.js index 56cd77c..b25a02e 100644 --- a/ui/arduino/views/components/elements/button.js +++ b/ui/arduino/views/components/elements/button.js @@ -7,7 +7,8 @@ function Button(args) { active = false, label, tooltip, - background + background, + first } = args let tooltipEl = html`` if (tooltip) { @@ -16,8 +17,9 @@ function Button(args) { let activeClass = active ? 'active' : '' let backgroundClass = background ? 'inverted' : '' let labelActiveClass = disabled ? '' : 'active' + let buttonFirstClass = first ? 'first' : '' return html` -

+
diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index 4f8f484..db6fecb 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -18,7 +18,8 @@ function Toolbar(state, emit) { label: state.isConnected ? 'Disconnect' : 'Connect', tooltip: state.isConnected ? `Disconnect (${metaKeyString}+Shift+D)` : `Connect (${metaKeyString}+Shift+C)`, onClick: () => state.isConnected ? emit('disconnect') : emit('open-connection-dialog'), - active: state.isConnected + active: state.isConnected, + first: true })}
From 5bf544d898ba7e012e948b6496173748b7e5d168 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Fri, 20 Dec 2024 23:55:18 +0100 Subject: [PATCH 10/66] Adjusted toolbar colours (hover) and layout. Signed-off-by: ubi de feo --- ui/arduino/main.css | 23 +++++++++++++------ .../views/components/elements/button.js | 13 +++++++---- ui/arduino/views/components/toolbar.js | 17 +++++++------- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index eff09bc..bf077cc 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -43,7 +43,7 @@ button { align-items: center; border: none; border-radius: 45px; - background: rgba(255, 255, 255, 0.8); + background: rgba(255, 255, 255, 0.6); cursor: pointer; transition: all 0.1s; } @@ -52,6 +52,9 @@ button.small { height: 28px; border-radius: 28px; } +button.square { + border-radius: 8px; +} button.inverted:hover, button.inverted.active { background: rgba(0, 129, 132, 0.8); @@ -61,12 +64,18 @@ button.inverted { } button[disabled] { - opacity: 0.5; + background: rgba(255, 255, 255, 0.2); cursor: not-allowed; } +button[disabled]:hover { + background: rgba(255, 255, 255, 0.2); +} button:hover, button.active { background: rgba(255, 255, 255, 1); } +/* button.inactive:hover { + background: rgba(255, 255, 255, 0.2); +} */ button .icon { width: 63%; @@ -85,19 +94,19 @@ button.small .icon { align-content: space-between; align-items: center; gap: 10px; - width: 50px + width: auto } .button.first{ width:80px; } .button .label { text-align: center; - color: #eee; - opacity: 0.5; + /* color: #eee; */ + color: rgba(255, 255, 255, 0.2); font-family: "OpenSans", sans-serif; } .button .label.active { - opacity: 1; + color: rgba(255, 255, 255, 1); } .button .tooltip { opacity: 0; @@ -147,7 +156,7 @@ button.small .icon { #toolbar { display: flex; - padding: 20px; + padding: 16px 10px 10px 10px; align-items: center; gap: 16px; align-self: stretch; diff --git a/ui/arduino/views/components/elements/button.js b/ui/arduino/views/components/elements/button.js index b25a02e..db2c576 100644 --- a/ui/arduino/views/components/elements/button.js +++ b/ui/arduino/views/components/elements/button.js @@ -8,22 +8,25 @@ function Button(args) { label, tooltip, background, - first + first, + square } = args let tooltipEl = html`` if (tooltip) { tooltipEl = html`
${tooltip}
` } - let activeClass = active ? 'active' : '' + let activeClass = active ? 'active' : 'inactive' let backgroundClass = background ? 'inverted' : '' - let labelActiveClass = disabled ? '' : 'active' + let labelActiveClass = disabled ? 'inactive' : 'active' let buttonFirstClass = first ? 'first' : '' + let squareClass = square ? 'square' : '' + let labelItem = size === 'small' ? '' : html`
${label}
` return html`
- -
${label}
+ ${labelItem} ${tooltipEl}
` diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index db6fecb..4bc90b4 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -21,7 +21,13 @@ function Toolbar(state, emit) { active: state.isConnected, first: true })} - + ${Button({ + icon: 'reboot.svg', + label: 'Reset', + tooltip: `Reset (${metaKeyString}+Shift+R)`, + disabled: !_canExecute, + onClick: () => emit('reset') + })}
${Button({ @@ -44,13 +50,6 @@ function Toolbar(state, emit) { disabled: !_canExecute, onClick: () => emit('stop') })} - ${Button({ - icon: 'reboot.svg', - label: 'Reset', - tooltip: `Reset (${metaKeyString}+Shift+R)`, - disabled: !_canExecute, - onClick: () => emit('reset') - })}
@@ -77,6 +76,7 @@ function Toolbar(state, emit) { label: 'Editor', tooltip: `Editor (${metaKeyString}+Alt+1)`, active: state.view === 'editor', + square: true, onClick: () => emit('change-view', 'editor') })} ${Button({ @@ -84,6 +84,7 @@ function Toolbar(state, emit) { label: 'Files', tooltip: `Files (${metaKeyString}+Alt+2)`, active: state.view === 'file-manager', + square: true, onClick: () => emit('change-view', 'file-manager') })}
From 07c7bc29d03b2d3104596cfcb844a206f87da81c Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 01:13:30 +0100 Subject: [PATCH 11/66] Split navigation bar actions|views. Signed-off-by: ubi de feo --- ui/arduino/main.css | 12 +++ ui/arduino/views/components/toolbar.js | 143 +++++++++++++------------ 2 files changed, 85 insertions(+), 70 deletions(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index bf077cc..e7ec23a 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -154,6 +154,13 @@ button.small .icon { flex-shrink: 0; } +#navigation-bar { + display: flex; + width: 100%; + background: #008184; + justify-content: space-between; +} + #toolbar { display: flex; padding: 16px 10px 10px 10px; @@ -163,6 +170,11 @@ button.small .icon { background: #008184; } +#app-views { + display: flex; + padding: 16px 10px 10px 10px; + gap: 16px; +} .separator { height: 100%; min-width: 1px; diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index 4bc90b4..138d891 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -12,81 +12,84 @@ function Toolbar(state, emit) { const metaKeyString = state.platform === 'darwin' ? 'Cmd' : 'Ctrl' return html` -
- ${Button({ - icon: state.isConnected ? 'connect.svg' : 'disconnect.svg', - label: state.isConnected ? 'Disconnect' : 'Connect', - tooltip: state.isConnected ? `Disconnect (${metaKeyString}+Shift+D)` : `Connect (${metaKeyString}+Shift+C)`, - onClick: () => state.isConnected ? emit('disconnect') : emit('open-connection-dialog'), - active: state.isConnected, - first: true - })} - ${Button({ - icon: 'reboot.svg', - label: 'Reset', - tooltip: `Reset (${metaKeyString}+Shift+R)`, - disabled: !_canExecute, - onClick: () => emit('reset') - })} -
+ ` } From 689863a6578603e500a1dc27502d98513beb6196 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 09:53:56 +0100 Subject: [PATCH 12/66] Fixed file actions buttons states and CSS. Signed-off-by: ubi de feo --- ui/arduino/main.css | 12 ++++--- .../views/components/elements/button.js | 31 ++++++++++--------- ui/arduino/views/components/file-actions.js | 2 ++ 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index e7ec23a..50be8db 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -57,15 +57,15 @@ button.square { } button.inverted:hover, button.inverted.active { - background: rgba(0, 129, 132, 0.8); + background: rgba(0, 129, 132, 0.8) !important; } button.inverted { - background: rgba(0, 129, 132, 1); + background: rgba(0, 129, 132, 1) !important; } button[disabled] { background: rgba(255, 255, 255, 0.2); - cursor: not-allowed; + cursor: default; } button[disabled]:hover { background: rgba(255, 255, 255, 0.2); @@ -531,13 +531,17 @@ button.small .icon { align-self: stretch; } +#file-actions button[disabled], #file-actions button[disabled]:hover { + opacity: 0.4; +} + #file-actions button .icon { width: 100%; height: 100%; } #file-actions button:hover { - opacity: 0.2; + opacity: 0.5; */ } .device-header { diff --git a/ui/arduino/views/components/elements/button.js b/ui/arduino/views/components/elements/button.js index db2c576..2a956c6 100644 --- a/ui/arduino/views/components/elements/button.js +++ b/ui/arduino/views/components/elements/button.js @@ -1,33 +1,34 @@ function Button(args) { const { + first = false, size = '', + square = false, icon = 'connect.svg', - onClick = (e) => false, + onClick = (e) => {console.log(e); false}, disabled = false, active = false, - label, tooltip, - background, - first, - square + label, + background } = args let tooltipEl = html`` if (tooltip) { tooltipEl = html`
${tooltip}
` } - let activeClass = active ? 'active' : 'inactive' + let activeClass = active ? 'active' : '' let backgroundClass = background ? 'inverted' : '' - let labelActiveClass = disabled ? 'inactive' : 'active' let buttonFirstClass = first ? 'first' : '' let squareClass = square ? 'square' : '' + let labelActiveClass = disabled ? 'inactive' : 'active' let labelItem = size === 'small' ? '' : html`
${label}
` + return html` -
- - ${labelItem} - ${tooltipEl} -
- ` +
+ + ${labelItem} + ${tooltipEl} +
+ ` } diff --git a/ui/arduino/views/components/file-actions.js b/ui/arduino/views/components/file-actions.js index f48e0ad..75ffd54 100644 --- a/ui/arduino/views/components/file-actions.js +++ b/ui/arduino/views/components/file-actions.js @@ -15,6 +15,7 @@ function FileActions(state, emit) { icon: 'arrow-left-white.svg', size: 'small', background: 'inverted', + active: true, disabled: !canUpload({ isConnected, selectedFiles }), onClick: () => emit('upload-files') })} @@ -22,6 +23,7 @@ function FileActions(state, emit) { icon: 'arrow-right-white.svg', size: 'small', background: 'inverted', + active: true, disabled: !canDownload({ isConnected, selectedFiles }), onClick: () => emit('download-files') })} From 3a67bbbe4a223dbe2c945dc8cb77fa53b17ee11b Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 10:02:17 +0100 Subject: [PATCH 13/66] Fixed clear state.selectedFiles. Signed-off-by: ubi de feo --- ui/arduino/store.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 0d3d9c6..0ebb572 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -1209,6 +1209,7 @@ async function store(state, emitter) { // append it to the list of files that are already open filesAlreadyOpen.push(alreadyOpen) } + } // If opening an already open file, switch to its tab @@ -1221,7 +1222,7 @@ async function store(state, emitter) { } state.openFiles = state.openFiles.concat(filesToOpen) - + state.selectedFiles = [] state.view = 'editor' updateMenu() emitter.emit('render') From aede0a2668944288f0c9e0c4ad846ede166d535b Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 10:50:08 +0100 Subject: [PATCH 14/66] Separator height adjustments. Signed-off-by: ubi de feo --- ui/arduino/main.css | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index 50be8db..493e0a8 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -184,6 +184,7 @@ button.small .icon { position: relative; margin-left: 0.5em; margin-right: 0.5em; + height: 65%; } #tabs { From 0591824b1ee12c698bbcc84febad037e115d15cf Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 11:08:05 +0100 Subject: [PATCH 15/66] Removed redundant About menu item. Signed-off-by: ubi de feo --- backend/menu.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/menu.js b/backend/menu.js index 6db8023..bdd3452 100644 --- a/backend/menu.js +++ b/backend/menu.js @@ -11,8 +11,6 @@ module.exports = function registerMenu(win, state = {}) { ...(isMac ? [{ label: app.name, submenu: [ - { role: 'about'}, - { type: 'separator' }, { type: 'separator' }, { role: 'hide', accelerator: 'CmdOrCtrl+Shift+H' }, { role: 'hideOthers' }, @@ -167,7 +165,7 @@ module.exports = function registerMenu(win, state = {}) { } }, { - label:'Info about this app', + label:'About Arduino Lab for MicroPython', click: () => { openAboutWindow({ icon_path: path.resolve(__dirname, '../ui/arduino/media/about_image.png'), From c996824fe8ffa9da846bcd622cbd6f5f03ca986e Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 11:47:33 +0100 Subject: [PATCH 16/66] Toolbar: Reduced space between buttons and label. Signed-off-by: ubi de feo --- ui/arduino/main.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index 493e0a8..e2219ef 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -93,7 +93,7 @@ button.small .icon { flex-direction: column; align-content: space-between; align-items: center; - gap: 10px; + gap: .5em; width: auto } .button.first{ @@ -106,7 +106,7 @@ button.small .icon { font-family: "OpenSans", sans-serif; } .button .label.active { - color: rgba(255, 255, 255, 1); + color: rgba(255, 255, 255, .9); } .button .tooltip { opacity: 0; From fa82c79e7545630b91366a7a2b82bb76ea330ff3 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 17:48:08 +0100 Subject: [PATCH 17/66] Refactor menu, shortcuts, about window logic. Signed-off-by: ubi de feo --- backend/menu.js | 67 ++++++++++++++++++++++++++------------------ backend/shortcuts.js | 33 ++++++++++++++++++++-- index.js | 23 +++------------ preload.js | 8 +++++- ui/arduino/store.js | 14 +++++---- 5 files changed, 90 insertions(+), 55 deletions(-) diff --git a/backend/menu.js b/backend/menu.js index bdd3452..11e41bc 100644 --- a/backend/menu.js +++ b/backend/menu.js @@ -1,10 +1,43 @@ const { app, Menu } = require('electron') +const { shortcuts, disableShortcuts } = require('./shortcuts.js') const path = require('path') const serial = require('./serial/serial.js').sharedInstance const openAboutWindow = require('about-window').default -const shortcuts = require('./shortcuts.js') + const { type } = require('os') +let appInfoWindow = null + +function closeAppInfo(win) { + disableShortcuts(win, false) + appInfoWindow.off('close', () => closeAppInfo(win)) + appInfoWindow = null + +} +function openAppInfo(win) { + if (appInfoWindow != null) { + appInfoWindow.show() + } else { + appInfoWindow = openAboutWindow({ + icon_path: path.resolve(__dirname, '../ui/arduino/media/about_image.png'), + css_path: path.resolve(__dirname, '../ui/arduino/views/about.css'), + copyright: '© Arduino SA 2022', + package_json_dir: path.resolve(__dirname, '..'), + bug_report_url: "https://github.com/arduino/lab-micropython-editor/issues", + bug_link_text: "report an issue", + homepage: "https://labs.arduino.cc/", + use_version_info: false, + win_options: { + parent: win, + modal: true, + }, + show_close_button: 'Close', + }) + appInfoWindow.on('close', () => closeAppInfo(win)); + disableShortcuts(win, true) + } +} + module.exports = function registerMenu(win, state = {}) { const isMac = process.platform === 'darwin' const template = [ @@ -22,6 +55,10 @@ module.exports = function registerMenu(win, state = {}) { { label: 'File', submenu: [ + { label: 'Save', + accelerator: shortcuts.menu.SAVE, + click: () => win.webContents.send('shortcut-cmd', shortcuts.global.SAVE) + }, isMac ? { role: 'close' } : { role: 'quit' } ] }, @@ -166,23 +203,7 @@ module.exports = function registerMenu(win, state = {}) { }, { label:'About Arduino Lab for MicroPython', - click: () => { - openAboutWindow({ - icon_path: path.resolve(__dirname, '../ui/arduino/media/about_image.png'), - css_path: path.resolve(__dirname, '../ui/arduino/views/about.css'), - copyright: '© Arduino SA 2022', - package_json_dir: path.resolve(__dirname, '..'), - bug_report_url: "https://github.com/arduino/lab-micropython-editor/issues", - bug_link_text: "report an issue", - homepage: "https://labs.arduino.cc/", - use_version_info: false, - win_options: { - parent: win, - modal: true, - }, - show_close_button: 'Close', - }) - } + click: () => { openAppInfo(win) } }, ] } @@ -190,16 +211,6 @@ module.exports = function registerMenu(win, state = {}) { const menu = Menu.buildFromTemplate(template) - app.setAboutPanelOptions({ - applicationName: app.name, - applicationVersion: app.getVersion(), - copyright: app.copyright, - credits: '(See "Info about this app" in the Help menu)', - authors: ['Arduino'], - website: 'https://arduino.cc/', - iconPath: path.join(__dirname, '../assets/image.png'), - }) - Menu.setApplicationMenu(menu) } diff --git a/backend/shortcuts.js b/backend/shortcuts.js index e6b7159..1f6a2a3 100644 --- a/backend/shortcuts.js +++ b/backend/shortcuts.js @@ -1,4 +1,6 @@ -module.exports = { +const { globalShortcut } = require('electron') +let shortcutsActive = false +const shortcuts = { global: { CONNECT: 'CommandOrControl+Shift+C', DISCONNECT: 'CommandOrControl+Shift+D', @@ -25,5 +27,32 @@ module.exports = { CLEAR_TERMINAL: 'CmdOrCtrl+L', EDITOR_VIEW: 'CmdOrCtrl+Alt+1', FILES_VIEW: 'CmdOrCtrl+Alt+2' - } + }, + // Shortcuts +} + +function shortcutAction(key, win) { + console.log("key:", key) + win.send('shortcut-cmd', key); +} + +function registerShortcuts (win) { + console.log("registering shortcuts") + win.send('ignore-shortcuts', false) +} +function unregisterShortcuts(win) { + console.log("unregistering shortcuts") + // globalShortcut.unregisterAll() + win.send('ignore-shortcuts', true) +} + +function disableShortcuts (win, value) { + console.log("registering shortcuts") + win.send('ignore-shortcuts', value) +} + +module.exports = { + shortcuts, + disableShortcuts } + diff --git a/index.js b/index.js index a6fcc04..dda3fa4 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,6 @@ const { app, BrowserWindow, ipcMain, dialog, globalShortcut } = require('electron') const path = require('path') const fs = require('fs') -const shortcuts = require('./backend/shortcuts.js').global - const registerIPCHandlers = require('./backend/ipc.js') const registerMenu = require('./backend/menu.js') @@ -63,28 +61,15 @@ function createWindow () { }) } -function shortcutAction(key) { - win.webContents.send('shortcut-cmd', key); -} - -// Shortcuts -function registerShortcuts() { - Object.entries(shortcuts).forEach(([command, shortcut]) => { - globalShortcut.register(shortcut, () => { - shortcutAction(shortcut) - }); - }) -} - app.on('ready', () => { createWindow() - registerShortcuts() win.on('focus', () => { - registerShortcuts() + console.log("win focus") }) + win.on('blur', () => { - globalShortcut.unregisterAll() + console.log("win blur") }) -}) \ No newline at end of file +}) diff --git a/preload.js b/preload.js index f67d43c..66b9ab0 100644 --- a/preload.js +++ b/preload.js @@ -1,7 +1,7 @@ console.log('preload') const { contextBridge, ipcRenderer } = require('electron') const path = require('path') -const shortcuts = require('./backend/shortcuts.js').global +const shortcuts = require('./backend/shortcuts.js').shortcuts.global const { emit, platform } = require('process') const SerialBridge = require('./backend/serial/serial-bridge.js') @@ -63,6 +63,12 @@ const Window = { callback(k); }) }, + onDisableShortcuts: (callback, value) => { + ipcRenderer.on('ignore-shortcuts', (e, value) => { + console.log("ipcRenderer ignore-shortcuts", value) + callback(value); + }) + }, beforeClose: (callback) => ipcRenderer.on('check-before-close', callback), confirmClose: () => ipcRenderer.invoke('confirm-close'), diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 09a373e..9844a88 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -60,6 +60,8 @@ async function store(state, emitter) { state.isTerminalBound = false + state.shortcutsDisabled = false + const newFile = createEmptyFile({ parentFolder: null, // Null parent folder means not saved? source: 'disk' @@ -1398,12 +1400,14 @@ async function store(state, emitter) { await win.confirmClose() }) - // win.shortcutCmdR(() => { - // // Only run if we can execute - - // }) - + win.onDisableShortcuts((disable) => { + console.log('state.shortcutsDisabled', disable) + state.shortcutsDisabled = disable + }), + win.onKeyboardShortcut((key) => { + if (state.shortcutsDisabled) return + if (key === shortcuts.CONNECT) { emitter.emit('open-connection-dialog') } From ff5ca09a38d23cc70df74cb0ce7e648b74733755 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 18:11:31 +0100 Subject: [PATCH 18/66] Cleaned CSS typo. Signed-off-by: ubi de feo --- ui/arduino/main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index e2219ef..926108a 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -542,7 +542,7 @@ button.small .icon { } #file-actions button:hover { - opacity: 0.5; */ + opacity: 0.5; } .device-header { From 2791e006942bb401b7c5a4c8f484d8c8a0dcce4b Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 18:45:30 +0100 Subject: [PATCH 19/66] Added New/Save shortcuts to menu. Signed-off-by: ubi de feo --- backend/menu.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend/menu.js b/backend/menu.js index 11e41bc..033420f 100644 --- a/backend/menu.js +++ b/backend/menu.js @@ -55,8 +55,14 @@ module.exports = function registerMenu(win, state = {}) { { label: 'File', submenu: [ + { label: 'New', + accelerator: shortcuts.menu.NEW, + enabled: state.view === 'editor', + click: () => win.webContents.send('shortcut-cmd', shortcuts.global.NEW) + }, { label: 'Save', accelerator: shortcuts.menu.SAVE, + enabled: state.view === 'editor', click: () => win.webContents.send('shortcut-cmd', shortcuts.global.SAVE) }, isMac ? { role: 'close' } : { role: 'quit' } From 838aa6f8102d928dbc1fa01e23b25eefe5eb64b6 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 20:19:05 +0100 Subject: [PATCH 20/66] Updated Connect shortcut. Signed-off-by: ubi de feo --- ui/arduino/store.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index b558e4d..66b7ccf 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -1443,7 +1443,7 @@ async function store(state, emitter) { if (state.shortcutsDisabled) return if (key === shortcuts.CONNECT) { - emitter.emit('open-connection-dialog') + emitter.emit('connect') } if (key === shortcuts.DISCONNECT) { emitter.emit('disconnect') From 9a05dd90174d26e244e8396c2c855a487eccdfc6 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 20:48:38 +0100 Subject: [PATCH 21/66] Cleanup unused code. Signed-off-by: ubi de feo --- backend/shortcuts.js | 17 +---------------- preload.js | 1 - ui/arduino/store.js | 1 - ui/arduino/views/components/elements/button.js | 2 +- 4 files changed, 2 insertions(+), 19 deletions(-) diff --git a/backend/shortcuts.js b/backend/shortcuts.js index 3f8bde0..2be714c 100644 --- a/backend/shortcuts.js +++ b/backend/shortcuts.js @@ -32,23 +32,8 @@ const shortcuts = { // Shortcuts } -function shortcutAction(key, win) { - console.log("key:", key) - win.send('shortcut-cmd', key); -} - -function registerShortcuts (win) { - console.log("registering shortcuts") - win.send('ignore-shortcuts', false) -} -function unregisterShortcuts(win) { - console.log("unregistering shortcuts") - // globalShortcut.unregisterAll() - win.send('ignore-shortcuts', true) -} - function disableShortcuts (win, value) { - console.log("registering shortcuts") + console.log(value ? 'disabling' : 'enabling', 'shortcuts') win.send('ignore-shortcuts', value) } diff --git a/preload.js b/preload.js index 66b9ab0..fbc1579 100644 --- a/preload.js +++ b/preload.js @@ -65,7 +65,6 @@ const Window = { }, onDisableShortcuts: (callback, value) => { ipcRenderer.on('ignore-shortcuts', (e, value) => { - console.log("ipcRenderer ignore-shortcuts", value) callback(value); }) }, diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 66b7ccf..fca99fe 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -1435,7 +1435,6 @@ async function store(state, emitter) { }) win.onDisableShortcuts((disable) => { - console.log('state.shortcutsDisabled', disable) state.shortcutsDisabled = disable }), diff --git a/ui/arduino/views/components/elements/button.js b/ui/arduino/views/components/elements/button.js index 2a956c6..2e69931 100644 --- a/ui/arduino/views/components/elements/button.js +++ b/ui/arduino/views/components/elements/button.js @@ -4,7 +4,7 @@ function Button(args) { size = '', square = false, icon = 'connect.svg', - onClick = (e) => {console.log(e); false}, + onClick = (e) => {}, disabled = false, active = false, tooltip, From b5c766ee98cac5de4a7db75d33cf95f30b13f97a Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 20:52:43 +0100 Subject: [PATCH 22/66] Concealed tooltips. Signed-off-by: ubi de feo --- ui/arduino/views/components/elements/button.js | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/arduino/views/components/elements/button.js b/ui/arduino/views/components/elements/button.js index 2e69931..1dd69ec 100644 --- a/ui/arduino/views/components/elements/button.js +++ b/ui/arduino/views/components/elements/button.js @@ -15,6 +15,7 @@ function Button(args) { if (tooltip) { tooltipEl = html`
${tooltip}
` } + tooltipEl = html`` let activeClass = active ? 'active' : '' let backgroundClass = background ? 'inverted' : '' let buttonFirstClass = first ? 'first' : '' From be5f149ca2ed2879d6a8fa289a00d587294d126a Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 21:34:26 +0100 Subject: [PATCH 23/66] CSS fix line-height to show underscores in come cases. Signed-off-by: ubi de feo --- ui/arduino/main.css | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index 957c777..10b9cef 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -225,7 +225,7 @@ button.small .icon { color: #000; font-style: normal; font-weight: 400; - line-height: 1.1em; + line-height: 1.3em; flex: 1 0 0; max-width: calc(100% - 46px); overflow: hidden; @@ -459,12 +459,9 @@ button.small .icon { transition: transform 0.15s; } -.dialog .dialog-content > * { - /* width: 100%; */ -} .dialog .dialog-content #file-name { - font-size: 1.1em; + font-size: 1.3em; width:100%; font-family: "RobotoMono", monospace; } @@ -678,7 +675,7 @@ button.small .icon { width: 100%; overflow: hidden; text-overflow: ellipsis; - line-height: 1.1em; + line-height: 1.3em; } .file-list .item .checkbox .icon.off, From 5b81693178944771d0bbfc7192d8b1d6411b4d4d Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 21 Dec 2024 23:17:15 +0100 Subject: [PATCH 24/66] Added META+W (close tab) and META+Q (quit). Signed-off-by: ubi de feo --- backend/menu.js | 7 ++++++- backend/shortcuts.js | 2 ++ ui/arduino/store.js | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/menu.js b/backend/menu.js index 033420f..fe543a2 100644 --- a/backend/menu.js +++ b/backend/menu.js @@ -65,7 +65,12 @@ module.exports = function registerMenu(win, state = {}) { enabled: state.view === 'editor', click: () => win.webContents.send('shortcut-cmd', shortcuts.global.SAVE) }, - isMac ? { role: 'close' } : { role: 'quit' } + { label: 'Close tab', + accelerator: 'CmdOrCtrl+W', + enabled: state.view === 'editor', + click: () => win.webContents.send('shortcut-cmd', shortcuts.global.CLOSE) + }, + { role: 'quit' } ] }, { diff --git a/backend/shortcuts.js b/backend/shortcuts.js index 2be714c..925468e 100644 --- a/backend/shortcuts.js +++ b/backend/shortcuts.js @@ -2,6 +2,7 @@ const { globalShortcut } = require('electron') let shortcutsActive = false const shortcuts = { global: { + CLOSE: 'CommandOrControl+W', CONNECT: 'CommandOrControl+Shift+C', DISCONNECT: 'CommandOrControl+Shift+D', RUN: 'CommandOrControl+R', @@ -16,6 +17,7 @@ const shortcuts = { FILES_VIEW: 'CommandOrControl+Alt+2', }, menu: { + CLOSE: 'CmdOrCtrl+W', CONNECT: 'CmdOrCtrl+Shift+C', DISCONNECT: 'CmdOrCtrl+Shift+D', RUN: 'CmdOrCtrl+R', diff --git a/ui/arduino/store.js b/ui/arduino/store.js index fca99fe..bc41090 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -1440,7 +1440,9 @@ async function store(state, emitter) { win.onKeyboardShortcut((key) => { if (state.shortcutsDisabled) return - + if (key === shortcuts.CLOSE) { + emitter.emit('close-tab', state.editingFile) + } if (key === shortcuts.CONNECT) { emitter.emit('connect') } From 3c1fc6c9744b3b271f55316cff58e8bab48b579c Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sun, 22 Dec 2024 00:03:55 +0100 Subject: [PATCH 25/66] Added multiple run safeguard to prevent too many Promises from crashing the app. Signed-off-by: ubi de feo --- ui/arduino/store.js | 34 +++++++++++++++++-- .../views/components/elements/button.js | 2 ++ ui/arduino/views/components/toolbar.js | 4 +-- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index bc41090..04afdb3 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -228,6 +228,15 @@ async function store(state, emitter) { }) // CODE EXECUTION + emitter.on('run-from-button', (onlySelected = false) => { + if (onlySelected) { + runCodeSelection() + } else { + runCode() + } + }) + + emitter.on('run', async (onlySelected = false) => { log('run') const openFile = state.openFiles.find(f => f.id == state.editingFile) @@ -1506,14 +1515,35 @@ async function store(state, emitter) { emitter.emit('render') } + // Ensures that even if the RUN button is clicked multiple times + // there's a 100ms delay between each execution to prevent double runs + // and entering an unstable state because of getPrompt() calls + let preventDoubleRun = false + function timedReset() { + preventDoubleRun = true + setTimeout(() => { + preventDoubleRun = false + }, 500); + + } + + function filterDoubleRun(onlySelected = false) { + if (preventDoubleRun) return + console.log('>>> RUN CODE ACTUAL <<<') + emitter.emit('run', onlySelected) + timedReset() + } + function runCode() { + console.log('>>> RUN CODE REQUEST <<<') if (canExecute({ view: state.view, isConnected: state.isConnected })) { - emitter.emit('run') + filterDoubleRun() } } function runCodeSelection() { + console.log('>>> RUN CODE REQUEST <<<') if (canExecute({ view: state.view, isConnected: state.isConnected })) { - emitter.emit('run', true) + filterDoubleRun(true) } } function stopCode() { diff --git a/ui/arduino/views/components/elements/button.js b/ui/arduino/views/components/elements/button.js index 1dd69ec..b1d1f55 100644 --- a/ui/arduino/views/components/elements/button.js +++ b/ui/arduino/views/components/elements/button.js @@ -11,6 +11,8 @@ function Button(args) { label, background } = args + + let tooltipEl = html`` if (tooltip) { tooltipEl = html`
${tooltip}
` diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index 5acc40d..cbdb82a 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -38,9 +38,9 @@ function Toolbar(state, emit) { disabled: !_canExecute, onClick: (e) => { if (e.altKey) { - emit('run', true) + emit('run-from-button', true) }else{ - emit('run') + emit('run-from-button') } } })} From f4426285017576b250aa84f914f6227765886332 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sun, 22 Dec 2024 00:27:12 +0100 Subject: [PATCH 26/66] Transfer operations lock shortcuts. Progress is reset. Signed-off-by: ubi de feo --- ui/arduino/store.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 04afdb3..8ca4062 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -59,7 +59,7 @@ async function store(state, emitter) { state.isSaving = false state.savingProgress = 0 state.isTransferring = false - state.transferringProgress = 0 + state.transferringProgress = '' state.isRemoving = false state.isLoadingFiles = false @@ -1312,7 +1312,9 @@ async function store(state, emitter) { state.transferringProgress = `${fileName}: ${progress}` emitter.emit('render') } + ) + state.transferringProgress = '' } else { await serialBridge.uploadFile( srcPath, destPath, @@ -1321,6 +1323,7 @@ async function store(state, emitter) { emitter.emit('render') } ) + state.transferringProgress = '' } } @@ -1448,6 +1451,7 @@ async function store(state, emitter) { }), win.onKeyboardShortcut((key) => { + if (state.isTransferring || state.isRemoving || state.isSaving || state.isConnectionDialogOpen || state.isNewFileDialogOpen) return if (state.shortcutsDisabled) return if (key === shortcuts.CLOSE) { emitter.emit('close-tab', state.editingFile) From 9f2adfdcfa536a5e9081c6dfe6edf551d09756b8 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sun, 22 Dec 2024 00:46:49 +0100 Subject: [PATCH 27/66] Reworked panel bar to allow full area drag-to-resize. Signed-off-by: ubi de feo --- ui/arduino/main.css | 6 ++++++ ui/arduino/views/components/repl-panel.js | 2 ++ 2 files changed, 8 insertions(+) diff --git a/ui/arduino/main.css b/ui/arduino/main.css index 10b9cef..d9bce9a 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -342,6 +342,8 @@ button.small .icon { flex-grow: 2; height: 100%; cursor: grab; + position: absolute; + width: 100%; } #panel #drag-handle:active { @@ -357,6 +359,7 @@ button.small .icon { gap: 10px; align-self: stretch; background: #008184; + position: relative; } .panel-bar #connection-status { @@ -372,6 +375,9 @@ button.small .icon { filter: invert(1); } +.panel-bar .spacer { + flex-grow: 1; +} .panel-bar .term-operations { transition: opacity 0.15s; display: flex; diff --git a/ui/arduino/views/components/repl-panel.js b/ui/arduino/views/components/repl-panel.js index 4c85fcc..eca67d9 100644 --- a/ui/arduino/views/components/repl-panel.js +++ b/ui/arduino/views/components/repl-panel.js @@ -22,6 +22,7 @@ function ReplPanel(state, emit) {
${state.isConnected ? 'Connected to ' + state.connectedPort : ''}
+
emit('start-resizing-panel')} onmouseup=${() => emit('stop-resizing-panel')} @@ -34,6 +35,7 @@ function ReplPanel(state, emit) { size: 'small', onClick: onToggle })} +
${state.cache(XTerm, 'terminal').render()} From aa91886f79a634538dc88af13f3e7dfeb0a12bda Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sun, 22 Dec 2024 08:07:50 +0100 Subject: [PATCH 28/66] Clearing state.selectedFiles on open/view-switch. Signed-off-by: ubi de feo --- ui/arduino/store.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 8ca4062..0039775 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -102,10 +102,14 @@ async function store(state, emitter) { emitter.emit('render') }) emitter.on('change-view', (view) => { - state.view = view + if (state.view === 'file-manager') { + if (view != state.view) { + state.selectedFiles = [] + } emitter.emit('refresh-files') } + state.view = view emitter.emit('render') updateMenu() }) From 828f21b8573f2f7fa005ce945b2e4afca582628a Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sun, 22 Dec 2024 09:34:25 +0100 Subject: [PATCH 29/66] Renaming tabs/files will now reflect on the other view. Signed-off-by: ubi de feo --- ui/arduino/store.js | 73 ++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 0039775..b40a1c8 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -927,6 +927,12 @@ async function store(state, emitter) { ) ) } + // Update tab is renaming successful + const tabToRenameIndex = state.openFiles.findIndex(f => f.fileName === file.fileName && f.source === file.source && f.parentFolder === file.parentFolder) + if (tabToRenameIndex > -1) { + state.openFiles[tabToRenameIndex].fileName = value + emitter.emit('render') + } } catch (e) { alert(`The file ${file.fileName} could not be renamed to ${value}`) } @@ -955,17 +961,6 @@ async function store(state, emitter) { return } - let response = canSave({ - view: state.view, - isConnected: state.isConnected, - openFiles: state.openFiles, - editingFile: state.editingFile - }) - if (response == false) { - log("can't save") - return - } - state.isSaving = true emitter.emit('render') @@ -1037,34 +1032,36 @@ async function store(state, emitter) { if (fullPathExists) { // SAVE FILE CONTENTS - const contents = openFile.editor.editor.state.doc.toString() - try { - if (openFile.source == 'board') { - await serialBridge.getPrompt() - await serialBridge.saveFileContent( - serialBridge.getFullPath( - state.boardNavigationRoot, - openFile.parentFolder, - oldName - ), - contents, - (e) => { - state.savingProgress = e - emitter.emit('render') - } - ) - } else if (openFile.source == 'disk') { - await disk.saveFileContent( - disk.getFullPath( - state.diskNavigationRoot, - openFile.parentFolder, - oldName - ), - contents - ) + if (openFile.hasChanges) { + const contents = openFile.editor.editor.state.doc.toString() + try { + if (openFile.source == 'board') { + await serialBridge.getPrompt() + await serialBridge.saveFileContent( + serialBridge.getFullPath( + state.boardNavigationRoot, + openFile.parentFolder, + oldName + ), + contents, + (e) => { + state.savingProgress = e + emitter.emit('render') + } + ) + } else if (openFile.source == 'disk') { + await disk.saveFileContent( + disk.getFullPath( + state.diskNavigationRoot, + openFile.parentFolder, + oldName + ), + contents + ) + } + } catch (e) { + log('error', e) } - } catch (e) { - log('error', e) } // RENAME FILE try { From 64aabf76bf92cc9634a94a8a6131e2483c333a7f Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sun, 22 Dec 2024 11:49:01 +0100 Subject: [PATCH 30/66] Sanitised path in getFullPath() to convert Windows separators to posix. Signed-off-by: ubi de feo --- backend/serial/serial-bridge.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/serial/serial-bridge.js b/backend/serial/serial-bridge.js index 90d4d2e..a7f5f35 100644 --- a/backend/serial/serial-bridge.js +++ b/backend/serial/serial-bridge.js @@ -97,7 +97,7 @@ const SerialBridge = { return path.posix.join(navigation, target) }, getFullPath: (root, navigation, file) => { - return path.posix.join(root, navigation, file) + return path.posix.join(root, navigation.replaceAll(path.win32.sep, path.posix.sep), file.replaceAll(path.win32.sep, path.posix.sep)) }, getParentPath: (navigation) => { return path.posix.dirname(navigation) From 2fcb6778cf134fe04c416db5919d0b1b0d7d01ae Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Thu, 26 Dec 2024 10:23:10 +0100 Subject: [PATCH 31/66] Minor adjustments to window size and file list padding. Signed-off-by: ubi de feo --- index.js | 4 ++-- ui/arduino/main.css | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index a6fcc04..2b8a5ed 100644 --- a/index.js +++ b/index.js @@ -14,8 +14,8 @@ let splashTimestamp = null function createWindow () { // Create the browser window. win = new BrowserWindow({ - width: 720, - height: 640, + width: 820, + height: 700, webPreferences: { nodeIntegration: false, webSecurity: true, diff --git a/ui/arduino/main.css b/ui/arduino/main.css index cc0e95c..a798aaf 100644 --- a/ui/arduino/main.css +++ b/ui/arduino/main.css @@ -503,7 +503,7 @@ button.small .icon { .file-list .list { display: flex; - padding: 10px 20px; + padding: 6px 8px; flex-direction: column; align-items: flex-start; flex: 1 0 0; From 954010b75f654d0838180671768704f143bc0d47 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Mon, 3 Mar 2025 11:15:47 +0100 Subject: [PATCH 32/66] Fixed auto-connect for FM view and amended text to connect. Signed-off-by: ubi de feo --- ui/arduino/views/file-manager.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/arduino/views/file-manager.js b/ui/arduino/views/file-manager.js index 89f7b89..fa43eff 100644 --- a/ui/arduino/views/file-manager.js +++ b/ui/arduino/views/file-manager.js @@ -1,5 +1,5 @@ function FileManagerView(state, emit) { - let boardFullPath = 'Select a board...' + let boardFullPath = 'Connect to board' let diskFullPath = `${state.diskNavigationRoot}${state.diskNavigationPath}` if (state.isConnected) { @@ -13,7 +13,7 @@ function FileManagerView(state, emit) {
-
emit('open-connection-dialog')} class="text"> +
emit('connect')} class="text"> ${boardFullPath}
` } From 3f2636ed2ae308785647b998e8ea4d8792387f79 Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Wed, 5 Mar 2025 11:11:29 +0100 Subject: [PATCH 48/66] Add label --- ui/arduino/views/components/toolbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index 0f3c4d1..c559bc3 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -94,7 +94,7 @@ function Toolbar(state, emit) {
${!window.BridgeWindow.isLinux() ? Button({ icon: 'install-package.svg', - tooltip: `Install Package`, + label: `Install Package`, active: true, onClick: () => { if(state.isConnected) emit('disconnect') // Package installer requires exclusive access to the serial port From 851b10e250facc3d2c9d9578b5f1a09d2971a6f9 Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Wed, 5 Mar 2025 11:18:16 +0100 Subject: [PATCH 49/66] Move button to primary toolbar actions --- ui/arduino/views/components/toolbar.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index c559bc3..c6bcb89 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -69,6 +69,17 @@ function Toolbar(state, emit) { disabled: !_canSave, onClick: () => emit('save') })} + +
+ + ${!window.BridgeWindow.isLinux() ? Button({ + icon: 'install-package.svg', + label: `Add Package`, + onClick: () => { + if(state.isConnected) emit('disconnect') // Package installer requires exclusive access to the serial port + emit('launch-app', 'micropython-package-installer://', 'https://github.com/arduino/lab-micropython-package-installer/releases/latest') + } + }) : '' }
@@ -88,19 +99,6 @@ function Toolbar(state, emit) { square: true, onClick: () => emit('change-view', 'file-manager') })} - -
- -
- ${!window.BridgeWindow.isLinux() ? Button({ - icon: 'install-package.svg', - label: `Install Package`, - active: true, - onClick: () => { - if(state.isConnected) emit('disconnect') // Package installer requires exclusive access to the serial port - emit('launch-app', 'micropython-package-installer://', 'https://github.com/arduino/lab-micropython-package-installer/releases/latest') - } - }) : '' }
` From b81a84d3a82594a7fce0a0333ec894bbe8d0cbd9 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 5 Mar 2025 11:56:52 +0100 Subject: [PATCH 50/66] Hiding separator on Linux. Signed-off-by: ubi de feo --- ui/arduino/views/components/toolbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/arduino/views/components/toolbar.js b/ui/arduino/views/components/toolbar.js index c6bcb89..ad72a4f 100644 --- a/ui/arduino/views/components/toolbar.js +++ b/ui/arduino/views/components/toolbar.js @@ -70,7 +70,7 @@ function Toolbar(state, emit) { onClick: () => emit('save') })} -
+ ${!window.BridgeWindow.isLinux() ? html`
` : ''} ${!window.BridgeWindow.isLinux() ? Button({ icon: 'install-package.svg', From 5e8abf8765831a2bde96ffc4c5107b4184fcbee8 Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Wed, 12 Mar 2025 12:09:35 +0100 Subject: [PATCH 51/66] Add explicit check for registered application --- backend/ipc.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/backend/ipc.js b/backend/ipc.js index 1e0ee53..0716d17 100644 --- a/backend/ipc.js +++ b/backend/ipc.js @@ -142,6 +142,11 @@ module.exports = function registerIPCHandlers(win, ipcMain, app, dialog) { ipcMain.handle('launch-app', async (event, urlScheme) => { // Launch an external app with a custom protocol return new Promise((resolve, reject) => { + if(app.getApplicationNameForProtocol(urlScheme) === '') { + resolve(false); // App not installed + return; + } + try { shell.openExternal(urlScheme).then(() => { resolve(true); // App opened successfully From 380b6bd9852442ee0b9db43d798efda69578c351 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 9 Apr 2025 10:51:57 +0200 Subject: [PATCH 52/66] Forcing stop when switching to File Manager. Signed-off-by: ubi de feo --- ui/arduino/store.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 5b8e45d..29aa556 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -111,6 +111,9 @@ async function store(state, emitter) { } emitter.emit('refresh-files') } + if(view === 'file-manager') { + emitter.emit('stop') + } state.view = view emitter.emit('render') updateMenu() From 03cc8934deac6d389ff558737af569b3adfcaab6 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 9 Apr 2025 10:55:48 +0200 Subject: [PATCH 53/66] Comments and logging cleanup. Signed-off-by: ubi de feo --- index.js | 4 ++-- ui/arduino/store.js | 11 +++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/index.js b/index.js index a5658cd..a16ea09 100644 --- a/index.js +++ b/index.js @@ -65,11 +65,11 @@ app.on('ready', () => { createWindow() win.on('focus', () => { - console.log("win focus") + // console.log("win focus") }) win.on('blur', () => { - console.log("win blur") + // console.log("win blur") }) }) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 29aa556..95ea087 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -24,7 +24,6 @@ async function confirmDialog(msg, cancelMsg, confirmMsg) { cancelId: 1, message: msg }) - console.log('confirm', response) return Promise.resolve(response) } @@ -103,8 +102,8 @@ async function store(state, emitter) { } emitter.emit('render') }) + emitter.on('change-view', (view) => { - if (state.view === 'file-manager') { if (view != state.view) { state.selectedFiles = [] @@ -161,7 +160,7 @@ async function store(state, emitter) { cancelId: 0, message: "Could not connect to the board. Reset it and try again." }) - console.log('Reset request acknowledged', response) + // console.log('Reset request acknowledged', response) emitter.emit('connection-timeout') }, 3500) try { @@ -1197,7 +1196,7 @@ async function store(state, emitter) { && f.source == selectedFile.source && f.parentFolder == selectedFile.parentFolder }) - console.log('already open', alreadyOpen) + // console.log('already open', alreadyOpen) if (!alreadyOpen) { // This file is not open yet, @@ -1547,19 +1546,16 @@ async function store(state, emitter) { function filterDoubleRun(onlySelected = false) { if (preventDoubleRun) return - console.log('>>> RUN CODE ACTUAL <<<') emitter.emit('run', onlySelected) timedReset() } function runCode() { - console.log('>>> RUN CODE REQUEST <<<') if (canExecute({ view: state.view, isConnected: state.isConnected })) { filterDoubleRun() } } function runCodeSelection() { - console.log('>>> RUN CODE REQUEST <<<') if (canExecute({ view: state.view, isConnected: state.isConnected })) { filterDoubleRun(true) } @@ -1638,7 +1634,6 @@ async function store(state, emitter) { // LEAK > listeners keep getting added and not removed when tabs are closed // additionally I found that closing a tab has actually added an extra listener newFile.editor.onChange = function() { - console.log('editor has changes') newFile.hasChanges = true emitter.emit('render') } From 78afa75062b9e4f4d61d3fb38235d49048ff389d Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 9 Apr 2025 16:14:49 +0200 Subject: [PATCH 54/66] Addressed review feedback. Signed-off-by: ubi de feo --- index.js | 2 -- ui/arduino/store.js | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index a16ea09..3b3a0fd 100644 --- a/index.js +++ b/index.js @@ -65,11 +65,9 @@ app.on('ready', () => { createWindow() win.on('focus', () => { - // console.log("win focus") }) win.on('blur', () => { - // console.log("win blur") }) }) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 95ea087..e463685 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -160,7 +160,6 @@ async function store(state, emitter) { cancelId: 0, message: "Could not connect to the board. Reset it and try again." }) - // console.log('Reset request acknowledged', response) emitter.emit('connection-timeout') }, 3500) try { @@ -1196,7 +1195,6 @@ async function store(state, emitter) { && f.source == selectedFile.source && f.parentFolder == selectedFile.parentFolder }) - // console.log('already open', alreadyOpen) if (!alreadyOpen) { // This file is not open yet, @@ -1628,8 +1626,10 @@ async function store(state, emitter) { } const tabExists = state.openFiles.find(f => f.parentFolder === newFile.parentFolder && f.fileName === newFile.fileName && f.source === newFile.source) if (tabExists || fullPathExists) { - const confirmation = confirmDialog(`File ${newFile.fileName} already exists on ${source}. Please choose another name.`, 'OK') - return false + const confirmation = await confirmDialog(`File ${newFile.fileName} already exists on ${source}. Please choose another name.`, 'OK') + if (!confirmation) { + return false + } } // LEAK > listeners keep getting added and not removed when tabs are closed // additionally I found that closing a tab has actually added an extra listener From 110193a32e1b03e81b4c2b5eafe62e6f48ef9270 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 9 Apr 2025 18:56:57 +0200 Subject: [PATCH 55/66] Amended return false on duplicate tab alert. Signed-off-by: ubi de feo --- ui/arduino/store.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index e463685..04889b4 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -1627,9 +1627,7 @@ async function store(state, emitter) { const tabExists = state.openFiles.find(f => f.parentFolder === newFile.parentFolder && f.fileName === newFile.fileName && f.source === newFile.source) if (tabExists || fullPathExists) { const confirmation = await confirmDialog(`File ${newFile.fileName} already exists on ${source}. Please choose another name.`, 'OK') - if (!confirmation) { - return false - } + return false } // LEAK > listeners keep getting added and not removed when tabs are closed // additionally I found that closing a tab has actually added an extra listener From 9b0285a6b5e731fc50fbcb2e515b422f9e61dae6 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Fri, 11 Apr 2025 16:16:58 +0200 Subject: [PATCH 56/66] File Manager view triggers file-list on switch. Signed-off-by: ubi de feo --- .gitignore | 3 ++- ui/arduino/store.js | 16 ++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index c4b0f7e..ea7bad6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ dist/ .vscode .npmrc Resources -temp \ No newline at end of file +temp +claude \ No newline at end of file diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 04889b4..9029a12 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -9,6 +9,9 @@ const newFileContent = `# This program was created in Arduino Lab for MicroPytho print('Hello, MicroPython!') ` +async function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} async function confirmDialog(msg, cancelMsg, confirmMsg) { // cancelMsg = cancelMsg || 'Cancel' @@ -103,15 +106,16 @@ async function store(state, emitter) { emitter.emit('render') }) - emitter.on('change-view', (view) => { - if (state.view === 'file-manager') { - if (view != state.view) { - state.selectedFiles = [] - } - emitter.emit('refresh-files') + emitter.on('change-view', async (view) => { + if (state.view === view) { + return + } else { + state.selectedFiles = [] } if(view === 'file-manager') { emitter.emit('stop') + await sleep(500) + emitter.emit('refresh-files') } state.view = view emitter.emit('render') From c039ea59c2fe8d8922f6e50bd1e29e3c019cf6d4 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sat, 12 Apr 2025 22:44:06 +0200 Subject: [PATCH 57/66] Implemented board root detection (/ or /flash). Signed-off-by: ubi de feo --- ui/arduino/helpers.py | 8 ++++++++ ui/arduino/store.js | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/ui/arduino/helpers.py b/ui/arduino/helpers.py index cb7b757..2731091 100644 --- a/ui/arduino/helpers.py +++ b/ui/arduino/helpers.py @@ -1,6 +1,14 @@ import os import json +import sys os.chdir('/') + +def get_root(has_flash_mount = True): + if '/flash' in sys.path: + print('/flash', end = '') + else: + print('/', end = '') + def is_directory(path): return True if os.stat(path)[0] == 0x4000 else False diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 04889b4..c69e5e7 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -175,6 +175,7 @@ async function store(state, emitter) { // Connected and ready state.isConnecting = false state.isConnected = true + state.boardNavigationRoot = await getBoardRoot() updateMenu() if (state.view === 'editor' && state.panelHeight <= PANEL_CLOSED) { state.panelHeight = state.savedPanelHeight @@ -1691,6 +1692,23 @@ async function getAvailablePorts() { return await serialBridge.loadPorts() } +async function getBoardRoot() { + let output = await serialBridge.execFile(await getHelperFullPath()) + output = await serialBridge.run(`get_root()`) + let boardRoot = '' + try { + // Extracting the json output from serial response + output = output.substring( + output.indexOf('OK')+2, + output.indexOf('\x04') + ) + boardRoot = output + } catch (e) { + log('error', output) + } + return boardRoot +} + async function getBoardFiles(path) { await serialBridge.getPrompt() let files = await serialBridge.ilistFiles(path) From 80e37a3692234314f3ee400141e0961549f9eec6 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sun, 13 Apr 2025 00:04:12 +0200 Subject: [PATCH 58/66] Refactored getRoot with interface for consumer. Signed-off-by: ubi de feo --- ui/arduino/helpers.py | 10 +++++++--- ui/arduino/store.js | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ui/arduino/helpers.py b/ui/arduino/helpers.py index 2731091..ac4ec34 100644 --- a/ui/arduino/helpers.py +++ b/ui/arduino/helpers.py @@ -1,13 +1,12 @@ import os import json import sys -os.chdir('/') def get_root(has_flash_mount = True): if '/flash' in sys.path: - print('/flash', end = '') + return '/flash' else: - print('/', end = '') + return '/' def is_directory(path): return True if os.stat(path)[0] == 0x4000 else False @@ -26,6 +25,9 @@ def get_all_files(path, array_of_files = []): return array_of_files +def iget_root(): + print(get_root(), end='') + def ilist_all(path): print(json.dumps(get_all_files(path))) @@ -38,3 +40,5 @@ def delete_folder(path): if file['type'] == 'folder': os.rmdir(file['path']) os.rmdir(path) + +os.chdir(get_root()) \ No newline at end of file diff --git a/ui/arduino/store.js b/ui/arduino/store.js index c69e5e7..bd03a2a 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -1694,7 +1694,7 @@ async function getAvailablePorts() { async function getBoardRoot() { let output = await serialBridge.execFile(await getHelperFullPath()) - output = await serialBridge.run(`get_root()`) + output = await serialBridge.run(`iget_root()`) let boardRoot = '' try { // Extracting the json output from serial response From 06de27a8908bf1a826d9fc60f98f2aa0f874b55e Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Sun, 13 Apr 2025 11:56:18 +0200 Subject: [PATCH 59/66] Working implementation of Board Root detection. Signed-off-by: ubi de feo --- ui/arduino/store.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index bd03a2a..373c816 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -285,7 +285,10 @@ async function store(state, emitter) { } emitter.emit('open-panel') emitter.emit('render') - await serialBridge.getPrompt() + if (state.isConnected) { + await serialBridge.getPrompt() + } + }) emitter.on('reset', async () => { log('reset') @@ -603,7 +606,7 @@ async function store(state, emitter) { } await serialBridge.saveFileContent( serialBridge.getFullPath( - '/', + state.boardNavigationRoot, state.boardNavigationPath, fileNameParameter ), @@ -782,7 +785,7 @@ async function store(state, emitter) { if (file.source === 'board') { await serialBridge.removeFile( serialBridge.getFullPath( - '/', + state.boardNavigationRoot, state.boardNavigationPath, file.fileName ) From 0ddffa7c33349cf158d6c6c2c5091d6c4ba7f2f6 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Mon, 14 Apr 2025 09:10:22 +0200 Subject: [PATCH 60/66] Fixed query selector typo. Signed-off-by: ubi de feo --- ui/arduino/views/components/new-file-dialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/arduino/views/components/new-file-dialog.js b/ui/arduino/views/components/new-file-dialog.js index 83ace3f..8e00d9e 100644 --- a/ui/arduino/views/components/new-file-dialog.js +++ b/ui/arduino/views/components/new-file-dialog.js @@ -65,7 +65,7 @@ function NewFileDialog(state, emit) { ` if (state.isNewFileDialogOpen) { - const el = newFileDialog.querySelector('#dialog-new-file .dialog-contents > input') + const el = newFileDialog.querySelector('#dialog-new-file .dialog-content > input') if (el) { el.focus() } From efd83500917a128ac9488340f91ec04a6426630f Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Mon, 14 Apr 2025 09:11:24 +0200 Subject: [PATCH 61/66] Removed .gitignore entry in favour of local personal configuration. Signed-off-by: ubi de feo --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ea7bad6..c4b0f7e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,4 @@ dist/ .vscode .npmrc Resources -temp -claude \ No newline at end of file +temp \ No newline at end of file From 46dcd656415caae44349d0268c4e882f8de849ee Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Mon, 14 Apr 2025 17:44:31 +0200 Subject: [PATCH 62/66] Amended ununsed signature parameter in get_root(). Signed-off-by: ubi de feo --- ui/arduino/helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/arduino/helpers.py b/ui/arduino/helpers.py index ac4ec34..15ab644 100644 --- a/ui/arduino/helpers.py +++ b/ui/arduino/helpers.py @@ -2,7 +2,7 @@ import json import sys -def get_root(has_flash_mount = True): +def get_root(): if '/flash' in sys.path: return '/flash' else: From f057b1547caeee38876a86a27be4515623d4475e Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Tue, 15 Apr 2025 10:51:26 +0200 Subject: [PATCH 63/66] Amended sleep with comment from Sebastian's feedback. Signed-off-by: ubi de feo --- ui/arduino/store.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 9029a12..f82c992 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -114,7 +114,7 @@ async function store(state, emitter) { } if(view === 'file-manager') { emitter.emit('stop') - await sleep(500) + await sleep(250) // Give the board time to stop the program and return to the prompt emitter.emit('refresh-files') } state.view = view From 3915443fbc5642b42109eca15d15cd9a44a3277c Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Tue, 15 Apr 2025 12:53:51 +0200 Subject: [PATCH 64/66] Pointing BoardNavigationPath to /flash when it's the default writable mount-point. Signed-off-by: ubi de feo --- ui/arduino/store.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/arduino/store.js b/ui/arduino/store.js index 6526f99..966e906 100644 --- a/ui/arduino/store.js +++ b/ui/arduino/store.js @@ -179,7 +179,7 @@ async function store(state, emitter) { // Connected and ready state.isConnecting = false state.isConnected = true - state.boardNavigationRoot = await getBoardRoot() + state.boardNavigationPath = await getBoardNavigationPath() updateMenu() if (state.view === 'editor' && state.panelHeight <= PANEL_CLOSED) { state.panelHeight = state.savedPanelHeight @@ -1699,7 +1699,7 @@ async function getAvailablePorts() { return await serialBridge.loadPorts() } -async function getBoardRoot() { +async function getBoardNavigationPath() { let output = await serialBridge.execFile(await getHelperFullPath()) output = await serialBridge.run(`iget_root()`) let boardRoot = '' From 65273aa90262e603642c0b5d2e1fa67a3bfde720 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 30 Apr 2025 20:27:24 +0200 Subject: [PATCH 65/66] Bumped version to 0.20.0 Signed-off-by: ubi de feo --- package-lock.json | 262 +++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 169 insertions(+), 95 deletions(-) diff --git a/package-lock.json b/package-lock.json index c40dfba..0ad9236 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "arduino-lab-micropython-ide", - "version": "0.11.1", + "version": "0.20.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "arduino-lab-micropython-ide", - "version": "0.11.1", + "version": "0.20.0", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -210,9 +210,9 @@ } }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -510,15 +510,15 @@ "optional": true }, "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "dev": true }, "node_modules/@types/node": { - "version": "16.18.119", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.119.tgz", - "integrity": "sha512-ia7V9a2FnhUFfetng4/sRPBMTwHZUkPFY736rb1cg9AgG7MZdR97q7/nLR9om+sq5f1la9C857E0l/nrI0RiFQ==", + "version": "16.18.126", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", + "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", "dev": true }, "node_modules/@types/plist": { @@ -542,9 +542,9 @@ } }, "node_modules/@types/verror": { - "version": "1.10.10", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.10.tgz", - "integrity": "sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.11.tgz", + "integrity": "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==", "dev": true, "optional": true }, @@ -602,9 +602,9 @@ } }, "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "dev": true, "dependencies": { "humanize-ms": "^1.2.1" @@ -745,9 +745,9 @@ } }, "node_modules/app-builder-lib/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -1246,6 +1246,19 @@ "node": ">=8" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1498,9 +1511,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -1512,9 +1525,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dependencies": { "ms": "^2.1.3" }, @@ -1609,9 +1622,9 @@ "dev": true }, "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", "dev": true, "engines": { "node": ">=8" @@ -1756,6 +1769,20 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer3": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", @@ -2259,9 +2286,9 @@ } }, "node_modules/electron-rebuild/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -2330,14 +2357,10 @@ "dev": true }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "optional": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -2347,7 +2370,33 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { "node": ">= 0.4" } @@ -2382,9 +2431,9 @@ } }, "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", "dev": true }, "node_modules/extract-zip": { @@ -2479,13 +2528,14 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -2529,7 +2579,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "optional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2564,17 +2613,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, - "optional": true, "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -2583,6 +2636,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -2635,9 +2701,9 @@ } }, "node_modules/global-agent/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "optional": true, "bin": { @@ -2681,13 +2747,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "optional": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2749,12 +2814,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, - "optional": true, "engines": { "node": ">= 0.4" }, @@ -2762,12 +2826,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, - "optional": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -2786,7 +2852,6 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, - "optional": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -3264,9 +3329,18 @@ "node": ">=10" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/micropython.js": { - "version": "1.5.0", - "resolved": "git+ssh://git@github.com/arduino/micropython.js.git#7657256c7f7c37d9f3b3112deb98d64665c68c65", + "version": "1.5.1", + "resolved": "git+ssh://git@github.com/arduino/micropython.js.git#62696afbf4c3eb2d520eebbcb676cf7b88c1d1d6", "dependencies": { "serialport": "^10.4.0" }, @@ -3463,9 +3537,9 @@ } }, "node_modules/node-abi": { - "version": "3.71.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", - "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -3475,9 +3549,9 @@ } }, "node_modules/node-abi/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3503,9 +3577,9 @@ } }, "node_modules/node-api-version/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3540,9 +3614,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.3.tgz", - "integrity": "sha512-EMS95CMJzdoSKoIiXo8pxKoL8DYxwIZXYlLmgPb8KUv794abpnLK6ynsCAWNliOjREKruYKdzbh76HHYUHX7nw==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -3550,9 +3624,9 @@ } }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -4102,9 +4176,9 @@ } }, "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", "dev": true, "dependencies": { "ip-address": "^9.0.5", diff --git a/package.json b/package.json index 751e1db..2074bb4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "arduino-lab-micropython-ide", "productName": "Arduino Lab for MicroPython", - "version": "0.11.1", + "version": "0.20.0", "description": "Arduino Lab for MicroPython is a project sponsored by Arduino, based on original work by Murilo Polese.\nThis is an experimental pre-release software, please direct any questions exclusively to Github issues.", "main": "index.js", "scripts": { From b268f5c958bfb1153849464fa166168cf2a7fd27 Mon Sep 17 00:00:00 2001 From: ubi de feo Date: Wed, 7 May 2025 07:30:37 +0200 Subject: [PATCH 66/66] Updated README.md with new screenshot and revised text. Signed-off-by: ubi de feo --- README.md | 46 ++++++++++++-------------- assets/Arduino-Lab4MPy-screenshot.png | Bin 0 -> 348192 bytes 2 files changed, 22 insertions(+), 24 deletions(-) create mode 100644 assets/Arduino-Lab4MPy-screenshot.png diff --git a/README.md b/README.md index 3241c76..5a08600 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,41 @@ # Arduino Lab for MicroPython -

- - - -

+![Editor screenshot](./assets/Arduino-Lab4MPy-screenshot.png) Arduino Lab for MicroPython is a lightweight editor for MicroPython programs, supporting connection with a board, code upload, file transfer and interactive REPL shell. This project is sponsored by Arduino, based on original work by [Murilo Polese](http://www.murilopolese.com). This is an experimental pre-release software, please direct any questions only to Github issues. ## Features + - MicroPython's Read Eval Print Loop (REPL) - - Enter paste mode - - Enter raw repl - - Software reset - - Tab to autocomplete + - Enter paste mode + - Enter raw repl + - Software reset + - Tab to autocomplete - File system management (Disk and MicroPython File System) - - Create - - Rename - - Multiple file and folder selection - - Remove - - Upload - - Download + - Create + - Rename + - Multiple file and folder selection + - Remove + - Upload + - Download - Text editor - - Python syntax highlight and autocomplete - - Multiple tabs - - Rename tabs + - Python syntax highlight and autocomplete + - Multiple tabs + - Rename tabs - Code execution - - Run what's on text editor - - Stop (keyboard interrupt) - - Soft reset + - Run what's on text editor + - Stop (keyboard interrupt) + - Soft reset ## Technical overview -Arduino Lab for MicroPython is an [Electron](https://www.electronjs.org/) app that has its main purpose to communicate over serial with a microprocessor running [MicroPython](https://micropython.org/). The Electron code is at `/index.js` and inside the folder `/backend`. +Arduino Lab for MicroPython is an [Electron](https://www.electronjs.org/) app whose main purpose is to communicate over serial with a microcontroller running [MicroPython](https://micropython.org/). The Electron code is at `/index.js` and inside the folder `/backend`. -All operations over serial are abstracted and packaged on `micropython.js` which is an attempt of porting `pyboard.py`. The module has its [own repository](https://github.com/arduino/micropython.js) with documentation and examples of usage. +All operations over serial are abstracted and packaged in `micropython.js` which is a JavaScript implementation of the functionalities provided by `mpremote` (namely `pyboard.py`) from the [MicroPython project](https://github.com/micropython/micropython/tree/master/tools/mpremote/mpremote). +The module has its [own repository](https://github.com/arduino/micropython.js) with documentation and usage examples. -The User Interface (UI) source code stays inside `/ui` folder and is completely independent of the Electron code. +The User Interface (UI) source code stays inside `/ui` folder and is completely independent from the Electron code. The communication between interface and Electron app is accomplished by using the methods and events specified by `/preload.js`. diff --git a/assets/Arduino-Lab4MPy-screenshot.png b/assets/Arduino-Lab4MPy-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6cd322d54357309e2d27e8c45bd5ad3a87bf4910 GIT binary patch literal 348192 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

7h?CQ!|C6Dc#sM?~T#J<48Qot22ikU|Oe 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

I{)&{7M{FRCz+$IcjU-Ix8g`m^PH>cf= zKvy6NuYW8YM?arhcNji4H`h^~X!G405?WlASr zGU^QsF0X_K&3G^xQn~e)>foe6A_zWVa$oX1FRhZTi%Js+V&I0Gub>8LQa(azlpm({HQcwH4B(_BQ(XF$F`N1;)$-a=Z|4V?wi5t zBfdMmB}Z97<(oZ#`dfJ#)5cYWNI$1OjX+m@Uk!@kYpUL8sy$U=bim&$2*dP3PPSHH zr;Zjo2g;DL17krc3hw25jVzt#Z}wK?m&VP%E|nT)lk#;#2qKufU<#FxL^gd1ijg@VU>K%>1Nb?5szk#mEfO`|ImYA)I*=C1L!(^pa6v zN-ghm*`l?TvfVxtaipbK2eZke7|V2q6;Hd0^CCQ60h_7Ael@cvg*$~YwvYA}>Jm3B zZTRU?^u;(-cY2m;5-?zq7NDl5YZo`9EnOU@Nxs57Dccjc49GO!R2=Vt|15dCO^JZ2 z^bO=~Z#7Ila__~e93Hu~#)7qu4@_CMDk@xL98zSp(5&KEXh56^x*Fppu7vPL&l?!b zHJ^Bh(j^ptl)lI-y)Pc{W~z0#9wRjkYK3G8nB zp>LN2KwRT z7sKiZ>IA+IIGaSvg^xTf)ohI#kOD#pPxz5g@?-o={b|v^gc80z0)bTk#j*gw1pEES zUc=QI(tb|sX4zib0p*h&I&aOyvl9Mv9$Xy|Xya!p2sB)R)5Q-n9c-sxp0BYaJGHhS zT0;6;y<||t_Rn$5mhJf%0;-B-iT zsQi2=CfRp^tYE0->#cO1)_^$H0zw+7o2G7S&QewI$G9W2BMl5#0ZT;--z%MT6seP% zDE=H-Lc2yn;ntZJeqZ)$+iqf4T~{Y`aj?U?Gk9(T7o%HryDUD`(P+bt_gea~{@H<( z3AurX84aCI7{f1~6~o^yshAE#?)^%(*mg>l>RuF0(l)Bs zG4*2Q9Rgxpy#qgVPbeh&myE-#g65yDM!E3bbpH_gZOyo))4z{(ME^0?LEoI7dksqM z!JZd5iJmTDM94JrkPFN_s8?W1ar3&If1B(G&IJS$G(m@1vnu|ox=B8qV~kz#P#`47 zrdC3Yc!W7X7@XQiM<8ZZ+il;&{%Mj#7h?SVZ(aZ&cVAjG0U^VyX_erNU1R~aG-H~7 zwBLRWTmeFWuXyk|Y)%}1`1M@QGKHIID50Bu`(wqWaj~NX%PgPab|q?`3 z(8dVCYZWM|-T_0`z?T?RsUd?g6r}j73J-~y^VpG9wphnuEx$*Mdg3HK(^w4B>Qf&sHKNd9=> z>z)(~UTUrDtm_0SQ?`_ptKk}FtN8!YXh%}ZH!qH{9i*=-B&(gyho3(uKzldU)rc&c z%FZslh(DV#1NC*j7YkY|6*!c)w=3~2e!S7F(l)(KA>4d=i}+l2P87AW+O=KV9pfB% z7PIhNUxmC^G&u3hK7|o@;u6h$RGTyZRwZNJazZPmE8333WG)a;^pl5IrxKoqKAGe= z$)HTmw5Y}k=bJ;ht)UH-!iUos3^!r68Os#~RTvD;PV_wfqWIA1nZ_!1N+=>Gl1sOo z-qj>||0<D9<_tW~ zo4-fkXgZE-;h_+o3Cpd_DI}I)N*3`$of+;hpt(`AOqbCaN5S+Dgmtm7Q#R#AS6XfiR1_ZJ=N31=YIg1G>8 zktH61EfbopF}xNEc2X~eIR6CS$*{S@iK{&|16n7loFnPq_8!mX z`E|BtX9x-Vai zM1;?68hGwh+D%0MQ&C1tdWI&mEOitR{{8iWuc`2i`6Ung6E|{PCQc*dOnKN)zR^}9yJBJ+DWopi;IV)HyWDaDGXo{kViVBF#aPeJsKkxhA&%3_0 zZl7Ze-^kv!CyY#7Q~LzHC^Z-bTht(mMhiMNY}uwX9yqH+wbZn9Nxy#JMhzx}}B;5oCi zDU)O{;*Rz%wkc`Y-xxF3bLN)}lH)1;{6o{7wVm!0TJ-dNc`#K#DMi+L(s%Yi8O7v1 z4XPd;I!e~l>t&xJOfo46Kk>te-N~3z(9%%z5h<9K;&;h!>JNs zGz?Hn5X2FQddOXTYkTAqdDhFlp;;uCg3#T@KkqX3*DadNx&C&{V=&kg%C<6x^Qc=) zCkwfguFhM7W3X#WklbuWVsMP0O5QL87dq6-F6C`c2z$RXFb2-$V)M-gNckpbKZ$A0 z{axQIAzrRM+2QNWh6BqrXcrF0xP`;cz70BsMBQqW-M-Llx7Tl!Qa~{|+xy*sE*~vg zPT*AdvA=cJDsRPz2u%&KhI<&OnN&-!FXhXPVg7kx+2Gu!WpN7{;RLCl^jJdMl0@|@ zSdAagmHk^ijL73g11f83b+FKtRYg*5yPgyBnslJsKKI(Be!hGhLI^BN&$&3LUZ{r| zTSQonTfP3ZH4-~_Gk@+^&%Dy^08!)-`c`iBlX!@M=jAjL(iVy#cwX>I<4$Td+Z?a) zqMNAlPt~~^8)(O_`(!n?)q)Y-K+}c&vWxA8bEj$SNHakkyGuN5*rVKjOZ96F-I=Vl zkdn3T%sT0?1sL6^maN0LjVa1KN&+Vs?;rX&`D>%XD_M=wIs zboE4c@orSw513RxLbzmPG2NzPE~Pox<#w=LIFb>3@1D)SaMFTY-p-ZOHTPRo-4U@+MXL7;dwUT$Yi6(nty{v^W9%okmFjae5>(bm`q?sDxP@O=54>uhQ zU8VBx4(;-ljSz?+lqwJki2DY=oiSQ3v#TsT2cid;q67v-Lsep(J4nT+?m2x z)5_H=gSve=ZC|i?l-xnZK!MsflqfAa{-liG;1vD;r@F1qP3vEo6bCgsT)nT_-&Wi* z2)mh6esVhg&k1V(1nZV-7xh(hy6?W}0J&mgSt>+6{-0yB86f`Mf{?+WlS3~c{SHFi z=``rmZhIcXOBudgb`E0W{E)x3m;aEzfolR3XM-&IIa&1%&*CU-r1kqJaBWzQlwm_+ zqx=f!_E4MaKwC{m=hZd%hTH4!S+-bm{fF;b8Qea=zzkOBG2F`vfS*OX7gW@L+j>rx2$?QzZ@OrBZx+U?bW*j>wZnSSEB!=(`R>4G#FhL6)P{4bKNGX z*J~#kk~8FzoMhH<^&@7t;atAfsa4Eh^p@+-3*I8yA;Fslk|;NLuDv4xNgEZm^PIL+ zq?yg-A9HJw(@N4TAtKo~w@&issY;^7PnTc*=ioWyxDv0VBWHi}sOk6|w$D8Kjqsv4 zCGbQ!PNg#~y)ehB{z`7lhGcM#J_c%2YouIyToty(7nd%j`e>VHv^(d~jSj;;^y-|_ zC*bv;*m=xjrGXLuhgt@nH8iT{T-AK_EL=uEt)3fwO1*L5$bwqdykGeKa9KO=4)QeP z9^?MC+zhpE7T|wRb%E1BbuOUsXh9x*j|N;Z zq{++aOzpC2NxDW*>=U8QuG~awtCCCyAi7Z`CXHMY28MX{qr!eau!$3Qc%Q|m#E9_W zk^6U%u=)%2oW%G`c>%3Z>8MoRGi#~WCvcOaOTj=IrVtjspi5Yy0av|(TL!-Xz$UbH zaBNYXN85w<)?A3jAjtwqg&`wIgs-zOFyc2<{yZuw{dZKg*kb z?Ji_pZV5yr`yT+KnmhT!JT;|pkJD2l7zU7LI~jw5LZYVtfs{2h{s?z5ypNVzSnIn` zr|^Fh&VKq-W?lQ|f5T5%fWr@A+XJO_$xUENqOpnD8$E)vF~I*CQX* z<(dw@p@b#IyAg9gR?u79AQ?=Z$$v(T>r&@)m_f@6TM=3@2`eft-EwA~f2S^KE#_a7 zbDFp8&ue!!ahdym#`UkT+I%pkAS@0%)#fnA;?8k)chTe$NWzuShpYiuj z5-eF`%d}L35J`D+Ba~u!_+$#r27X^~i?Z}4gvuA`LcFz;Hpaq&QcA+6%)BmE9wnhP%-+vZa#I?{2gK#?}J@NDFh@0*i=Zk?Ymj%vn3<-;M)XTvsIKF@ zKh&iLVHexcep@dA?zU9#GApV}g_SKM_=)Uvzf!>6R(6rQr4di_4%8Q}^cxvD!Z*!4 zmd80=29>+vB-Jw#lJ;)dPA~Vk>DALGxY|d>F-|v$+kjIqmU}@b6*vku(HC2PeKZE5#NJa9%>-A zj)(2O1q&yTeR`j7*)7kN@9My(*SPTV07nca$r+JBT3;X9cLtaGC?TY!u&i0%Dl&^A z-&3{EWb`9VE`LkSQ9oz(y`M=ya`Sjdqn@j+MMyAr(li2Mzq)j1@kYR29ZG791~e06 z>yf^!fH?1OI>+3`XqJ~R=L)3wm5bc-?e_`SN5_WPj<|Kgxm6@WCzhuh<9RUZCG}{TAF#Ekk(r31SzPZ>mtFEVJlP#H8!LpK-v=%J&2Sfqc$ie43xdTjl9ADp~R|F(K2kEjXo~;o^d{q+EU_ef80a93iq9k!H%j z&3>WDrRCX91%ys?5Rsu_e{;XP6{=uCK5vyqVal(Vne)?d^`y~0s^8@S3$46s=-P92 zaza0)t*p2(c@ACrg}|kD?&LU#oacHj0)fV%#V?KNE?EFN0~Hru+TZD{M{$5W{u#A- zguiR4ez5Zrjga8GCckamU{bS!miWa-Q1nE%uiXhPe7NL3U70t$;iJza=?nc(L>_}; ztA?HDSZ{8W zc+`w@V-C?S#I<$=wb;NkmoBAk58-#*zHxZboSDCMSr_#rp~s*YiS;ZbE}{upnG{Zb z>;fhytUWPQYnoBh8Xdf{u6e0?v}vvdhiX9lbW-Nlnsvpo70$kU>v^PlBWXY^|3UexxBn+EHNJKZeGU;CtnCL8T@>r z0yZ+_JE#p`be*{i>R!bPfPT|?9${UTFT@%BUo=9&62tcx$bN(RoUvp1 za7*|D6CTqJ9BMYQazPtVx0Iq<9f|XI4N4lqqCi2bmcyP4oD7W(e1~OfWgNBauL8gJ zGOV6|O(z-x)Lq7NKqvrMO%~pKFD>W*b`y4~bk+p3L{#ZUwU*togsxlV(ZSt%U9^5FgyO*@45+r#UW6Sbp$c z`CtfkWP`im8U<0#y=!HDWAp`PPvtCwq)V?kIm>dx zk;_%isS0zBR;IFynhnbZ~I$txB2n+SBcm*%dwiJ zhsjngcDIA!{$JVYwb>MY=9kTr+o3-1Y~P>FwV`YA`ypY5ZRlEvSs#6DJefs_W zf^kV z-WF-tkXMV=Y&_GUnXhH1J~xFuMYb|KTk4@6F&B(y+1$)(IB@=8h8c0veX?})=W@Tc zVXSSL3rqEq^io#<-QdP5&&fT;tl^NmGa4?6lqfNTZdYK^y_;@7U4-Q3(`z7&Q>CBO zEjE17Vt>2)LVh#zs=is}?%$@WmJ}a9(Qy0l_GCB;Sr@bDfoZo9P1XLhly#1!e4j=- zG)CtQLh~!qs`4^+o=>O1m;0|XrMZ$rb48ou!V{0NPA_`6fOryQH#FbeVb^jPI)yez zK36k0%5hJ=*?K0pq(qiXcR5~5()QVSVf7cw&6x4L@r?AqDDBS|2+oA~^R_Q^Te?$5 zw}_lQFQm7fBwr8>6d`37PdX|spv$_znDd@Q|3$W(#dKp+MK_Y@9O489I05t1Q_OuohsP!_i9+1H@L@yv%EKp4@(#4Y7~@(8xFHv?1?%-gOd2Hiu4?7# zl!bKgZ#geTDiY9@xqk+o=j_M+NlPW&dzS=O*8~rRJ!~q2gl$lFPWHgTQ3+9vP4x64 z1I;WNmQP^32Q|rTq{*CZ9aN9VBbVup_~FJr()BU^FJUNds!@DJ^;@T{T&ID`0tMs& zg59@`C0Wv|gkfnW@gN?IJKH?8pbFAXOWKk^#gA_YN>lI0{-#~q32;8#+E25YeC0er z-D?sb_!l60{xJuP0#d<4V`p=B@*G5wPzn^#0+r#3T57jWXmnfF%+9mik^a6DHMvRk z2`7-|t-6=fL)MuyR$U>+2$qfO9Fp;&0Nw(7FzwbO`3C9z83OOAB-;%@ve5sUXVb9E zL;O|7U?eT*nyY{2PayDqf@!SsvwUQK+sCA}S8k?`r;U?iM6p#lRk_oD$$4)-Jdv9s z9#s0J>0@gDQgzAC_SSM4Y5n3HVTp6BP0GGu%EQIc3B1{|t3((+K)~=qvzMW=sYr9D|+l`qPk8qW`nx zK-M9|4k&{*A_iQLkC#CQ<8gYf9N~4r$=wwXy&CO34-DF?x`c850jw0iA2e8=zSqH? zj^{9;vbjATU``c`-5dA?V*sn0XTiSGO<0@fwAWAH@v_0K7E=c_cuqsuJ@@EQsqAhn zx90LKH^OcGVx*!n8{BxCD`a4iC`sbp1r6w_-o|eY8oa0!lL_K|e{6lf96PjEvnV4z za(Q%Fn5!y5nmotC>L_Y|2W;Pf&Dt|L$b=Oe9}T|+pX@96;N8iJ=Q zjqjN#?3ti;|06P?`ge3*@=r11KnxL*)u##MaaDhae}}INFnVBY2O|-ehl1Mizw|{E z9l89)Q~yD-w!ueN9fJqDm`IPodQ-Y?`c4GRonA9%_HQEN3)egAV+P77AuR!J1j^>& zry{1^g6z}eo)a(}9nDgGw$H(++Fi$;cNPDP{ zA&Af}-0Gknh%0I}>2JQ8EEnsB10rPu?~3-o&XvjM#+TC);~cmX0$pyTX}73hx*BN(^-Rl=irQA$MIQ6UMG`}3gT9k~`Qx+y z?D>blmH3HPs=KmK4WjhFTWsRDE}e?C9V~hk>p7m%n*&A?@p`HRk4F|EAPg2t< z^4!YnxUXd962Ahg_n^&-m#xBFXo)*n6C*pG1Y*;_{2&W|{5X$(C)%3~gdZ3?-CJRF z+wUPX$#Q)J+>~@UPkqPAwugO{Bx?F#W99403U%%x|JhpR0_R*H3w$P<*_lGJ<2}It zE6`p02PjfMYb4BL^e=C!b+Dse;NU z6ii!rNo+F9e6v;WHj?2jbXCA{6mq*pYPbh9cd+TCL676W$?-8G+Lo3$*bdaKR8vi^ z_zYQ@MzB#szLoG7L74|_QKYRkz+;wBGA{qTko`Haf*+@$o>R+%{^g_y_EYz2zX=%n zEo`2Q8OA%csPn$P+ot@p)7r-;E5{4d&wtj>1V6uY5V86v3p+i~BS?WqH#Hx$aes4} zF_QEN=#t@bcr`Uw9>d|rkI*VYptpjayt=;tyY)-&>g04$QdNoU>%e|vcICg4gX_z*e@elg6^t;f)-syz56FZQqZ+RTYBB967#dm?3{El2Gu_@My#{igvCn!nMzrUYOrABRIgtY?sBq#QM+go zfgc`C0>8lax`*8VrJ}Odf)Fjks%Q5^Gw`xziMV6A^R#?!^ojub7+F_z2r#oqrR8vr z5I=Ed{0(Vs&aD|p+4)aOkg?Ze!FFotg%U^L+L|#J7jAMwi2NpH^!204Sknl=*Wa~&*EwA36_-zs_FM2C(d%P{4IU%WuA%YBf{~~7 z^~@)lMw*Byox1Q!7<)o-&EEY19JP$$B92TtyRV?+>Y!BduX`H6}@W6^^iSQ5|~MVF7&M-)AwxRi#>ZKk`=ISdRq42SldGPt|O(>F2R>R#Ak zrNMID72Jk(&AnDf-Z@@}=>5xBBBwl&?A>MB%MN*i-!<-tQ8#R}P>R3d+=VqrM-sSU zCA847*Do6Xf>O)MOBm(oOI2D^MF@$9AJIe0(k9@Tg?JvDQyQ06TaGm^?mzuq@24*Z zvP#Ea-mIF;Dd`S*=3E=UT`joOnqWdO`xamv(pA%yvfio7XI@MnfCw1ql8=6P%X4q{ z8i;l=t{j*rRCfXSPE#clCV{0$E`*gqKtk8kO^=)G;8g5C1`6}QNnf0HAF_UfZiJS; zUdOjz{O7XiuWWQNYt4U4d6cl|9yBTPBICod551SVjeKq5OuB>c$?~%~&B?#!idxGZ z2x6)WdS7QlBDQcuCJ=6)gRcpbCgboEC&~TdJ*Q7BXrkr%UWA8th5Ebd zFI7+;DkCN2TP7t8qq@K{QPewqYdikhtu;1QuhtrT)Pg2B@UANuKeEa_pT7D0 zy%?xZR3>T)a8q@u-k}+^s{U>Z-+6z)ODuPNyi-!b049S#WfOa9GkWuaiuv^wIF0KG zPHl`d!mxzMQ>ThQKGZOC3UGG8UvJ0_-Sg21IcBDK|5N%TwP6d2_AJ@N9~wO|K>tgW z?XizN-BHku^;YTz?NWt_Y@EA-$Wwq>OG7(VT28b%Z-(O$CkWZ2D&RulIU_L4U>tC405S9e_w{!4g|2TaUVsXGo zAxk#dLzGPH*|x9|+TRfOoHJJ~4p3bF1XgE01pU6Ute2DN+ zuDeW-k6y?}RbKN48iI*jg+@|6H1>ZuC=E$uFcMjV!HPnp%3dwmlVubgHxYDVA^v=u zhUD0y*5~Tgsu#c4r-bPqQm*w%>}e*_%w~86@4;z*bXbu$-u9r4v!odV71(KbHk z^FnZ4-hQd;T;W%Ak`Y)YFY)C1a7kevB<>v6Gx%FBhaS`=%gWxvU_i)4zLUXfGHis~ z_Cc9{s-pZSis562;_WTk@GsYw{YHLCpiwfJyK&?R}nb^k)Lc~+k_{vkn#>@B% z!*UF79a43E=$Mc-JE?~YQHn7OS!H-o7Pb@BZf_z&kG(sizG5?3*mA>pqL6l)RGJR{ z0d%61urW|tAs%&cRhP*TT-;f5RfETjhgDS-<>dixF9|D9@*C)hre9hA>T6XTS^Ht+ z+Jsitu9@wd{cpj3hx-pwh_Kc}+`a=?0yH_5CfweL1AVx0^r|xMX(9Ms4bIgDQTda1vKJ`$>sbnRzxj(YtCZ=e`DhTQzLulv zo{M=o`4;#JH#=Vz1zO3!keuhyc(WTBXIX2tZh|`Aa7R zDK8&%qz?9vr%TKS1qGFqgMeQPtoEQ}0|+rdxMk=A_%1hJ zl6fCT1UJ-&MrAZ)}R)d+go0lePisT z8CK5=D*-jzS4)p9UTYMdx}>ns=VzA-J$iwUXDl*)4~*O5db?~VX5SXPxkqvG(HYc$ zq-T4u_!;t7+DWNL$w-Ivqmw&6Kewnwh89HUZ-Nz(Zx>t9B7u5otXk*{2uVr-3Y78G z57Ek1cTwt(jEw)mH~+6?;!hml4~zi*{8}hPT7bCn>D}U44i>e`>E>{ zcbP$dEtyR%!M!2aT}6E-P`~$Uo-U@SGf_t^a?mmSXmqos9f=%DOXm$B8Tr= z?0YcmsFVAj&$E(M-a`+a#?;BLcJ6V%AcA$p#_YzM%QjZW`w2e^lXaEPZR?#7%TspY zeWZQ2;<9#-KH@;_W*DF^y)}!Sls+1kgvfNJrE)f`W`6V#c70SJzS*N*iS52w0UlnO5>1k_k$ezCP zEGDx8n3d9!mAuR7`W|fk`4*Zs#a!v>cv0FHNrt(ei-s*B6-Z;tdCbP2$Z6hRP4UGr z!#G*aLCr63qW5f{V_r|bWw8W2rJsf(G|}Q1Qmv8G1J@^44sEJ7c|TMjm5)a;NRHMc z7Bt_fR}@ltkswJ&PpVQMY_N+pNn6um1^7*R)!zlOMi#3E(25sSaS(CXNj*VUB%ze{ z;IT7ArEE1|;dX6-mhx{agTJ+$D6eLzx}5-yH8hK;P}K*hSZYo63_>-oiIRrdzhfZ_ zzyJ-FC4n*3e~sk|Yga9)A|;Iytgo^x&KE12daKwlv39@2xd9s2G4-)$R$^@ajqRkg zBcw+~%!i2!=)lfj{m?s4{C?x^@>q-O zope8ZnZr}Jm3xoeVZP9(ynVnQ&c&_m99G8wxtQ9-@AKB0*G; z&N{2`om3c8c)3V)6`nVzxwr?H5ix$PKZw7J6{9kuN2sp$rok((g%QjGEwb0f?N<@aQUpwzC5 zxsj(uHr|ln+xMIc2WVS@$)b2hUnpdy>T&UzwXPebbKv>TM)I7MmnqQ&Bt(7nD zFaP4gvQ~_RyesD=-MQkzGE?aMG;4L#BGo(<_u8ZLxu9Lg3AJ}t-n6!Ts}4$_=nfUF zPhML@k06tfpCx_f=C@6@kh+!82?N`!7#!#rhBNHpZhl;HA56Nt&N<`xFKZ3V-Ys{G zcZ>TeITps1OXZqjPFIl6+wFrRlWp{LJ`)WS@_L2GpH}|v-y-+^*;3T#u_utIZIXOv zINJ8A$5yu9!;AX51(A%*klRs+^O#C@$uaQlP#FC?Y!�EbjqDz;~T_pYIH)5z3EL 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 literal 0 HcmV?d00001