Skip to content
Merged
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
31 changes: 30 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,35 @@
# Changelog

All notable user-facing changes to Fri3d-IDE.
All notable user-facing changes to MicroPythonOS IDE (formerly Fri3d-IDE).

## Unreleased

### Changed

- **Renamed to MicroPythonOS IDE** — the project is now positioned as a
general MicroPythonOS IDE, with the Fri3d Camp badge as one supported
device among others. Product name, page title, PWA manifest, and
repository links were updated accordingly; the BadgeHub integration is
unchanged.
- **Virtual device picker** — the virtual device now offers a choice between
a generic MicroPythonOS device skin and the Fri3d Camp 2026 badge skin,
selectable from the Welcome page.
- **Generic MicroPythonOS device shape** — the generic virtual device skin
no longer mimics the Fri3d badge's horizontal PCB layout; it's now its
own simpler, more vertical shape with a plain LED strip on top, the
screen in the middle, and a D-pad + button cluster below.
- **Device workspace auto-detection** — connecting a physical device now
detects whether it runs plain MicroPython, MicroPythonOS, or is
specifically a Fri3d Camp 2026 badge, and scopes app templates and
documentation links accordingly.
- **UI style setting** — a new "Look" setting lets you switch the IDE's own
visual style between the classic Fri3d neobrutalist look and a softer,
generic MicroPythonOS look (colors, borders, shadows, and button/dialog
corner radius). This is a manual choice in Settings, independent of the
device workspace and color theme (light/dark).
- **Real MicroPythonOS logo** — the app icon and Welcome page logo now use
the upstream MicroPythonOS project's ouroboros mark instead of a
placeholder, including the favicon, PWA icons, and Apple touch icon.

## v1.2.4 — 2026-08-14

Expand Down
30 changes: 15 additions & 15 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Contributing to Fri3d-IDE
# Contributing to MicroPythonOS IDE

Thanks for your interest in contributing to **Fri3d-IDE**!
Thanks for your interest in contributing to **MicroPythonOS IDE**!

Fri3d-IDE is a browser-based IDE for developing software for Fri3d Camp boards and other MicroPython devices. It is based on the ViperIDE project and is built with React, TypeScript, Vite, CodeMirror, xterm.js, Tailwind CSS, Zustand, and browser device APIs.
MicroPythonOS IDE is a browser-based IDE for developing software for MicroPythonOS devices, including the Fri3d Camp badge, and other MicroPython devices. It is based on the ViperIDE project and is built with React, TypeScript, Vite, CodeMirror, xterm.js, Tailwind CSS, Zustand, and browser device APIs.

Contributions of all sizes are welcome, including:

Expand All @@ -24,10 +24,10 @@ For larger changes—especially changes to device transports, the MicroPython RE

When working on an existing issue, leave a comment so others know that someone is investigating it.

Because Fri3d-IDE is derived from ViperIDE, please mention in your issue or pull request whether a change is:
Because MicroPythonOS IDE is derived from ViperIDE, please mention in your issue or pull request whether a change is:

* Specific to Fri3d Camp hardware or documentation
* A general MicroPython IDE improvement
* Specific to a particular device (e.g. Fri3d Camp hardware) or its documentation
* A general MicroPython/MicroPythonOS IDE improvement
* Adapted from an upstream ViperIDE change

Preserve existing copyright notices and attribution when moving or adapting upstream code.
Expand All @@ -52,8 +52,8 @@ Web Serial and Web Bluetooth generally require a secure browser context. Use `lo
Fork the repository and clone your fork:

```bash
git clone https://github.com/YOUR-USERNAME/Fri3d-IDE.git
cd Fri3d-IDE
git clone https://github.com/YOUR-USERNAME/MicroPythonOS-IDE.git
cd MicroPythonOS-IDE
```

Install the locked dependencies:
Expand Down Expand Up @@ -330,7 +330,7 @@ Avoid logging complete terminal sessions by default. Device output may contain p

### Python formatting and linting

Fri3d-IDE uses Ruff compiled to WebAssembly for Python-related tooling.
MicroPythonOS IDE uses Ruff compiled to WebAssembly for Python-related tooling.

When changing formatting or Python diagnostics:

Expand Down Expand Up @@ -378,7 +378,7 @@ A translation-only pull request is welcome. Include the language and the parts o

### PWA and offline behaviour

Fri3d-IDE is configured as a progressive web application with an automatically updating service worker.
MicroPythonOS IDE is configured as a progressive web application with an automatically updating service worker.

Test PWA changes using a production build:

Expand Down Expand Up @@ -485,7 +485,7 @@ Tested:
- npm run build
- Chromium on Linux
- Onboarding demo
- Web Serial with a Fri3d Camp badge
- Web Serial with a MicroPythonOS device
- Open, edit, save, run and reconnect flows

Not tested:
Expand Down Expand Up @@ -553,7 +553,7 @@ Remove passwords, private source code, device identifiers, Wi-Fi credentials, to

6. Push the branch to your fork.

7. Open a pull request against `Fri3dCamp/Fri3d-IDE:main`.
7. Open a pull request against `DrSkunk/MicroPythonOS-IDE:main`.

Your pull request should explain:

Expand All @@ -564,7 +564,7 @@ Your pull request should explain:
* Which devices and firmware versions were tested
* Which connection methods were tested
* What was not tested
* Whether the change is Fri3d-specific or generally applicable
* Whether the change is device-specific or generally applicable
* Any user-visible, compatibility, security, or offline impact
* Related issues

Expand Down Expand Up @@ -595,6 +595,6 @@ work in progress

Be respectful, patient, and constructive.

Fri3d Camp welcomes contributors with different levels of experience. Explain decisions clearly, help others learn, and assume good intentions during reviews and technical discussions.
The MicroPythonOS IDE community welcomes contributors with different levels of experience. Explain decisions clearly, help others learn, and assume good intentions during reviews and technical discussions.

Thank you for helping improve Fri3d-IDE!
Thank you for helping improve MicroPythonOS IDE!
63 changes: 33 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,78 +1,79 @@
# Fri3d-IDE
# MicroPythonOS IDE

[![StandWithUkraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
[![CI](https://github.com/Fri3dCamp/Fri3d-IDE/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Fri3dCamp/Fri3d-IDE/actions/workflows/ci.yml)
[![Deploy](https://github.com/Fri3dCamp/Fri3d-IDE/actions/workflows/deploy-pages.yml/badge.svg?branch=main)](https://github.com/Fri3dCamp/Fri3d-IDE/actions/workflows/deploy-pages.yml)
[![License](https://img.shields.io/github/license/Fri3dCamp/Fri3d-IDE)](LICENSE)
[![CI](https://github.com/DrSkunk/MicroPythonOS-IDE/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/DrSkunk/MicroPythonOS-IDE/actions/workflows/ci.yml)
[![Deploy](https://github.com/DrSkunk/MicroPythonOS-IDE/actions/workflows/deploy-pages.yml/badge.svg?branch=main)](https://github.com/DrSkunk/MicroPythonOS-IDE/actions/workflows/deploy-pages.yml)
[![License](https://img.shields.io/github/license/DrSkunk/MicroPythonOS-IDE)](LICENSE)

Connect a Fri3d badge, write an app, run it, and publish it from your browser.
Connect a MicroPythonOS device, write an app, run it, and publish it from your browser.

[Launch Fri3d-IDE](https://fri3dcamp.github.io/Fri3d-IDE/) · [Contribute](CONTRIBUTING.md) · [Security](SECURITY.md) · [Report a problem](https://github.com/Fri3dCamp/Fri3d-IDE/issues)
[Launch MicroPythonOS IDE](https://drskunk.github.io/MicroPythonOS-IDE/) · [Contribute](CONTRIBUTING.md) · [Security](SECURITY.md) · [Report a problem](https://github.com/DrSkunk/MicroPythonOS-IDE/issues)

![Fri3d Camp badge](public/ide.png)
![MicroPythonOS device](public/ide.png)

Fri3d-IDE is the browser development environment for Fri3d Camp badges. It combines a Python editor, terminal, device file browser, package manager, USB/Serial and Bluetooth connections, a virtual badge, MicroPythonOS app packaging, and BadgeHub publishing.
MicroPythonOS IDE is the browser development environment for MicroPythonOS devices. It combines a Python editor, terminal, device file browser, package manager, USB/Serial and Bluetooth connections, a virtual device, MicroPythonOS app packaging, and BadgeHub publishing.

You can use a physical badge or the built-in virtual badge. Projects can be saved, run, packaged, and published without installing a desktop IDE.
You can use a physical device or the built-in virtual device, and pick between a generic MicroPythonOS device skin or the Fri3d Camp 2026 badge skin. Projects can be saved, run, packaged, and published without installing a desktop IDE.

Support for other MicroPython devices is welcome, but the Fri3d badge experience is the product priority.
The Fri3d Camp badge is one supported device among others; support for additional MicroPython/MicroPythonOS hardware is welcome.

> **Release status: Beta.** The core workflows are available, while the project is expanding automated browser coverage and its tested hardware/firmware matrix. Back up important badge files before destructive operations.
> **Release status: Beta.** The core workflows are available, while the project is expanding automated browser coverage and its tested hardware/firmware matrix. Back up important device files before destructive operations.

## Five-minute quick start

No desktop IDE or physical badge is required for the virtual path.
No desktop IDE or physical device is required for the virtual path.

1. Open [Fri3d-IDE](https://fri3dcamp.github.io/Fri3d-IDE/) in a current Chromium-based browser.
2. In the connection menu, choose **Connect to virtual badge**. Accept the preview notice.
1. Open [MicroPythonOS IDE](https://drskunk.github.io/MicroPythonOS-IDE/) in a current Chromium-based browser.
2. In the connection menu, choose **Connect to virtual device**. Accept the preview notice.
3. Open **Apps**, create an app, and select the **Hello World** template.
4. Open the generated Python file, make a small change, and select **Save & Run**.
5. Confirm the change on the badge, then launch the app from the Apps panel.
5. Confirm the change on the device, then launch the app from the Apps panel.

For a real badge, connect it with a data-capable USB-C cable, choose **USB/Serial**, and select the badge in the browser permission dialog. Web Serial and Web Bluetooth require HTTPS or `localhost`.
For a real device, connect it with a data-capable USB-C cable, choose **USB/Serial**, and select the device in the browser permission dialog. Web Serial and Web Bluetooth require HTTPS or `localhost`.

## What it includes

- **Create:** CodeMirror editor, multiple tabs, Python formatting and in-browser Ruff analysis.
- **Get started:** Task-based onboarding for connecting, trying the virtual badge, building a first app, or installing from BadgeHub.
- **Connect:** USB/Serial, Bluetooth, WebREPL/WebSocket, WebRTC relay, and a virtual Fri3d badge.
- **Get started:** Task-based onboarding for connecting, trying the virtual device, building a first app, or installing from BadgeHub.
- **Connect:** USB/Serial, Bluetooth, WebREPL/WebSocket, WebRTC relay, and a virtual MicroPythonOS device (generic skin or Fri3d Camp 2026 badge skin).
- **Operate:** Terminal/REPL, device files, screenshots, package management, and reconnect handling.
- **Build apps:** MicroPythonOS templates, icons, manifests, install/uninstall, and MPK import/export.
- **Publish:** BadgeHub sign-in, compatibility metadata, draft upload, and publishing.
- **Use anywhere:** Localization, responsive UI, installable PWA, and offline shell support.
- **Get support:** Copy a privacy-safe diagnostics report from the About panel.

Device access has explicit states for permission, connection, synchronization, ready, busy, recovery, and errors. Write operations are enabled only when the badge is ready.
Device access has explicit states for permission, connection, synchronization, ready, busy, recovery, and errors. Write operations are enabled only when the device is ready.

## Compatibility

This table describes current implementation support, not a completed certification matrix. If a combination is not listed as tested, treat it as experimental and include your browser, operating system, badge revision, and firmware version when reporting issues.
This table describes current implementation support, not a completed certification matrix. If a combination is not listed as tested, treat it as experimental and include your browser, operating system, device revision, and firmware version when reporting issues.

| Environment | USB/Serial | Bluetooth | WebREPL/relay | Virtual badge |
| Environment | USB/Serial | Bluetooth | WebREPL/relay | Virtual device |
| --- | --- | --- | --- | --- |
| Chrome / Edge on Windows, macOS, Linux, ChromeOS | Supported API path | Supported API path | Available | Available |
| Other Chromium browsers | Experimental | Experimental | Available | Available |
| Firefox | Not supported by browser | Not supported by browser | Experimental | Available |
| Safari on macOS | Not supported by browser | Not supported by browser | Experimental | Available |
| iPhone / iPad browsers | Not supported | Not supported | Experimental | Preview only |

### Badge and firmware scope
### Device and firmware scope

| Target | Status | Notes |
| --- | --- | --- |
| Fri3d Camp 2026 + MicroPythonOS | Primary | Virtual badge models this target; physical compatibility testing is ongoing. |
| MicroPythonOS (generic device) | Primary | Virtual device models this target; physical compatibility testing is ongoing. |
| Fri3d Camp 2026 badge + MicroPythonOS | Primary | The virtual device includes a matching skin; physical compatibility testing is ongoing. |
| Fri3d Camp 2022 / 2024 | Experimental | BadgeHub recognizes these targets, but capabilities depend on installed firmware. |
| Other MicroPython boards | Experimental | Editor, terminal, files, and packages may work; Fri3d app workflows can require MicroPythonOS. |
| Other MicroPython boards | Experimental | Editor, terminal, files, and packages may work; MicroPythonOS app workflows require the `mpos` module. |

There is not yet a published minimum firmware version. Until the matrix is certified, use the firmware recommended by the relevant Fri3d badge documentation and report the exact version with any issue.
There is not yet a published minimum firmware version. Until the matrix is certified, use the firmware recommended by the relevant device's documentation and report the exact version with any issue.

### Real versus virtual badge
### Real versus virtual device

The virtual badge runs MicroPythonOS in the browser and is useful for onboarding, app UI work, workshops, and repeatable testing. It does not fully reproduce Wi-Fi, sensors, audio, radio hardware, timing, or physical-device performance. Always verify hardware-dependent apps on the target badge.
The virtual device runs MicroPythonOS in the browser and is useful for onboarding, app UI work, workshops, and repeatable testing. It does not fully reproduce Wi-Fi, sensors, audio, radio hardware, timing, or physical-device performance. Always verify hardware-dependent apps on the target device.

## PWA and offline use

Fri3d-IDE can be installed from a supported browser. The application shell works offline after one successful load. The virtual badge is cached when you first open it because its WebAssembly assets are large. Open it once while online before using it offline.
MicroPythonOS IDE can be installed from a supported browser. The application shell works offline after one successful load. The virtual device is cached when you first open it because its WebAssembly assets are large. Open it once while online before using it offline.

Network-dependent features remain unavailable offline, including BadgeHub, remote package downloads, authentication, and WebREPL endpoints. USB/Serial availability depends on the browser and operating system, not on internet access.

Expand Down Expand Up @@ -106,8 +107,10 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for architecture, project structure, test
- iOS browsers do not expose Web Serial or Web Bluetooth.
- Separate **Save** and **Run** commands remain available for advanced workflows; beginners can use **Save & Run**.
- Offline mode cannot provide network-backed packages, authentication, publishing, or remote connections.
- The compatibility matrix still needs repeatable testing across badge and firmware revisions.
- The compatibility matrix still needs repeatable testing across device and firmware revisions.

## Origin

Fri3d-IDE is forked from the excellent [ViperIDE](https://github.com/vshymanskyy/ViperIDE) project by [Volodymyr Shymanskyy](https://github.com/vshymanskyy).
MicroPythonOS IDE started as Fri3d-IDE, forked from the excellent [ViperIDE](https://github.com/vshymanskyy/ViperIDE) project by [Volodymyr Shymanskyy](https://github.com/vshymanskyy).

The app icon and logo mark are the MicroPythonOS project's ouroboros symbol, from [QuasiKili/MPOS-logo](https://github.com/QuasiKili/MPOS-logo) (MIT licensed).
Loading
Loading