v0.2.4 — WriteWithoutResponse for GIF data
Fixed
-
Periodic ~15s display freeze while writes hung waiting for ACKs. With v0.2.3's false-positive `is_connected()` probe removed, a second failure mode became visible: roughly every hour, three consecutive BLE writes would hang for the full 5s timeout each before the `consecutive_timeouts >= 3` threshold triggered a reconnect. All GIF packets were sent as `WriteWithResponse`, so the call blocked waiting for a device ACK that — due to what appears to be a firmware quirk that builds up over time — stopped coming.
Switched GIF data packets to `WriteWithoutResponse`, matching what reference Python iDotMatrix libraries do for bulk data. The existing 100ms inter-packet sleep provides the flow control the ACK wait used to provide, and the 30s heartbeat (still `WriteWithResponse`) remains the canonical liveness check — if the device actually stops responding, the heartbeat catches it and the v0.2.0 supervisor/watchdog handles the reconnect.