Repository navigation
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.