<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/tests, branch master</title>
<subtitle>[no description]</subtitle>
<id>https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/atom?h=master</id>
<link rel='self' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/'/>
<updated>2026-05-22T20:48:41+00:00</updated>
<entry>
<title>chore: fix unit test build rules, add relay_selector+relay_validator tests, persist core extraction plan</title>
<updated>2026-05-22T20:48:41+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-22T20:48:41+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=10c69b0ddc34a1fafada3f8b68a622b4aa2bea77'/>
<id>urn:sha1:10c69b0ddc34a1fafada3f8b68a622b4aa2bea77</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(cvm): fix CVM MCP roundtrip - task creation, subscription, relay selection</title>
<updated>2026-05-21T22:18:46+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-21T22:18:46+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=ed06f7eeab28c1fa6242c4ea6c3b9c933661fc06'/>
<id>urn:sha1:ed06f7eeab28c1fa6242c4ea6c3b9c933661fc06</id>
<content type='text'>
- Move CVM server start before mint_health_start (avoids RAM fragmentation)
- Fix NIP-01 subscription: #p tag must be array not string
- Fix read loop: tolerate TLS timeouts, don't disconnect
- Reduce TLS timeout from 15s to 5s for faster event delivery
- Add WS frame logging for debugging
- Sign test events with board's nsec (--sec flag) for owner auth
- Change default CVM relay to nos.lol (forwards ephemeral kind 25910)
- MCP get_config and get_balance roundtrips confirmed working
- Unit tests pass (16/16)
</content>
</entry>
<entry>
<title>fix(tests): replace dead testnut.cashu.space with working mint URL in 3 test files</title>
<updated>2026-05-21T21:30:39+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-21T21:30:39+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=7009d2e0ac346376733863966374eac296e0471e'/>
<id>urn:sha1:7009d2e0ac346376733863966374eac296e0471e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(tests): update mint URL pattern in E2E test</title>
<updated>2026-05-21T11:59:11+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-21T11:59:11+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=4eb0deef61f41953f541535f1f1433d3804258b6'/>
<id>urn:sha1:4eb0deef61f41953f541535f1f1433d3804258b6</id>
<content type='text'>
Accept both testnut.cashu.space and testnut-nutshell.orangesync.tech
</content>
</entry>
<entry>
<title>fix(tests): fix 4 API integration test failures</title>
<updated>2026-05-21T11:55:37+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-21T11:55:37+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=06ab6574026f5454306c86e500db0dbf937358d6'/>
<id>urn:sha1:06ab6574026f5454306c86e500db0dbf937358d6</id>
<content type='text'>
- Portal button text: match 'Pay &amp; Connect' (not 'Grant Free Access')
- Remove /redirect from captive URI list (returns 302, not 200)
- /whoami: check includes 'mac=' instead of startsWith (response has ip= first)
- DNS hijack helper: fix template literal bug '@{ip}' -&gt; '@${ip}'
</content>
</entry>
<entry>
<title>Wallet receive via health task queue (no separate TLS worker)</title>
<updated>2026-05-21T11:16:51+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-21T11:16:51+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=19e175b1c1dea54efb61e8040ffdfa973fbac5d5'/>
<id>urn:sha1:19e175b1c1dea54efb61e8040ffdfa973fbac5d5</id>
<content type='text'>
- Removed standalone TLS worker task (couldn't allocate 16KB internal stack)
- Added wallet receive queue to mint_health task (already has 16KB stack + working TLS)
- health_task processes wallet tokens between probe intervals (1s poll)
- tls_worker_set_queue() registers queue from mint_health_start()
- Fallback to synchronous receive if queue not available
- Added freertos/queue.h and tollgate_api.h stubs for unit tests
- Added BaseType_t/UBaseType_t/TickType_t/pdFALSE to FreeRTOS stub
- Full payment round-trip confirmed: 2 payments → 41 sat balance
</content>
</entry>
<entry>
<title>feat(wallet): lazy keyset loading with exponential backoff + jitter</title>
<updated>2026-05-21T10:14:46+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-21T10:14:46+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=243e4808246555f86d464d1c476681a902e644ff'/>
<id>urn:sha1:243e4808246555f86d464d1c476681a902e644ff</id>
<content type='text'>
- Remove eager load_keysets() from init_wallet(), load on first use
- Add ensure_keysets() with binary exponential backoff + random jitter
- Guard all wallet operations (receive, send, melt, swap_all) with ensure_keysets()
- Skip checkstate on TLS failure, let wallet swap verify proofs instead
- Pin HTTP server to core 0 (fixes TLS cert verification in checkstate)
- Rewrite nucula http.c to use manual open/write/read (same as working health probe)
- Disable hardware MPI (CONFIG_MBEDTLS_HARDWARE_MPI=n)
- Add http.h stub for unit tests

Known issue: progressive TLS failure after 2-3 connections (PK verify 0x4290),
wallet receive swap fails. Needs deeper mbedTLS/PSRAM investigation.
</content>
</entry>
<entry>
<title>chore: remove compiled test binaries from git tracking</title>
<updated>2026-05-19T20:51:29+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-19T20:51:29+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=15c8e9f5f32422631e6519e54cd463d933ec5e84'/>
<id>urn:sha1:15c8e9f5f32422631e6519e54cd463d933ec5e84</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: merge display-fix — touch driver, keyboard, WiFi setup UI</title>
<updated>2026-05-19T20:44:45+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-19T20:44:45+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=899016795c389151e6b486ec470653f5688e5c5f'/>
<id>urn:sha1:899016795c389151e6b486ec470653f5688e5c5f</id>
<content type='text'>
Squash-merge of feature/display-fix (27 commits):
- AXS15231B touch driver with coordinate parsing (touch.c/h)
- On-screen keyboard with layout/hit detection (keyboard.c/h)
- WiFi setup state machine + config_add_wifi (wifi_setup.c/h)
- Web-based WiFi setup via captive portal
- Display rotation fix (stride=480), color fixes, DMA byte-swap
- WiFi QR code on BOOT and ERROR screens
- ERROR state transition after WiFi retries exhausted
- Unit tests: test_touch, test_keyboard, test_wifi_setup
- Integration test: wifi_setup.mjs
- E2E test: wifi-setup.spec.mjs
- Per-board hardware locks for flash targets

Conflicts resolved: took master for config/cvm/api/main (more current),
took display-fix for display/axs15231b (newer fixes).
</content>
</entry>
<entry>
<title>feat: add tollgate_core component + market config wiring</title>
<updated>2026-05-19T20:40:01+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-19T20:40:01+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=82f1fc0d5535eda3fc9eab799d81b3e220dbe4ef'/>
<id>urn:sha1:82f1fc0d5535eda3fc9eab799d81b3e220dbe4ef</id>
<content type='text'>
- Add tollgate_core ESP-IDF component (skeleton: cashu, dns, firewall, session)
- Add tollgate_platform.c with SPIFFS config backend
- Wire market_enabled, market_scan_interval_s, client_auto_switch in config.c
- Add lwip_tollgate_hooks.h (updated from feature branch)
- Add E2E fix plan, tollgate_core design doc, WPA autodetect plan
- Add integration test network helpers
- Add CONSOLIDATION.md plan

Reverts the broken merge (be4788b) that gutted config.c/tollgate_main.c/tollgate_api.c
and replaces it with a clean addition on top of intact master.
</content>
</entry>
</feed>
