Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
7996cd3
Bump @rollup/rollup-linux-x64-gnu from 4.52.5 to 4.53.2
dependabot[bot] Nov 10, 2025
a90567a
Bump vite from 7.1.12 to 7.2.2
dependabot[bot] Nov 10, 2025
18282bc
Merge pull request #416 from circuitpython/dependabot/npm_and_yarn/vi…
makermelissa Nov 11, 2025
a214907
Bump sass from 1.93.3 to 1.94.0
dependabot[bot] Nov 17, 2025
1749198
Merge pull request #415 from circuitpython/dependabot/npm_and_yarn/ro…
makermelissa Nov 18, 2025
bffc98c
Merge pull request #417 from circuitpython/dependabot/npm_and_yarn/sa…
makermelissa Nov 18, 2025
936df1c
Merge branch 'main' of https://github.com/circuitpython/web-editor in…
makermelissa Nov 20, 2025
f28235a
Fix file selection
makermelissa Nov 20, 2025
7ae8f20
Merge pull request #418 from makermelissa/beta
makermelissa Nov 20, 2025
9793bd7
Bump actions/checkout from 5 to 6
dependabot[bot] Nov 24, 2025
02cb723
Bump @rollup/rollup-linux-x64-gnu from 4.53.2 to 4.53.3
dependabot[bot] Nov 24, 2025
59c8d85
Merge pull request #423 from circuitpython/dependabot/npm_and_yarn/ro…
makermelissa Nov 24, 2025
7b6de57
Merge pull request #420 from circuitpython/dependabot/github_actions/…
makermelissa Nov 24, 2025
51f8a2a
Bump vite from 7.2.2 to 7.2.4
dependabot[bot] Nov 24, 2025
3d6446b
Merge pull request #422 from circuitpython/dependabot/npm_and_yarn/vi…
makermelissa Nov 24, 2025
7821c04
Bump sass from 1.94.0 to 1.94.2
dependabot[bot] Nov 24, 2025
d47c5b2
Merge pull request #421 from circuitpython/dependabot/npm_and_yarn/sa…
makermelissa Nov 24, 2025
a09fc4c
Bump vite from 7.2.4 to 7.2.7
dependabot[bot] Dec 8, 2025
5efcde8
Merge pull request #425 from circuitpython/dependabot/npm_and_yarn/vi…
makermelissa Dec 8, 2025
7a63181
Bump @rollup/rollup-linux-x64-gnu from 4.53.3 to 4.53.4
dependabot[bot] Dec 15, 2025
ce0e71f
Merge pull request #427 from circuitpython/dependabot/npm_and_yarn/ro…
makermelissa Dec 15, 2025
cddaeab
Bump vite from 7.2.7 to 7.3.0
dependabot[bot] Dec 15, 2025
97f1ed9
Merge pull request #428 from circuitpython/dependabot/npm_and_yarn/vi…
makermelissa Dec 15, 2025
dff3780
Bump sass from 1.94.2 to 1.96.0
dependabot[bot] Dec 15, 2025
56b9431
Merge pull request #426 from circuitpython/dependabot/npm_and_yarn/sa…
makermelissa Dec 15, 2025
29d9065
Bump focus-trap from 7.6.6 to 7.7.0
dependabot[bot] Dec 22, 2025
76e2f11
Bump @rollup/rollup-linux-x64-gnu from 4.53.4 to 4.54.0
dependabot[bot] Dec 22, 2025
2433d39
Bump sass from 1.96.0 to 1.97.1
dependabot[bot] Dec 22, 2025
726fbcf
Merge pull request #430 from circuitpython/dependabot/npm_and_yarn/ro…
makermelissa Dec 22, 2025
d6f8271
Merge pull request #431 from circuitpython/dependabot/npm_and_yarn/sa…
makermelissa Dec 22, 2025
8290a16
Merge pull request #429 from circuitpython/dependabot/npm_and_yarn/fo…
makermelissa Dec 22, 2025
b5c3428
Detect safe mode and notify when restarting
makermelissa Dec 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 22
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 22
Expand Down
7 changes: 7 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,13 @@
<button id="usb-workflow" class="purple-button files-button" value="usb">USB<i class="fa-brands fa-usb"></i></button>
</div>
</div>
<div class="popup-modal shadow prompt closable" data-popup-modal="ok-cancel">
<div id="message"></div>
<div class="buttons centered">
<button class="purple-button ok-button" value="ok">OK</button>
<button class="purple-button cancel-button" value="cancel">Cancel</button>
</div>
</div>
<div class="popup-modal shadow prompt closable" data-popup-modal="message">
<div id="message"></div>
<div class="buttons centered">
Expand Down
5 changes: 3 additions & 2 deletions js/common/file_dialog.js
Original file line number Diff line number Diff line change
Expand Up @@ -291,8 +291,9 @@ class FileDialog extends GenericModal {
} else if (clickedItem.getAttribute("data-type") != "folder") {
this._getElement('fileNameField').value = clickedItem.querySelector("span").innerHTML;
}

this._lastSelectedNode = clickedItem;
if (this._lastSelectedNode == null || !modifierKeys.includes(MODIFIER_SHIFT)) {
this._lastSelectedNode = clickedItem;
}
this._setElementEnabled('okButton', !this._multipleItemsSelected() && clickedItem.getAttribute("data-type") != "bin");
this._updateToolbar();
}
Expand Down
4 changes: 2 additions & 2 deletions js/common/utilities.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ function isIp() {

// Check if the current url is a Web Workflow, IP, or Test Address and current path is /code/
function isLocal() {
return (isMdns() || location.hostname == "localhost" || isIp()) && (location.pathname == "/code/");
return location.hostname == "localhost" || ((isMdns() || isIp()) && location.pathname == "/code/");
}

// Test to see if browser is running on Microsoft Windows OS
Expand All @@ -67,7 +67,7 @@ function isMicrosoftWindows() {
return false;
}

// Test to see if browser is running on Microsoft Windows OS
// Test to see if browser is running on Chrome OS
function isChromeOs() {
if (navigator.userAgent.includes("CrOS")) {
return true;
Expand Down
4 changes: 2 additions & 2 deletions js/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@ async function checkConnected() {
await workflow.showInfo(getDocState());
}
}

return true;
}

Expand Down Expand Up @@ -491,7 +492,7 @@ async function saveFileContents(path) {
if (currentTimeout != null) {
clearTimeout(currentTimeout);
}
currentTimeout = setTimeout(saveFileContents, 2000);
currentTimeout = setTimeout(await saveFileContents(path), 2000);
}
}

Expand Down Expand Up @@ -621,7 +622,6 @@ document.addEventListener('DOMContentLoaded', async (event) => {
}
}
} else {
//await showMessage("USB Workflow is currently experiencing issues. See <a href=\"https://github.com/circuitpython/web-editor/issues/203\">GitHub issue #203</a> for more details. Please use Web Workflow.");
await checkConnected();
}
});
36 changes: 35 additions & 1 deletion js/workflows/workflow.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import {REPL} from '@adafruit/circuitpython-repl-js';
//import {REPL} from '../../../circuitpython-repl-js/repl.js';

import {FileHelper} from '../common/file.js';
import {UnsavedDialog} from '../common/dialogs.js';
import {ButtonValueDialog, UnsavedDialog} from '../common/dialogs.js';
import {FileDialog, FILE_DIALOG_OPEN, FILE_DIALOG_SAVE} from '../common/file_dialog.js';
import {CONNTYPE, CONNSTATE} from '../constants.js';
import {plotValues} from '../common/plotter.js'
Expand Down Expand Up @@ -42,6 +43,7 @@ class Workflow {
this.disconnectCallback = null;
this.loadEditor = null;
this.connectDialog = null;
this._okCancelDialog = new ButtonValueDialog("ok-cancel");
this._connected = false;
this.currentFilename = null;
this.fileHelper = null;
Expand Down Expand Up @@ -91,9 +93,27 @@ class Workflow {
}

async restartDevice() {
if (await this.safeMode()) {
let result = await this._okCancelDialog.open("Device is currently in safe mode. Reboot device?");
if (result === "ok") {
console.log("Rebooting device from safe mode");
await this.rebootDevice();
}
}
await this.repl.softRestart();
}

async rebootDevice() {
let code = `
try:
import microcontroller
microcontroller.reset()
except ImportError:
pass
`;
await this.showBusy(this.repl.runCode(code));
}

async haltScript() {
await this.repl.interruptCode();
}
Expand Down Expand Up @@ -311,6 +331,20 @@ class Workflow {
return false;
}

async safeMode() {
let code = `
try:
import supervisor
print(supervisor.runtime.safe_mode_reason is not supervisor.SafeModeReason.NONE)
except ImportError:
print(False)
`;
let result = await this.showBusy(this.repl.runCode(code));
let isSafeMode = result.match("True") != null;

return isSafeMode;
}

async parseParams() {
return true;
}
Expand Down
Loading