diff --git a/CHANGELOG.md b/CHANGELOG.md index a312d275..ac0787f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ba49e25f..18594532 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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: @@ -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. @@ -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: @@ -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: @@ -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: @@ -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: @@ -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: @@ -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 @@ -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! diff --git a/README.md b/README.md index 1bf8e327..21759729 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,54 @@ -# 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 | @@ -56,23 +56,24 @@ This table describes current implementation support, not a completed certificati | 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. @@ -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). diff --git a/SECURITY.md b/SECURITY.md index e3f19516..63f69a25 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,13 +2,13 @@ ## Reporting a vulnerability -Please report vulnerabilities privately through [GitHub Security Advisories](https://github.com/Fri3dCamp/Fri3d-IDE/security/advisories/new). Do not include badge credentials, Wi-Fi passwords, BadgeHub tokens, private source files, or terminal logs in a public issue. +Please report vulnerabilities privately through [GitHub Security Advisories](https://github.com/DrSkunk/MicroPythonOS-IDE/security/advisories/new). Do not include device credentials, Wi-Fi passwords, BadgeHub tokens, private source files, or terminal logs in a public issue. -For ordinary bugs without sensitive information, use the [public issue tracker](https://github.com/Fri3dCamp/Fri3d-IDE/issues). +For ordinary bugs without sensitive information, use the [public issue tracker](https://github.com/DrSkunk/MicroPythonOS-IDE/issues). ## Trust boundaries -Fri3d-IDE runs in the browser and can communicate with a physical or virtual badge. Users should treat these inputs as untrusted: +MicroPythonOS IDE runs in the browser and can communicate with a physical or virtual device. Users should treat these inputs as untrusted: - MPK archives and files selected for upload - BadgeHub descriptions, metadata, icons, and downloads @@ -16,12 +16,12 @@ Fri3d-IDE runs in the browser and can communicate with a physical or virtual bad - Device filenames, file contents, terminal output, and firmware responses - WebREPL, WebSocket, WebRTC, USB, and Bluetooth peers -The IDE must validate archive paths and layouts, reject traversal outside the intended app directory, limit archive expansion, sanitize rendered HTML, and avoid placing credentials in logs or diagnostics. An installed third-party app executes on the badge with the permissions provided by its firmware; the IDE does not sandbox badge applications. +The IDE must validate archive paths and layouts, reject traversal outside the intended app directory, limit archive expansion, sanitize rendered HTML, and avoid placing credentials in logs or diagnostics. An installed third-party app executes on the device with the permissions provided by its firmware; the IDE does not sandbox device applications. ## Diagnostics privacy -The **Copy diagnostics** action reports the IDE build, browser capabilities, connection type, detected badge/firmware, PWA state, and selected app identifier. It deliberately excludes source files, terminal output, connection URLs, authentication tokens, passwords, and account details. Review the report before attaching it to an issue. +The **Copy diagnostics** action reports the IDE build, browser capabilities, connection type, detected device/firmware, PWA state, and selected app identifier. It deliberately excludes source files, terminal output, connection URLs, authentication tokens, passwords, and account details. Review the report before attaching it to an issue. ## Deployment guidance -Deploy Fri3d-IDE over HTTPS. Configure security headers at the hosting layer, including a Content Security Policy compatible with the explicitly configured BadgeHub, authentication, WebREPL, relay, WebAssembly, worker, and image endpoints. Test device transports and PWA updates after changing those headers; an overly narrow policy can silently disable required browser APIs. +Deploy MicroPythonOS IDE over HTTPS. Configure security headers at the hosting layer, including a Content Security Policy compatible with the explicitly configured BadgeHub, authentication, WebREPL, relay, WebAssembly, worker, and image endpoints. Test device transports and PWA updates after changing those headers; an overly narrow policy can silently disable required browser APIs. diff --git a/e2e/first_app_guide.spec.ts b/e2e/first_app_guide.spec.ts index aece6544..2dd9c1eb 100644 --- a/e2e/first_app_guide.spec.ts +++ b/e2e/first_app_guide.spec.ts @@ -5,7 +5,7 @@ import { expect, test, type Page } from '@playwright/test' test.use({ actionTimeout: 15_000 }) const APP_ID = 'com.example.sparkgame' -const BADGE_IFRAME = '#virtual-badge-panel iframe[title="MicroPythonOS virtual badge"]' +const BADGE_IFRAME = '#virtual-badge-panel iframe[title="MicroPythonOS virtual device"]' /** Snapshot the badge screen pixels via the same-origin iframe canvas. */ async function badgeScreenSnapshot(page: Page): Promise { @@ -53,19 +53,19 @@ async function completeGuideStep(page: Page, stepNumber: number, totalSteps: num await expect(guide.getByRole('status')).toContainText('Code looks good', { timeout: 60_000 }) } -test('first-app guide builds a joystick game on the virtual badge', async ({ page }) => { +test('first-app guide builds a joystick game on the virtual device', async ({ page }) => { test.setTimeout(420_000) await page.goto('./') - // Onboarding: build my first app on the virtual badge, started from the + // Onboarding: build my first app on the virtual device, started from the // Welcome tab (the side menu repeats the button, so scope to the tab panel). const welcome = page.getByRole('tabpanel').filter({ - has: page.getByRole('heading', { name: 'Welcome to Fri3d-IDE' }), + has: page.getByRole('heading', { name: 'Welcome to MicroPythonOS IDE' }), }) await welcome.getByRole('button', { name: /Build my first app/ }).click() const targetChoice = page.getByRole('dialog', { name: 'Where should the app run?' }) - await targetChoice.getByRole('button', { name: /Virtual badge/ }).click() - // Virtual badge preview disclaimer. + await targetChoice.getByRole('button', { name: /Virtual device/ }).click() + // Virtual device preview disclaimer. await page.getByRole('button', { name: 'Confirm' }).click() await expect(page.locator(BADGE_IFRAME)).toBeVisible({ timeout: 30_000 }) diff --git a/e2e/production.spec.ts b/e2e/production.spec.ts index 1de5cea5..da697a08 100644 --- a/e2e/production.spec.ts +++ b/e2e/production.spec.ts @@ -3,8 +3,11 @@ import { expect, test, type Page, type Request } from '@playwright/test' const BADGEHUB_AUTH_CONSOLE_ERRORS = [ 'Failed to load resource: the server responded with a status of 403', 'Keycloak init failed', + /^Refused to display 'https:\/\/keycloak\.badgehub\.eu\/' in a frame because it set 'X-Frame-Options' to 'sameorigin'\.$/, ] +type AllowedConsoleError = string | RegExp + interface BrowserProblems { consoleErrors: string[] pageErrors: string[] @@ -39,13 +42,13 @@ function isApplicationAsset(request: Request, page: Page): boolean { /** The Welcome tab greets every fresh session in the editor area. */ function welcomeTab(page: Page) { return page.getByRole('tabpanel').filter({ - has: page.getByRole('heading', { name: 'Welcome to Fri3d-IDE' }), + has: page.getByRole('heading', { name: 'Welcome to MicroPythonOS IDE' }), }) } function expectNoBrowserProblems( problems: BrowserProblems, - allowedConsoleErrors: string[] = [], + allowedConsoleErrors: AllowedConsoleError[] = [], allowedPageErrors: string[] = [], ): void { expect( @@ -53,7 +56,9 @@ function expectNoBrowserProblems( 'uncaught browser exceptions', ).toEqual([]) expect( - problems.consoleErrors.filter((error) => !allowedConsoleErrors.some((allowed) => error.includes(allowed))), + problems.consoleErrors.filter((error) => !allowedConsoleErrors.some((allowed) => + typeof allowed === 'string' ? error.includes(allowed) : allowed.test(error), + )), 'browser console errors', ).toEqual([]) expect(problems.failedAssets, 'failed document, JavaScript, or stylesheet requests').toEqual([]) @@ -65,7 +70,7 @@ test('production bundle boots without runtime or asset errors', async ({ page }) const response = await page.goto('./') expect(response?.ok()).toBe(true) - await expect(page.getByText('Fri3d-IDE', { exact: true }).first()).toBeVisible() + await expect(page.getByText('MicroPythonOS IDE', { exact: true }).first()).toBeVisible() await expect(welcomeTab(page)).toBeVisible() await expect(page.getByRole('tab', { name: 'Terminal' })).toBeVisible() await page.getByRole('button', { name: 'New file' }).click() @@ -78,15 +83,15 @@ test('production metadata supports rich social previews', async ({ page }) => { await expect(page.locator('link[rel="canonical"]')).toHaveAttribute( 'href', - 'https://fri3dcamp.github.io/Fri3d-IDE/', + 'https://drskunk.github.io/MicroPythonOS-IDE/', ) await expect(page.locator('meta[property="og:title"]')).toHaveAttribute( 'content', - 'Fri3d IDE — MicroPython in your browser', + 'MicroPythonOS IDE — MicroPython in your browser', ) await expect(page.locator('meta[property="og:image"]')).toHaveAttribute( 'content', - 'https://fri3dcamp.github.io/Fri3d-IDE/social-preview.png', + 'https://drskunk.github.io/MicroPythonOS-IDE/social-preview.png', ) await expect(page.locator('meta[name="twitter:card"]')).toHaveAttribute('content', 'summary_large_image') }) @@ -172,15 +177,15 @@ test('Web Serial and Bluetooth permission cancellation is handled safely', async expectNoBrowserProblems(problems, BADGEHUB_AUTH_CONSOLE_ERRORS) }) -test('virtual badge starts in the production shell', async ({ page }) => { +test('virtual device starts in the production shell', async ({ page }) => { const problems = watchForBrowserProblems(page) await page.goto('./') await page.getByRole('tab', { name: 'File Manager' }).click() - await page.getByLabel('Side menu').getByRole('button', { name: 'Connect to virtual badge' }).click() + await page.getByLabel('Side menu').getByRole('button', { name: 'Connect to virtual device' }).click() await page.getByRole('button', { name: 'Confirm' }).click() - const badge = page.locator('#virtual-badge-panel iframe[title="MicroPythonOS virtual badge"]') + const badge = page.locator('#virtual-badge-panel iframe[title="MicroPythonOS virtual device"]') await expect(badge).toBeVisible({ timeout: 15_000 }) await expect(badge).toHaveAttribute('src', /vbadge\/index\.html/) expectNoBrowserProblems(problems, [ @@ -190,6 +195,7 @@ test('virtual badge starts in the production shell', async ({ page }) => { 'mpos.imu.drivers.iio:Error listing dir', 'Starting very limited asyncio REPL task', 'could not mark this update as valid: no module named', + /^\[vbadge stderr\] \d+:WARNING:mpos\.main:refresh_apps took \d+ ms$/, ]) }) diff --git a/index.html b/index.html index 83f331f6..cf92b35b 100644 --- a/index.html +++ b/index.html @@ -3,37 +3,37 @@ - - + + - + - - - - - + + + + + - + - - - - + + + + - - Fri3d-IDE + + MicroPythonOS IDE
diff --git a/package.json b/package.json index a03cf3e8..97cab557 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "fri3d-ide", + "name": "micropythonos-ide", "version": "1.2.4", "type": "module", "scripts": { diff --git a/playwright.config.ts b/playwright.config.ts index 6c8e16d4..2e5531bb 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,6 +1,6 @@ import { defineConfig, devices } from '@playwright/test' -const basePath = '/Fri3d-IDE/' +const basePath = '/MicroPythonOS-IDE/' const port = 4173 export default defineConfig({ diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png index f4ce8561..ecb3ad8c 100644 Binary files a/public/apple-touch-icon.png and b/public/apple-touch-icon.png differ diff --git a/public/favicon-96x96.png b/public/favicon-96x96.png index 583f2160..bea6ff57 100644 Binary files a/public/favicon-96x96.png and b/public/favicon-96x96.png differ diff --git a/public/favicon.ico b/public/favicon.ico index b71ae006..d4b428c9 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg index 0e94637d..afada542 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,11 +1,7 @@ -RealFaviconGeneratorhttps://realfavicongenerator.net - - twoline_black - - - - - twoline_black - - - \ No newline at end of file + + MicroPythonOS + + + + + diff --git a/public/vbadge/index.html b/public/vbadge/index.html index 86ef2d71..bdc2fb73 100644 --- a/public/vbadge/index.html +++ b/public/vbadge/index.html @@ -9,14 +9,20 @@ - Fri3d Camp 2026 Virtual Badge + MicroPythonOS Virtual Device - + + + + + + +