- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.