Reactor (Multi-System/Multi-Hub) Announcements
-
Reactor build 26177
- Notify via Telegram: fix application of default chat_id when not specified on individual notification action.
- Hubitat: fix an error in handling data POST from MakerAPI (affects house modes, HSM)
-
Nodejs v24.17 Not Compatible
Users on bare-metal installs... a security fix in nodejs v24.17 inadvertently broke a dependency of Reactor. This version of nodejs is therefore not compatible with Reactor. If you are using it, please upgrade to v24.18.
-
Reactor build 26193
BARE-METAL USERS: nodejs v24.17 had a regression/injection that breaks HTTP connections, which has broad negative effect in Reactor. This version specifically is excluded from support, and users on that version are advised to upgrade to v24.18 (or higher).
BREAKING CHANGE: I'm guessing this will affect very few people, maybe none: the
include_attributesselector for DynamicGroupController now requires that all listed attributes match when tested against an entity. Previously, if any listed attribute matched, the entity would be added to group eligibility. This forced users to use a filter expression if all attributes had to be matched together, which carries a greater performance impact and has other side-effects. The old behavior can be obtained by separating each attribute under its owninclude_attributesselector individually.- DynamicGroupController: the
include_attributesselector now requires all listed attributes to match, rather than any of the listed attributes, for the entity to be selected. See note above. - A new
lexp-cli.jsutility in thetoolssubdirectory allows users to experiment with lexp expressions outside of Reactor. This tool doesn't have Reactor context, so functions likegetEntity()andisRuleSet()are not available; nor are Reactor's global variables. It is strictly an environment to help with familiarization. - Reaction Editor: when editing the Set or Reset reaction of a Rule, the Copy From... button will now list the contra-reaction at the top of the list, making it easier to find and copy the reaction within the current Rule.
- UI: The condition and action editors now support a right-click context menu on conditions and actions. The menu provides copy-paste of individual conditions and actions. Other menu actions are added where they make sense. Thank @therealdb for this power-user feature!
- UI: On dialogs, the Enter key will not perform any action if a modal dialog contains two or more buttons (i.e. where the meaning of Enter is ambiguous).
- nodejs version 26 is now explicitly supported, with v26.4.0 being the current version used for development (testing still occurs on v22 and v24).
- HassController: Bless HA to 2026.7.2
- DynamicGroupController: the
-
Reactor build 26193
BARE-METAL USERS: nodejs v24.17 had a regression/injection that breaks HTTP connections, which has broad negative effect in Reactor. This version specifically is excluded from support, and users on that version are advised to upgrade to v24.18 (or higher).
BREAKING CHANGE: I'm guessing this will affect very few people, maybe none: the
include_attributesselector for DynamicGroupController now requires that all listed attributes match when tested against an entity. Previously, if any listed attribute matched, the entity would be added to group eligibility. This forced users to use a filter expression if all attributes had to be matched together, which carries a greater performance impact and has other side-effects. The old behavior can be obtained by separating each attribute under its owninclude_attributesselector individually.- DynamicGroupController: the
include_attributesselector now requires all listed attributes to match, rather than any of the listed attributes, for the entity to be selected. See note above. - A new
lexp-cli.jsutility in thetoolssubdirectory allows users to experiment with lexp expressions outside of Reactor. This tool doesn't have Reactor context, so functions likegetEntity()andisRuleSet()are not available; nor are Reactor's global variables. It is strictly an environment to help with familiarization. - Reaction Editor: when editing the Set or Reset reaction of a Rule, the Copy From... button will now list the contra-reaction at the top of the list, making it easier to find and copy the reaction within the current Rule.
- UI: The condition and action editors now support a right-click context menu on conditions and actions. The menu provides copy-paste of individual conditions and actions. Other menu actions are added where they make sense. Thank @therealdb for this power-user feature!
- UI: On dialogs, the Enter key will not perform any action if a modal dialog contains two or more buttons (i.e. where the meaning of Enter is ambiguous).
- nodejs version 26 is now explicitly supported, with v26.4.0 being the current version used for development (testing still occurs on v22 and v24).
- HassController: Bless HA to 2026.7.2
@toggledbits said in Reactor (Multi-System/Multi-Hub) Announcements:
Reaction Editor: when editing the Set or Reset reaction of a Rule, the Copy From... button will now list the contra-reaction at the top of the list, making it easier to find and copy the reaction within the current Rule.
UI: The condition and action editors now support a right-click context menu on conditions and actions. The menu provides copy-paste of individual conditions and actions. Other menu actions are added where they make sense. Thank @therealdb for this power-user feature!Oh My! That is very cool indeed!
C
- DynamicGroupController: the
-
Reactor build 26214
ALL USERS: This build is strictly to address a problem for bare-metal installs only running on nodejs v22.0 through v22.11. Use
node -vto show your version, or look at the startup messages inreactor.log. If your nodejs is v22.12.0 or higher, or you are running a docker image, you do not need to update to this build.- Workaround for module load problem in nodejs versions from 22.0 through 22.11.
Only a bare-metal package is distributed for this build. The latest docker images are still build 26193.
-
Reactor build 26221
SECURITY! - BARE-METAL USERS: It is always recommended that you update package dependencies whenever installing Reactor updates. After unpacking the Reactor archive, go into the
reactordirectory (whereapp.jslives) and runnpm run depsto update package dependencies. This is particularly important to address security updates for many packages.- DynamicGroupController: Fix an issue where a
filter_expression-controlled group would miss an attribute update. - Engine/Reactions: The log level for the result of Group and While action predicates (i.e. the conditions) has been raised to INFO (4) from DEBUG0 (5). This may help users more easily identify logic bugs in their actions without the need to change the Engine log level (the Engine is dauntingly verbose even at DEBUG0 level).
- HassController: Bless HA to 2026.7.4
- DynamicGroupController: Fix an issue where a
-
Reactor build 26284
NOTE: Your first startup on this build may log some odd-looking errors while rebuilding entities from various controllers, and that's expected. A second restart should be noticeably cleaner.
- New Access Control settings for operation behind reverse proxies. These new settings should enable easier reverse proxy configuration while maintaining local access (i.e. access UI via LAN). DISCLAIMER: Opening your system/network to a public IP address is not something to be trifled with, and if you don't know what you're doing, you will likely regret it at some point. Proceed entirely at your own risk. See further discussion here.
- HassController: now recognizes HA's
fanservice with capabilities (including new capabilities:preset_mode,speed,directionandoscillate) extended by matching the source device's advertised supported features (i.e. not all capabilities will be present on all devices). - HassController: extend
media_sourcecapability tomedia_playerdevices that support it. - HubitatController: Improve behavior when new devices are added to the hub and published by Maker API. It should now not be necessary to restart Reactor to have the entity fully configured and responsive.
- HubitatController: Default polling action is now Refresh (was Poll). On newer firmware, this more reliably produces a device change message when the state has updated (e.g. a switch without instant status was operated manually). Polled devices now allow an
actionconfig to override the default action. - HassController: Store HA
unique_idandplatformon extended attributes (e.g. for use in filtering). - HassController: Bless HA to 2026.10.1
-
Reactor build 26287
- Tighten tests for proxied requests so that proxy-handling behavior isn't triggered when proxy configuration has not been established.
-
Reactor build 26298
SECURITY: Recent discovery of compromised intermediate certificates has been addressed with updated docker images for arm64 and amd64/x86_64. Bare-metal Reactor users are advised to upgrade their node install to at least (within each major version) 22.23.4, 24.22.1, or 26.12.1, and further update their CA certificates on the underlying operating system, as well as any affected packages (e.g. potentially python, OpenSSL, curl, wget, etc.). Any of the popular AIs should be able to provide useful specific guidance if you adequately describe your system configuration. Note that armv7l images cannot be fully patched at this time due to limitations in underlying packages. Upgrading to 64-bit is currently the only path.
- Security: Reactor Access Control now supports Multi-factor (Two-Factor) Authentication. Configuring MFA is highly recommended for users granting access to Reactor from outside their LANs (e.g. via reverse proxy or tunnel). See docs
- Security: Reactor Access Control now blocks host IP addresses for consecutive login failures (configurable, default: 4 failures within 3 hours gets blocked for 48 hours). See docs
- Security: docker images have an updated node version to address recent discovery of compromised eMudhra intermediate certificates, and others. The image OS certificate store has also been updated accordingly. ref ref ref
- HubitatController: New
x_hubitat_sys.restartandx_hubitat_sys.rebootactions (on system entity); see docs - HassController: Bless HA to 2026.10.4









