Skip to content

v3.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 19:29
· 25 commits to main since this release

TL;DR

  • A browser tab with the web UI open no longer piles up status requests. On 3.2.1 a PC waking from standby with the page open could send a burst that left the ESP8266 with under 1 KB in one piece, and restarted some devices
  • Spec 2 themes can bind to the clock and to the moon's age without a data source: time.second, time.hour, time.moon and the rest
  • The Claude usage screen can hide the 5-hour card and show the 7-day figure as one tall card with an even-pace marker
  • Update from the System tab as usual. Settings and installed themes carry over

Fixes

  • Web UI and /api/status: the page asks for the status again only after the previous answer has arrived, gives up on a lost answer after 8 seconds, and asks nothing while its tab is hidden. The device writes the status reply in 128-byte pieces instead of building it whole, with the same fields in the same order, so Home Assistant and scripts read it as before. With 6 status requests at once, the lowest free heap went from 2,296 B to 4,048 B and the largest free block from 728 B to 3,376 B. This is the cause of the idle restarts listed under Known issues in 3.2.1. Thanks @sanerdemirel (#67)
  • The web page served by the device now includes the hide-5-hour-card option. It was in the page's source but missing from the copy built into the firmware

Features

  • Themes: built-in binding sources for spec 2. A binding can name time.second, time.minute, time.hour, time.hour12, time.secondOfDay, time.day, time.month or time.weekday instead of a fetched field, with the same mapping, clamping and color stops. device.* names are reserved for values a firmware supplies; smalltv-mod supplies none yet, so such a layer keeps its static value. A bound layer repaints only when its value changes. Thanks @davicorrea0 (#57)
  • Themes: time.moon, the moon's age in whole days, 0 to 29, computed on the device with no network. It is within a day of the real new and full moon; the docs give the exact error. Thanks @sanerdemirel (#66)
  • Claude usage: Hide the 5-hour usage card in the Clawdmeter tab. The stats screen then shows one 7-day card with a white marker at the even pace, the share of the week already gone. See Claude usage

Development

  • CI fails when src/webui.h does not match src/webui.html. tools/gzip_webui.py --check decompresses the header and compares it with the page, so another zlib build does not fail it, and the tool reads the page with LF line endings on a Windows checkout too
  • CI tests the status reply byte for byte against the old one, counts its heap use, and runs the web UI's polling code under a fake clock

Pull requests in this release

  • #57 feat(theme): time.* and device.* built-in binding sources for spec 2, by @davicorrea0
  • #66 feat(theme): time.moon, the moon's age as a built-in binding source, by @sanerdemirel
  • #67 fix(web): poll the status one request at a time, and send it in pieces, by @sanerdemirel

Tested

  • Updated from 3.2.1 over the web page on an ESP8266 SmallTV with the standard image: every setting unchanged, the served page identical to webui.html, the hide-5-hour option switched on and off
  • 10 rounds of 6 parallel GET /api/status on that device: no restart, lowest free heap 4,048 B, largest block 3,376 B. The same test on 3.2.1 gave 2,296 B and 728 B
  • A spec 2 test theme bound to time.second, time.minute, time.hour, time.moon and device.temperature installed and drew each bar at the expected length; the device.temperature bar stayed at its static width
  • Updated from 3.1.1 on an ESP8266 SmallTV with the lean image: every setting unchanged; the same burst test gave no restart and 22,536 B lowest free heap
  • @sanerdemirel ran #67 on a SmallTV-Ultra with Pixel Room and 4 themes installed: 6 parallel status reads left 4,064-5,216 B free, against 2,352-2,784 B on 3.2.1
  • The ESP32 images (c2, esp32, esp32-wg, esp32-pro) are built and size-checked by CI but were not run on a device for this release

Known issues

  • A client that requests the theme list and then stops reading can stall the ESP8266 web server and, with a theme running, restart it. 3.2.1 has the same behaviour. A fix is being prepared as its own pull request

Upgrading

Update from the System tab ("Check for latest", then "Update now"), or download the image for your board from the assets below. See Which release file to download. Settings and installed themes carry over.

Full Changelog: v3.2.1...v3.3.0