Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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/mcp-dist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/static.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`:**

Expand Down Expand Up @@ -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`
Expand All @@ -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
<https://pydevices.github.io/workbench/>. This is separate from, and more
<https://workbench.pydevices.com/>. 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.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <https://pydevices.github.io/workbench/>. 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 <https://workbench.pydevices.com/>. 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

Expand Down Expand Up @@ -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).
4 changes: 2 additions & 2 deletions docs/get-started/first-program.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <https://pydevices.github.io/workbench/> and press the simulator button in the toolbar. The terminal prints a `>>>` prompt when the device is up.
1. Open <https://workbench.pydevices.com/> 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:

Expand All @@ -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.
2 changes: 1 addition & 1 deletion docs/get-started/install.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Open Workbench

There's nothing to install. Open <https://pydevices.github.io/workbench/> in a browser and the editor, file manager, terminal and simulator are all there.
There's nothing to install. Open <https://workbench.pydevices.com/> in a browser and the editor, file manager, terminal and simulator are all there.

## Install it as an app

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/allow-workbench-through-a-firewall.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/connect-over-bluetooth.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`:

Expand Down
4 changes: 2 additions & 2 deletions docs/guides/connect-over-the-internet.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`:

Expand All @@ -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

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/connect-over-usb.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/connect-over-your-network.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`:

Expand Down
4 changes: 2 additions & 2 deletions docs/guides/open-a-gallery-example.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
6 changes: 3 additions & 3 deletions docs/guides/share-a-package-with-an-install-link.md
Original file line number Diff line number Diff line change
Expand Up @@ -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):

[<img src="https://raw.githubusercontent.com/vshymanskyy/ViperIDE/refs/heads/main/assets/btn_install.png" alt="Install using Workbench" height="48"/>](https://pydevices.github.io/workbench/?install=github:vshymanskyy/aiodns)
[<img src="https://raw.githubusercontent.com/vshymanskyy/ViperIDE/refs/heads/main/assets/btn_install.png" alt="Install using Workbench" height="48"/>](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`
Expand All @@ -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
[<img src="https://raw.githubusercontent.com/vshymanskyy/ViperIDE/refs/heads/main/assets/btn_install.png" alt="Install using Workbench" height="48"/>](https://pydevices.github.io/workbench/?install=YOUR_LINK)
[<img src="https://raw.githubusercontent.com/vshymanskyy/ViperIDE/refs/heads/main/assets/btn_install.png" alt="Install using Workbench" height="48"/>](https://workbench.pydevices.com/?install=YOUR_LINK)
```

4 changes: 2 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Workbench

Workbench is a MicroPython IDE for the browser, with a built-in device simulator. Live at <https://pydevices.github.io/workbench/>.
Workbench is a MicroPython IDE for the browser, with a built-in device simulator. Live at <https://workbench.pydevices.com/>.

## Get started

Expand Down Expand Up @@ -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).
4 changes: 2 additions & 2 deletions docs/reference/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/url-parameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ Workbench reads these from the address it's opened with.
| `example=<name>` | 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=<link>` | installs a package on the board once one is connected | [Share a package](../guides/share-a-package-with-an-install-link.md) |
| `wss=<id>` | connects to a board through the secure WebSocket relay | [Connect over the internet](../guides/connect-over-the-internet.md) |
| `rtc=<id>` | connects over a peer-to-peer WebRTC link, set up by the [bridge page](https://pydevices.github.io/workbench/bridge.html) | |
| `rtc=<id>` | connects over a peer-to-peer WebRTC link, set up by the [bridge page](https://workbench.pydevices.com/bridge.html) | |
2 changes: 1 addition & 1 deletion src/pydevices/gallery.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion test/browser/gallery-open.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading