Reactor (Multi-System/Multi-Hub) Announcements
-
Reactor build 25308
IMPORTANT: This build addresses two issues in 25304 only. If you are not experiencing these two issues (described below), you do not need to upgrade to this build.
- Expressions: Fix an error thrown when defining a function in a global expression.
- Reactions: fix an issue causing a disabled group to execute anyway.
Additional changes:
- Engine: It is now possible to create constants and functions for use in expressions system-wide that are not defined using global variables. see docs
- UI/Rules: Rule search field on offcanvas now also searches reactions by ID (parity with behavior for rules).
- Rule/Date-Time Condition: work around an anomaly in nodejs v24 (and maybe other versions) that would cause a between condition spanning a DST change to throttle the parent rule.
-
T toggledbits forked this topic on
-
Reactor build 25310
IMPORTANT: This build was patched and re-released to address a compatibility issue for Home Assistant 2025.11. If you pulled this release before 1pm Eastern Standard Time (18:00 UTC) on Friday Nov 7, please re-pull/re-install this build to get those fixes.
- Expressions: restore ability (lost in 25304) to define a custom function in a global variable/expression and have it be available to other expressions.
- HassController: Bless HA to 2025.11.0
-
Reactor build 25315
NOTE FOR HOME ASSISTANT USERS: Versions of Home Assistant prior to 2025.01 are no longer supported as of this build. They may continue to work, but no effort will be expended to maintain compatibility going forward.
- Rules: New Script condition -- write an expression (simple or complex/compound) that returns a boolean (true/false) or null, just like any other condition. The
alarm()function works in it, too! And it holds more secrets... see docs WARNING: This is a "bleeding edge" new feature; it may be subject to breaking changes as it evolves into final form. - Expressions: Add new
print()function to assist troubleshooting of complex expressions. - HassController: Support for new HA selector/data type in
input_datetimeentities and other similar. - HassController: Versions of Home Assistant older than 2025.01 are no longer supported, as support for a number of (their) deprecated features and functions is about to end.
- HassController: Bless HA to 2025.11.1
- Rules: New Script condition -- write an expression (simple or complex/compound) that returns a boolean (true/false) or null, just like any other condition. The
-
Reactor build 25315
NOTE FOR HOME ASSISTANT USERS: Versions of Home Assistant prior to 2025.01 are no longer supported as of this build. They may continue to work, but no effort will be expended to maintain compatibility going forward.
- Rules: New Script condition -- write an expression (simple or complex/compound) that returns a boolean (true/false) or null, just like any other condition. The
alarm()function works in it, too! And it holds more secrets... see docs WARNING: This is a "bleeding edge" new feature; it may be subject to breaking changes as it evolves into final form. - Expressions: Add new
print()function to assist troubleshooting of complex expressions. - HassController: Support for new HA selector/data type in
input_datetimeentities and other similar. - HassController: Versions of Home Assistant older than 2025.01 are no longer supported, as support for a number of (their) deprecated features and functions is about to end.
- HassController: Bless HA to 2025.11.1
@toggledbits that looks like a massive leap!
C
- Rules: New Script condition -- write an expression (simple or complex/compound) that returns a boolean (true/false) or null, just like any other condition. The
-
Reactor build 25321
alarm()function: has been redefined to return a boolean; true will be returned when the configured interval has completed; false in all other cases. The function previously returned the number of milliseconds remaining in the interval (less useful).- Fix an issue where modifying a global expression that contains an
alarm()call may not reset the timer. - HassController: Bless HA to 2025.11.2
-
Reactor build 25323
- Rule-based Variables: correct an error handling dependency evaluation of subscoped variables.
- SystemController: prevent spurious exception that could be thrown while shutting down Reactor. It had no effect, but it's preventable and I like my logs error-free.
-
Reactor build 25325
- Rules/Expressions: fix an additional evaluation case from @Crille
- UI: silence an error that could occur during restarts (the shutdown process could stimulate the Set Rules status widget to fire queries at the inoperative host that eventually time out).
- HassController: Bless HA to 2025.11.3
-
Reactor build 25238
- Rules/Date-Time: Fix a regression (in 25315) where a Date-Time
betweencondition that crosses midnight may determine incorrect state if the Rule is reloaded (e.g. by editing it or a Reactor restart) in the period after midnight but before the end time. - Restarts on Win32 systems can now (finally) do a gradual, organized reload or shutdown.
- HassController: Bless HA to 2025.11.3
This is a "silent" release (it is not advertised in the Status page of Reactor)
- Rules/Date-Time: Fix a regression (in 25315) where a Date-Time
-
Reaction build 26011
USERS OF AARCH64-tagged DOCKER IMAGES: Per this earlier post, this build will likely be the last with the
aarch64tag. Please follow the post's guidance for changing to one of the newer tags appropriate for your hardware and OS (32-bitarmv7lor 64-bitarm64).- Reactions UI: Fix update of display after copy in-place.
- Don't store reaction history entries for sub-reactions
- VirtualEntityController: better consistency in time-series configuration; update documentation.
- Fix an error in date display of time range conditions within certain parameters.
- HassController: Bless HA to 2026.1.0
This is a "silent" release (it is not advertised in the Status page of Reactor).
-
T toggledbits forked this topic
-
Reactor build 26116
PLEASE READ ALL CAUTIONS AND INSTRUCTIONS BELOW!
IMPORTANT: PERSISTENT FORMAT STORAGE CHANGE! I STRONGLY RECOMMEND MAKING AN INTENTIONAL, SEPARATE BACKUP OF YOUR REACTOR STORAGE/DATA BEFORE UPGRADING TO THIS BUILD, AND SAVING IT SAFELY SOMEWHERE FOR A WHILE. The file format and name used to store Reactor system objects and data has changed as of this build. Data files under the
storagedirectory now have a.dvalsuffix rather than.json. See this post for background. Conversion of your existing files to the new format is automatic and transparent on the first run of this and future builds, so your existing backups will be restorable into the foreseeable future. If you need to see the contents of a file in its native form, a new utility undertoolshas been provided:dval2json.js. You can run this utility (e.g.node tools/dval2json.js storage/expressions.dval) and it will read the.dvalfile and output its JSON representation, if possible. However, due to the limitations of standard JSON, some.dvalfiles may not be convertible to JSON by this tool; if that happens, the tool will switch to an alternate output format that is JSON-like enough to be human-readable (but is not parseable as JSON).BARE-METAL UPGRADE MUST UPDATE DEPENDENCIES! Those of you on bare-metal installs will need to run
npm run depsin your Reactor install directory after unpacking the distribution archive. There are new and updated packages required to run this build of Reactor, and it will not start without these updates. Docker users don't need to do anything, as the image is built with all dependencies preloaded.ERRORS WILL BE LOGGED ON THE FIRST RESTART AFTER UPGRADING TO THIS BUILD. ALLOW THE SYSTEM TO SETTLE A MINUTE, AND THEN RESTART AGAIN. THEN AND ONLY THEN SHOULD YOU BEGIN CHASING/REPORTING ANY ISSUES THAT REMAIN.
- DynamicGroupController now manages rooms across all standard controllers where room information is available from the source hub. Previously, each Controller had to manage rooms on its own (if that data was available from the hub/source), and the room groups were local to that controller. Now, the room information on Vera, Ezlo, Home Assistant (area), Hubitat, and Z-Wave JS (location) will be used to automatically generate shared groups owned by DynamicGroupController. Rooms are associated by name (case insensitive); for example, a "Living Room" room on a Vera and a "Living Room" area in Home Assistant will both use the "Living Room" group automatically created and managed by DynamaicGroupController. This behavior can be turned off on a per-controller basis by setting
rooms_as_sys_groups: falsein a controller's configuration. By default, this setting istrue(on, system-level groups will be created) for all controllers. All standard controllers (Home Assistant, Hubitat, Vera, Ezlo, and Z-Wave JS) have been updated to use the new room group strategy. Refer to the documentation for each Controller for additional details. - VeraController: Add configuration flag
rooms_as_local_groupsto enable VeraController's legacy behavior of creating local groups for Vera rooms. In support of the shared groups described above, this setting defaults to false as of this build. Existing local groups will be marked dead for eventual purging unless this setting is changed. - Expressions: new
runReaction()function can be used to launch a Reaction (see docs); - Reactions UI: Additional fixes to coordination and placement for copy/move;
- Reactions: While actions now have an optional iteration limit — a maximum number of times the loop will run. If the loop hits this limit before its conditions stop it, the loop will stop without error;
- Reactions: While actions now have an enforced once-per-second minimum iteration delay (that is, if you omit a Delay action in the While group, Reactor will provide a one second delay);
- Reactions UI: The display of the While condition on the detail card has been improved;
- DynamicGroupController: new
include_attributeselector (see docs); - Rules: The rule detail display now updates the main constraints' evaluation values continuously. This restores UI functionality lost when fixing an earlier bug that caused unexpected/undesirable re-evaluation of a Rule's triggers when dependent entities or variables in constraints were modified;
- Controller Config: The
typeconfig key, previously deprecated, is no longer supported. Useimplementationinstead. Unless you've ignored prior deprecation warnings, this should not be an issue. - Rules: The startup scan of rule conditions has been improved to correctly update old conditions using the changes operator with blank operands;
- HubitatController: The room of a device is now stored on the entity attributes.
- HassController: The area and floor properties of a device/entity are now stored on the Reactor entity's attributes.
- HassController: Better support for new "state" selector in service data as of 2026.4.0. The most notable effect is that, where HA offers us data, we will present a list of expected values for a field down to the device/entity level (because not every device may support every possible value for a field). This is not universal yet, but seems to be HA's direction, so as they publish the data on more entities, it should just start working in Reactor Editor fields.
- Entities List: Fix page overflow when attribute has a long value with no natural word breaks (i.e. force wrap).
- Entity: extended attribute values on standard capabilities will now survive refresh of the capability.
- Reaction Editor: Fix presentation issue with gutter in section header.
- Rule Editor: Fix presentation issues with gutters in section headers.
- Reaction Editor: After a data entry validation error, an error was not being cleared after the user fixed the entry.
- Dashboard: the
sys_group.visibleattribute has been added to control the selection of groups for automatic display on the Dashboard's default group list display (default: true); - Many documentation tweaks and updates; supply some new/improved images.
- Docker images: Detection of improperly mounted data volume. This will help alert new users in particular to missing/misconfigured data volume binding.
- HassController: Bless HA to 2026.4.3
- DynamicGroupController now manages rooms across all standard controllers where room information is available from the source hub. Previously, each Controller had to manage rooms on its own (if that data was available from the hub/source), and the room groups were local to that controller. Now, the room information on Vera, Ezlo, Home Assistant (area), Hubitat, and Z-Wave JS (location) will be used to automatically generate shared groups owned by DynamicGroupController. Rooms are associated by name (case insensitive); for example, a "Living Room" room on a Vera and a "Living Room" area in Home Assistant will both use the "Living Room" group automatically created and managed by DynamaicGroupController. This behavior can be turned off on a per-controller basis by setting









