XTension Version 9.4.34
Download for Mojave and Earlier: XTension v9.4.34 (build 1029) 11/14/2020
Download for Catalina Only: XTension v9.4.34 (build 1029) Notarized for Catalina Only 11/14/2020
NOTE: The Catalina download is a notarized disk image and will run with the proper security on Catalina and later MacOS versions. As of this version all plugins that are going to get updated for Catalina have been completed.
Minimum System Version for this release is OSX 10.10
9.4.34 Change Log:
- The MR26 and all the original RFX plugins have joined the CM11, W800 and Lynx plugins on the list of devices that are now fully compatible with Catalina. If you are using any of these plugins it is no longer necessary to update to the newer versions if they were causing you trouble. You can now continue to use the original plugins forever. I have removed the deprecation warnings from them, they will just continue to do exactly what they did before.
- NEW A beta version of a plugin for Control By Web devices. These are really nice boxes for relay control and temperature sensing on the network with both wired and wireless versions.
- Database Load Cache: The bulk of data in the database is now cached when you quit XTension and loaded back from the cache when you restart. This won’t help with the first load of the database but after that it can be anywhere from slightly faster on a modern SSD drive with a fast moderm machine to very much faster on a spinning drive. This has been running here since shortly after the last release and has not given me any issues with database corruption however once in a while the cached scripts refuse to load. This results in an error message to the log and the script loading in the original fashion so no data or script is lost. You just don’t get the speedup in that case and you have a log with an error for every script. I do not yet know why it refuses to load for me every 2 weeks or so but as I mentioned then the load happens normally. If you are unable to ignore some errors in the log that will not affect your data once in a while you can turn the database load cache off with the checkbox of a similar name in the XTension preferences.
- Database Loading Optimizations. Over the years the database has had several small changes and I was checking for the existence of older files with every load. This version will only attempt to convert older data structures if the database version we are loading is from a version prior to this build. After that it will no longer look for all those things speeding up the database loading a small but real amount more.
- The new value animation that the list windows do when a unit is updated used to happen whenever any data was updated for the unit. This was slightly confusing as the last activity date would not have been updated, there was no new value but the unit still turned orange and then faded back to normal quite a bit depending on where the data was coming from. The list windows will now only do the new value animation if a unit updated resulted in a new value or in the Last Activity date being updated. This will make using them easier over slower VNC connections or on older machines with a lot of windows open.
- Updated the checks for High Sierra or newer so that the background app of High Sierra Fix will only run if you are on high sierra and not if you are on anything older or newer. Previously I left it running on the first few versions of Mojave as I was not entirely sure the problem was fixed there yet. You will not see the GUI Thread Contention message on any OS but High Sierra.
- AppleScript continues to degrade in MacOS. XTension has to do a scripting component rollover in order to recover from a memory leak in Apple’s code. I’ve been doing that for some time now after around 10k AppleScript event handlings to make sure it keeps working. Unfortunately that is also the most common place that a corrupt script can cause a crash of XTension without any warning that the script was corrupt. I am now saving the database and turning off log caching prior to running the rollover code. That way if there is a problem you will not lose any database changes or unit updates and the log data will truly reflect the last thing that happened before the crash which might help in finding the culprit. The log caching is restored to normal after a successful rollover.
- The Weeder plugin got some love and should lose fewer acks for commands. I have also reduced significantly the timeout for waiting for one that isn’t going to come in so even worse case that the Ack for the command was lost it will not hang up the entire bus of them for more than a second or 2. I’ve also improved it’s event handling in general so these really should not happen at all anymore.
- Fixed an error that would be logged during the error processing of a failed parse in the new RFX plugin. Should the same parsing issue happen again it will now properly log some useful data instead of an error for being unable to log the useful data.
- For plugin authors I’ve added the ability to show the “use ssl” checkbox when specifying an incoming or outgoing networking connection. You could always do this by creating your own interface to it, but this will standardize the window layout and the key into the data structures.
- When hitting command-f to return to the Find window while it’s still open the previous find text is highlighted and focus is returned to the search text field so that you can more quickly enter a new search term without reaching for the mouse. If you return to the window any other way while going down the list to find something the focus will remain in the list.
- In a List window the File:Delete menu item will now properly offer to delete the List if no Units are selected. Previously if there had been a selection of Units in the window and you deselected them (or deleted them) the menu remained offering to deleted the selected units instead even though the action at that point would have been to delete the List.
- Carrying over from the recent Beta release this version also fixes a problem with the logged error that your Idle script was taking too long to run. With any other script I give it 10 seconds to finish, but for some reason was being much more aggressive with the Idle scripting allowing it only 1 second before it offered up the same error. I was also incorrectly using microseconds instead of milliseconds when timing script handler execution so these would never have logged an error unless it took days to run. Both of those were fixed in the beta and are hopefully still fixed in this release.