<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate, branch feature/display-fix</title>
<subtitle>[no description]</subtitle>
<id>https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/atom?h=feature%2Fdisplay-fix</id>
<link rel='self' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/atom?h=feature%2Fdisplay-fix'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/'/>
<updated>2026-05-19T15:04:31+00:00</updated>
<entry>
<title>docs: add Phase 5 Playwright E2E test plan for /setup page</title>
<updated>2026-05-19T15:04:31+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-19T15:04:31+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=565d6a715427ace0518f367acf3053d667479390'/>
<id>urn:sha1:565d6a715427ace0518f367acf3053d667479390</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs: update web WiFi setup plan checklist with progress</title>
<updated>2026-05-19T14:13:25+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-19T14:13:25+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=402f4f2c63f2621f4e7e587288bc106bea37857a'/>
<id>urn:sha1:402f4f2c63f2621f4e7e587288bc106bea37857a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add WiFi QR code to BOOT and ERROR screens</title>
<updated>2026-05-19T08:14:57+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-19T08:14:57+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=cf4ac1bc04a19110bca26f969245dcc9ef265890'/>
<id>urn:sha1:cf4ac1bc04a19110bca26f969245dcc9ef265890</id>
<content type='text'>
BOOT screen now shows QR code for AP WiFi + SSID + status text.
ERROR screen reorganized with QR code at top, NO UPSTREAM banner,
setup URL, and 'Scan QR to connect' hint.
</content>
</entry>
<entry>
<title>fix: transition display to ERROR after WiFi retries exhausted</title>
<updated>2026-05-19T08:03:09+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-19T08:03:09+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=2e65cdfdb582cebe6c4fa0f351df88ffe9c4c21c'/>
<id>urn:sha1:2e65cdfdb582cebe6c4fa0f351df88ffe9c4c21c</id>
<content type='text'>
Previously the display stayed at BOOT forever when WiFi was configured
but unreachable. Now uses a total retry counter (10 attempts) and
transitions to DISPLAY_ERROR with setup URL when all retries fail.
</content>
</entry>
<entry>
<title>feat: web-based WiFi setup via captive portal, portrait-only display</title>
<updated>2026-05-18T22:51:14+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-18T22:51:14+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=aa58b47996083f36e3587b8e10f9bbb681610491'/>
<id>urn:sha1:aa58b47996083f36e3587b8e10f9bbb681610491</id>
<content type='text'>
- Remove touchscreen WiFi setup (touch.c, keyboard.c, wifi_setup.c from build)
- Remove offscreen buffer and landscape rotation from axs15231b driver
- Add /setup HTML page with WiFi scan/connect via captive portal
- Add /wifi/scan, /wifi/connect, /wifi/status HTTP endpoints
- Display shows SETUP_PENDING (QR + SSID + setup URL) when unconfigured
- Display shows ERROR with setup URL when upstream is down
- All 101 unit tests pass, builds and flashes to Board C
</content>
</entry>
<entry>
<title>Fix display rotation: use stride=480 for correct framebuffer addressing</title>
<updated>2026-05-18T20:30:31+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-18T20:30:31+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=9f7dd94029c8dc12117494548f5f32221a729307'/>
<id>urn:sha1:9f7dd94029c8dc12117494548f5f32221a729307</id>
<content type='text'>
The framebuffer was using s_width as row stride, but s_width changes
after rotation (320→480). This caused buffer overflows and black screen
in landscape mode. Now uses fixed stride=480 with 480*480*2 allocation.
</content>
</entry>
<entry>
<title>Dynamic layout for WiFi setup: landscape rotation, responsive render, highlight feedback</title>
<updated>2026-05-18T20:14:11+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-18T20:14:11+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=58a0b5fd115d9687a1292e5e82e6b9fa8454b930'/>
<id>urn:sha1:58a0b5fd115d9687a1292e5e82e6b9fa8454b930</id>
<content type='text'>
- Render functions use axs15231b_get_width/height() instead of hardcoded coords
- render_wifi_setup_list: dynamic item widths, screen-relative cancel button
- render_wifi_setup_password: dynamic field/eye/keyboard from kb_get_layout()
- render_wifi_setup_result: centered on screen, dynamic button placement
- handle_wifi_setup_touch: matching dynamic hit areas, highlight_rect() feedback
- Rotation lifecycle: enter_wifi_setup_rotation/exit wired into all entry/exit paths
- display_enter_wifi_setup + READY/ERROR touch + SUCCESS auto-return + LIST cancel
- Added kb_result_t typedef to keyboard.h (was only in .c)
- Fixed test_keyboard.c: use computed offsets from kb_layout_t defaults
- All 101 unit tests pass (touch:19, keyboard:46, wifi_setup:36)
</content>
</entry>
<entry>
<title>fix: keyboard KB_START_Y must match render position (70), simplify row 3 layout</title>
<updated>2026-05-18T18:11:19+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-18T18:11:19+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=699fc6c03899c3b1ff853d8c7c6cf32173436354'/>
<id>urn:sha1:699fc6c03899c3b1ff853d8c7c6cf32173436354</id>
<content type='text'>
- KB_START_Y was 310 but keyboard rendered at y=70 — touch hits never matched
- Row 3 simplified to 3 keys: [layer/shift, space, done]
- All 362 unit tests pass
</content>
</entry>
<entry>
<title>fix: prevent IntegerDivideByZero in config_get_next_wifi when no networks</title>
<updated>2026-05-18T18:06:29+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-18T18:06:29+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=9ff7cffcff11237288cfddecee2684f499d23ddf'/>
<id>urn:sha1:9ff7cffcff11237288cfddecee2684f499d23ddf</id>
<content type='text'>
- Check network_count == 0 before modulo operation
- Disconnect STA before WiFi scan to avoid 'STA is connecting, scan not allowed'
- Add error handling for failed WiFi scans
- This fixes the crash/restart loop on Board C with no configured WiFi
</content>
</entry>
<entry>
<title>feat: integrate touchscreen WiFi setup into display UI</title>
<updated>2026-05-18T17:25:37+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-18T17:25:37+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=46e7dabaf80333ca045061ff480377a4186e5deb'/>
<id>urn:sha1:46e7dabaf80333ca045061ff480377a4186e5deb</id>
<content type='text'>
- Add DISPLAY_WIFI_SETUP state with full rendering pipeline
- Touch init on display_init(), touch polling in display task
- WiFi scan triggered on setup entry, sorted AP list
- On-screen keyboard for password entry
- Connect result via WiFi event notifications
- Setup button on READY and ERROR screens
- Auto-enter WiFi setup on first boot with no credentials
- Save new WiFi credentials to SPIFFS config.json
</content>
</entry>
</feed>
