Table of Contents
Download XTension 9.5.5
Released 7/14/2024
Download Universal Binary for all Supported OS versions; XTension. v 9.5.5 (build 1093)
Minimum System Version for this release is OSX 10.14. It may function on earlier versions with limited support from certain plugins. There will soon be a build that will attempt to roll the requirements back a bit more but any earlier OS’s than 10.14 are officially on life support now.
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.5 Change Log:
- NEW: Checks at startup to see if the Database is located on an iCloud shared device. This sharing is problematic and will cause serious database sync issues, not to mention other problems with your non-XTension documents. A dialog will show at startup recommending you turn this off.
- If the database was corrupted by living on an iCloud shared device this version will try to clean things up to the best of it’s ability. Randomly named units that were supposed to have been deleted will no longer appear after restarting as they could previously.
- The XTension Support folder and Database have been moved back to the Application Support folder. XTension no longer needs full access to your Documents folder. This is mandated by Apples instructions as the support folder is the proper place to keep such things. If you have old versions of the Database in other places it may not be able to move the database properly if it cannot tell which is the most recent version in which case it will either popup a dialog or write to the log asking you to sort out which is the currently correct database. This should not happen but given issues with iCloud and the fact you folks can always surprise me it may still happen.
- To aid debugging a flag is added to the database if it finds itself on an iCloud shared folder. This will let me know that is the first problem to solve before working other issues with you.
- FIX: Better script error reporting. If a handler in another script returns an error that will now be logged properly with a useful message rather than the previous generic and unhelpful “-1708” error.
- FIX: Script “do later” callbacks and idle handlers are better at figuring out if an async script event is pending and will put off their execution until no other script is running. This should fix the difficult to duplicate some folks were having on particularly busy or older slower machines.
- DEBUG: There is a debug menu option to log the script pumped event handling. This was useful when I was discovering what was causing the randomish script errors. Now if you turn it on it will show you if such an error might have happened previously. There is no use other than academic interest but I’ve left it in as it is interesting.
- CHANGE: The timeout error message from an async shell command will not be logged if you have a handler for the result. In that result handler you can either log that the command has timed out or ignore it if that is what you wish.
- FIX: Occasionally an error could be logged after closing the Interface List window if you had the “display more information” option turned on. This caused no real problems as it was just an in progress attempt to get the CPU usage of the plugins that was outstanding when the window was closed. These should no longer be logged and will be ignored.
- NEW: In the “gear” menu while editing a script you have the option to turn on execution time logging for just that individual script. This will log the milliseconds it takes to run the script whenever the script is run. This can be useful for debugging or other work if you suspect a script is sometimes taking a long time to execute. This was previously a global debug setting and caused a LOT of logging. This is a much better way of doing this.
- FIX: Fixed an incorrect display of version information caused by some of the various signing stages while preparing the app for release. The version information should now always display correctly.
- DEBUG: Added some additional information displays to the Runtime Debug window that should make it easier to find leaks. Additionally changes in allocations are kept track of between refreshes of the window making it much easier to see the changes rather than just really big numbers bouncing around.
- DEBUG: Added a Debug Menu option to log the current settings of (this Unit), (this Script) and (this Interface) values. They should always ne empty if nos cript is running or no unit is handling a command but some errors have caused them to get stuck.
- FIX: Fixed a potential error loop in the Global Script Error handler if there was no (this script) reference valid at the time of it’s being called.
- Hubitat Plugin:
- CHANGE: Increased the timing for automatic query callbacks that should make it’s accuracy when representing the current state of dimmable devices more accurate.
- NEW: Added an Advanced groupbox to the plugin settings window for the Hubitat. This lets you manually control the Hubitat event callback mechanism. Normally you do NOT want to do this but if you are running the hubitat at a remote location behind a set of reverse tunnels this can make that possible. The communications to the HUbitat are 2 way with it sending events to us and not just a single direction so a more complex setup is needed to locate one apart from the local network with XTension.
- Genmon Plugin:
- NEW: Added support for the separate current measurements for both legs of the generator separately. This was added in a recent Genmon version.
- NEW: Added new “display” units for the run log, service log and alarm log. These can be included in web interfaces to display the list of events.
- FIX: Fixed a race condition that could cause the plugin to fail to get new data after the genmon device was restarted in some cases. This would be fixed by restarting the interface but will now take care of itself.
- Video Encoder Plugin FIX: A typo in an error logging situation would trigger another error rather then logging anything useful. This is now fixed.
- MJPEG Video Plugin FIX: Certain network errors could have caused the thread handing the data to stick around in memory and continue to attempt to reconnect even though another thread had been started. Resulting in extra frames ending up in XTension that were all the same but resulted in some really weird FPS readouts. The threads are now better handled and cannot be orphaned and left running while recovering from other errors.
- NEW: On Apple Silicon Macs if you attempt to run one of the older plugins that require Rosetta you’ll get a popup window asking if you’d like XTension to handle the installation of it rather than just a non-helpful error message in the log as it failed to start.
- NEW: What with the changes to where everything is located again I have added more menu items to the Database menu to reveal all of the currently active important folders in the Finder so you can know exactly where things are getting loaded from or where you should put things like sounds or icon files and so forth. The new items are for the Views Folder, Icons Folder, Sounds Folder, Current Log File, Archived Log Folder and it always had an option to show the current database.
- MQTT Plugin Fix: The MQTT plugin could get into an error loop if one of the data streams sent something that could not be properly decoded as UTF8 text. The only way to get past it was to reconnect to the server which reset the last things we have seen. The plugin will do that automatically now rather than just stop working with constant error logging.
- NEW: New Applescript verb to Format Elapsed Time various ways to get elapsed time measurements in better human readable formats for display.
- NEW: New Applescript verb: Has Unit Property to return a boolean if a Unit has a named property or not. Previously you just had to check for an empty string from the Get Unit Property command but this is much better. This does not change the previous behavior of the Get Unit Property verb so no script changes should be needed to keep running as usual, but going forward this is a better way of managing such things.
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.