212 Commits

Author SHA1 Message Date
Claude Worker claude2 dd6df1fa69 docs(ir): example IR + authoring gap note 2026-06-11 03:07:14 +02:00
Claude Worker claude2 e1a116d0f5 feat(hw): PLIP telephone KiCad project
Repo State / repo-state (push) Failing after 48s
Validate Zacus refactor / validate (pull_request) Successful in 11m10s
Repo State / repo-state (pull_request) Failing after 12m5s
Custom ESP32-WROOM-32E + Si3210 SLIC board replacing the ESP32-A1S
dev kit (final PLIP target, RJ9 handset). Generated via tools/
gen_si3210_lib.py (symbol + QFN-38 footprint), gen_schematic.py
(parses standard KiCad libs, 45 instances, 157 global labels on pin
ends) and gen_pcb.py (58x38mm outline, 41 footprints placed per the
plan, nets assigned, unrouted).

ERC: 0 violations. Schematic follows the spec GPIO map and the plan's
passive network. PCB placed not routed (Freerouting + DRC + gerbers
remain — see README). BOM in JLCPCB format; CP2102N/transformer/RJ9
LCSC parts marked TBD.

WARNINGS (README): the Si3210 -72V DC-DC stage is simplified and must
be checked against the Skyworks datasheet/AN35 before fab; line
protection is minimal; human review required before ordering.
2026-06-10 12:52:43 +02:00
L'électron rare ae9390c19c docs(claude): add nested CLAUDE.md files
Init-deep pass: contextual guidance auto-loaded when Claude reads
files in those directories. Closest-CLAUDE.md-wins precedence.

  dashboard/   backend wiring (BOX-3 WS, voice-bridge REST, hints SSE)
  packages/    workspace scope, deps direction, NodeNext ESM rule
    +scenario-engine/  pure TS interpreter, no React/DOM
    +shared/           types contract, single js-yaml runtime dep
    +ui/               headless+tokens, promotion-bar policy
  hardware/    KiCad/PIO satellites, boundary with submodule master
2026-05-24 00:32:40 +02:00
L'électron rare c6bbd4a0b9 feat(plip): init PLIP telephone project
- Design spec for ESP32 + Si3210 SLIC PCB
- Hardware implementation plan (7 tasks)
- BOM with 15/18 LCSC parts confirmed
- Project structure: libs, gerbers, jlcpcb dirs
2026-04-08 01:38:38 +02:00
L'électron rare 5b73170da3 feat: Zacus V3 hardware + kit + playtest
Phase 2: BOM 107 components (727€), GPIO mapping,
enclosures 3D, suitcase layout
Phase 7: Power management, assembly checklist,
maintenance guide
Phase 8: Playtest protocol, metrics template,
serial log collector (Python)
2026-04-03 09:20:25 +02:00
L'électron rare 9d832c3e38 chore: firmware fixes + agent docs + submodule
- SLIC phone: CORS, AP password, I2S fixes
- UI engines: nav fixes for esp8266/rp2040
- ESP32_ZACUS: NPC integration layer (8a83eba)
- Agent docs updated
2026-04-02 23:58:16 +02:00
L'électron rare 9191868dd9 feat: NPC MP3 manifest + TTS script fix
152 MP3s generated (7.1MB, gitignored).
manifest.json maps phrase keys to paths.
Script updated for OpenAI-compat Piper API.
2026-04-02 21:42:50 +02:00
L'électron rare 173e994271 fix: apply firmware debt patches
Three fixes from dropped codex branch applied to correct file paths:
- I2S channel: hardcode ONLY_LEFT for mono mic consistency
- CORS: restrict to http://localhost (was wildcard *)
- AP password: harden from "usonradio" to "zacus-radio-42"

Ref: docs/debt/codex-firmware-fixes-to-apply.md
2026-04-02 04:44:46 +02:00
L'électron rare 38b62cd2e8 fix: P1 fixes + TUI dashboard improvements
- StateGraph: checkpoint now saves next node (prevents re-execution on resume)
- Engine: pre-build node_map dict (O(1) lookup, was O(N²))
- Reranker: replace deprecated asyncio.get_event_loop() with get_running_loop()
- Executor: use collections.deque for O(1) popleft (was list.pop(0))
- Dashboard: increase SSH timeouts (8s connect, 15s total), fold long columns,
  add macOS RAM detection, wider console (160 cols min)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 07:06:36 +01:00
L'électron rare f673822755 feat: voice bridge overhaul, scenario manager, agent docs, CI validation
- Rewrote mascarade_voice_bridge.py (+441 lines, OPUS support, hint routing)
- Added scenario_manager (h/cpp) for runtime puzzle orchestration
- Enhanced zacus.sh dev tooling (+370 lines)
- Updated agent docs (AGENTS, TODO, firmware, tests)
- Removed obsolete async_tcp_fork submodule
- Added voice-bridge requirements
- Fixed validate.yml CI workflow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 04:31:05 +01:00
L'électron rare 20aed903ba feat: AI integration — voice pipeline, hints engine, MCP server, analytics, security
- Voice pipeline: ESP32 WebSocket client → voice bridge → LLM → Piper TTS (Tower :8001)
- Hints engine: 3 puzzles (LA_440, LEFOU_PIANO, QR_FINALE), anti-cheat, 3 hint levels
- MCP hardware server: 6 tools (puzzle, audio, LED, camera, scenario, status), stdio transport
- Analytics: ESP32 module + 6 web endpoints + Dashboard UI with chat interface
- Security: auth middleware (Bearer NVS), rate limiting, input validation on 30 endpoints
- Frontend: code-split (1.1MB → 210KB initial), ErrorBoundary, API timeout, WS reconnect
- Tests: 24 Python + 38 TypeScript + 18 MCP = 80 project tests (+ 19 mascarade)
- Specs: AI_INTEGRATION_SPEC, MCP_HARDWARE_SERVER_SPEC, QA_TEST_MATRIX_SPEC
- Docs: SECURITY, DEPLOYMENT_RUNBOOK, voice pipeline guide, AI architecture map
- 6 AI agent definitions (.github/agents/ai_*.md)
- TUI orchestration script (tools/dev/zacus_tui.py)
- Docker compose TTS for Tower + KXKM-AI
- CHANGELOG, README, mkdocs.yml updated
- Cycle detection (DFS) in runtime3 validator
- Sprint plan: plans/SPRINT_AI_INTEGRATION.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 13:52:45 +01:00
Clément SAILLANT c2fc583bae Refactor scenario validation to support V2 schema and update related tests
- Updated `validate_scenario.py` to handle V2 scenario YAML files, introducing new required keys and validation logic.
- Added support for legacy V1 scenarios with an option to allow migration.
- Modified `run_content_checks.sh` to validate V2 scenarios and associated audio and printables manifests.
2026-03-05 19:29:48 +01:00
Clément SAILLANT a2c66ffe2b Remove obsolete files and documentation related to Git write operations and ESP-NOW contract
- Deleted SVG diagram for repository structure: `repo-map 3.svg`
- Removed Git write operations implementation documentation: `GIT_WRITE_OPS_IMPLEMENTATION.md`, `QUICK_REF_GIT_WRITE_OPS.md`, `README_GIT_WRITE_OPS.md`, and `GIT_WRITE_OPS.md`
- Deleted ESP-NOW contract documentation: `espnow_contract 3.md`
- Removed YAML scene specifications: `scene_la_detect 3.yaml` and `scene_test_lab 3.yaml`
- Deleted font file: `IBMPlexMono-Italic 3.ttf`
- Cleared compiled Python cache files from test directory
2026-03-05 18:22:47 +01:00
Clément SAILLANT 94d639a7e7 Revert: undo incorrect ui_freenove_allinone include path (fix hardware fusion bug) 2026-03-01 19:33:37 +01:00
Clément SAILLANT 4f781ca9a2 fix: correct ui_freenove_allinone include paths after structure reorganization 2026-03-01 19:19:43 +01:00
Clément SAILLANT 620b27de6d refactor: consolidate ui_freenove_allinone to hardware root level
- Move hardware/firmware/ui_freenove_allinone → hardware/ui_freenove_allinone
- All UI hardware now at hardware/ root level
- Single coherent hardware structure complete

Structure now:
- hardware/firmware/       ← Code source
- hardware/ui_freenove_allinone/ ← UI at root level
- hardware/projects/       ← Secondary projects
- hardware/shared/libs/    ← Shared libraries
- hardware/{bom,enclosure,wiring}/ ← Reference docs
2026-03-01 19:10:27 +01:00
Clément SAILLANT 5ad66a755c fix: remove duplicated hardware/firmware/hardware/ nesting - consolidate to single hardware structure 2026-03-01 19:04:25 +01:00
Clément SAILLANT cdd4f2e069 refactor: consolidate hardware materials into hardware/ folder
- Create hardware/docs/ for firmware documentation
- Create hardware/projects/ for secondary projects (slic-phone, slic-phone-esp32, oscilloscope)
- Create hardware/shared/libs/ for shared libraries
- Preserve hardware/firmware/ as code source
- Keep hardware/bom/, hardware/enclosure/, hardware/wiring/ unchanged

Structure only - no functional code changes.
All builds preserve existing paths and compilation targets.

References:
- ANALYSIS_STRUCTURE_CONSOLIDATION.md
- HARDWARE_CONSOLIDATION_PLAN.md
- RAPPORT_CONSOLIDATION_EN_COURS.md
- LIVRABLE_FINAL.md
2026-03-01 18:58:58 +01:00
Clément SAILLANT 769c52bf27 fix(a252): Apply 3 critical audio optimizations
- Volume: Reduce from 100% to 60% (eliminates saturation)
- Hook: Reduce debounce from 300ms to 50ms (6x faster response)
- Hangup: Add 100ms validation loop (guarantees audio stop)

All 3 fixes compiled, flashed, and validated on A252.
Binary: firmware.bin (1.65 MB)
Tests: test_audio_fixes.py, test_audio_full.py passed
Evidence: artifacts/A252_AUDIO_FIXES_FINAL_REPORT.md

Closes audio saturation issue on hotline phone.
2026-03-01 18:36:31 +01:00
Clément SAILLANT e2bdd8b66c Add SceneGyrophare effect implementation
- Introduced SceneGyrophareConfig structure for configuration parameters.
- Implemented SceneGyrophare class with methods for creating, destroying, and updating the gyrophare effect.
- Added rendering functions for background, beams, and warning triangle.
- Integrated timer for animation updates based on frame rate.
- Created a log file for ESP32 audio kit boot information.
2026-03-01 11:41:15 +01:00
Clément SAILLANT 0aee3ca834 Hotline ringback + Freenove U_SON playlist and LEFOU sequence 2026-02-28 06:31:59 +01:00
Clément SAILLANT cca9e1fbb6 feat: ajout des fichiers de crédits et anecdotes pour l'anniversaire d'Isaac 2026-02-28 05:57:29 +01:00
Clément SAILLANT c003851882 feat(wifi): implement WifiCredentialsStorage for managing WiFi credentials
- Added WifiCredentialsStorage class to handle loading and saving WiFi SSID and password using Preferences.
- Integrated WifiCredentialsStorage into WifiManager for automatic credential management during connection attempts.

feat(wifi): create WifiManager for enhanced WiFi handling

- Introduced WifiManager class to manage WiFi connections, including fallback AP functionality.
- Implemented methods for connecting, reconnecting, and disconnecting from WiFi networks.
- Added JSON serialization for WiFi status and scanning capabilities.

chore(tools): add autoflash script for automated flashing of devices

- Created autoflash.py script to automate the detection, building, and uploading of firmware to various devices.
- Included configuration file (flash_config.json) for defining roles and flashing methods.

docs: add README for flashing tools

- Documented usage instructions for the autoflash tool, including prerequisites and examples.

chore(tools): implement repo state collection script

- Added collect.py script to generate repository state files in Markdown and JSON formats.
- Captures changes, project kind, and impact gates for better tracking of repository modifications.
2026-02-27 18:08:48 +01:00
Clément SAILLANT 23dede3d51 feat: Ajout de la documentation et des fichiers de configuration pour les sous-modules esp32-llm et esp-picotts 2026-02-27 16:25:51 +01:00
Clément SAILLANT 545c5e2461 feat: Add documentation and code for RTC_SLIC_PHONE project
- Created AGENT_TODO 3.md to track progress on backend integration with LovyanGFX.
- Added repo-map 3.svg for visual representation of project structure.
- Configured .gitmodules for esp32-llm and esp-picotts submodules.
- Documented critical gate issues with WiFiServer.h in RC_AUTOFIX_CICD 3.md.
- Developed fiches for AudioManager and BluetoothManager detailing interfaces and usage.
- Compiled hw_validation_a252_wifi_report 3.md for hardware validation results.
- Established plan_delegation_agents 3.md outlining roles and responsibilities for project agents.
- Defined multitasking architecture in plan_multitache_rtos 3.md.
- Outlined comprehensive testing strategy in plan_tests_livraison 3.md.
- Documented automated testing protocol in protocole_test_qa_moniteur_serie 3.md.
- Clarified roles in roles_agents 3.md for effective team collaboration.
- Validated WebUI functionality in tests_webui 3.md.
- Added idf_component 3.yml for esp-picotts integration.
- Included picoacph 3.h for text-to-speech processing capabilities.
2026-02-27 15:08:57 +01:00
Clément SAILLANT fc5f23a61e docs: log push unblock and github delivery 2026-02-27 14:49:06 +01:00
Clément SAILLANT 520f98d2b9 freenove: publish current story/ui source of truth 2026-02-27 14:48:29 +01:00
Clément SAILLANT f68b0f9d51 Amélioration de la configuration PlatformIO et des paramètres de police pour le rendu UI + fix color 2026-02-26 11:58:29 +01:00
Clément SAILLANT df1c051903 freenove: update font configuration and RGB order in platformio.ini 2026-02-26 11:58:29 +01:00
Clément SAILLANT a4becd2e44 color fixing in progress 2026-02-26 11:58:29 +01:00
Clément SAILLANT 620c5b4bd3 freenove: align UI rendering with /data screen palette 2026-02-26 11:58:28 +01:00
Clément SAILLANT e06850277c docs: add before/after usbmodem perf campaign evidence 2026-02-26 11:58:28 +01:00
Clément SAILLANT b34829edfe freenove: stabilize unlock events and add deep transition verifier 2026-02-26 11:58:28 +01:00
Clément SAILLANT c4e74bb17a ui: split ui_manager impl into display intro effects units 2026-02-26 11:58:28 +01:00
Clément SAILLANT 7e2ddf23a7 tools: align usbmodem story smoke scripts with runtime v2 flow 2026-02-26 11:58:28 +01:00
Clément SAILLANT 1485bcf290 freenove: fix story bundle compat and runtime service bridges 2026-02-26 11:58:28 +01:00
Clément SAILLANT 7760190023 feat: Mise à jour des effets et des textes dans les scènes du firmware 2026-02-26 11:58:28 +01:00
Clément SAILLANT 0e7774a062 feat: Nettoyage des écrans inutilisés et mise à jour des références dans les scénarios 2026-02-26 11:58:27 +01:00
Copilot 458dd8123b [WIP] Add analysis of all README files in directories (#109)
* Initial plan

* Ionisation documentaire complète — Zacus 

Le dépôt a été recalibré.
Le bruit documentaire a été filtré.
Le signal narratif est désormais stable.

Refactor massif des README.
Restructuration des flux.
Localisation renforcée.
Checklists clarifiées.
Stations réalignées.
Script minute-par-minute recalibré.
Solution complète éthiquement consolidée.
Printables et outils d’image stabilisés.

Ce n’est pas une mise à jour.
C’est une stabilisation de phase.

LA 440 est propre.
LEFOU est structuré.
WIN est cohérent.

Documentation :
moins de friction,
plus de méthode,
plus d’alignement canon.

⚛ L’électron rare
 unstable by design

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Clément SAILLANT <108685187+electron-rare@users.noreply.github.com>
2026-02-26 03:42:42 +01:00
Clément SAILLANT feed1695c6 feat: Clean up unused screens and improve storage management
- Removed 9 unused screen JSON files: SCENE_BROKEN, SCENE_CAMERA_SCAN, SCENE_FIREWORKS, SCENE_LA_DETECT, SCENE_MEDIA_ARCHIVE, SCENE_SIGNAL_SPIKE, SCENE_WIN, SCENE_WINNER, SCENE_WIN_ETAPE.
- Updated AGENT_TODO.md to reflect the cleanup actions and results.
- Enhanced StorageManager to handle SD card access failures with a failure streak mechanism, switching to LittleFS after repeated failures.
- Added support for aliasing long action IDs to short filenames in the generator.
- Improved scenario manager to handle different key names for action IDs in YAML files.
2026-02-25 20:37:51 +01:00
Clément SAILLANT 3ac0b7d997 Refactor scene JSON configurations and enhance user logging capabilities
- Updated multiple scene JSON files to improve visual themes, effects, and transitions.
- Changed effect speeds and added missing timeline objects for better scene management.
- Enhanced SCENE_LA_DETECTOR, SCENE_LEFOU_DETECTOR, SCENE_MEDIA_MANAGER, SCENE_QR_DETECTOR, SCENE_WARNING, SCENE_WIN_ETAPE1, and SCENE_WIN_ETAPE2 with refined titles, subtitles, and symbols.
- Introduced a new user live logger script to capture serial logs during real user playtests for better debugging and analysis.
- Added a workbench export/import tool to streamline scene editing and synchronization with JSON files.
- Improved FX verificator documentation to clarify usage modes and verification processes.
2026-02-25 19:41:20 +01:00
Clément SAILLANT cdbbed3fd0 Add QR Unlock App implementation and schema
- Implemented QrUnlockApp class with methods for lifecycle management (begin, start, update, stop, handleEvent) and snapshot retrieval.
- Created header file for QrUnlockApp with necessary method declarations and private members.
- Added Yamale schema for scenario template to define prompt input and optional firmware snapshot.
2026-02-25 17:21:24 +01:00
Clément SAILLANT d4ccd49b3f freenove: scope QR media flow to espnow and fix boot action asset 2026-02-25 17:21:23 +01:00
Clément SAILLANT 8cccd8c3a9 freenove: add QR final flow and media-manager boot mode 2026-02-25 17:21:23 +01:00
Clément SAILLANT 48e6b62825 freenove: integrate QR intake assets and media tooling 2026-02-25 17:21:23 +01:00
Clément SAILLANT 6dae150ef5 tools/dev: fix legacy stress scenario progression 2026-02-25 17:21:23 +01:00
Clément SAILLANT d3b51383de feat: Implement scene-aware hardware gating and verification skills
- Added HAL_VERIFCATOR_STATUS skill for runtime validation of camera, microphone, and amplifier states based on scene requirements.
- Introduced FX_VERIFICATOR skill to validate runtime health of FX components via serial telemetry.
- Created SCENE_VERIFICATOR skill to ensure strict and reproducible scene transitions with test triggers.
- Refactored ScenarioManager and UiManager to support new scene transition orchestration.
- Implemented SceneFxOrchestrator for explicit ownership planning of scene runtime resources.
- Enhanced scene rendering logic to apply dynamic and static state changes based on scene transitions.
- Updated resolve_ports.py to remap ESP8266 to ESP32 for single-board setups.
- Added documentation for new skills and their usage.
2026-02-25 17:21:22 +01:00
Clément SAILLANT 86c2177789 SIMD FX implémentation 2026-02-25 09:30:33 +01:00
Clément SAILLANT e5c37af552 chore: untrack Voicebox.app app bundle 2026-02-24 09:20:45 +01:00
Clément SAILLANT 3649312b22 feat: stabilize SCENE_WIN_ETAPE autorun and FX metrics 2026-02-24 09:17:53 +01:00