Changelog

# Changelog

All notable changes to the CUBE32 BSP. Versions follow `idf_component.yml`.

## 0.0.17

### Added
- **Safe mode** (`CUBE32_SAFE_MODE_*`): crash-loop recovery over BLE. In safe mode `cube32_init()` does not return, so no app code runs. Enabled by default.
- **OTA app validation** (`CUBE32_APP_VALIDATION_*`): choose when an OTA-updated app is marked valid (early, after init, or app-confirmed) and what happens on timeout (mark valid or roll back).
- **Security eFuse guard** (`CUBE32_ALLOW_SECURITY_EFUSES`, default `n`): the build fails on settings that would block UART0 recovery (Secure Boot, release-mode flash encryption, disabled UART ROM download, Secure Download mode).
- **Runtime modem connection** (`CUBE32_MODEM_CONNECTION_RUNTIME`): builds both USB and UART drivers; the type is chosen over BLE config, stored in NVS and applied after restart.
- **BLE OTA data partitions** (`CUBE32_BLE_OTA_DATA_PARTITIONS`).
- **Display board auto-detection**: the board model (1.54″ 240×240, 2.0″ 240×320, 320×320 ST7796S/GT911) is resolved at boot from the touch controller's I2C address via `cube32_display_models.h`.
- **11 new examples** (23 total): `hello_activity`, `hello_ble_ota`, `hello_compass`, `hello_imu_mag`, `hello_mlc_activity`, `hello_rtc_timer`, `hello_sdcard`, `hello_spirit_level`, `hello_touch`, `hello_usb_input`, `hello_web_cam`.

### Changed
- **Default modem connection is now `Runtime`** (was `USB`). Until a type is chosen it falls back to USB.
- **Default audio sample rate is 16 kHz** for input and output (was 24 kHz), as required by esp-sr AEC. Keep both equal; they share the I2S clock.
- **Partition layout** (16 MB flash): `ota_0`/`ota_1` are 5 MB each (were ~4 MB), a 64 KB `coredump` partition is added, and `assets` is 5.875 MB (was 8 MB).
- `espressif/esp_modem` `^1.0.0` → `^2.1.0`; `espressif/usb_host_cdc_acm` `^2.0.4` → `^2.4.1`.
- **Example manifests** now declare `cube32esp/cube32_bsp` with `version: "*"` and `override_path: "../../../"` instead of `path`, so they resolve the BSP from the checkout locally and from the registry otherwise.
- README updated to match the above.

### Removed
- `CUBE32_AUDIO_AEC_*` Kconfig choice (AEC mode is selected in code).
- Display model Kconfig option (replaced by auto-detection).

## 0.0.16
- Log capture and BLE OTA / modem support updates.

## 0.0.15
- Add LVGL example and examples index.

## 0.0.14
- Add ST7796 display and audio loopback examples.

## 0.0.13
- Robot `face_expression` updates.

## 0.0.12
- Add `hello_modem_console` and `hello_mqtt` examples; RTC NTP updates; LVGL driver fix.

## 0.0.11
- ES8311 ADC path, BLE OTA advertising-restart timer, NimBLE sdkconfig hardening.