Skip to content

Releases: ratgdo/homekit-ratgdo

v2.1.1

22 Nov 21:01

Choose a tag to compare

v2.1.1 (2025-11-22)

What's Changed

  • Bugfix: re-Announce ratgdo mDNS every two minutes, so that we remain visible on network (default TTL is 2 minutes)
  • Bugfix: The home icon at top/right of the system logs page was not always returning to ratgdo main page #318
  • Feature: Add a webmanifest file and update all browser favorite icons for better visuals
  • Feature: Add support for Captive Network Assistant (CNA) so that Apple and Android devices will automatically load WiFi provisioning page when connecting to ratgdo Soft Access Point (Soft AP mode)
  • Feature: Add a warning and countdown timer to web page when Sec+2.0 doors have automatic door close (TTC) active
  • Other: Display "Off" instead of "0" when settings sliders are set to zero seconds/minutes
  • Other: Improved web page design for iPhone and iPad devices
  • Other: Attempt to recover from out-of-sync Sec+2.0 rolling code #315
  • Other: Various log message cleanup to make debugging easier and reduce log clutter at default Info level

Known Issues

  • Sec+ 1.0 doors with digital wall panel (e.g. 889LM) sometimes do not close after a time-to-close delay. Please watch your door to make sure it closes after TTC delay.
  • Sec+ 1.0 doors with "0x37" digital wall panel (e.g. 398LM) not working. We now detect but will not support them. Recommend replacing with 889LM panel.
  • When creating automations in Apple Home the garage door may show only lock/unlock and not open/close as triggers. This is a bug in Apple Home. Workaround is to use the Eve App to create the automation, it will show both options.
  • ESP8266 (original ratgdo) only... possible crash when a storm of HomeKit messages arrives... which may be triggered on a upgrade to Apple iOS 26 / tvOS 26 / etc. System recovers.

v2.1.0 (2025-11-01)

What's Changed

  • Bugfix: User selected syslog facility not restored on startup. ratgdo/homekit-ratgdo32#116
  • Bugfix: Crash when HomeKit tries to open or close a dry contact door. ratgdo/homekit-ratgdo32#117
  • Bugfix: Sec+2.0 only, not handling packet transmit errors during initialization
  • Feature: Sec+2.0 only, support garage door automatic close after selected delay, SEE README
  • Feature: Add time-to-close countdown timer to web page
  • Other: Allow user to disable triggering motion from Sec+2.0 wall panel motion sensors
  • Other: Adjust some Info-level log messages to Debug- or Error-level... reduces log clutter at default Info level

Note

To pick up the new favicon and apple-touch-icon, you must delete the homepage shortcut and erase the Safari browser cache, so the browser or mobile device will download any changed icons. It is also a good idea to hold down the shift key while reloading the web page the first time after an upgrade.

v2.1.0

01 Nov 21:42
7c717d7

Choose a tag to compare

When loading webpage for first time after an update hold down the SHIFT key and reload to force web browser to update its html and javascript cache.

v2.1.0 (2025-11-01)

What's Changed

  • Bugfix: User selected syslog facility not restored on startup. ratgdo/homekit-ratgdo32#116
  • Bugfix: Crash when HomeKit tries to open or close a dry contact door. ratgdo/homekit-ratgdo32#117
  • Bugfix: Sec+2.0 only, not handling packet transmit errors during initialization
  • Feature: Sec+2.0 only, support garage door automatic close after selected delay, SEE README
  • Feature: Add time-to-close countdown timer to web page
  • Other: Allow user to disable triggering motion from Sec+2.0 wall panel motion sensors
  • Other: Adjust some Info-level log messages to Debug- or Error-level... reduces log clutter at default Info level

Known Issues

  • Sec+ 1.0 doors with digital wall panel (e.g. 889LM) sometimes do not close after a time-to-close delay. Please watch your door to make sure it closes after TTC delay.
  • Sec+ 1.0 doors with "0x37" digital wall panel (e.g. 398LM) not working. We now detect but will not support them. Recommend replacing with 889LM panel.
  • When creating automations in Apple Home the garage door may show only lock/unlock and not open/close as triggers. This is a bug in Apple Home. Workaround is to use the Eve App to create the automation, it will show both options.
  • ESP8266 (original ratgdo) only... possible crash when a storm of HomeKit messages arrives... which may be triggered on a upgrade to Apple iOS 26 / tvOS 26 / etc. System recovers.

v2.0.9 (2025-10-24)

What's Changed

  • Bugfix: Update function that calculates median door open/close duration. #309
  • Bugfix: Do not cancel time-to-close if second door close request received. ratgdo/homekit-ratgdo32#112
  • Other: Additional Serial CLI commands for development and debugging to e.g, provision WiFi SSID and password.

v2.0.8 (2025-10-19)

What's Changed

  • Bugfix: dry contact doors not reporting status correctly on web page. ratgdo/homekit-ratgdo32#109
  • Bugfix: Sec+1.0 add timeout when waiting for GDO reply to poll commands ratgdo/homekit-ratgdo32#111
  • Other: Save door open/close durations so not reset to unknown on a reboot
  • Other: Add timers to check that door starts to open/close and reaches fully opened/closed state in expected time
  • Other: Sec+2.0 use MotorOn packet to error correct if we miss notification packet of door opening or closing
  • Other: Add serial CLI commands to scan WiFi networks and reset door ID & rolling codes
  • Other: Remove known issues list from prior versions in CHANGELOG.md... because they are now repeating

v2.0.7 (2025-10-12)

What's Changed

  • Bugfix: Sec+2.0 doors not opening or closing. Issue #305

v2.0.9

25 Oct 02:00

Choose a tag to compare

v2.0.9 (2025-10-24)

What's Changed

  • Bugfix: Update function that calculates median door open/close duration. #309
  • Bugfix: Do not cancel time-to-close if second door close request received. ratgdo/homekit-ratgdo32#112
  • Other: Additional Serial CLI commands for development and debugging to e.g, provision WiFi SSID and password.

Known Issues

  • Sec+ 1.0 doors with digital wall panel (e.g. 889LM) sometimes do not close after a time-to-close delay. Please watch your door to make sure it closes after TTC delay.
  • Sec+ 1.0 doors with "0x37" digital wall panel (e.g. 398LM) not working. We now detect but will not support them. Recommend replacing with 889LM panel.
  • When creating automations in Apple Home the garage door may show only lock/unlock and not open/close as triggers. This is a bug in Apple Home. Workaround is to use the Eve App to create the automation, it will show both options.
  • ESP8266 (original ratgdo) only... possible crash when a storm of HomeKit messages arrives... which may be triggered on a upgrade to Apple iOS 26 / tvOS 26 / etc. System recovers.

v2.0.8 (2025-10-19)

What's Changed

  • Bugfix: dry contact doors not reporting status correctly on web page. ratgdo/homekit-ratgdo32#109
  • Bugfix: Sec+1.0 add timeout when waiting for GDO reply to poll commands ratgdo/homekit-ratgdo32#111
  • Other: Save door open/close durations so not reset to unknown on a reboot
  • Other: Add timers to check that door starts to open/close and reaches fully opened/closed state in expected time
  • Other: Sec+2.0 use MotorOn packet to error correct if we miss notification packet of door opening or closing
  • Other: Add serial CLI commands to scan WiFi networks and reset door ID & rolling codes
  • Other: Remove known issues list from prior versions in CHANGELOG.md... because they are now repeating

v2.0.7 (2025-10-12)

What's Changed

  • Bugfix: Sec+2.0 doors not opening or closing. Issue #305

v2.0.6 (2025-10-12)

What's Changed

  • Bugfix: HomeKit pairing failed with out-of-compliance error. #300
  • Bugfix: Web wage status occasionally getting out-of-sync with actual light/lock/door state.
  • Bugfix: Door open/close duration calculation not handling cases where door reverses before reaching open/close state.
  • Bugfix: Setting syslog port not taking effect until after reboot. #304
  • Bugfix: do not attempt to act on Sec+2.0 packet that failed to decode. Issue ratgdo/homekit-ratgdo32#106
  • Feature: Change WiFi and MDNS hostname when user changes GDO name. ratgdo/homekit-ratgdo32#93
  • Feature: Add clipboard copy icon to IP address and mDNS name.
  • Other: Detect (but do not support) 0x37 wall panels like LiftMaster 398LM. ratgdo/homekit-ratgdo32#95
  • Other: ESP8266 (original ratgdo) only... suspend GDO communications during HomeKit pairing process.
  • Other: ESP8266 (original ratgdo) only... move more constants into PROGMEM and optimize use of system stack.

v2.0.8

19 Oct 20:57

Choose a tag to compare

v2.0.8 (2025-10-19)

What's Changed

  • Bugfix: dry contact doors not reporting status correctly on web page. ratgdo/homekit-ratgdo32#109
  • Bugfix: Sec+1.0 add timeout when waiting for GDO reply to poll commands ratgdo/homekit-ratgdo32#111
  • Other: Save door open/close durations so not reset to unknown on a reboot
  • Other: Add timers to check that door starts to open/close and reaches fully opened/closed state in expected time
  • Other: Sec+2.0 use MotorOn packet to error correct if we miss notification packet of door opening or closing
  • Other: Add serial CLI commands to scan WiFi networks and reset door ID & rolling codes
  • Other: Remove known issues list from prior versions in CHANGELOG.md... because they are now repeating

Known Issues

  • Sec+ 1.0 doors with digital wall panel (e.g. 889LM) sometimes do not close after a time-to-close delay. Please watch your door to make sure it closes after TTC delay.
  • Sec+ 1.0 doors with "0x37" digital wall panel (e.g. 398LM) not working. We now detect but will not support them. Recommend replacing with 889LM panel.
  • When creating automations in Apple Home the garage door may show only lock/unlock and not open/close as triggers. This is a bug in Apple Home. Workaround is to use the Eve App to create the automation, it will show both options.
  • ESP8266 (original ratgdo) only... possible crash when a storm of HomeKit messages arrives... which may be triggered on a upgrade to Apple iOS 26 / tvOS 26 / etc. System recovers.

v2.0.7 (2025-10-12)

What's Changed

  • Bugfix: Sec+2.0 doors not opening or closing. Issue #305

v2.0.6 (2025-10-12)

What's Changed

  • Bugfix: HomeKit pairing failed with out-of-compliance error. #300
  • Bugfix: Web wage status occasionally getting out-of-sync with actual light/lock/door state.
  • Bugfix: Door open/close duration calculation not handling cases where door reverses before reaching open/close state.
  • Bugfix: Setting syslog port not taking effect until after reboot. #304
  • Bugfix: do not attempt to act on Sec+2.0 packet that failed to decode. Issue ratgdo/homekit-ratgdo32#106
  • Feature: Change WiFi and MDNS hostname when user changes GDO name. ratgdo/homekit-ratgdo32#93
  • Feature: Add clipboard copy icon to IP address and mDNS name.
  • Other: Detect (but do not support) 0x37 wall panels like LiftMaster 398LM. ratgdo/homekit-ratgdo32#95
  • Other: ESP8266 (original ratgdo) only... suspend GDO communications during HomeKit pairing process.
  • Other: ESP8266 (original ratgdo) only... move more constants into PROGMEM and optimize use of system stack.

v2.0.7

13 Oct 01:05

Choose a tag to compare

v2.0.7 (2025-10-12)

What's Changed

  • Bugfix: Sec+2.0 doors not opening or closing. Issue #305

Known Issues

  • Sec+ 1.0 doors with digital wall panel (e.g. 889LM) sometimes do not close after a time-to-close delay. Please watch your door to make sure it closes after TTC delay.
  • Sec+ 1.0 doors with "0x37" digital wall panel (e.g. 398LM) not working. We now detect but will not support them. Recommend replacing with 889LM panel.
  • When creating automations in Apple Home the garage door may show only lock/unlock and not open/close as triggers. This is a bug in Apple Home. Workaround is to use the Eve App to create the automation, it will show both options.

v2.0.6 (2025-10-12)

What's Changed

  • Bugfix: HomeKit pairing failed with out-of-compliance error. #300
  • Bugfix: Web wage status occasionally getting out-of-sync with actual light/lock/door state.
  • Bugfix: Door open/close duration calculation not handling cases where door reverses before reaching open/close state.
  • Bugfix: Setting syslog port not taking effect until after reboot. #304
  • Bugfix: do not attempt to act on Sec+2.0 packet that failed to decode. Issue ratgdo/homekit-ratgdo32#106
  • Feature: Change WiFi and MDNS hostname when user changes GDO name. ratgdo/homekit-ratgdo32#93
  • Feature: Add clipboard copy icon to IP address and mDNS name.
  • Other: Detect (but do not support) 0x37 wall panels like LiftMaster 398LM. ratgdo/homekit-ratgdo32#95
  • Other: ESP8266 (original ratgdo) only... suspend GDO communications during HomeKit pairing process.
  • Other: ESP8266 (original ratgdo) only... move more constants into PROGMEM and optimize use of system stack.

v2.0.5 (2025-09-28)

What's Changed

  • Bugfix: Add error handling for a blank SSID... force boot into Soft AP mode, #295
  • Bugfix: Buffer overrun that caused Improv setup to fail, #298
  • Bugfix: Log messages that are truncated for exceeding buffer size not null terminated
  • Other: Add simple serial console CLI to allow setting debug level, displaying saved logs and request reboot.

v2.0.4 (2025-09-27)

What's Changed

  • Bugfix: Activity LED blink was not obeying user preferences (e.g. always off). #292
  • Bugfix: Ignore implausibly long door opening / closing times. ratgdo/homekit-ratgdo32#98
  • Feature: Allow user selection of Syslog facility number (Local0 .. Local7). ratgdo/homekit-ratgdo32#94
  • Feature: Add MDNS service for _http._tcp to allow local network name discovery. ratgdo/homekit-ratgdo32#93
  • Other: Disable HomeKit and garage door communications during OTA firmware update.
  • Other: Miscellaneous stability improvements.

v2.0.3 (2025-09-21)

What's Changed

  • Bugfix: Issue #291 Watchdog timeout trying to retrieve timezone info

v2.0.2 (2025-09-20)

What's Changed

  • Bugfix... Date and time on web page now displayed in the time zone of the server (NTP server feature must be enabled).
  • Bugfix... Crash log display was not showing stack dump, now fixed.
  • New Feature... last door open and close date and time is displayed under opening/closing status (NTP server feature must be enabled).
  • Other... Add a "home" button to system logs page because iOS and iPad OS 26 have removed the "done" button.

v2.0.5

29 Sep 02:27

Choose a tag to compare

v2.0.5 (2025-09-28)

What's Changed

  • Bugfix: Add error handling for a blank SSID... force boot into Soft AP mode, #295
  • Bugfix: Buffer overrun that caused Improv setup to fail, #298
  • Bugfix: Log messages that are truncated for exceeding buffer size not null terminated
  • Other: Add simple serial console CLI to allow setting debug level, displaying saved logs and request reboot.

Known Issues

  • Sec+ 1.0 doors with digital wall panel (e.g. 889LM) sometimes do not close after a time-to-close delay. Please watch your door to make sure it closes after TTC delay.
  • Sec+ 1.0 doors with "0x37" digital wall panel (e.g. 398LM) not working.
  • Possible crash when a storm of HomeKit messages arrives... which may be triggered on a upgrade to Apple iOS 26 / tvOS 26 / etc. System recovers.

v2.0.4 (2025-09-27)

What's Changed

  • Bugfix: Activity LED blink was not obeying user preferences (e.g. always off). #292
  • Bugfix: Ignore implausibly long door opening / closing times. ratgdo/homekit-ratgdo32#98
  • Feature: Allow user selection of Syslog facility number (Local0 .. Local7). ratgdo/homekit-ratgdo32#94
  • Feature: Add MDNS service for _http._tcp to allow local network name discovery. ratgdo/homekit-ratgdo32#93
  • Other: Disable HomeKit and garage door communications during OTA firmware update.
  • Other: Miscellaneous stability improvements.

v2.0.3 (2025-09-21)

What's Changed

  • Bugfix: Issue #291 Watchdog timeout trying to retrieve timezone info

v2.0.2 (2025-09-21)

What's Changed

  • Bugfix... Date and time on web page now displayed in the time zone of the server (NTP server feature must be enabled).
  • Bugfix... Crash log display was not showing stack dump, now fixed.
  • New Feature... last door open and close date and time is displayed under opening/closing status (NTP server feature must be enabled).
  • Other... Add a "home" button to system logs page because iOS and iPad OS 26 have removed the "done" button.

v2.0.4

27 Sep 15:59

Choose a tag to compare

v2.0.4 Pre-release
Pre-release

v2.0.4 (2025-09-27)

What's Changed

  • Bugfix: Activity LED blink was not obeying user preferences (e.g. always off). #292
  • Bugfix: Ignore implausibly long door opening / closing times. ratgdo/homekit-ratgdo32#98
  • Feature: Allow user selection of Syslog facility number (Local0 .. Local7). ratgdo/homekit-ratgdo32#94
  • Feature: Add MDNS service for _http._tcp to allow local network name discovery. ratgdo/homekit-ratgdo32#93
  • Other: Disable HomeKit and garage door communications during OTA firmware update.
  • Other: Miscellaneous stability improvements.

Known Issues

  • Sec+ 1.0 doors with digital wall panel (e.g. 889LM) sometimes do not close after a time-to-close delay. Please watch your door to make sure it closes after TTC delay.
  • Sec+ 1.0 doors with "0x37" digital wall panel (e.g. 389LM) not working.
  • Possible crash when a storm of HomeKit messages arrives... which may be triggered on a upgrade to Apple iOS 26 / tvOS 26 / etc. System recovers.

v2.0.3 (2025-09-21)

What's Changed

  • Bugfix: Issue #291 Watchdog timeout trying to retrieve timezone info

v2.0.2 (2025-09-21)

What's Changed

  • Bugfix... Date and time on web page now displayed in the time zone of the server (NTP server feature must be enabled).
  • Bugfix... Crash log display was not showing stack dump, now fixed.
  • New Feature... last door open and close date and time is displayed under opening/closing status (NTP server feature must be enabled).
  • Other... Add a "home" button to system logs page because iOS and iPad OS 26 have removed the "done" button.

v2.0.3

22 Sep 01:37

Choose a tag to compare

v2.0.3 (2025-09-21)

What's Changed

  • Bugfix: Issue #291 Watchdog timeout trying to retrieve timezone info

v2.0.2 (2025-09-21)

What's Changed

  • Bugfix... Date and time on web page now displayed in the time zone of the server (NTP server feature must be enabled).
  • Bugfix... Crash log display was not showing stack dump, now fixed.
  • New Feature... last door open and close date and time is displayed under opening/closing status (NTP server feature must be enabled).
  • Other... Add a "home" button to system logs page because iOS and iPad OS 26 have removed the "done" button.

Known Issues

  • Sec+ 1.0 doors with digital wall panel (e.g. 889LM) sometimes do not close after a time-to-close delay. Please watch your door to make sure it closes after TTC delay.
  • Possible crash when a storm of HomeKit messages arrives... which may be triggered on a upgrade to Apple iOS 26 / tvOS 26 / etc. System recovers.

v2.0.1 (2025-09-14)

What's Changed

  • Bugfix... Updating the ratgdo32 version from GitHub was not finding the firmware download file.
  • Other... Add release notes to firmware update dialog.
  • Other... Reduce unnecessary network traffic during firmware update

v1.9.1

21 Aug 09:45
05e8389

Choose a tag to compare

v1.9.1 (2025-08-21)

What's Changed

  • Bugfix... Handle invalid packets on Sec+1.0 doors that was incorrectly causing door state change to be reported. With thanks to @mitchjs
  • Bugfix... Make sure that a previous WiFi packet has finished sending before attempting to send another, fixes occasional crashes we were seeing.
  • Other... Strategically add esp_yield() around HomeKit crypto functions to protect against WatchDog timeouts.

Known Issues

  • None

v1.9.0

18 Jul 12:37
bfb8b68

Choose a tag to compare

v1.9.0 Pre-release
Pre-release

v1.9.0 (2025-07-18)

A huge thank you to @frankea for all his contributions to this release that are expected to significantly improve the performance and stability of the HomeKit firmware.

Major Release - Comprehensive Stability and Performance Overhaul

This major release represents a comprehensive rewrite of critical stability components with extensive testing infrastructure. All known crash conditions have been eliminated and performance has been dramatically improved.

Critical Stability Fixes

  • Fixed 6 Critical Race Conditions - Eliminated all identified critical failure modes that could cause system crashes, permanent hangs, or data corruption
  • Millis() Rollover Safety - Fixed timing bugs that caused permanent system hangs every ~49.7 days of uptime
  • ESP8266 Alignment Crashes - Fixed Exception 9 crashes by ensuring 4-byte alignment for multi-byte data structures
  • Buffer Overflow Prevention - Fixed Exception 0 crashes from stack memory corruption with comprehensive bounds checking
  • Interrupt Safety - Fixed race conditions in obstruction sensor ISR that caused false readings
  • Stack Overflow Protection - Prevented crashes in dense WiFi environments through safe array sizing
  • Configuration Corruption - Fixed race conditions in config writes that could corrupt settings during WiFi events
  • Rolling Code Protection - Eliminated race conditions that could desynchronize door opener communication

New Features

  • Comprehensive Testing Framework - Added Unity-based test suite with 11 test categories covering all critical functionality
  • Smart Obstruction Detection - Automatic fallback from pin-based to Pair3Resp packet-based detection when hardware sensor unavailable
  • Performance Monitoring - Real-time web performance metrics exposed via JSON API (requests, cache hits, dropped connections, max response time)
  • Enhanced Security+ 1.0 Support - Improved door state validation and reduced "Door State: unknown" occurrences
  • Memory Usage Tracking - Comprehensive monitoring of both regular and IRAM heap usage
  • Static Analysis Integration - cppcheck integration for continuous code quality monitoring
  • GitHub Actions CI/CD - Added .github/workflows/test.yml and codeql.yml for automated testing and security scanning
  • Test Infrastructure - Added run_tests.sh script and comprehensive test/README.md documentation
  • Performance Profiling - Added test_performance.py for measuring real-world response times

Performance Improvements

  • 68% Faster Web Interface - JSON caching reduces response times from 459ms to 146ms
  • 277% More Free IRAM - Optimized memory usage from 1.9KB to 7.3KB free
  • Connection Management - Throttling, timeout protection, and resource leak prevention
  • WiFi Stability - Stack overflow prevention in dense network environments (20 network limit)
  • Long-term Reliability - Rollover-safe timing for continuous operation beyond 49 days

Testing Infrastructure

  • Unity Test Framework - 11 comprehensive test suites with 100% pass rate
  • Core Functionality Tests - Rollover safety, validation logic, and ESP8266-specific behavior
  • Integration Tests - HomeKit functionality and protocol communication
  • Performance Tests - Memory usage, timing analysis, and resource monitoring
  • Hardware Simulation - Door operation testing with mocked hardware interfaces
  • Web Interface Tests - REST API endpoints and response validation with Python unittest
  • Static Analysis - Automated code quality checks with cppcheck
  • Build Monitoring - Size tracking and memory usage validation
  • CI/CD Integration - Automated testing on all commits and pull requests
  • CodeQL Analysis - Security and vulnerability scanning for C++, Python, and JavaScript
  • Test Documentation - Comprehensive test/README.md with coverage goals and debugging guides
  • Mock Hardware Layer - Simulates ESP8266 memory functions and Arduino framework for native testing

Memory and Performance Optimizations

  • RAM Conservation - Removed duplicate JSON buffer saving 1.3KB RAM for memory-constrained ESP8266
  • IRAM Optimization - Strategic buffer placement providing 5.4KB additional memory headroom
  • Connection Throttling - Max 4 concurrent connections with 5-second timeout protection
  • WiFi Stack Safety - Limited network scanning to prevent overflow in dense environments
  • Safe String Operations - Bounds-checked string concatenation preventing buffer overflows
  • Request Caching - JSON response caching dramatically improves repeat request performance
  • Memory Monitoring - Real-time tracking of heap fragmentation and usage patterns

Technical Implementation Details

  • Struct Alignment - Added __attribute__((aligned(4))) to PacketAction and ForceRecover structs preventing Exception 9 crashes
  • Rollover-Safe Arithmetic - Replaced all direct millis() comparisons with rollover-safe subtraction patterns ((int32_t)(millis() - last_time) > timeout)
  • Interrupt Safety - Protected pulse counter access with proper synchronization between ISR and main loop using noInterrupts()/interrupts()
  • Buffer Management - Replaced Variable Length Arrays with fixed-size arrays for stack safety
  • String Safety - Replaced unsafe strcat with bounds-checked safe_strcat wrapper functions
  • Type Safety - Added proper format specifiers (ADD_LONG, ADD_TIME macros) eliminating compiler warnings
  • Memory Layout - Strategic buffer allocation between IRAM and regular heap for optimal performance (LOG_BUFFER_SIZE in IRAM heap)
  • Connection Management - Web server rate limiting, timeout handling, and resource leak prevention
  • Protocol Enhancement - Pair3Resp packet parity detection (3=clear, 4=obstructed) for obstruction fallback
  • State Validation - Enhanced Security+ 1.0 logic accepting valid states immediately while confirming suspicious values
  • Config Protection - Atomic file writes with mutex protection preventing corruption during concurrent access
  • Config Write Optimization - Added configChanged flag to prevent unnecessary flash writes on transient operations
  • Network Safety - WiFi scanning limits (MAX_NETWORKS=20) and stack overflow protection in dense environments
  • Request Throttling - ActiveRequest tracking with MAX_CONCURRENT_REQUESTS=4 and REQUEST_TIMEOUT_MS=5000
  • Diagnostic Logging - Added comprehensive RINFO/RERROR logging for debugging race conditions and system state
  • Memory Allocation Safety - Added malloc failure protection with automatic ESP.restart() in log.cpp and utilities.cpp
  • Atomic Configuration Writes - Implemented temp file + rename pattern to prevent config corruption during power loss
  • Config File Validation - Added malformed line detection and graceful handling in config parser
  • WiFi Connection Optimization - Reduced connection delay (500ms→100ms) and added 10-second timeout protection
  • WiFi Stack Protection - Dynamic memory allocation for network lists and MAX_NETWORKS=20 limit preventing overflow
  • Code Quality - Removed trailing commas in HomeKit characteristic declarations for compiler compliance
  • LOG_BUFFER_SIZE Optimization - Reduced from 8192 to 2048 bytes saving 6KB IRAM for critical services

Issues Resolved

  • #124 - Obstruction sensor unreliable/always shows obstructed (fixed by automatic fallback to Pair3Resp packet-based detection)
  • #132 - Security+ 1.0 door state synchronization issues and frequent "Door State: unknown" (fixed by improved state validation logic)
  • #218/#215 - Memory-related crashes and HomeKit malloc failures (improved by IRAM optimization and connection management)
  • #252 - SEC+1.0 bootloop crashes due to IRAM heap exhaustion during HomeKit MDNS initialization (fixed by LOG_BUFFER_SIZE optimization)
  • #261 - Timing issues and bugs after millis() rollover (49+ day uptime)
  • #266 - Slow web interface performance and timeouts
  • #267 - Connectivity crashes, web interface timeouts, WiFi instability, Exception (0) crashes with ASCII in addresses
  • #271 - ESP8266 alignment crashes (Exception 9/LoadStoreAlignmentCause) due to unaligned struct access