What changed in each version, newest first. Lamps update over the air
from the apps, so you are always one tap from the latest firmware.
Binaries for every board and form live on the
releases page,
or flash straight from your browser on the
PlaiiinLightOS page; the apps live on the
apps page.
Firmware — the 2.x line
v2.3.0 — model identity
Every lamp now reports modelName + modelVersion (GET /api, BLE device-info), which the apps show as the model (tower8 + v2 = tower8v2); a profile's filename is that model. The lamp name is separate: a freshly burned lamp boots as <name>-<MAC suffix> (tower8-3FA8, the same suffix as its provisioning AP) so several lamps of one model stay distinguishable, and a full factory reset restores that factory name. Lamps that OTA onto 2.3.0 keep their existing name and derive the model from it. API version 2.3.0 (additive; older clients ignore the fields).
v2.2.0 — stable device ID
Every lamp now advertises its factory MAC as a 12-hex-char id (id in the mDNS TXT record and the BLE device-info characteristic, deviceId in GET /api), so the apps and integrations recognise a lamp after it is renamed instead of treating it as a new device. API version 2.2.0 (additive; older clients ignore the field).
v2.1.2
Swarm join is refused (409) on a lamp with no WiFi connection unless the caller pins a channel, mirroring the apps' rule that only WiFi-reachable lamps can be added to a swarm. Browser flashing returns to plaiiin-light.com: every release now also publishes its flash/effects/manifest set to GitHub Pages for ESP Web Tools.
v2.1.1 — three more SoCs ship prebuilt for every form
ESP32-S3 (-esp32s3), ESP32-C6 (-esp32c6) and, experimentally, ESP32-C5 (-esp32c5, built with IDF v5.5). No on-device changes for the existing esp32 / esp32c3 fleet.
v2.1.0 — saved draw images
Image library on the lamp — save up to 30 drawn frames on the lamp itself (/api/images: list, save, show, delete); thumbnails and one-tap show in the apps and the on-device /draw page.
Carousel effect — a built-in effect that cycles the saved images as a slideshow, with tunable dwell, crossfade, and shuffle.
v2.0.1
Point release to exercise in-app firmware updates end to end; no on-device changes.
v2.0.0 — the big one
Swarm mode — masterless ESP-NOW mesh; change one lamp and the group follows, HMAC-secured, works even with no router.
Draw / frame mode — push a still pixel-art frame (POST /api/frame) that survives reboot, plus an on-device /draw pixel editor.
Plug factory reset — five fast power cycles recover a buttonless / off-network lamp (a blue flash confirms), keeping its hardware identity and recovery key.
In-app Direct OTA — a form-aware /api/ota/info lets the macOS / iOS / Android apps update a lamp wirelessly, form- and chip-checked so the wrong image can't be applied.
Firmware — the 1.9 line
v1.9.14 — smoother onboarding
The WiFi network scan works before the lamp has a connection, slow WiFi at boot no longer costs you mDNS/MQTT or the portal, and the panel and /api/state stay in agreement after setup.
v1.9.13
Prebuilt ESP32-C3 binaries for every lamp form now ship with each release, alongside the classic ESP32 set.
v1.9.12 — ESP32-C3 support lands
Build any form with --chip esp32c3; /api/ota/info now reports the chip target so updaters can't cross-flash; new shrumLight (24-LED strip) profile.
v1.9.11
Web server no longer wedges when clients leave connections half-open: stale sockets are purged (LRU) so the portal and API stay reachable.
v1.9.10 — the factory-reset recovery key is now durable
It survives reset and unpair, so a lost lamp can always be recovered.
v1.9.9 — release-pipeline rebuild; no firmware changes
v1.9.8
Recovery-key endpoints (/api/reset-key); effect next/prev no longer stalls on an uncompilable script; fire effect fixed on pixel-grouped displays.
v1.9.7
MQTT learned mode switching (color/js) and effect next/prev topics; portal root now redirects to /control; knob and switch tunes on the Scripts and Compose pages.
Apps
The macOS and Android builds are published here; the iPhone and iPad app ships through the App Store. The apps share one codebase, so a version number means the same thing on every platform, and the notes below are the ones published with each App Store release.
Apps 2.3.0
Version 2.3 shows each lamp's model and keeps lamps apart after renaming.
Model: the Devices list and lamp settings now show the lamp's model (for example tower8v2) separately from its name.
Stable identity: lamps are recognised by a permanent device ID, so renaming a lamp no longer makes it appear as a new device.
New lamps come up with a unique name (model plus a short suffix) so several lamps of the same model are easy to tell apart; rename them freely afterwards.
Version 2.0 brings Swarm, Draw, and in‑app firmware updates.
Swarm: group lamps so they play the same effect in sync. Create a swarm, rename it, add or remove members, re‑key it, and optionally show the whole swarm as one dashboard tile. Claiming a new lamp offers to add it to a swarm.
Draw: paint pixels straight onto the lamp with paint, brush, spray and fill tools, stream live while you draw, import an image, and save images on the lamp to recall later.
Firmware updates from the app: an update badge on the Devices tab and one‑tap install with progress.
Dashboard: drag tiles to reorder them.
Share tab redesigned as per‑lamp tiles.
Fixes: brightness slider no longer stalls the lamp, firmware upload timeout, clearer unpair/reset texts.
First release. Control your ESP32 LED lamps, compose effects with AI from a plain‑language description, preview them live, onboard over Bluetooth, and share lamps by key, QR, or Bluetooth. Universal for iPhone and iPad.