We are pleased to (finally) announce the release of Indigo 2022.2, the second Indigo feature release in 2022. We know this is already 2023, but this release turned out to be significantly challenging in a variety of areas, so it's a bit late, and we apologize for that.
The main focus for this release was to upgrade the Indigo Web Server (IWS) to Python 3. As it turns out, we had to completely rewrite the web server using newer Python 3 technologies as a straight-forward upgrade was impossible. Read on for more details, as this rewrite enabled us to do some amazing things!
NOTE: we know there are still a few plugins which haven't been updated to Python 3, so to help reduce pain points in this upgrade, we spent some time ensuring that users would have one more release to find a replacement for those plugins. So older Python 2 plugins will still continue to run for this release. We will definitely be deprecating them with the first feature release of this year, 2023.1, so we encourage you to find alternatives ASAP. Use the forums to find alternatives and/or to ask for help and we'll assist you with your specific needs as best we can.
As mentioned above, we ended up having to completely rewrite IWS. While we hadn't planned on a rewrite (as opposed to an upgrade), it did give us the opportunity to make some major improvements and add some new features we hadn't originally planned on doing.
First, the new web server is blazingly fast. The Python web server we're now using, Sanic, takes advantage of the asynchronous capabilities in Python 3. What this means is that requests to the server can be handled in parallel – so multiple connections can happen at the same time. For instance, Alexa requests can be fulfilled at the same time that Indigo Touch is receiving updates, etc. Before, these things were largely done sequentially. IWS itself is also significantly streamlined and improved, adding even more performance enhancements. These under-the-hood improvements position us well for the future.
A further benefit to the new web server is that Indigo Touch for iOS is now faster when communicating – all communication is done through IWS, so its speed improvements flow through anything communicating with it. So everyone gets free speed boost to Indigo Touch for iOS!
Next, we completely rewrote Indigo Touch for Web (ITW), the web interface. As many of you may recall, the old Indigo Touch web pages were extremely dated. All of that is now gone, replaced by a full-fledged and super fast web application:
While we had the opportunity, we added two new APIs that will really expand the integration possibilities. The first, which is geared more towards developers, is the WebSocket API. This API (which ITW uses) allows developers to open a persistent connection that will receive almost instantaneous device updates, variable updates, etc., while allowing commands to be sent to the server at the same time, making it extremely fast for the server to respond to commands (i.e., turn on a device, update a variable). We fully expect that we'll start seeing 3rd party clients which use this technology soon.
The second new API is the HTTP API. This replacement for the old REST API is a big step forward in API design, and will allow for some incredible new integrations. The first of such fantastic new integration possibilities is Apple Shortcuts! Yes, it's now much easier to implement shortcuts that run on macOS, iOS, and iPadOS, to do bidirectional communication with the Indigo Server, even while remote (an active reflector, part of your Up-to-Date subscription, is required for remote access). Not only can you issue standard control commands, like turning on a light or executing an action group, you can also get information from Indigo into a Shortcut to use further down the chain: get a variable value to use in a notification, get a device state from a weather device to determine what the shortcut will do next, and so on.
The possibilities for rich shortcuts that integrate a lot of functionality are almost endless! We have a new section of the documentation, Using Apple Shortcuts with Indigo, that will walk you through a couple of examples of building shortcuts. And, coming very soon, we'll be providing some shared shortcuts you can download and have functional in a matter of moments – just answer a few simple questions when installing them. This is truly a game-changer and we know you'll create some really awesome shortcuts others will be inspired to use.
As we mentioned above, we spent considerable time in this release to not only remove all of our dependencies on Python 2 (nothing we ship depends on Python 2), but we also spent time making sure that Python 2 plugins could continue to work for this release. Warning: we have every intention to remove Python 2 support in the next feature release, so you'll want to look for alternatives to any plugins that haven't been updated yet.
In all, the upgrade to Python 3, while not painless, went very well. And getting on a modern and current Python base has positioned us well for future growth and enhancements (such as the IWS rewrite).
The Plugin Store will continue to show plugins that won't work with the next Indigo release. All plugins in Indigo will continue to show their status as well, so if you need an upgrade, it will show using the appropriate icon next to the plugin's name.
We also made a few enhancements and fixes in this release, and we added a support for a bunch of new Z-Wave devices from Aeotec, Eva Logik, Heiman, Heatit, Inteset, Kwikset, LinearLinc/GoControl, MCOHome, Ring, Saykey, Vision and Zooz, and fixed/updated many module definitions. See the Indigo 2022.2 Release Notes for details.
One really important fix we made was to address sporadic issues causing FileIO errors (which have been increasing with every new macOS release for the past few years). We completely replaced how the Indigo Server accesses files to use the newest File APIs in macOS. We believe this will solve those issues. This was a large, pervasive change, but it's one we needed to make to keep the Indigo Server moving forward.
We are really disappointed this release was delayed as long as it was, but we wanted to make sure that the release was of the same quality you've come to expect from us and that it provided significant customer benefit. We know that we've hit that goal (and then some) and we're proud of the release.
As always, we also want to recognize our dedicated 3rd party developers and a small group of beta testers for getting us over the finish line. They provided development support, documentation contributions, extensive testing and significant plugin updates. Their contributions helped us achieve a high level of quality and gives everyone a ton of native Python 3 plugins available right now. We are extremely lucky to have such a group of dedicated individuals helping to keep Indigo alive and thriving.
Note: this release may not be available to all Indigo customers for free. Specifically, if you've allowed your Up-to-Date Subscription to lapse, you won't have access to Indigo 2022.2. Select the Indigo X.X->License Details... menu item in Indigo to see the details of your subscription. You can also check the Licenses section of your Indigo Account to see the subscription status and the last version you are eligible to use, or you can go to the new Downloads Page (make sure you're logged in to your Indigo Account) to see which releases you can download and use.
Many expired subscriptions are not yet past their catch-up deadline date, so you may be able to catch-up your subscription to get access to Indigo 2022.2 (otherwise you'll need to purchase a new license). As mentioned above, you will need an active subscription not only to upgrade to 2022.2 but also to use an Indigo Reflector (critical for using the new Shortcuts functionality when remote), the Alexa integration and API key functionality.
Thanks for your continued support and patience, and we hope you enjoy Indigo 2022.2!