fix(box3): SPIFFS mount + canal WiFi configurable (relais ESP-NOW) #8

Merged
electron merged 39 commits from fix/box3-spiffs-channel into main 2026-06-13 14:44:15 +00:00
39 Commits
Author SHA1 Message Date
clementandClaude Opus 4.8 2517cef7db fix(box3): SPIFFS mount + canal WiFi configurable pour relais ESP-NOW
CI / platformio (pull_request) Failing after 3m54s
scenario_server.c : SPIFFS_LABEL valait "storage" alors que la partition
s'appelle "spiffs" (partitions.csv) → esp_vfs_spiffs_register échouait en
ESP_ERR_NOT_FOUND, la BOX-3 ne pouvait persister aucun scénario reçu (HTTP
500 + relais ESP-NOW sans effet). Corrigé en "spiffs".

main.c + Kconfig.projbuild : ajout de CONFIG_ZACUS_WIFI_CHANNEL (défaut
0 = auto) câblé sur wifi_config.sta.channel. Sur réseau multi-AP / mesh
(même SSID sur plusieurs canaux), permet de forcer la BOX-3 co-canal avec
le master — prérequis ESP-NOW.

Validé sur matériel : master (ch6) → POST /game/scenario/relay → la BOX-3
reçoit + réassemble (679 B) via scenario_mesh, monte SPIFFS, hot-load OK,
reboot pour appliquer.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-13 15:04:05 +02:00
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 f5d8134cee fix(intro): horloge intro en temps reel
Sur carte, la boucle display (vTaskDelay 10 ms + rendu LVGL)
tourne sous 100 Hz : le dt fixe de 10 ms faisait trainer
l'horloge virtuelle derriere la deadline murale et la phase FX
ne demarrait jamais. Mesure du dt reel par delta de ticks
(borne 100 ms) + log de l'ordre des FX tires. Verifie sur
FNK0102H : intro fx order=0,2,3 a t=9.6s, 35 s sans panic.
2026-06-11 05:03:03 +02:00
Claude Worker claude2 9c133842a4 feat(intro): pool FX 3D complet + tirage par boot
Ajout des 3 dernieres scenes 3D de l'original : starfield 3D
(vol en z + trainees), voxel landscape (heightfield raycast) et
wirecube v9 (cube filaire Bresenham). L'intro tire 3 effets
distincts au hasard parmi les 6 a chaque boot (Fisher-Yates),
sans rallonger les 16 s. Build vert.
2026-06-11 04:54:17 +02:00
Claude Worker claude2 1faba591d5 feat(p1): log notes detectees + progression
Trace serie du bout-en-bout melodie : note MIDI entendue,
progression pos/count du validateur, marqueur (reset) sur fausse
note, ligne dediee a la completion. Prerequis documente au test
physique P1.
2026-06-11 04:47:53 +02:00
Claude Worker claude2 ea0e07acbe feat(intro): port 3D FX phases B/C/D
Rotozoom, dot sphere et ray corridor portes depuis le FxEngine
Arduino (boucles de rendu seules, sans CapsAllocator ni timelines).
Rendu 240x160 RGB565 en PSRAM double en pixels vers un lv_canvas
plein ecran derriere logo+scroller ; phases A 7s puis 3x3s ;
fallback starfield si l'alloc PSRAM echoue. Build vert (35% libre).
2026-06-11 04:45:56 +02:00
Claude Worker claude2 898808c396 docs: top README points to idf_zacus + box3 2026-06-11 02:58:10 +02:00
Claude Worker claude2 a7463464c2 docs: correct sensor comment to OV3660 2026-06-11 02:57:05 +02:00
Claude Worker claude2 080581f39f Merge qr fixes: adaptive geometry + mirror + QVGA 2026-06-11 02:56:47 +02:00
Claude Worker claude2 6d7b670256 docs: refresh firmware READMEs (puzzles+UI+REST) 2026-06-11 02:56:47 +02:00
Claude Worker claude2 fac94d5885 fix(qr): QVGA viewfinder, mirror, sensor tuning 2026-06-11 02:43:51 +02:00
Claude Worker claude2 ed336967a1 feat(box3): QR size + dim screen for camera 2026-06-11 02:43:51 +02:00
Claude Worker claude2 132b88337b fix(qr): adaptive frame size + OV3660 tuning 2026-06-11 02:03:13 +02:00
Claude Worker claude2 859c975654 feat(box3): larger QR for camera decode 2026-06-11 02:03:13 +02:00
Claude Worker claude2 087dbd3c03 feat(box3): QR + melody stimulus generator 2026-06-10 23:15:33 +02:00
Claude Worker claude2 e8125a20e5 Merge feat/freenove-local-puzzles: local puzzles + scenario hook + UI port 2026-06-10 23:06:04 +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 563dfea368 feat(ui): Workbench shell + boot zoom intro 2026-06-10 22:20:28 +02:00
Claude Worker claude2 a552e1976e feat(ui): 5-way buttons (view + brightness) 2026-06-10 22:09:47 +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 ff2ab2abb5 feat(ui): live QR viewfinder in scene view 2026-06-10 21:40:58 +02:00
Claude Worker claude2 2de7b20cd8 feat(ui): scene view + original fonts, 3MB apps 2026-06-10 21:28:31 +02:00
Claude Worker claude2 21b06665e8 feat(ui): LVGL layer + PWM backlight 2026-06-10 21:20:45 +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 b66932c800 feat(game): parse step puzzle binding from IR 2026-06-10 19:33:53 +02:00
Claude Worker claude2 e216490bf3 feat(local): arm API carries id + fragment 2026-06-10 19:23:24 +02:00
Claude Worker claude2 8eab308185 feat(local): wire local puzzles into master 2026-06-10 16:13:19 +02:00
Claude Worker claude2 d715d45b34 feat(local): sound puzzle via mic broker 2026-06-10 15:53:27 +02:00
Claude Worker claude2 b6a9d62d9a feat(local): QR puzzle via camera + quirc 2026-06-10 15:42:48 +02:00
Claude Worker claude2 0f0d8405f7 feat(local): mic broker; voice_pipeline uses it 2026-06-10 15:29:10 +02:00
Claude Worker claude2 275197139c feat(master): puzzle state aggregation logic 2026-06-10 14:33:33 +02:00
Claude Worker claude2 96f3a9ad65 feat(local): melody validator + tests 2026-06-10 14:24:15 +02:00
Claude Worker claude2 31c739fd82 feat(local): QR sequence validator + tests
Ordered-scan validator for QR puzzle sequences with host-based
Unity test harness. Tests cover: correct order acceptance, reset on
wrong scan, and duplicate-of-last handling.
2026-06-10 14:17:58 +02:00
Claude Worker claude2 d9ba124d16 docs(local): freeze Media Kit v1.2 pin map 2026-06-10 13:56:59 +02:00
Claude Worker claude2 10af7b28b2 chore: ignore .worktrees/ 2026-06-10 13:49:10 +02:00