Repository navigation
Releases: Artem76228/PaperOS
Release list
PaperOS v1.3
PaperOS v1.3 - Browser gets a real HTML/CSS layout engine, Lua gets its memory back.
What's new in v1.3:
- Browser rewritten with a small real HTML/CSS layout engine instead of a plain tag-stripper:
<style>blocks are actually parsed (tag/.class/#id→ color/bold/alignment), headings render bigger and bold, lists get real indentation and numbering, table cells are visually separated,<hr>draws an actual line. - Browser:
<meta http-equiv="refresh">andlocation.href = "..."JS-redirect pages are auto-followed (no JS executed, pattern matching only, loop-safe). - Browser: 3 tabs with independent back/forward history, find-in-page (
F), page outline (O), an in-app help screen (?), and images on a page can now be downloaded to SD and opened in the File Manager's viewer (I). - Lua: WiFi now powers off automatically while the Lua app is open (reclaims ~40-70KB it otherwise sits on all session, no PSRAM on this board) and reconnects on its own the moment a script actually calls
net.get/net.post/net.connect/net.scan- nothing to change in how scripts are written. - Lua: dropped unused real-Lua stdlib modules (
package, the realos/io- both shadowed by this OS's own -utf8,debug) for permanent RAM savings, and addedos.stack()to measure real task-stack headroom instead of guessing. - Updated Lua reference:
paperos_lua_reference_v1_3.txt.
Get it running:
- No build needed: search "PaperOS" in the M5Burner app and flash straight from there, or flash
PaperOS_full_v1.3.bindirectly from your browser at [esphome.io](https://web.esphome.io/) (Connect → pick the file → address0x0). - Build it yourself: build with
pio run -e paperos-cardputer, runmerge.pyto bundle the bootloader, partitions, firmware, and LittleFS intoPaperOS_full.bin, then flash to address0x0.
If updating from an older build, do a full reflash rather than an incremental update. Keep a FAT32 SD card inserted before first boot.
Known issues / Workarounds:
- Music player may crash after long sessions due to buffer overflow. Reboot the device if this happens.
- Browser runs slow on heavy web pages, and sites with aggressive bot/CDN protection (e.g. Reddit) may return blocked or garbled responses - no gzip/brotli decompression or browser-fingerprint spoofing.
- Browser: a
<td>'s own color correctly overrides its parent<tr>'s but doesn't restore it afterward (reverts to page default) - known, harmless simplification, not a crash. - Lua: the 16KB task stack is unchanged this release - use
os.stack()to measure real headroom before considering shrinking it yourself. - myAI text generation speed is limited by SD card read speeds.
Assets
PaperOS v1.2
PaperOS v1.2 — Music Player freedom, Wi-Fi Scanner, and updated Lua API reference.
What's new in v1.2:
- Music Player overhaul: removed strict folder limitations. You can now browse, select, and play WAV/MP3 files from any directory on your SD card.
- Wi-Fi Scanner in Settings: added an automatic network scanner. No more typing SSIDs manually on the Cardputer's small keyboard!
- Updated Lua Reference: updated
paperos_lua_reference_v1_2_verified.txtto fully document memory budgets, PSRAM absence caveats, and confirmed HTTP/HTTPS constraints.
Flashing & Setup:
- Flash
PaperOS_full_v1.2.bin(orPaperOSv1.2.zip) to address0x0(full reflash recommended if upgrading from older builds). - Alternatively, search for "PaperOS" in the M5Burner app.
- Make sure to insert a FAT32-formatted SD card before first boot.
Known issues / Workarounds:
- Music Player: long listening sessions with many file switches may cause a crash/freeze due to buffer overflow under heap pressure. A simple device reboot fixes it for now while a permanent patch is being worked on.
- Browser: remains slow on heavy web pages due to hardware rendering and parsing limits.
- myAI: inference speed is strictly limited by SD card read speeds (small model by design).
PaperOS v1.1
PaperOS v1.1 - Store, HTTPS, and a round of Lua interpreter fixes.
What's new: a native Store app for browsing/installing Lua apps straight
from GitHub, HTTPS support for net.get/net.post,
and the SD card layout unified under /PaperOS/.
Also fixed a handful of Lua interpreter bugs found during hardware testing:
a memory-corruption bug in timer.every()/timer.after() when a timer
scheduled another timer from inside its own callback, a stuck interrupt
flag that made the command right after Ctrl+C fail with a spurious error,
net.scan() hard-blocking with no way to interrupt it, and GPIO calls having
no protection against scripts stomping on board-internal pins (keyboard,
SD bus, display, audio) - that last one now raises a clear error instead
of corrupting board state.
Flash PaperOS_full.bin to address 0x0 (full flash, not incremental).
Setup instructions, SD card folder layout, and the full Lua API changelog
are in the README. You'll need PaperEMU.extension for Games to work (same
as before), and your own model.bin on the SD card root for myAI.
Known rough edges (also in the README): browser is slow on big pages, myAI
gives short/sometimes-broken replies (small model, slow by design), Lua has
had a solid hardware test pass this round but heavier scripts are still
appreciated as bug reports if something's off.
PaperOS v1.0. First release.
First public release of PaperOS.
What's in it: launcher, file manager, Paint, a text-only browser, NES/GB/GBC
game emulation, an offline AI chat (myAI), a 3D mesh editor, and a full Lua
5.4 scripting console with its own hardware API.
Flash PaperOS_full.bin to address 0x0 (full flash, not incremental).
Setup instructions, SD card folder layout, and the full Lua API are in the README.
You'll need PaperEMU.extension for Games to work (also attached below), and
drop your own model.bin on the SD card root for myAI. Details in the README.
Known rough edges (also listed in the README): browser is slow on big pages,
myAI gives short and sometimes broken replies (small model, and it's
genuinely slow by design, not a bug), Lua hasn't been stress-tested on
heavy scripts yet. If you hit anything else, please open an issue with
what you did and what happened.