<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/components, branch feature/tollgate-core-v2</title>
<subtitle>[no description]</subtitle>
<id>https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/atom?h=feature%2Ftollgate-core-v2</id>
<link rel='self' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/atom?h=feature%2Ftollgate-core-v2'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/'/>
<updated>2026-05-28T18:58:27+00:00</updated>
<entry>
<title>fix(firewall): remove blanket TCP allow for unpaid clients</title>
<updated>2026-05-28T18:58:27+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-28T18:58:27+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=57bcd53b14e1f795aa94b079c463d41ba8c02e94'/>
<id>urn:sha1:57bcd53b14e1f795aa94b079c463d41ba8c02e94</id>
<content type='text'>
The sandbox_mint_access=true default allowed ALL TCP forwarding from
unpaid clients, completely bypassing the firewall. Fix:
- Remove the blanket TCP allow when sandbox_mint_access is set
- Only allow traffic to AP IP on specific ports (80, 2121, 4869, mining)
- Allow ICMP to AP IP for diagnostics
- Default sandbox_mint_access to false
- Add port 4869 (local relay) to allowed sandbox ports

Verified on Board B: unpaid clients blocked from internet, local
services (portal, API, relay) still accessible.
</content>
</entry>
<entry>
<title>chore: bump tollgate_core to v1.3.0</title>
<updated>2026-05-28T15:02:37+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-28T15:02:37+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=8f18b7ac6cf65a1de7f2ebddb19de9070c3b9657'/>
<id>urn:sha1:8f18b7ac6cf65a1de7f2ebddb19de9070c3b9657</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: add extern C guards to mining and stratum_proxy headers</title>
<updated>2026-05-28T12:41:48+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-28T12:41:48+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=4deac9fd95284ac2770259059e2ab7c8ac98570f'/>
<id>urn:sha1:4deac9fd95284ac2770259059e2ab7c8ac98570f</id>
<content type='text'>
Needed for C++ consumers (NerdQAxePlus create_jobs_task, stratum_manager).
</content>
</entry>
<entry>
<title>feat: implement 3 missing API functions + test + fix plan</title>
<updated>2026-05-28T12:24:44+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-28T12:24:44+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=96589ce5d0bc49a3f6b006b0bb443b81d1dd8e03'/>
<id>urn:sha1:96589ce5d0bc49a3f6b006b0bb443b81d1dd8e03</id>
<content type='text'>
- tollgate_core_on_share_accepted(): tracks hashrate, creates/extends
  mining sessions, calls platform callback
- tollgate_core_calc_hashprice(): returns nbits-derived hashprice or
  manual override from platform
- tollgate_core_get_mining_status_json(): returns proxy stats as JSON
- test_mining_api: 19 assertions covering all 3 functions
- PLAN_BITAXE_FIXES.md: comprehensive fix plan with checklist
</content>
</entry>
<entry>
<title>fix: add extern C guard to tollgate_core_portal.h</title>
<updated>2026-05-23T17:54:53+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-23T17:54:53+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=85ef20a2004c600dd04428520a79a0e47a54ed2d'/>
<id>urn:sha1:85ef20a2004c600dd04428520a79a0e47a54ed2d</id>
<content type='text'>
Needed for C++ consumers (NerdQAxePlus handler_tollgate.cpp).
</content>
</entry>
<entry>
<title>Phase 10a v1.2.0: MIT license, metadata update, full API docs</title>
<updated>2026-05-23T16:39:57+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-23T16:39:57+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=bf8e095b94fe500a9c35d7f2f616eb85569dbe5e'/>
<id>urn:sha1:bf8e095b94fe500a9c35d7f2f616eb85569dbe5e</id>
<content type='text'>
- Bump idf_component.yml to v1.2.0 with MIT license, targets, tags
- Add LICENSE (MIT) for IDF Component Registry compatibility
- Update CHANGELOG.md with v1.2.0 entries (portal, stratum_client, mint_health, client)
- Update README.md with all 13 modules documented, API reference table
- Add REMAINING_PLAN.md with full execution plan and checklist
- 25 unit tests pass, ESP-IDF build passes
</content>
</entry>
<entry>
<title>Phase 8c-8f: Extract portal, stratum_client, mint_health, client into tollgate_core</title>
<updated>2026-05-23T09:56:52+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-23T09:56:52+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=be4d490e96de3d20cc6c9921f09534cde0ca0765'/>
<id>urn:sha1:be4d490e96de3d20cc6c9921f09534cde0ca0765</id>
<content type='text'>
New component modules:
- tollgate_core_portal.c/h: template rendering, usage calc, captive URI detection
- tollgate_core_stratum_client.c/h: Stratum V1 JSON protocol parsing, message building
- tollgate_core_mint_health.c/h: mint health state tracking, recovery threshold logic
- tollgate_core_client.c/h: discovery/session/usage JSON parsing, renewal check, price calc

Main shims updated to delegate pure logic to component:
- captive_portal.c: uses tollgate_core_portal_render(), format_usage(), is_captive_uri()
- stratum_client.c: uses tollgate_core_stratum_parse_notify/build_*()
- mint_health.c: uses tollgate_core_mint_health_update/is_reachable/mark_unreachable()
- tollgate_client.c: uses tollgate_core_client_parse_*/should_renew/calc_price_per_min()

4 new unit tests (test_portal, test_stratum_client, test_mint_health_core, test_client_core)
All 25 unit tests pass. ESP-IDF build passes (68% partition free).
</content>
</entry>
<entry>
<title>Phase 10a: component metadata v1.1.0, README, CHANGELOG</title>
<updated>2026-05-23T01:02:21+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-23T01:02:21+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=a40cf60d5dff114bfd82aa74db767433564a29c0'/>
<id>urn:sha1:a40cf60d5dff114bfd82aa74db767433564a29c0</id>
<content type='text'>
- idf_component.yml updated: v1.1.0, description, url, IDF &gt;=5.3
- README.md with integration guide, API reference, dependencies
- CHANGELOG.md tracking v1.0.0 and v1.1.0 releases
- All 21 unit tests pass, ESP-IDF build passes
</content>
</entry>
<entry>
<title>Phase 8a-8b: extract beacon_price and market into component</title>
<updated>2026-05-23T00:54:33+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-23T00:54:33+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=0642900ae44d84cfe24abe6911dbed4cd31ab8ad'/>
<id>urn:sha1:0642900ae44d84cfe24abe6911dbed4cd31ab8ad</id>
<content type='text'>
- tollgate_core_beacon.c/h: pure logic (hash_mint, hash_npub, build_ie)
  with platform-agnostic tollgate_beacon_config_t input struct
- tollgate_core_market.c/h: market table logic (parse_ie, find_cheapest,
  update_ssid) with platform callbacks for time
- main/beacon_price.c: thin shim delegates to component, WiFi IE start/stop
- main/market.h: typedef aliases to component types
- All 21 unit tests pass, ESP-IDF build passes
- Hardware smoke test: 5/6 pass (AP, portal, grant/revoke, firewall)
- Market scanner discovers other TollGates via vendor IEs on hardware
</content>
</entry>
<entry>
<title>Phase 6a-6d: Consolidate and clean up</title>
<updated>2026-05-22T23:20:26+00:00</updated>
<author>
<name>Your Name</name>
<email>you@example.com</email>
</author>
<published>2026-05-22T23:20:26+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub12m5exm2uk3xa674cc5r0hlyvccs5xxn7qv83ezuteefv5972nquq4j4szl/esp32-tollgate/commit/?id=9330b01c28aebc865a3c0a51df8730196cb4152e'/>
<id>urn:sha1:9330b01c28aebc865a3c0a51df8730196cb4152e</id>
<content type='text'>
6a: Delete dead standalone tollgate_core/ (12 files, never compiled)
6b: Rewrite dns_server.c as thin shim to component's tollgate_core_dns
    - Fix component DNS to bind to AP IP instead of INADDR_ANY
6c: Rewrite stratum_proxy.c as thin shim with struct cast to component types
6d: Move sandbox logic into component's tollgate_core_firewall
    - Add tollgate_core_fw_set_sandbox_ports/set_sandbox_mint_access
    - Add is_sandbox_allowed() to component's ip4_canforward_filter
    - Clean main/firewall.c to delegate filter to component
    - Remove redundant DNS auth double-calls from main firewall
Add ROADMAP.md with full extraction plan and checklists

All 21 unit tests pass. ESP-IDF build passes.
</content>
</entry>
</feed>
