diff --git a/CHANGELOG.md b/CHANGELOG.md index 06517c7..01d262c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ Firmware only (`BrettKinny/StackChan@dotty`, submodule `5b361e5`). Source-only: - **No crash when the server closes the connection** (#193): after a server-side close (the 180 s idle timeout, or an admin end-session), `~EspTcp()` skipped waiting for the receive task and deleted its event group under it, corrupting the heap (`StoreProhibited` panics about once per 50–60 closes). It now waits for the receive task to exit. Bench: 150 close/reconnect cycles with 0 panics. - **Stays on while on USB power** (#194): the 10-minute power-save shutdown was only turned off on a battery-to-USB change, so a robot that booted on USB powered itself off 600 s after boot whenever the voice server was down. It now follows the power source from the first battery reading. - **Servo reads no longer starve CPU 1** (#193): `SCSerial::readSCS` slept with `vTaskDelay(1 / portTICK_PERIOD_MS)`, which is `vTaskDelay(0)` at the 100 Hz tick, so polling a servo that didn't answer spun for minutes and set off the task watchdog every 10 s. It now blocks in the UART read until its timeout. -- **No power-off on a failed PMIC read**: an I2C timeout could make the power-button status read return `0xFF`, which looked like a long press and powered the robot off. Failed PMIC reads are now ignored, including in the register read-modify-writes. +- **No power-off on a failed PMIC read**: an I2C timeout could make the power-button status read return `0xFF`, which looked like a long press and powered the robot off. Failed PMIC reads are now ignored, including in the register read-modify-writes. First reported and fixed in BrettKinny/StackChan#2, thanks @0Downtime. - **Security sweep runs reliably** (#166): the yaw sweep ran in its own task whose stack allocation was never checked and could fail under camera + AFE memory pressure. It now runs in the motion update loop. - **Calm when the server is down** (#180): a stopped voice server is a normal resting state, not an error with an alert sound and growing retries. The robot now stays quietly offline and retries every 120 s. - **Head pats**: light fingertip pats register (mid level for 100 ms instead of high for 150 ms; 8 of 10 pats on the bench, up from 4), and a failed touch-sensor read counts as no touch instead of repeating the last reading.