| Age | Commit message (Expand) | Author | Files | Lines |
| 3 days | main: code-review fixes — brightness units, OTA stall cap, stats + locking | Luke Hoersten | 1 | -18/+41 |
| 5 days | temp: report on-die temperature in /state and the info screen | Luke Hoersten | 1 | -0/+9 |
| 5 days | display: tear-free frame path via triple buffering + scan tracking | Luke Hoersten | 1 | -0/+5 |
| 5 days | stream: instrument TCP-window decomposition (wire kbps, hdr_gap, pend_age) | Luke Hoersten | 1 | -0/+11 |
| 2026-06-20 | firmware: split stream recv into its own task with 3-buffer ping-pong | Luke Hoersten | 1 | -1/+5 |
| 2026-06-20 | firmware: recv-throughput instrumentation (FIONREAD pre-body, recv() call/chu... | Luke Hoersten | 1 | -0/+11 |
| 2026-06-20 | firmware: OTA firmware updates via POST /firmware + rollback | Luke Hoersten | 1 | -1/+165 |
| 2026-06-20 | phase 4: glass-to-glass via 16-byte stream header + /state stream stats | Luke Hoersten | 1 | -0/+30 |
| 2026-06-20 | cleanup phase 2: delete HTTP-streaming-era dead code | Luke Hoersten | 1 | -121/+21 |
| 2026-06-20 | cleanup phase 1: stale-comment refresh, zero behavior change | Luke Hoersten | 1 | -44/+49 |
| 2026-06-19 | firmware: build fixes — esp_app_format component + forward-declare s_last_p... | Luke Hoersten | 1 | -11/+6 |
| 2026-06-19 | disable Nagle on /frame socket + add min/max/worst-frame to script log | Luke Hoersten | 1 | -0/+14 |
| 2026-06-19 | unified end-to-end per-frame instrumentation + version stamps | Luke Hoersten | 1 | -0/+16 |
| 2026-06-15 | add X-Frame-Seq monotonic ordering for pipelined /frame POSTs | Luke Hoersten | 1 | -1/+44 |
| 2026-06-15 | pipeline two /frame POSTs + HTTP keep-alive on the Scrypted side | Luke Hoersten | 1 | -0/+6 |
| 2026-06-15 | instrumentation: firmware idle gap between frames + Scrypted per-fetch wall-c... | Luke Hoersten | 1 | -5/+22 |
| 2026-06-15 | firmware: double-buffer the panel + zero-copy decode → ~22 fps ceiling | Luke Hoersten | 1 | -3/+7 |
| 2026-06-15 | scrypted: don't reset idle timer on each painted frame + finer timing | Luke Hoersten | 1 | -8/+23 |
| 2026-06-15 | http_api: log per-frame timing breakdown every 10 frames (recv / decode / paint) | Luke Hoersten | 1 | -0/+21 |
| 2026-06-15 | firmware: zero-copy JPEG → BGR888 → DSI hot path; Scrypted pre-rotates | Luke Hoersten | 1 | -5/+14 |
| 2026-06-14 | Default name = MAC; brief wake on boot; drop dead touch defences | Luke Hoersten | 1 | -8/+8 |
| 2026-06-14 | Tidy: delete dead code, inline single-use helpers, fix double-lock | Luke Hoersten | 1 | -31/+7 |
| 2026-06-14 | Drop VIEWPORT_STATE_UNCONFIGURED — state is just awake/asleep | Luke Hoersten | 1 | -15/+3 |
| 2026-06-14 | http_api: bump httpd stack to 8 KiB — POST /config was overflowing | Luke Hoersten | 1 | -0/+5 |
| 2026-06-13 | M6: state machine — POST /state, idle timer, /frame 409 guard | Luke Hoersten | 1 | -1/+60 |
| 2026-06-13 | M5: POST /frame — hardware JPEG decode + orientation-aware paint | Luke Hoersten | 1 | -1/+107 |
| 2026-06-13 | M4: NVS-backed /config with partial updates + validation | Luke Hoersten | 1 | -10/+223 |
| 2026-06-13 | M2: HTTP server + mDNS service discovery + shared state | Luke Hoersten | 1 | -0/+93 |