| Age | Commit message (Expand) | Author | Files | Lines |
| 3 days | release: v1.4.0v1.4.0 | Luke Hoersten | 1 | -1/+1 |
| 3 days | main: advertise mac in mDNS TXT | Luke Hoersten | 1 | -0/+5 |
| 3 days | main: code-review fixes — brightness units, OTA stall cap, stats + locking | Luke Hoersten | 14 | -102/+143 |
| 5 days | release: v1.3.2v1.3.2 | Luke Hoersten | 1 | -1/+1 |
| 5 days | screens: raise INFO_MAX_LINES 16 -> 20 (temp line was silently dropped) | Luke Hoersten | 1 | -1/+3 |
| 5 days | temp: report on-die temperature in /state and the info screen | Luke Hoersten | 6 | -3/+70 |
| 5 days | display: tear-free frame path via triple buffering + scan tracking | Luke Hoersten | 3 | -23/+101 |
| 5 days | release: v1.3.1v1.3.1 | Luke Hoersten | 1 | -1/+1 |
| 5 days | stream: instrument TCP-window decomposition (wire kbps, hdr_gap, pend_age) | Luke Hoersten | 3 | -4/+117 |
| 2026-07-01 | release: v1.3.0v1.3.0 | Luke Hoersten | 1 | -1/+1 |
| 2026-06-30 | firmware: clear panel to Loading screen on new stream connection | Luke Hoersten | 1 | -0/+15 |
| 2026-06-20 | firmware: split stream recv into its own task with 3-buffer ping-pong | Luke Hoersten | 5 | -246/+416 |
| 2026-06-20 | firmware: recv-throughput instrumentation (FIONREAD pre-body, recv() call/chu... | Luke Hoersten | 3 | -6/+104 |
| 2026-06-20 | firmware: OTA firmware updates via POST /firmware + rollback | Luke Hoersten | 6 | -5/+242 |
| 2026-06-20 | firmware: live-update last_paint_event_us_low so /state g2g reflects real fra... | Luke Hoersten | 1 | -1/+12 |
| 2026-06-20 | phase 6: performance review playbook in TESTING.md + UDP-vs-TCP rationale in ... | Luke Hoersten | 1 | -0/+23 |
| 2026-06-20 | phase 4: glass-to-glass via 16-byte stream header + /state stream stats | Luke Hoersten | 4 | -10/+158 |
| 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 | 2 | -51/+52 |
| 2026-06-20 | release: v1.0.0 — streaming pivot completev1.0.0 | Luke Hoersten | 1 | -1/+1 |
| 2026-06-20 | "paint the latest, drop the rest" — FIONREAD skip + Scrypted backpressure-b... | Luke Hoersten | 1 | -0/+14 |
| 2026-06-20 | faster snapshot + deeper firmware timing + camera substream UI control | Luke Hoersten | 1 | -14/+67 |
| 2026-06-19 | streaming pivot: raw TCP data plane, drop per-frame HTTP entirely | Luke Hoersten | 3 | -1/+269 |
| 2026-06-19 | firmware: build fixes — esp_app_format component + forward-declare s_last_p... | Luke Hoersten | 2 | -14/+9 |
| 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 | 2 | -1/+23 |
| 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 | 5 | -35/+92 |
| 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 | 5 | -19/+48 |
| 2026-06-14 | state_machine: wait one panel-refresh after paint before lighting backlight (... | Luke Hoersten | 1 | -5/+9 |
| 2026-06-14 | state_machine: paint placeholder before wake — no more stale-frame flash | Luke Hoersten | 1 | -2/+4 |
| 2026-06-14 | Default name = MAC; brief wake on boot; drop dead touch defences | Luke Hoersten | 10 | -107/+70 |
| 2026-06-14 | touch: wake on boot — FT5426 only reports while LCD is streaming + lit | Luke Hoersten | 2 | -32/+57 |
| 2026-06-14 | touch: retry + hard-reset when FT5426 boots into wedged 0xff state | Luke Hoersten | 3 | -2/+48 |
| 2026-06-14 | Tidy: delete dead code, inline single-use helpers, fix double-lock | Luke Hoersten | 12 | -215/+89 |
| 2026-06-14 | Drop VIEWPORT_STATE_UNCONFIGURED — state is just awake/asleep | Luke Hoersten | 6 | -31/+14 |
| 2026-06-14 | M5 colors fixed: JPEG byte order + DPI memory layout | Luke Hoersten | 2 | -10/+13 |
| 2026-06-14 | Info screen: full /config + /state dump, replaces identity screen | Luke Hoersten | 6 | -61/+165 |
| 2026-06-14 | touch: drop factory-reset gesture | Luke Hoersten | 1 | -22/+5 |
| 2026-06-14 | http_api: bump httpd stack to 8 KiB — POST /config was overflowing | Luke Hoersten | 1 | -0/+5 |
| 2026-06-14 | M3 done: drop boot test, fold BOOT button into touch long-press | Luke Hoersten | 5 | -165/+66 |
| 2026-06-14 | M3: panel renders — TC358762 bridge init + non-burst DSI | Luke Hoersten | 2 | -135/+222 |
| 2026-06-14 | M3 WIP: DSI bring-up + state machine + identity overlay | Luke Hoersten | 9 | -133/+282 |
| 2026-06-14 | M1+M2 hardware bring-up: 3 fixes + elegant subsystem degradation | Luke Hoersten | 3 | -58/+104 |
| 2026-06-14 | Identity screen: name + hostname + IP + state, auto-scaled | Luke Hoersten | 2 | -14/+86 |
| 2026-06-13 | M8: local screens (IP + Loading) + BOOT button | Luke Hoersten | 6 | -6/+345 |