Commit Graph

55 Commits

Author SHA1 Message Date
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 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
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 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 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 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 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
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 48e6b62825 freenove: integrate QR intake assets and media tooling 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 c421b0b102 big refactor 2026-02-24 09:01:36 +01:00
Clément SAILLANT 261dfacb3d avant refonte LVGL 2026-02-24 03:18:34 +01:00
Clément SAILLANT dd229f055b avant refont LVGL 2026-02-24 03:18:23 +01:00
Clément SAILLANT 8e57e0ecb0 feat: Refactor button management with RTOS support and enhance scenario button handling 2026-02-23 19:49:06 +01:00
Clément SAILLANT a2886f801c test: strengthen LA music verification generator 2026-02-23 18:29:11 +01:00
Clément SAILLANT cec1927242 Enhance LA detection and pitch smoothing functionality
- Increased mic LA tolerance from 10Hz to 18Hz and release time from 50ms to 180ms for improved responsiveness.
- Introduced pitch smoothing in HardwareManager to enhance frequency and confidence accuracy using a moving average approach.
- Updated la_trigger_service to support consecutive match counting for better detection stability.
- Added a new Python script for verifying LA detection under music-like loads, including audio playback and logging capabilities.
- Adjusted JSON configuration for APP_HARDWARE to reflect new tolerance and release time settings.
2026-02-23 18:08:06 +01:00
Clément SAILLANT be86671518 Normalize scene IDs and harden Freenove audio runtime 2026-02-23 16:01:44 +01:00
Clément SAILLANT c46c328640 Add LA Trigger and Runtime Config Services
- Implemented `LaTriggerService` for LA detector matching and gate state updates, including methods for state management and sample matching.
- Created `RuntimeConfigService` to load runtime configurations from JSON files, handling network, hardware, camera, and media settings.
- Defined shared configuration types in `runtime_config_types.h` for network and hardware settings.
- Added `SceneElement` and `SceneState` classes for UI management and state representation in the LVGL framework.
- Developed corresponding source files for the new headers, ensuring functionality for scene operations and state updates.
2026-02-23 11:52:20 +01:00
Clément SAILLANT 5dcd820221 feat: Enhance stress test scenarios and add new validation tools
- Refactor scenario handling in run_stress_tests.py to support multiple profiles (standard, combined_la).
- Introduce SCENE_LA_DETECTOR.json for visual feedback in the LA detector.
- Add verify_la_random_generator_test.py to generate random tones and validate LA detection.
- Implement verify_mic_live.py to validate microphone metrics over serial.
- Create verify_story_default_flow.py to check the default story screen flow on Freenove.
2026-02-23 00:54:18 +01:00
Clément SAILLANT 1cd205a0f1 freenove: verrouille lockscreen glitch agressif et flash leds non synchrones 2026-02-22 14:29:56 +01:00
Clément SAILLANT 1ba7e45b53 fix(tooling): harden content validators and integration checks 2026-02-22 12:37:51 +01:00
Clément SAILLANT 88e0e01783 feat(freenove): integrate hardware camera media story controls 2026-02-22 04:04:05 +01:00
Clément SAILLANT 499209b032 feat: Enhance hardware mapping validation and introduce new ESP-NOW API
- Refactored `validate_mapping.py` to improve cross-checking of hardware mappings across PlatformIO, configuration headers, and RC documentation.
- Added detailed error and warning reporting for missing macros and mismatched pin configurations.
- Introduced a new ESP-NOW API documentation (`espnow_api_v1.md`) to standardize message formats for communication between devices.
- Created a new protocol documentation for story screen palettes (`story_screen_palette_v2.md`) to define JSON structure and visual effects.
- Implemented a `HardwareManager` class to manage WS2812 LEDs, microphone input, and battery status, enhancing the firmware's hardware interaction capabilities.
- Added comprehensive methods for initializing and updating hardware components, including LED control and microphone data processing.
2026-02-22 02:17:50 +01:00
Clément SAILLANT a552072c02 chore: consolidate branch workflow to main-only policy 2026-02-21 21:29:51 +01:00
Clément SAILLANT f88c0ce9cc docs: track Kill_LIFE #12 USB stability fallback merge 2026-02-21 19:24:27 +01:00
Clément SAILLANT a95f5e1553 docs: log Kill_LIFE #11 review and merge trace 2026-02-21 19:19:18 +01:00
Clément SAILLANT 09befbe6c3 docs: track firmware workflow CI fixes 2026-02-21 19:10:07 +01:00
Clément SAILLANT 3fec631c43 feat(freenove): stabilize fallback AP outside local wifi (#103) 2026-02-21 02:59:01 +01:00
Clément SAILLANT 3725d08eaa feat(freenove): unify story screens and network stack apps (#101) 2026-02-21 02:47:50 +01:00
Clément SAILLANT 658a14d064 freenove: add web parity endpoints for wifi reconnect and espnow 2026-02-21 00:17:40 +01:00
Clément SAILLANT 670d590113 freenove: delay web wifi disconnect to avoid http race 2026-02-20 23:50:30 +01:00
Clément SAILLANT 6e32c51db7 docs: tidy freenove rtc alignment notes 2026-02-20 23:47:16 +01:00
Clément SAILLANT 3dad57842b freenove: align webui endpoints with rtc network api 2026-02-20 23:45:55 +01:00
Clément SAILLANT 929cb6e05b freenove: add webui and local wifi fallback policy 2026-02-20 23:28:36 +01:00
Clément SAILLANT 0af90ae7d3 freenove: enforce local AP fallback and RTC-aligned espnow status 2026-02-20 23:07:20 +01:00
Clément SAILLANT bca6e050ad Add default scenario and associated screens and audio packs
- Created default scenario JSON file with steps and audio references.
- Added screen definitions for SCENE_BROKEN, SCENE_LA_DETECT, SCENE_LOCKED, SCENE_READY, SCENE_WIN, and their respective themes and effects.
- Introduced audio packs for boot radio and win sounds.
- Updated story scenario files with new screen and audio references.
- Configured LVGL settings in lv_conf.h for UI components.
2026-02-20 21:01:28 +01:00