Status
Stable. Ships in a clean factory-default state. Confirmed working on RP2040, RP2350, and ESP32-S3.
What's new since v0.8.0-rc4
Bug fixes
lsno longer changes your working directory. Runningls /Corepreviously left you inside/Coreafter it finished. Fixed by usinguos.listdir(target)directly.- POST beeper crash fixed. If beeper was enabled in settings but
beeper_pinwas stillNone,post.pycrashed with aNameError.beeperis now initialized toFalseat module level. - POST registry creation handles missing
/Nebula/parent. On a completely fresh filesystem,check_registry()now creates/Nebula/before creating/Nebula/Registry/. - Boot-clock crash sentinel now shows a login message. Startup mode
7(device crashed while applying boot clock) now has an entry in_STARTUP_MSGSand displays a warning at login. Previously the sentinel was cleared by POST but no notification reached the user.
Registry overhaul
- Config caching:
regedit.pynow caches the parsed config in memory. Repeatedread()calls no longer re-parse the file from disk. - Removed dead code: The unused XOR-encrypted user store (
user.dat) removed fromregedit.py. Onlyusrmgmt.py/user.cfghandles users now. - f-strings removed: All f-strings in
regedit.pyreplaced with.format()for broader firmware compatibility.
Stability fixes
- Fixed
recovery_mode()crash:initialization.pywas calling an undefinedrecovery()function — now dispatches correctly. - GC optimization: Redundant double/triple
gc.collect()calls removed across the codebase. Faster and just as effective. - Removed unused
import randomfrommain.py— small free RAM at boot.
Serial file transfer (_xfer)
New critical inline command added to the _CRITICAL dict alongside reboot, sreboot, freeup, gc. Receives files over serial using base64 — used by the web package browser and browser update page to push files to a running device without touching the raw REPL or requiring WiFi.
Web package browser
packages.html now uses the _xfer serial protocol instead of raw REPL. The browser package browser was available in rc4 but required the device to be in REPL mode. It now installs to a running Launchpad shell — no mode switch, no reboot. HTTPS auto-translation added for Chromium mixed-content compliance. All website JS moved to js/; CSS unified into style.css.
Log directory auto-creation
POST now creates /Nebula/Logs/ automatically. Was listed as “what’s next” in rc4 — done.
OS management commands
Three new shell commands for managing the OS lifecycle. All require an explicit typed confirmation.
update from-file <path>— applies a.rpcarchive to the running OS. Skips/Users/and/Nebula/entirely so accounts, WiFi credentials, and config are preserved. Sets a crash sentinel before writing. Reboots when done.factoryreset— soft reset: wipes user accounts, home dirs, non-builtin packages, and logs. OS files untouched. TypeCONFIRM. Reboots into first-run setup.reinstall— full OS wipe: deletes/Core/,/Packages/,/Nebula/,/Users/, writes a reinstall stub asmain.py, reboots. TypeWIPE. Optionally stage a.rpcfor auto-install:reinstall /path/to/os.rpc.
Supporting infrastructure: Core/rpc_install.py (streaming two-pass ZIP extractor, peak RAM = largest single file not archive size) and Core/rpc_stub.py (self-contained boot stub, no Core/ imports needed).
Browser OS update page
New update.html: update from a browser tab while the device is running. Loads a .rpc with JSZip, skips user data, pushes files via _xfer, sends reboot at the end. No raw REPL, no WiFi. Source: server version picker or a local file.
First-run setup improvements
- Official package repo added automatically — no prompt, no opt-in needed.
guestaccount created silently.- New setup question: verbose boot preference (on/off). Was previously only settable after login.
- Post-update notification: on first login after a successful
update from-file, the shell shows a one-time confirmation banner and clears itself.
Installation
Fresh install: Use the Web Installer — flash from your browser, no software needed.
Updating from rc4: Use the OS Update page or run update from-file /path/to/os.rpc from the shell. User data is preserved.
Manual: Flash MicroPython v1.20+, copy release files to the board, connect at 115200 baud, reboot.
Known Limitations
Same as v0.8.0-rc4 except /Nebula/Logs/ manual creation is no longer needed — POST handles it.
- MemoryError may occur in the shell after heavy use due to heap fragmentation.
freeupcompacts;rebootclears. - ESP32-S3 temperature sensor reports unrealistic values (~300–450 °C). Hardware calibration difference, not an RPCortex bug.
- No real-time clock on base Pico:
dateshows time since boot epoch until RTC is set. - HTTPS on Pico 1 W needs ~9.5 KB contiguous heap. Run
freeupfirst if fragmented. - WiFi passwords stored plaintext in the registry. No secure enclave on this hardware.
- The editor requires a real terminal emulator — Thonny REPL won’t render it.
What's Next
- Tab completion
- Shell aliases
- SD card support
update check— online update check (reserved, not yet implemented)- Unified user system
RPCortex Nebula v0.8.1-beta2 • by dash1101. Issues and PRs welcome.