User Tools

Site Tools


current:beta

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
current:beta [2023/02/03 15:38] James Sentmancurrent:beta [2024/02/05 17:51] (current) – 9.5.5b1 James Sentman
Line 1: Line 1:
-=====Beta Versions=====+=====Beta Version: 9.5.5 beta 1=====
  
-There is no beta version available at this time.+This is beta release of the next XTension version 9.5.5. This release contains no new features and is concentrating on fixing potential issues and making the scripting engine more robust and reliable.
  
  
 +**This version makes no changes to the format of the Database so returning to a previous version can be done simply by placing the previous version of the application back into service. The default location of the XTension Support folder and possibly the Database within it are changed and it will be necessary manually move the folder back to the Documents folder if you need to roll back to a previous version. See below for more info.**
  
  
-=====Beta 7 Changelog:==== +If you’re not interested in the history and why the support folder needs to be moved skip to the next section.
-  * NEW: The Video Encoder plugin will now run an Interface Script handler when a new encoding is complete. Open the Edit Interface dialog for the plugin and click to edit the Interface Script. Use the “Insert” toolbar item to add a default handler to demonstrate how it works. The handler is called “newFileAvailable” and it will pass you 2 parameters, the name of the video stream the recording came from and the full path to the new file. like: on newFileAvailable( streamName, filePath) +
-  * NEW: If you’re using the “live recording” option for a stream then the recordings are never passed off to the batch encoder process but handled inside the video stream itself. In this case the same event in the previous item will be called in the video stream script. It is otherwise identical to the above. +
-  * FIX: Units added to the list of shared items to the Home Kit are no longer in danger of getting an invalid Accessory ID.  +
-  * If you have Units that do not reload properly with this build as they were too broken before use the new trouble shooting functions now included in the Troubleshooting section of the [[supported_hardware:homekit|Home Kit Documentation]].+
  
-=====Beta 6 Changelog:===== +===Changes to the location of XTension’s data files=== 
-  * NEW: Direct support for ESPresence in the MQTT pluginSimplifies using ESPresence devices with the MQTT plugin without having to do lot of scripting. Turn it on in the Edit Interface dialog for the plugin and at least initially you should leave the Automatically Create Units for it turned on until it’s setup to your satisfactionFull Documentation is coming but for the moment here. The ESPresence support will find all the devices that have been seen on your receivers, by devices I mean the bluetooth beacons and things like iPhones and the like, not the physical ESP32 devices running the receiver software. Each device will get a master device unit in one list in XTension. This will have the presence/absence of the device anywhere on your systemIf no update has been received for it by the timeout set in the edit unit dialog then it will get turned offWhile turned on the default label for the Unit will be the name of the room that the device is in. In addition to that another list of location units are createdFor each device another unit is created for each room they may be in. These Units will turn on and off based on regularly walking the list of recently received messages and finding the one with the shortest distance to the receiverI’m not 100% sure about this logic or layout or anything else yet so please let me know if this is the kind of thing you’d expect from this or notMore direct device support is coming. I’m working on Tasmota next as it also has a rather complex MQTT topic structure. **NOTE** if you enable the ESPresence support while the plugin is running you’ll need to disable and re-enable the plugin for that to take effect. + 
-  * NEW: If there are important errors during startup a new list window will open to contain them separate from the log. This window is called the “Startup Messages” windowIf you see it then there is something you might need to address. It will either contain the necessary information or suggest you look at the log for more infoThis way messages on database load that might get scrolled off the top so fast you don’t see them will get noticed more easily. +There are 2 ways that XTension can be installedIf the application is placed in the Applications folder then folder called “XTension Support” was created in the Users Documents folder and the Database and other support files were placed there. You can also continue to use XTension as it was in days of old and run it from any other folder on your driveIf you do this the database and some support folders are created along side the app inside this same folder but an XTension support folder is still created in the Documents folder. 
-  * NEW: Multiple Interface Collision Detection. Previously it was possible to create a situation where a unit was set to use 2 interfaces to receivebut one of them could have another unit with the same address which would keep the multiple interfaces from working properlyDuring startup if this is seen while loading the database an error is written to the log and a startup message is created in the above mentioned window telling you that it has happened and what the 2 units are so you can more easily figure out why messages aren’t getting routed as you expect+ 
-  * NEW: MQTT Plugin now better handles server reconnects. If the server drops out due to network issues or rebooting or whatever and then recovers all your existing subscribed units will re-subscribe and continue to receive data+The location of the XTension Support folder has become an issue with Apple’s iCloud feature of syncing your Documents folder with iCloud. This service remains potentially a problem for many things but can and does cause corruption of the XTension database as files seem to be updated too often for it to remain in syncIt seems to restore files that were deleted as well as replacing new versions with older versions on occasion. 
-  * NEW: MQTT Plugin now has a separate field for the outgoing topic. If updates from the Unit need to be published to a different topic than the one subscribed to for updates from the mqtt server that can now be entered there. + 
-  * NEW: MQTT Plugin now lets you set the QOS and Retain values for each individual Unit in the Unit Setup Dialog+It is my advice to not use this iCloud feature at all as it causes the same problems with other files you may have stored in your documents folderIf you have this turned on you should turn it off immediately to avoid losing information. In the meantime moving the XTension Support folder to the Application Support folder will solve the problem for XTension **unless you are using XTension outside of the Applications folder but still somewhere under the Documents folder** in that case you must either switch to running from the Applications folder or make sure you are not using the iCloud Documents sync functions.  
-  * NEW: MQTT Plugin implements generic scripting handler just called “publish()” that lets you publish any string to any topic from anywhereIf you’re doing it from the Unit’s on or off script no other handling is needed it’s just:publish( “/my/topic”, “shower in use”) if you’re doing it from elsewhere use the tell xInterface “name of your MQTT plugin” to publish( “/my/topic”, “shower in use”) + 
-  * NEW: The Video plugins now insert all the event data that you create while recording with the record from “whatever” for 30 info “name the event here!” as well as the timestamp of the frame into closed caption data. This can be displayed when streaming the snippet from the web interface or when just viewing it off the diskIt is superior to physically overlaying the text onto the actual video stream as it can be moved around by the user so that it doesnt obscure something you want to see and it is readable and the same size no matter how small a thumbnail of the video you’re looking at+===Process of moving the files=== 
-  * NEW: The video plugins now provide the same event listing in the Web Interfaces that the old Video Pitcher program didSo they will show up there as well as closed captioned.  +When first run XTension will look for an XTension Support folder in your Documents folderIf it exists in that location but not already in the Application Support folder it will move it and startup normallyGiving you a startup message window telling you exactly what it did. If there is already an XTension Support folder in your Application support folder and it does not contain a database then it will be renamed and the current XTension Support folder will be moved to the new location. If it does contain a database, even if it is an old one, then it cannot move it and will startup with that database along with a message that what appears to be your current database could not be moved and you will have to resolve the conflict manuallyThere should not be a live database in the Application Support folder however much earlier versions of XTension did use this location and so there may be old and outdated versions of information there that you may have to remove. 
-  * FIX: Fixed a problem with the MJPEG camera streaming plugin that would cause slight bump in CPU usage every time the connection was lost and recovered due to it not properly closing thread that would keep trying to work in the background even after it had been replaced+ 
-  * FIX: Fixed an issue with the Amcrest API camera plugin that would cause the plugin CPU usage to peg at 100% if the camera connection was lost+===Switching to Running in the Applications Folder=== 
-  * FIX: Fixed a rare and unusual problem with syncing data between XTension and the pluginsThis could have caused the loading of units from XTension to be short circuited and some updates to be lost to the plugin+If you are running XTension in the legacy way of being anywhere but the Applications folder you do not have to move anything manually yet. However at some point Apple may enforce that applications have to live in the Applications folder. If you wish to make the change now you can move the XTension application into the Applications folder. Then move all the support folders and database from the folder you used to have the App in to the Documents/XTension Support folder. This includes the “icons, “sounds”, “views” and other folders that will be there along with the XTension Database bundleWhen you first run this version of XTension from the Applications folder it will move that Support folder to the Application Support folder and run normally from then on. 
-  * FIX: The logging of available RAM that XTension does at startup was logging it with the wrong suffix showing that you only had kb available when it was really mb or gb. + 
-  * FIX: I’ve made it possible to change the type of a Unit while the interface its connected to is running. This is working well in my testing but it is possible that there are situations in some plugins that would not properly follow along. If you have any trouble doing this record the errors to send to me and then just disable and re-enable the interface to get everything working properly again+===Returning to a previous version=== 
-  * CHANGE: This shouldn’t affect anythingbut keep an eye  out in case it doesPlugins that have scripting handlers now register them with XTension. XTension will verify that a handler you’re trying to call is available before sending the command to the plugin. If you try to call a handler that does not exist then the script will be returned an error. Previously once the command was sent to the plugin it was assumed to be handledSo if you had called piblish( “topic”, “payload”) instead of publish() it would not have been able to log an error, it would just silently fail. So watch for new script errors where this might be being caught now when it was never before.+ 
 +If you find this version to cause new problems, please do not just return to the previous version without letting me know exactly what the issue was that caused you to need to do so or it will be much less likely I can get it sorted out by the release. Without XTension running just move the XTension Support folder from the Application Support folder back to your Documents folder and then start the previous versionThe Application Support folder is generally hidden from the User and may not be easily visible from the Finder. If so you can use the “Go” menu in the Finder to reveal the Library folder and inside that will be the Application Support folderIf XTension is still running you can use the Reveal Database In The Finder menu item from it’s Database menuThen Quit XTension and do the move manually before replacing it with the previous version. 
 + 
 +====Changelog:==== 
 + 
 +  * At startup if XTension finds that your database is being shared to iCloud it will open a startup messages window advising you of this and suggesting that you turn that off. This info is also saved in the database so that if someone sends me a database to debug I can check easily if this is the source of some of the problems
 +  * If the database has already suffered some kinds of corruption from being shared to iCloud there are many things that it can now clean up. This includes deleted units or scripts that have been replaced by an over zealous iCloud sync service. It cannot replace active files that were replaced or reverted incorrectly but this can still be a major help in getting things sorted out
 +  * The XTension Support folder is moved from the Documents Folder to the Application Support folder. Unless there is already Database in an older version of the folder that might exist in the Application Support folder. In which case no files are moved or deleted and a message is displayed asking you to move the most current version there manually to make sure you get the right one
 +  * Improved script error logging. Previously errors that were generated while running handlers in a different script were sometimes not logged causing instead a generic error in the script doing the calling. They will now log more useful information for debugging purposes to find out just went wrong in the other script
 +  * Quite few major OS versions now Apple changed Applescript to be somewhat, sometimes, unpredictably threadedThis allowed the application to continue to process commands and events while another script might have still been running. This led to confusion and things no longer happening in a linear and logically consistent order. I fixed that back in the day by pausing the command queue while a script was running so that even if the app got control back no more commands would be processed until the current script being run was complete. I recently added some new RTS cameras of higher resolution to my system which is pushing my older Mini a bit and I started getting more regular strange scripting errors that rarely or never happened before. In studying the problem I realized that not all scripts are purely started by received commands or scheduled events anymore. The Idle handler and the DoLater commands use program timers to pump the script callbacks. These were still potentially happening while a script was running. This usually worked OK but occasionally there was either a race condition or a script would never return causing the timeout and an error message that the script environment was unstable and should be restartedAll timer pumped scripts will now defer until the current script is finished running. If you are having any odd and difficult to duplicate script issues and if you make use of either the idle callback or Do Later commands then this will solve those issues. There still may be one more path for things to go wrong, or there may yet be other applescript issues but 99.9% of my issues have been fixed by this change. There is a debug menu item to turn on logging of these occurrences. If youre curious or if you want to see if it’s really catching anything you can turn that on and watch the log
 +  * Further new script debugging I’ve added the ability to log runtimes of individual scripts. You can turn this on in the Gear toolbar menu for any script be it an On/Off script or a Global ScriptThis may be useful if there is a script that sometimes seems to take a lot longer than it should be. Especially if that script is talking to an external app to wait for something
 +  * Errors that could be logged when deleting more than single page of Units from a list is now suppressed. It was never useful error message so no fix was necessary, it’s just confusing debug logging
 +  * Errors that would sometimes be logged when closing the Interface list window while doing CPU and Memory use displaying in the “show more information” mode are no longer logged. Again these were just over zealous debugging messages and did not indicate a real problem
 +  * Fixed the incorrect display of version informationThe version logged and in the About window will properly show 9.5.5 beta 1 in this case rather than 0.0.0.whatever as it did in some previous versions
 +  * Made some additions and changes to the runtime debugger window to better sort items when there are more than 10k of any individual kind. I also added deltas to the memory used and object count displays to make figuring out things easier. Most of you have never opened this window from the debug menu and wont ever need to but it is helpful while I am testing and debugging and could be useful to help gather more info if needed from any of you
 +  * Added another debug menu option to log the current state of the globals “thisUnit”“thisScript” and “thisInterface” as well as the value of gCurrentScript internally which is used to direct handler calls of global handlers and other such thingsThese should all be empty with gCurrentScript being nil at any point that a script is not running. If there remain issues with scripts failing to exit or otherwise hanging up in the background these may be left set to incorrect values causing interesting resultsIf so this will show that it has happened making debugging easier. 
 + 
 + 
 +[[https://machomeautomation.com/files/xtension/xtension_9_5_5b1.dmg|XTension 9.5.5 beta 1]] 2/5/2024
  
-This is probably going to be the next release unless something else exciting comes up. 
  
-=====Beta 4 Changelog:===== 
-Change log: 
-  * NEW MQTT Client plugin. No wiki documentation yet. Read the information on the unit pages carefully. Select how you’re going to get the data out of the topic there are currently 3 types of parsing to get it out. There will be more for more complicated devices. Then enter the MQTT Topic into that field and if the Unit is 2 way select the way you’re going to send data back to the server. There are currently many choices but none that will yet easily handle XML or JSON values or more complex structures that would require scripted parsing and scripted re-creation of such a structure. If you have examples of such things please send me the topic data from them and as much other info as you can put together so I can make sure that the release version of the plugin can handle it. To see all the topics as published turn debug mode on for the plugin instance. Note that there is no attempt to automatically create Units for an MQTT server. That would result in a LOT of Units. Create only the Units you need with the specific topic paths that you wish. Use a problem like MQTT explorer to find what they are on your server. Also note that this is NOT a broker. This is a client and can connect to a broker elsewhere or running on the same machine. I recommend the Mosquitto server at the moment since that is what I have been testing against. 
-  * FIX data logged from a Unit using the contextual menu item of log debug data will now have the Unit set so that you can filter for that and see it in the log. Makes it easier to gather debugging information for me. 
-  * Fixed an error in the error logging in one place in the basic plugin includes. This could have caused a confusing error and would have stopped the logging of the actual error and information that I would need to fix that. This was initially plaguing folks with the Barix plugin as it was trying to convert older Units. I have found an interface on my system that also generates this error so I will be able to fix it now, but if we were working on this please send me the new error message to help me get this squashed and properly working 
  
-=====Beta 1 Changelog:===== 
  
-Changes in the previous beta. 
  
-  * NEW Plugin for No Hassle AV 4x4 HDMI switchers. [[supported_hardware:nohassle4|Documentation is here.]] This supports (or tries to) 4 different 4x4 size devices. 
-  * NEW Plugin for No Hassle AV 8x8 HDMI switchers. [[supported_hardware:nohassle8|Documentation is here.]] This supports (or tries to) 3 different 8x8 size devices. 
-  * FIX: Fixed a problem loading Unit Icon files that were not JPEGs. PNG’s and GIF’s load normally again. This was broken recently when I switched to a faster jpeg parsing library. 
-  * FIX: more bugs in the Phillips Hue plugin that would have caused an error, and then an error in the error handling when it tried to log the wrong data. 
-  * Database Format Change: For more than 5 years I’ve been keeping 2 copies of the Unit Properties data to make it easier should anyone have to revert to an earlier version after using the newer version. This build stops doing that and removes the old file potentially making the database quite a bit smaller and therefore faster to load and easier to manage. At this point if you need to revert to a version more than 5 years old you’ll have to use the backup file that is zipped up when each new version is loaded. Or just be OK with losing the Unit Properties from your database. 
-  * Enumerated Values for Units are now individually trimmed of leading or trailing spaces. So if you enter the values like “slow, medium, fast” the system will know you didn’t actually mean those spaces to be part of the enumerated values. 
-  * If a plugin has an empty description the name in the popup will no longer show an empty set of parenthesis after the name. 
current/beta.1675438711.txt.gz · Last modified: 2023/02/13 14:51 (external edit)