Table of Contents
Download XTension 9.5.6
Released 8/1/2025
Download Universal Binary for all Supported OS versions; XTension. v 9.5.6 (build 1097)
Rosetta Note: While the entirety of the main app and all more recent plugins are Universal and run natively on Intel or Apple Silicon there are a few older plugins including the W800 and CM11 that are still Intel only. They run fine under Rosetta and you’ll never notice the difference. If XTension finds that it will need Rosetta to run one of the plugins it will popup a dialog asking if you’d like it to do that and it can take care of it for you.
9.5.6 Change Log:
- NEW: Calix Gigaspire plugin. Right now this just provides for rebooting of the hub/router and any satellite devices but more functionality is available if anyone desires me to expand on this let me know.
- New: “Ephemeral” commands. Though added for better Video support any plugin can now use this feature. In the case of video if the program was held out for any length of time many video frame packets could build up in the buffers and when control resumed it could lengthen the apparent time of the hangup by having to process so many frames. Now incoming frames are marked as ephemeral and only a single frame is kept in the buffer at a time. If more frames arrive while there is already one in the command buffer the new one will replace the old one so that when control returns to the app it needs only process a single video frame. This does not cause dropped frames when recording as that is handled by the separate process of the plugin instance. This just means that you wont see half a second of video flash by when you’re viewing a stream in the web remotes or the app if a script holds out the system for more than a few dozen milliseconds.
- NEW: Scheduled events now have a “do not log” checkbox so that you can suppress the constant logging for rapidly repeating events. Note that this reduces the amount of info in the log for figuring out whats going on with your scripts and logic so I would recommend only turning it on after you are satisfied with the functionality you’re setting up.
- NEW: Added the ability to add open source attribution to the plugin info data. This is now displayed in the Plugin Attribution window under the XTension window. I think this is better than just having the thanks to the authors of the various libraries used just contained in the code which while it is included in readable form is more hidden and this is more in keeping with the spirit of most of the open source libraries used.
- Hubitat: Added the “human motion state” constant to the list of states that the Hubitat plugin knows should be moved into a unit so that it more easily supports newer human presence detectors.
- Hubitat: I have split the Hubitat plugin into 2 rather than handle the new remote connection capability along with all the rest in the main plugin. This will eliminate the occasional issues people had with it deciding that it was running remotely when it actually was not. If you are not running remotely then no changes are needed as the original plugin just no longer has the checkbox that you weren’t using anyway. If you are using the remote capability you will need to edit that plugin and select the new Hubitat Remote plugin and then restart your plugin instance.
- MQTT: The MQTT plugin now logs certain repeating and less important errors only when the plugin is in debug mode and other repeating errors only once when they start rather than constantly to keep from completely filling the log with unhelpful messages.
- SDR Plugin: Updated the rtl_433 binaries to 25.02 (2025-02-19) for more message type handling.
- SDR Plugin: Fixed an issue where the plugin might not save the serial number for the radio. It now always works when you have multiple radios on the same Mac.
- SDR Plugin: Added support for the SonOff 433mhz remotes which I use many of around the house. They are quite useful with plenty of buttons that are large enough to be re-labeled with any of those label printer things. thanks to KC Hundrere for the info on getting this to work.
- RTLAMR: Updated the rtlamr plugin binaries to the their v0.9.4 for more and better message handling.
- RTLAMR: Added actual handling for the SCM+ message type
- RTLAMR: Added at least initial handling of the R900 and R900BCD packet types. I dont have anything that sends these so I am making some assumptions about what the data will look like so please let me know if this is working for you or not.
- RTLAMR: There are potentially many keys in these messages that are not obviously the simple meter reading value but that you may wish to use or be able to look at. All values in the data packet are now saved as Unit Properties so you can add custom columns to any Unit List to see them, capture their new values with an on property changed handler in the Units On Script or use the regular Unit Property verbs to access them at any time.
- RTLAMR: Same fix as the SDR plugin where radio serial numbers are now reliably saved on systems with more than one radio connected.
- Scripts run via the command line or the Do Script command now have that information saved with them so that they can be filtered for or viewed in the log via the filtering settings rather than them just being blank. Makes it easier to find any log output from them.
- The regular disk space check when managing video recording drives is slower but yields a lot more time to everything else which shoudl reduce or eliminate any short pauses that may have happened for people with slower external drives or very busy systems.
- FIX: Fixed a problem with the Mobile Web Remote plugin that kept it from saving when you were just re-ordering lines in the interface. Reordering now properly triggers a save of the changes.
- FIX: A unit created via the create unit verb will have it’s device type set correctly so that when you later edit it the popup of device type will display properly rather than just having no selection.
- FIX: When a unit has an inactivity timeout error it will now properly call the unit error handler in the Units On Script.
- FIX: When a unit runs it’s error handler due to an inactivity timeout the Unit name is set in (ThisUnit) so it will be associated with the log lines. Any such errors are now properly displayed when filtering the log for that Unit.
- FIX: Fixed a potential issue that could log key not found errors when saving a script if it was looking for the async flag.
- FIX: Fixed an issue with properly drawing “Never” in the last activity date field when live resizing a Unit List window.
- FIX: Fixed a potential problem where the “Revert” menu in an edit script window might not load the previous script text with the proper text encoding leading to goofy characters being shown that would need to be fixed before the script would compile again.
- FIX: Fixed an issue that would cause large values to display in scientific notation in the most recent unit history list of values. They are now treated as normal just very large numbers and will be properly available in all the verbs that use this list of most recent values.
- FIX: Video display windows now properly accept the command-w to close them menu shortcut. Dont know how long thats been missing but I never noticed it until recently.
- DEBUG: you can create a pseudo unit with the name “_HEARTBEAT” which will be populated every 5 seconds with the longest time the heartbeat timer took to operate. Normally this would just clog up the logs and databases but if you’re looking for a timing issue with a script this may be helpful to know. Dont create this unless you know you need to.
- DEBUG: You can create a pseudo unit with the name “_memory” which will be updated every 5 seconds with the memory usage of the app. Do not create this unit unless you are debugging a problem with me or it will cause a lot of useless information to be generated and saved potentially using up resources unnecessarily.
- DEBUG: You can create a pseudo unit with the name “_objects” which will be updated every 5 seconds with a count of all objects created by the application. Do not create this unless you are debugging a problem with me as it wastes time to count them constantly and will just clog up and slow down your system.
- DEBUG: Moved many of the hidden scripting settings to the debug menu for easier access when gathering information. Do not mess with the debug menu unless I ask you to or you’re gathering info on your own for some reason.
- DEBUG: Added a new “Log Script Execution Times” menu item to the debug menu. This will open a window letting you enter a millisecond value and any script that takes longer than that to execute will write a message to the log about it. This makes it much easier to find a script that might be taking a long time to finish without filling the log with thousands of log items about the various script handlers taking almost no milliseconds to run. Note that you can still set an individual script to always log it’s execution time in the gear menu on the edit script window.
- DEBUG: USB Events such as an external drive or adaptor or device being connected or disconnected now trigger an immediate flush of the log file so that any errors that were generated because of it have a better chance of being saved in the case of problems with bad USB devices, cables or hubs.
NOTE: This disk image no longer includes the older legacy plugins that will not be updated for newer OS versions. If you still need to run the CM19, CM15, ZTroller or the various Smarthome X10 interfaces please download the legacy plugins package from here and install the ones you need via the “Install Plugin” menu item of the “Database” menu.
