What's Changed
- fix(test): remove race condition in device.new-state trigger tests by @Pierre-Gilles in #2804
- Speed up server tests: snapshot-based DB reset, c8 coverage, dedicated lint job by @Pierre-Gilles in #2802
- Add Home Assistant MQTT discovery support by @Pierre-Gilles in #2805
- Speed up the Cypress CI job: drop Bluetooth/Broadlink specs, cache dependencies, lighter e2e build by @Pierre-Gilles in #2813
- fix(external-integration): ignore unsolicited SRV/TXT records in mDNS discovery scan by @Pierre-Gilles in #2809
- fix(dashboard): label binary buttons with the action they apply by @cicoub13 in #2815
- feat(homekit): expose device batteries by @Dreamthy in #2797
- feat(homekit): let the user choose which devices are exposed by @Dreamthy in #2800
- Add HomeKit support for thermostats, locks, fans, buttons, and smoke sensors by @Pierre-Gilles in #2816
- feat(dashboard): redesign the weather widget by @William-De71 in #2814
- Add HS1SA-E features by @bertrandda in #2782
- feat(dashboard): add sun horizon widget by @William-De71 in #2630
- fix: upgrade sequelize to 6.29.0 (CVE-2023-22578) by @anupamme in #2784
- Speed up server tests: skip DB reset for clean tests, cache server node_modules in CI by @Pierre-Gilles in #2818
- Speed up server tests: per-file sinon sandboxes instead of the shared singleton by @Pierre-Gilles in #2820
- chore(deps): patch high/critical severity advisories via npm audit fix by @Pierre-Gilles in #2819
- Run server tests in parallel: one mocha worker per core by @Pierre-Gilles in #2821
- fix: reconcile Zigbee2mqtt container restart policy on startup (#2734) by @Pierre-Gilles in #2827
- Enhance Cursor automation workflow with comment commands and auto-triggers by @Pierre-Gilles in #2824
- fix: make scene condition formulas fail closed and pin the formula operator surface (#2823) by @Pierre-Gilles in #2831
- fix(ci): grant pull-requests write so Cursor review comment reactions work by @Pierre-Gilles in #2833
- feat(external-integration): clean up the Docker images left behind by @Pierre-Gilles in #2822
- fix: clarify Zigbee2mqtt scene action topic requires the zigbee2mqtt/ prefix (#2826) by @Pierre-Gilles in #2836
- Fix the empty tag shown for a binary presence sensor (camera person detection) by @Pierre-Gilles in #2839
- ci: daily scheduled autofix firing Claude Code cloud sessions on review-bot feedback by @Pierre-Gilles in #2838
- chore(security): patch/minor dependency bumps for high & critical advisories by @Pierre-Gilles in #2843
- Add a "back to integrations" link on every integration page by @Pierre-Gilles in #2842
- ci: accept the autofix fire URL from a secret as well as a variable by @Pierre-Gilles in #2840
- Integration catalog: make the search accent-insensitive by @Pierre-Gilles in #2830
- Fix the integration counter mixing scopes across catalog views by @Pierre-Gilles in #2834
- Show labeled value lists in the scene editor instead of raw numbers by @Pierre-Gilles in #2835
- External integrations: allow installing and updating from a locally built Docker image by @Pierre-Gilles in #2841
- [ZWave] Deprecate internal service by @sescandell in #2849
- Add NO2, O3 and SO2 device feature categories by @prohand in #2845
- Fix flaky CI: stop the gateway restore tests from poisoning the shared test database by @Pierre-Gilles in #2844
- feat(homekit): expose presence sensors as an OccupancySensor by @Dreamthy in #2846
- fix: log MQTT/Zigbee2mqtt published payload and warn on invalid JSON (#2825) by @Pierre-Gilles in #2832
- Fix flaky zigbee2mqtt/mqtt publish logging tests (require cache leak) by @Pierre-Gilles in #2859
- fix: answer device.get-state when the model targets the house instead of a room (#2850) by @Pierre-Gilles in #2852
- feat(scene): allow sending text to a device from the control-device action by @Pierre-Gilles in #2856
- fix: look HomeKit services up by feature rather than by type (#2812) by @Pierre-Gilles in #2829
- Add energy production index calculation from meter readings by @Pierre-Gilles in #2817
- feat(device): add generic maintenance feature category for consumable life tracking by @Pierre-Gilles in #2855
- chore: upgrade to Node.js 24 by @Pierre-Gilles in #2861
- Add while loop action for scene automation by @Pierre-Gilles in #2750
- Add messaging channel selector to send message scene actions by @William-De71 in #2808
- House: search home address by text (PR #2663 + review retouches) by @Pierre-Gilles in #2867
- fix: map thermostat:mode and thermostat:operating-state in the HomeKit bridge (#2806) by @Pierre-Gilles in #2828
- feat(homekit): expose the house alarm as a SecuritySystem by @Dreamthy in #2847
- Answer weather questions in the AI chat by @Pierre-Gilles in #2853
- fix(front): stop showing last state report time as last motion on motion sensors by @Pierre-Gilles in #2871
- fix(front): make drag & drop work with a mouse on touchscreen PCs by @Pierre-Gilles in #2872
- feat(scene): add a "Set a variable" action by @Pierre-Gilles in #2863
- Add network wake functionality to external integrations (hardened follow-up of #2848) by @Pierre-Gilles in #2864
- Dashboard: make chart tooltip follow the cursor instead of masking the curves by @Pierre-Gilles in #2866
- feat(scene): multi-select device features in the device state trigger by @Pierre-Gilles in #2858
- feat(integrations): browse categories, facet filters and newest sort in the catalog (spec + implementation) by @Pierre-Gilles in #2860
- Add a Devices page listing all instance devices by @Pierre-Gilles in #2868
- feat(scene): add "Get calendar events" action to announce upcoming events by @Pierre-Gilles in #2857
- fix(front): recommend external integrations instead of Matterbridge in the catalog empty-search suggestion by @Pierre-Gilles in #2873
- docs: add living specification for camera PTZ control by @Pierre-Gilles in #2762
- Add a per-feature setpoint step, driven by the device by @callemand in #2783
- fix(front): align integrations badge with its label in the mobile menu by @Pierre-Gilles in #2875
- fix(front): keep camera true colors in fullscreen in dark mode by @Pierre-Gilles in #2876
- feat(device): add text/select feature type with string-valued supported_options by @Pierre-Gilles in #2869
- Fix water heater boost control overflowing narrow dashboard cards by @Pierre-Gilles in #2878
- Add an account_link config field for providers that are not OAuth2 (#2780 rebased on master, review feedback addressed) by @Pierre-Gilles in #2879
- Add energy-flow telemetry: production power, grid-sensor and home-output-sensor categories by @Pierre-Gilles in #2880
New Contributors
Full Changelog: v4.85.0...v4.86.0