Commit Graph

12 Commits

Author SHA1 Message Date
Claude Worker claude2 7893c32bf6 feat(espnow): canal texte CMD/EVT + endpoint debug
Frames courtes commandes/evenements sur la pile scenario_mesh
(sentinel seq=0xFFFF + kind, retrocompatible : les anciens
recepteurs les jettent via le check malformed). API additive
send_text/set_text_cb (dispatch hors callback WiFi via tache
dediee). Master : POST /game/espnow/cmd {peer|broadcast,command}
+ log des CMD/EVT recus. Teste sur FNK0102H : broadcast ESP_OK,
unicast sans recepteur ESP_ERR_TIMEOUT, alias inconnu 404.
Spec : docs/superpowers/specs/2026-06-11-espnow-cmd-evt-design.md
2026-06-11 05:47:20 +02:00
Claude Worker claude2 31dcb28c62 fix(espnow): compteur peers reel + alias UAF
scenario_mesh_peer_count() cable sur le stub sante (espnow_peers
restait a 0) ; reponse POST /game/peers construite avant
cJSON_Delete (use-after-free observe sur carte : alias illisible).
Teste sur FNK0102H : register live + NVS recharge au boot
(espnow_peers=2), relay -> timeout/unknown_peer attendus.
2026-06-11 05:18:55 +02:00
Claude Worker claude2 0e4cea9c39 feat(game): POST /game/file provisions apps 2026-06-10 22:46:05 +02:00
Claude Worker claude2 fd1a517989 feat(ui): cracktro intro + file browser + apps 2026-06-10 22:38:44 +02:00
Claude Worker claude2 d0f217f5d9 feat(ui): scene IR metadata + fx glitch/gyro 2026-06-10 22:01:17 +02:00
Claude Worker claude2 29c0eecfb9 fix(game): avoid littlefs double-register noise 2026-06-10 21:45:13 +02:00
Claude Worker claude2 9ac287c843 feat(ui): ST7796 status screen via LovyanGFX 2026-06-10 21:06:16 +02:00
Claude Worker claude2 0aa9271038 feat(game): step arming + puzzle state REST 2026-06-10 19:44:10 +02:00
Claude Worker claude2 185d1186fe feat(master): GET/POST /game/peers endpoint
CI / platformio (pull_request) Failing after 14m56s
HTTP management of the ESP-NOW relay peer registry — replaces the
desktop NvsConfigurator round-trip. POST {alias, mac} persists to the
NVS "peers" namespace (the exact format main.c seeds at boot) and
registers the peer live in the scenario_mesh table (no reboot). GET
lists the registry. Provisioning PLIP becomes:
  curl -X POST master/game/peers -d '{"alias":"plip","mac":"..."}'

Build green (zacus_master.bin).
2026-06-10 11:55:23 +02:00
Claude Worker claude2 b2267f2261 feat(scenario-mesh): ESP-NOW scenario hot-load receivers + green builds
CI / platformio (pull_request) Failing after 6m18s
- scenario_mesh: ESP-NOW frame protocol component (master + box3_voice):
  chunking, per-source reassembly, deferred apply off the Wi-Fi callback.
- game_endpoint: POST /game/scenario/relay (master) + shared scenario_apply.
- box3_voice: scenario receiver wiring (scenario_mesh_init).
- espnow_slave (shared by all puzzles): demux scenario frames inside the single
  recv callback so a misrouted relay can't corrupt the MSG_* stream; reassemble
  per source MAC; optional consumer hook (logs+drops by default, puzzles have no
  scenario engine). Add missing esp_mac.h include for MACSTR/MAC2STR.
- CMakeLists (scenario_mesh + 4 puzzle mains): drop invalid `esp_now` REQUIRES;
  the ESP-NOW API lives in esp_wifi. Fixes "Failed to resolve component esp_now".
- docs: scenario-mesh receiver patch note (puzzles done via defensive demux;
  PLIP out of scope — Wi-Fi/HTTP-only, no ESP-NOW stack).

Builds green under ESP-IDF 5.4.4: idf_zacus, box3_voice, p7_coffre.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 04:11:28 +02:00
L'électron rare 2a596b9fcb feat(idf): POST /game/scenario hot-load
game_endpoint gains a /game/scenario handler that accepts a Runtime 3
IR JSON (<=64 KiB), validates schema_version + non-empty steps array,
rotates the existing scenario to .bak, writes to LittleFS at
/littlefs/scenario.json on partition 'storage', and reboots after
the HTTP response flushes so the engine picks up the new IR.

ota_server bumps max_uri_handlers 8 -> 16 to fit the extra handlers
(/game/scenario plus headroom).

sdkconfig.qemu disables PSRAM + esp-sr so the firmware boots inside
qemu-system-xtensa without crashing on the unemulated octal PSRAM.
QEMU_HOWTO.md documents the workflow and the WiFi/Ethernet gap that
still blocks full HTTP smoke under emulation.
2026-05-24 10:46:29 +02:00
L'électron rare 71bc9a5e37 feat(idf): mDNS + /game/group_profile endpoint 2026-05-04 00:33:49 +02:00