We are pleased to announce the release of Indigo 2021.1. The first thing you might notice is the new version numbering scheme. We decided to follow many other developers in using the year of a release as the major number followed by the number of the release within that year (and bug fix releases notated last).
There are a several focuses for this release:
The biggest new feature in this release is native Alexa support. There is now an Indigo Smart Home skill in the Alexa Skills store which will allow you to directly control most devices in Indigo. Note: you will need an active Indigo Up-to-Date Subscription and your Indigo Reflector must be configured and operational for your license.
Adding Alexa was a huge task that touched every part of the Indigo infrastructure: our backend (hosted) systems, Indigo Server, a revamped Indigo web server, a new plugin to configure Alexa devices, API changes, etc. This release is the most pervasive change that we've ever made to the Indigo platform.
The Indigo Smart Home skill for Alexa allows you to control devices in ways that you expect: turn on kitchen lights, set ceiling fan to medium, lock back door, close garage door, open blinds to 25%. An Indigo custom skill is also included as part of the Smart Home skill which allows you to get the value of a variable, or (with creative action group naming) create easy to remember speakable actions: tell Indigo to start movie night, tell Indigo to make the house secure, tell Indigo to play my favorite playlist, tell Indigo to restart the laundry timer. Check out the Alexa Plugin documentation for details.
With the release of the first Apple Silicon Macs late last year, we began looking at what we needed to do to make Indigo run native on M1 Macs. Despite what Apple would have everyone believe, the task is far from a recompile, particularly with a complex mult-part application like Indigo. Needless to say, we spent a lot more time on the port than we originally anticipated.
The first major gotcha was that we were forced to update to a newer macOS SDK. For many years our minimum system requirement has been Mac OS 10.7 or later. Maintaining that minimum requirement has required us to perform a litany of development and build gymnastics to be able to successfully build the apps and installer such that it works with the continuous macOS changes, particularly those around "security". Because building an M1 compatible Universal Binary has required us to move to a newer SDK macOS Sierra (10.12) is now the minimum required macOS version.
We took this time also to update Indigo's use of old macOS APIs to improve reliability across newer Macs. As an example, we upgraded to Core Location services to perform the automatic location detection (for sunset and sunrise calculations) that we've had for years. This small bit of functionality went from a single line of code to 150+ lines of code. You should notice a prompt for Indigo Server to access your location on first launch of 2021.1 so that it can access your location.
The next gotcha was upgrading the 3rd party libraries to work with the new macOS SDK. This was no small task, and one byproduct was that our old (and admittedly janky) built-in email library had to be replaced since it was no longer maintained. Without a doubt this turned into an advantage as you'll see in the next section, but it wasn't something that we had anticipated having to do for this release.
Bottom line, this task was much larger than we anticipated and led to delays that were unfortunate but unavoidable. That said, we are happy these changes are behind us as it will make adding new macOS functionality easier in future releases.
As we just mentioned, we had to replace our old built-in email integration. Fortunately, we got a leg up when the author of the great Better Email plugin agreed to allow us to rebrand the plugin and directly integrate it as the new Email+ Plugin, in place of our old library. This is a huge win for users because the functionality in that plugin far exceeds what we offered directly, and has already been tested and used by the Indigo community for years. Indigo will automatically convert any old email settings, triggers, and actions on older database. It will also convert Better Email devices, triggers, and actions, to be compatible with the Email+ plugin. Many thanks to Joe (@FlyingDiver), our open source manager, developer of many plugins including Better Email, and frequent support contributor.
As part of the work we needed to do to integrate Alexa (and other similar services like the soon to be released 3rd party Google Assistant integration), we needed to provide an alternative way to authenticate to your Indigo Server beyond HTTP Digest and Basic authorization. These services generally don't allow users to specify passwords but rather use OAuth for authentication.
This was a challenge because our current Indigo Reflector technology, which makes your Indigo Server available from the internet, masks all authentication from our hosted services as a security feature. For OAuth support we had to create a central authorization server that could authenticate your Indigo access in our hosted systems, but would continue to push the enforcement of that authentication down to your Mac running the Indigo server. For users with multiple licenses, we also needed to identify which license (Mac) the user was allowing access against when a request to link was received.
Fortunately, we already had the basic account infrastructure in Indigo Accounts. Everyone running Indigo 7+ has an Indigo Account, so we used that as the central authorization point. We implemented the complex OAuth flow within our hosted systems, allowing you to select a license if you own multiple licenses.
The next part of the solution was to update the Indigo web server to understand/confirm incoming requests that were authenticated using OAuth in our hosted system. We took this opportunity to implement a less specific authentication method for API calls that we label API keys. Many different APIs available on web services and devices use API keys to authenticate rather than username/password – they are generally more secure as you can revoke an API key to immediately disable an integration without having to change passwords on all the other services that still need access. Indigo 2021.1 can now generate any number of API keys in the new Authorizations section of your Indigo Account that can be used from external services to make REST API calls to your Indigo Server to perform tasks or query information from Indigo. We expect this to open up many new integration possibilities.
While we were working on authentication, we modified authentication so that you can turn on/off HTTP Basic authentication when you start the Indigo Server, which makes it easier to integrate services that can only handle this form of authentication.
All of this work in the Web server has also positioned us for new features to our REST API in future releases. We look forward to providing even more integration options through API updates.
Note: to use API keys you will need to have an active Indigo Up-to-Date Subscription. Depending on usage, it's also helpful to have your Indigo Reflector configured and operational for your license.
While we've added a variety of features for our developers, including the aforementioned API keys, there is one new feature for plugin developers that we are positive is going to result in a whole new class of plugin capabilities. Plugins can now handle arbitrary HTTP requests inside their plugin. This is going to really expand plugin integration options with 3rd party services. For instance, the Alexa plugin, the Google Assistant integration, and any other plugins which require the ability to accept HTTP POST/GET requests can now do so directly without having to include their own Web server. This is going to be huge and we're so excited to deliver it.
As with all feature releases, we have included some bug fixes and a variety of small enhancements that will make using Indigo an even better experience.
And, of course, we wouldn't ship an Indigo feature release without adding even more specific Z-Wave device support. This release includes new and updated device support from Everspring, Fibaro, FireAngel, FirstAlert, GE, GoControl, Inovelli, KAS, MCOHome, Quibino, Ring, Swidget, Vision, and Zooz. And we've added support for the Z-Wave.net USB controller.
This was a huge release in terms of scope, certainly the one with the most pervasive changes in many years, and lays a new foundation upon which we'll be seeing exciting new integrations and features in future versions. Check out the Indigo 2021.1 Release Notes for a list of all the improvements. Please note the app name and folder path changes mentioned at the top of that list.
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 2021.1. Select the Indigo 2021.1->License Details... menu item 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 2021.1 (otherwise you'll need to purchase a new license). As mentioned above, you will need an active subscription not only to upgrade to 2021.1 but also to use the Alexa (and forthcoming Google Assistant integration) integration and the new API key functionality.
Thanks for your continued support and we hope you enjoy Indigo 2021.1!