diff --git a/.github/workflows/mcp-dist.yml b/.github/workflows/mcp-dist.yml index f7479c80..54770490 100644 --- a/.github/workflows/mcp-dist.yml +++ b/.github/workflows/mcp-dist.yml @@ -17,7 +17,7 @@ jobs: build-viperide: runs-on: ubuntu-latest env: - VIPER_IDE_BASE_URL: https://pydevices.github.io/workbench + VIPER_IDE_BASE_URL: https://workbench.pydevices.com steps: - uses: actions/checkout@v7 - uses: actions/setup-node@v7 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 37250279..8186f06c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,7 +41,7 @@ jobs: fi - name: Build the app env: - VIPER_IDE_BASE_URL: https://pydevices.github.io/workbench + VIPER_IDE_BASE_URL: https://workbench.pydevices.com run: | npm ci python3 build.py --skip-tests diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 83de2c7b..9345b3f5 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -29,7 +29,7 @@ jobs: url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest env: - VIPER_IDE_BASE_URL: https://pydevices.github.io/workbench + VIPER_IDE_BASE_URL: https://workbench.pydevices.com steps: - name: Checkout uses: actions/checkout@v7 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ca53f5df..e540ee42 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,7 +33,7 @@ Workbench loads its WebAssembly runtimes, virtual filesystem archives and `manif - In JavaScript, as the `VIPER_IDE_BASE_URL` constant (replaced by Rollup) - In HTML, as the `${VIPER_IDE_BASE_URL}` placeholder (replaced while copying the files into `build/`) -`build.py` defaults it to `http://localhost:10001` and passes it on to Rollup. The `static.yml` and `release.yml` CI workflows both set `VIPER_IDE_BASE_URL=https://pydevices.github.io/workbench` explicitly for production builds (`static.yml` for the GitHub Pages deploy on every push to `main`, `release.yml` for the bundle attached to a tagged release). +`build.py` defaults it to `http://localhost:10001` and passes it on to Rollup. The `static.yml` and `release.yml` CI workflows both set `VIPER_IDE_BASE_URL=https://workbench.pydevices.com` explicitly for production builds (`static.yml` for the GitHub Pages deploy on every push to `main`, `release.yml` for the bundle attached to a tagged release). **To override it manually, set `VIPER_IDE_BASE_URL`:** @@ -158,7 +158,7 @@ Workbench has two independent release tracks (see `.github/workflows/`): - **App releases**: pushing a plain `vX.Y.Z` tag (matching `v[0-9]*`) triggers `release.yml`, which builds the app with - `VIPER_IDE_BASE_URL=https://pydevices.github.io/workbench` via + `VIPER_IDE_BASE_URL=https://workbench.pydevices.com` via `python3 build.py --skip-tests`, zips `build/`, and attaches it to a GitHub Release for that tag. It first refuses to run against a pre-fork tree (a `package.json` name that isn't Workbench's), since the `v0.5.x`-`v0.6.x` @@ -170,7 +170,7 @@ Workbench has two independent release tracks (see `.github/workflows/`): - **GitHub Pages**: every push to `main` runs `static.yml`, which builds with `python3 build.py --prepare && npm run lint && npm run test`, then `python3 build.py --skip-tests`, and deploys `build/` to - . This is separate from, and more + . This is separate from, and more frequent than, either tagged release track above. Tags `v0.5.x` and `v0.6.x` predate the fork and are upstream ViperIDE's release history. diff --git a/README.md b/README.md index 2712ed79..8e78c005 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Workbench is a MicroPython IDE that runs in your browser, with a built-in simula ## Open it -There's nothing to install: open . A browser can also install it as an app (the install icon in Chrome or Edge's address bar). To run your own copy, see [CONTRIBUTING.md](CONTRIBUTING.md). +There's nothing to install: open . A browser can also install it as an app (the install icon in Chrome or Edge's address bar). To run your own copy, see [CONTRIBUTING.md](CONTRIBUTING.md). ## Try it @@ -36,6 +36,6 @@ Area(80, 40, 160, 160) A cyan circle appears on the navy display, and the last line reads back a pixel on its edge: `0x7ff` is `pal.CYAN`. -[Docs](https://github.com/PyDevices/workbench/blob/main/docs/index.md) · [Examples](https://pydevices.github.io/gallery/gallery/) · [Roadmap](ROADMAP.md) +[Docs](https://github.com/PyDevices/workbench/blob/main/docs/index.md) · [Examples](https://gallery.omnipython.org/) · [Roadmap](ROADMAP.md) Made by [PyDevices](https://pydevices.com). diff --git a/docs/get-started/first-program.md b/docs/get-started/first-program.md index 407f1581..b8b2cb22 100644 --- a/docs/get-started/first-program.md +++ b/docs/get-started/first-program.md @@ -2,7 +2,7 @@ You can do this without a board. Workbench starts a MicroPython virtual device in your browser, with a display, the PyDevices libraries and example programs already on its file system. -1. Open and press the simulator button in the toolbar. The terminal prints a `>>>` prompt when the device is up. +1. Open and press the simulator button in the toolbar. The terminal prints a `>>>` prompt when the device is up. 2. Click `04_pygraphics_shapes.py` in the file tree and press Run (or F5). The shapes appear on the display next to the editor, and the terminal prints `Rendered pygraphics vector FrameBuffer successfully to display!`. 3. Type at the `>>>` prompt: @@ -15,4 +15,4 @@ Edit the file and press Run again. To put the same program on a real board, conn The simulator also has a resolution and shape picker, including round watch faces, and you can resize the display by dragging it. -More programs are in the [gallery](https://pydevices.github.io/gallery/gallery/); [open one in Workbench](../guides/open-a-gallery-example.md) by name. +More programs are in the [gallery](https://gallery.omnipython.org/); [open one in Workbench](../guides/open-a-gallery-example.md) by name. diff --git a/docs/get-started/install.md b/docs/get-started/install.md index a0222812..f367fdd2 100644 --- a/docs/get-started/install.md +++ b/docs/get-started/install.md @@ -1,6 +1,6 @@ # Open Workbench -There's nothing to install. Open in a browser and the editor, file manager, terminal and simulator are all there. +There's nothing to install. Open in a browser and the editor, file manager, terminal and simulator are all there. ## Install it as an app diff --git a/docs/guides/allow-workbench-through-a-firewall.md b/docs/guides/allow-workbench-through-a-firewall.md index a55b64f0..f390110d 100644 --- a/docs/guides/allow-workbench-through-a-firewall.md +++ b/docs/guides/allow-workbench-through-a-firewall.md @@ -2,7 +2,7 @@ If you manage a network, unblock these domains so Workbench works: -- `pydevices.github.io`: Workbench itself, served from GitHub Pages. +- `workbench.pydevices.com`: Workbench itself, served from GitHub Pages. - `hub.viper-ide.org`: the relay that [connecting over the internet](connect-over-the-internet.md) uses, inherited from upstream ViperIDE. - `micropython.org`: the MicroPython package index the package manager reads. - `raw.githubusercontent.com`: packages installed from GitHub. diff --git a/docs/guides/connect-over-bluetooth.md b/docs/guides/connect-over-bluetooth.md index d3f78617..981bfca1 100644 --- a/docs/guides/connect-over-bluetooth.md +++ b/docs/guides/connect-over-bluetooth.md @@ -2,7 +2,7 @@ A board with native Bluetooth LE, such as a Raspberry Pi Pico W or an ESP32, can run a REPL that Workbench reaches over the air. You need a Chromium-based browser (Chrome, Edge, Opera, Brave). It usually works on Windows, Linux, macOS and Android, and isn't available on iOS. -1. Connect [Workbench](https://pydevices.github.io/workbench/) to the board over USB ([how](connect-over-usb.md)). +1. Connect [Workbench](https://workbench.pydevices.com/) to the board over USB ([how](connect-over-usb.md)). 2. In the left panel, open `Package Manager` and install `viper-tools`. 3. Put this in the board's `main.py`: diff --git a/docs/guides/connect-over-the-internet.md b/docs/guides/connect-over-the-internet.md index 2dcefaf5..df0bba0b 100644 --- a/docs/guides/connect-over-the-internet.md +++ b/docs/guides/connect-over-the-internet.md @@ -2,7 +2,7 @@ A secure WebSocket relay lets you reach a board from anywhere. This is experimental and may have bugs. -1. Connect [Workbench](https://pydevices.github.io/workbench/) to the board over USB ([how](connect-over-usb.md)). +1. Connect [Workbench](https://workbench.pydevices.com/) to the board over USB ([how](connect-over-usb.md)). 2. In the left panel, open `Package Manager` and install `viper-tools`. 3. Put this in the board's `main.py`: @@ -23,7 +23,7 @@ A secure WebSocket relay lets you reach a board from anywhere. This is experimen IDE available on https://viper-ide.org?wss=YOUR-DEVICE-UID ``` -5. Open `https://pydevices.github.io/workbench/?wss=YOUR-DEVICE-UID` with the ID from that line. The link the board prints opens ViperIDE, because `viper-tools` comes from there. +5. Open `https://workbench.pydevices.com/?wss=YOUR-DEVICE-UID` with the ID from that line. The link the board prints opens ViperIDE, because `viper-tools` comes from there. ## Use your own relay diff --git a/docs/guides/connect-over-usb.md b/docs/guides/connect-over-usb.md index a222f019..bae0e8ee 100644 --- a/docs/guides/connect-over-usb.md +++ b/docs/guides/connect-over-usb.md @@ -3,7 +3,7 @@ Plug the board in and connect to it from Workbench over Web Serial (or WebUSB). You need a Chromium-based browser (Chrome, Edge, Opera, Brave): this isn't available on iOS or Safari. See [Browser and platform support](../reference/browser-support.md). 1. Connect your device with a USB cable and check that your operating system recognizes it. Some USB devices need a driver installed. Some boards aren't detected by Android over USB OTG. -2. Open [Workbench](https://pydevices.github.io/workbench/) and press the USB button. +2. Open [Workbench](https://workbench.pydevices.com/) and press the USB button. 3. Pick your board from the list. If Android doesn't see your board, turn on `Use WebUSB instead of WebSerial` in Settings and try again. diff --git a/docs/guides/connect-over-your-network.md b/docs/guides/connect-over-your-network.md index b835da71..94524cac 100644 --- a/docs/guides/connect-over-your-network.md +++ b/docs/guides/connect-over-your-network.md @@ -4,7 +4,7 @@ The board runs a web server and Workbench connects to it over WebREPL. Your comp The WebSocket this uses isn't encrypted, and a secure site like Workbench can't open one. To get around that, the board serves a small page over plain HTTP, and that page loads the IDE from `viper-ide.org`, which is ViperIDE's site, not Workbench's. To reach a board over the internet instead, use [a relay](connect-over-the-internet.md). -1. Connect [Workbench](https://pydevices.github.io/workbench/) to the board over USB ([how](connect-over-usb.md)). +1. Connect [Workbench](https://workbench.pydevices.com/) to the board over USB ([how](connect-over-usb.md)). 2. In the left panel, open `Package Manager` and install `viper-tools`. 3. Put this in the board's `main.py`: diff --git a/docs/guides/open-a-gallery-example.md b/docs/guides/open-a-gallery-example.md index d7178208..1c564717 100644 --- a/docs/guides/open-a-gallery-example.md +++ b/docs/guides/open-a-gallery-example.md @@ -1,9 +1,9 @@ # Open a gallery example -Any card of the [PyDevices gallery](https://pydevices.github.io/gallery/gallery/) opens in Workbench by name: +Any card of the [PyDevices gallery](https://gallery.omnipython.org/) opens in Workbench by name: ``` -https://pydevices.github.io/workbench/?vm=1&example=paint +https://workbench.pydevices.com/?vm=1&example=paint ``` That starts the simulator, writes the example's files to it and opens the entry file in the editor, ready for Run. diff --git a/docs/guides/share-a-package-with-an-install-link.md b/docs/guides/share-a-package-with-an-install-link.md index 3e8e6e64..d747b625 100644 --- a/docs/guides/share-a-package-with-an-install-link.md +++ b/docs/guides/share-a-package-with-an-install-link.md @@ -4,13 +4,13 @@ A link to Workbench can install your library or project onto whatever board the For instance, this installs [`aiodns`](https://github.com/vshymanskyy/aiodns): -[Install using Workbench](https://pydevices.github.io/workbench/?install=github:vshymanskyy/aiodns) +[Install using Workbench](https://workbench.pydevices.com/?install=github:vshymanskyy/aiodns) The image is served from ViperIDE's repository. ## Make the link -Use `https://pydevices.github.io/workbench/?install=YOUR_LINK`. `YOUR_LINK` is one of: +Use `https://workbench.pydevices.com/?install=YOUR_LINK`. `YOUR_LINK` is one of: - `github:org/repo` - `github:org/repo/path/to/package.json` @@ -35,6 +35,6 @@ Links in the readme are shown but can't be clicked, because a readme isn't allow ## Add the button to your README ```md -[Install using Workbench](https://pydevices.github.io/workbench/?install=YOUR_LINK) +[Install using Workbench](https://workbench.pydevices.com/?install=YOUR_LINK) ``` diff --git a/docs/index.md b/docs/index.md index f74ce1a9..9e2c5fc6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ # Workbench -Workbench is a MicroPython IDE for the browser, with a built-in device simulator. Live at . +Workbench is a MicroPython IDE for the browser, with a built-in device simulator. Live at . ## Get started @@ -35,4 +35,4 @@ Workbench is a MicroPython IDE for the browser, with a built-in device simulator - [Changelog](changelog.md) -Also: [Examples gallery](https://pydevices.github.io/gallery/gallery/), [Roadmap](../ROADMAP.md), [Contributing](../CONTRIBUTING.md). +Also: [Examples gallery](https://gallery.omnipython.org/), [Roadmap](../ROADMAP.md), [Contributing](../CONTRIBUTING.md). diff --git a/docs/reference/features.md b/docs/reference/features.md index 94cdfc9a..1c02cd70 100644 --- a/docs/reference/features.md +++ b/docs/reference/features.md @@ -7,8 +7,8 @@ - [`WebREPL over internet 🌎`](../guides/connect-over-the-internet.md) - [`WebREPL in local network`](../guides/connect-over-your-network.md) - [`Bluetooth LE`](../guides/connect-over-bluetooth.md) - - [`P2P/WebRTC Bridge`](https://pydevices.github.io/workbench/bridge.html) - - [`Virtual Device`](https://pydevices.github.io/workbench/?vm=1), also on its own simulator toolbar button + - [`P2P/WebRTC Bridge`](https://workbench.pydevices.com/bridge.html) + - [`Virtual Device`](https://workbench.pydevices.com/?vm=1), also on its own simulator toolbar button - **File Editor** - Syntax highlighting for `.py`, `.json`, `.inf`, `.toml`, `.pem` - Auto expand/minify of `.json` files diff --git a/docs/reference/url-parameters.md b/docs/reference/url-parameters.md index eff17005..9d2dccaa 100644 --- a/docs/reference/url-parameters.md +++ b/docs/reference/url-parameters.md @@ -8,4 +8,4 @@ Workbench reads these from the address it's opened with. | `example=` | opens one gallery card: writes its files to the connected device and opens its entry file | [Open a gallery example](../guides/open-a-gallery-example.md) | | `install=` | installs a package on the board once one is connected | [Share a package](../guides/share-a-package-with-an-install-link.md) | | `wss=` | connects to a board through the secure WebSocket relay | [Connect over the internet](../guides/connect-over-the-internet.md) | -| `rtc=` | connects over a peer-to-peer WebRTC link, set up by the [bridge page](https://pydevices.github.io/workbench/bridge.html) | | +| `rtc=` | connects over a peer-to-peer WebRTC link, set up by the [bridge page](https://workbench.pydevices.com/bridge.html) | | diff --git a/src/pydevices/gallery.js b/src/pydevices/gallery.js index 7742663d..a687be8b 100644 --- a/src/pydevices/gallery.js +++ b/src/pydevices/gallery.js @@ -27,7 +27,7 @@ import { fetchJSON, fetchText, splitPath } from '../utils.js' -export const GALLERY_URL = 'https://pydevices.github.io/gallery/gallery/' +export const GALLERY_URL = 'https://gallery.omnipython.org/' /* How many lines the gallery scans for its `# key: a, b` headers */ const HEADER_LINES = 10 diff --git a/test/browser/gallery-open.spec.js b/test/browser/gallery-open.spec.js index eb174fae..b9f1bed6 100644 --- a/test/browser/gallery-open.spec.js +++ b/test/browser/gallery-open.spec.js @@ -12,7 +12,7 @@ import path from 'node:path' import { fileURLToPath } from 'node:url' import { terminalText, focusTerminal, distinctCanvasColors } from './helpers.js' -const GALLERY = 'https://pydevices.github.io/gallery/gallery/' +const GALLERY = 'https://gallery.omnipython.org/' const FIXTURES = path.join(path.dirname(fileURLToPath(import.meta.url)), 'fixtures', 'gallery') /* The app's service worker fetches on the page's behalf, and a request it