Skip to content

PaperOS v1.3

Latest

Choose a tag to compare

@Artem76228 Artem76228 released this 30 Aug 13:24
9f021cf

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"> and location.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 real os/io - both shadowed by this OS's own - utf8, debug) for permanent RAM savings, and added os.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.bin directly from your browser at [esphome.io](https://web.esphome.io/) (Connect → pick the file → address 0x0).
  • Build it yourself: build with pio run -e paperos-cardputer, run merge.py to bundle the bootloader, partitions, firmware, and LittleFS into PaperOS_full.bin, then flash to address 0x0.

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