| Age | Commit message (Expand) | Author | Files | Lines |
| 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 |
| 2026-06-13 | M7: touch + outbound /state POST to Scrypted | Luke Hoersten | 10 | -4/+293 |
| 2026-06-13 | M6: state machine — POST /state, idle timer, /frame 409 guard | Luke Hoersten | 4 | -8/+189 |
| 2026-06-13 | M5: POST /frame — hardware JPEG decode + orientation-aware paint | Luke Hoersten | 7 | -4/+293 |
| 2026-06-13 | M4: NVS-backed /config with partial updates + validation | Luke Hoersten | 4 | -13/+362 |
| 2026-06-13 | M3: display driver (Pi-style DSI panel: TC358762 + ATTINY MCU) | Luke Hoersten | 4 | -2/+317 |
| 2026-06-13 | M2: HTTP server + mDNS service discovery + shared state | Luke Hoersten | 9 | -6/+295 |
| 2026-06-13 | M1: Ethernet bring-up | Luke Hoersten | 4 | -12/+197 |
| 2026-06-13 | Switch scaffold to C; update boot TODOs to match current spec | Luke Hoersten | 1 | -4/+4 |
| 2026-06-13 | Initial Scrypted Viewport scaffold | Luke Hoersten | 2 | -0/+24 |