/ concept-collection / numbl-web-ide
Sign in
concept-collection / numbl-web-ide
numbl-web-ide
Go to fileHistoryFork
.githubnumbl web IDE: run .m files in the browser with numbl
publicnumbl web IDE: run .m files in the browser with numbl
scriptsAdd live-check script for the deployed site
srcnumbl web IDE: run .m files in the browser with numbl
.gitignorenumbl web IDE: run .m files in the browser with numbl
index.htmlnumbl web IDE: run .m files in the browser with numbl
package-lock.jsonnumbl web IDE: run .m files in the browser with numbl
package.jsonnumbl web IDE: run .m files in the browser with numbl
README.mdnumbl web IDE: run .m files in the browser with numbl
tsconfig.jsonnumbl web IDE: run .m files in the browser with numbl
vite.config.tsnumbl web IDE: run .m files in the browser with numbl

numbl web IDE#

Run MATLAB-syntax .m files in your browser with numbl, inside a VS Code-style IDE built on minwebide. Projects live in your browser's IndexedDB.

Live site: https://concept-collection.github.io/numbl-web-ide/

The landing page manages projects (create / rename / duplicate / delete), each with its own file system, addressed as #/project/<id>. Create a sample project and press on a script:

  • Text output streams to the Output panel; figures open as Figure N views in the secondary side bar (rendered by numbl's own figure renderer — 2-D canvas, 3-D three.js).
  • The whole project is the workspace, numbl.org-style: functions next to the running script resolve automatically, other folders via addpath.
  • Runs use the current editor contents (saved or not), execute in a Web Worker, and can be stopped with .
  • Files a script writes (fopen/fprintf) appear in the Explorer.
  • The project name in the status bar takes you back to the project list.

Development#

minwebide is consumed as a sibling checkout (file:../minwebide):

git clone https://github.com/magland/minwebide ../minwebide
(cd ../minwebide && npm install)   # fetches the pinned VS Code source
npm install
npm run dev
  • npm run build — static bundle in dist/
  • npm run typecheck — typechecks app code (vendor diagnostics suppressed)
  • npm run smoke — headless end-to-end test against the built bundle
  • bash scripts/generate-builtins.sh — refresh the syntax-highlighting builtin list after upgrading the numbl dependency

Cross-origin isolation: dev/preview servers send COOP/COEP headers so SharedArrayBuffer is available (numbl uses it for pause() timing). The deployed site gets the same via coi-serviceworker.js, injected into index.html only at build time — dev never registers a service worker.

CI checks out magland/minwebide next to this repo, installs both, builds, and publishes dist/ to GitHub Pages.

moveopenescclose