| Age | Commit message (Expand) | Author |
| 2026-05-20 | test: fix Playwright Layer 2 tests - all 13 passingfeature/display-fix | Your Name |
| 2026-05-19 | fix: transition display to ERROR after WiFi retries exhausted | Your Name |
| 2026-05-19 | feat: web-based WiFi setup via captive portal, portrait-only display | Your Name |
| 2026-05-18 | feat: integrate touchscreen WiFi setup into display UI | Your Name |
| 2026-05-18 | Sync display with live TollGate state | Your Name |
| 2026-05-18 | Implement full TollGate display UI | Your Name |
| 2026-05-18 | feat: ContextVM (MCP over Nostr) server with WS masking fix | Your Name |
| 2026-05-18 | fix: move MAC set after wifi_set_mode, start services without STA | Your Name |
| 2026-05-17 | feat: per-client NAT filtering via LWIP_HOOK_IP4_CANFORWARD | Your Name |
| 2026-05-17 | Bug fixes: reset_auth clears sessions, port 80 /usage shows real data, metric... | Your Name |
| 2026-05-17 | Phase 7: MCP handler (25 tests), NIP-04 encrypt/decrypt (15 tests), CVM serve... | Your Name |
| 2026-05-17 | Phase 5: Lightning auto-payout with LNURL-pay and NUT-05 melt | Your Name |
| 2026-05-17 | Phase 4: TollGate client detection + auto-payment | Your Name |
| 2026-05-16 | Phase 3: Nostr identity derivation + wifistr service discovery | Your Name |
| 2026-05-16 | Phase 3: on-device Cashu wallet with mbedTLS secp256k1 + SPIFFS persistence +... | Your Name |
| 2026-05-16 | Fix captive portal detection on GrapheneOS + embed mint URL in portal HTML | Your Name |
| 2026-05-16 | Unique SSID/IP per board + captive detection fix + mint list in portal | Your Name |
| 2026-05-15 | Phase 2 WIP: Cashu payment endpoints, session tracking, updated checklist | Your Name |
| 2026-05-15 | Phase 1 working: captive portal, DNS hijack, NAT-based access control | Your Name |