Skip to content

Commit 32da5a6

Browse files
committed
docs: fix v1.5.7 release notes scope and restore archived notes
1 parent 7e72b2b commit 32da5a6

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

RELEASE_NOTES_v1.5.5.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Release Notes v1.5.5
2+
3+
## Bug Fixes
4+
5+
- **Fixed thread safety race conditions**: Six pairing/polling state fields were accessed across threads without mutex protection, risking missed IRK captures on dual-core ESP32 variants.
6+
- **Fixed 32-bit timer overflow**: Absolute timer comparisons would fail after ~49.5 days of uptime. All timer checks now use wraparound-safe arithmetic.
7+
- **Fixed post-disconnect IRK lookup**: Used the event's embedded connection descriptor instead of `ble_gap_conn_find`, which could fail after NimBLE removed the descriptor.
8+
- **Fixed config defaults mismatch**: Python schema defaults now match the intended C++ behavior (`continuous_mode=true`, `max_captures=10`).
9+
- **Fixed BLE name validation**: Compile-time limit reduced from 29 to 12 bytes to match the runtime Samsung S24/S25 compatibility constraint.
10+
11+
## Improvements
12+
13+
- IRK cache size now scales with `max_captures` setting instead of being hardcoded to 10.
14+
- Replaced `esp_restart()` with `App.safe_reboot()` to avoid watchdog timeouts on profile change.
15+
- Consolidated `dump_config` output into a single log line, removing `vTaskDelay` workarounds.
16+
- Replaced magic number for NimBLE DHKey error with a named constant.
17+
- Simplified `is_valid_irk`, MAC generation, and NVS health check logic.
18+
- Added input validation for BLE profile select to reject invalid values.
19+
- Removed unused `on_auth_complete` method and `to_hex_fwd` dead code.

RELEASE_NOTES_v1.5.6.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Release Notes v1.5.6
2+
3+
## Reliability Fixes
4+
5+
- **Fixed MAC rotation race condition**: `refresh_mac()` now sets the `suppress_next_adv_` flag before triggering disconnect, preventing `handle_gap_disconnect` from restarting advertising while the MAC rotation is still in progress.
6+
- **Component fails cleanly on critical init errors**: `setup()` now calls `mark_failed()` and returns early if the FreeRTOS mutex cannot be created, and `register_gatt_services()` marks the component as failed if GATT registration fails.
7+
- **NVS profile range validation**: Persisted BLE profile values are now range-checked before `static_cast`, preventing undefined behavior from corrupted NVS data.
8+
- **BLE name whitespace trimming**: `sanitize_ble_name()` now trims leading and trailing spaces after character filtering, preventing names like `" IRK "` from wasting bytes in the advertising packet.
9+
- **Fixed `host_synced_` cross-core visibility**: Changed from plain `bool` to `std::atomic<bool>` to ensure the NimBLE task's write is visible to the ESPHome main loop on dual-core ESP32 variants.
10+
11+
## Code Quality
12+
13+
- **Added explicit standard library includes**: Added `<string>`, `<vector>` to header and `<cstring>` to implementation, removing reliance on transitive includes from ESPHome/NimBLE headers.

RELEASE_NOTES_v1.5.7.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Release Notes v1.5.7
22

3+
This release note reflects changes from `v1.5.6` to `v1.5.7`.
4+
35
## Boot Stability and GATT Reliability
46

57
- **Fixed Keyboard profile boot crash**: The Keyboard BLE profile was causing GATT registration to fail at boot because NimBLE rejects HID services with no characteristics. Added a minimal `HID Protocol Mode` characteristic (`0x2A4E`) to make the HID service structurally valid.
@@ -16,7 +18,6 @@
1618
- **Fixed `irk_last_try_ms_` first-poll bypass**: The IRK poll interval guard was bypassed on the first poll because the timestamp initialized to 0. It is now set to `now_ms()` alongside `enc_ready_` when encryption completes.
1719
- **Fixed `mac_rotation_retries_` and `mac_rotation_ready_time_` unprotected writes**: These members are now reset inside existing `MutexGuard` blocks, consistent with the documented threading model.
1820
- **Made getters thread-safe**: `get_ble_profile()` and `get_ble_name()` now acquire `state_mutex_` before reading shared state.
19-
- **Fixed `host_synced_` cross-core visibility**: Uses `std::atomic<bool>` to ensure the NimBLE task's write is visible to the ESPHome main loop on dual-core ESP32 variants.
2021

2122
## Correctness Fixes
2223

@@ -25,8 +26,6 @@
2526
- **Fixed BLE name length silent truncation**: The `name_len` field is now clamped to 29 bytes with a warning log before the `uint8_t` cast.
2627
- **Fixed `commit_err` misleading log**: NVS set and commit errors are now tracked with separate variables so the log accurately reports which operation failed.
2728
- **Advertising switch state now reflects reality**: The advertising switch publishes the actual runtime state after start/stop attempts rather than echoing only the requested state.
28-
- **NVS profile range validation**: Persisted BLE profile values are range-checked before `static_cast`, preventing undefined behavior from corrupted NVS data.
29-
- **BLE name whitespace trimming**: `sanitize_ble_name()` trims leading and trailing spaces after character filtering.
3029

3130
## Observability and Diagnostics
3231

@@ -40,13 +39,13 @@
4039

4140
- **Removed dead code**: Unused helper `read_peer_bond_by_conn()`, unused constant `IRK_MIN_POLL_INTERVAL_MS`, unused local `adv_success`.
4241
- **Replaced magic GAP event numbers with named constants** for readability and safer maintenance across ESP-IDF/NimBLE SDK variants.
43-
- **Added explicit standard library includes**: Added `<string>`, `<vector>` to header and `<cstring>` to implementation, removing reliance on transitive includes.
4442

4543
## Files Updated
4644

4745
- `components/irk_capture/irk_capture.cpp`
4846
- `components/irk_capture/irk_capture.h`
4947
- `ESPHome Devices/irk-capture-base.yaml`
5048
- `ESPHome Devices/irk-capture-full.yaml`
51-
- `ESPHome Devices/irk-capture-device-remote.yaml`
52-
- `RELEASE_NOTES_v1.5.7.md` (this file; replaces `RELEASE_NOTES_v1.5.6.md`)
49+
- `RELEASE_NOTES_v1.5.7.md`
50+
- `RELEASE_NOTES_v1.5.6.md` (archived)
51+
- `RELEASE_NOTES_v1.5.5.md` (archived)

0 commit comments

Comments
 (0)