Note: OS specific installation instructions can be found on the project Wiki
As a side step to the extension distribution discussion I would like to show off my implementation efforts for the Roon Extension Manager.
Roon Extension for managing Roon Extensions
At startup the Roon Extension Manager accesses a repository containing the community developed extensions. Via Settings->Extensions within Roon the repository can be viewed and an extension can be selected to perform a certain action.
Possible actions are:
Since a picture is worth a thousand words, I created a video that demonstrates some of the actions (the quality isn’t great but the idea should be clear).
Join the development:
Discussions about layering, OS specific optimizations and inclusion in endpoints and servers can be found in the earlier mentioned thread, feel free to join the discussion. If you are an extension developer and you want your extensions included in the repository you can give me a pull request on it or send me a PM with the GitHub link of your extension. Extensions should have a matching support thread on this forum.
Although development is still in the beta phase, this release is pretty feature complete. So if you are a developer or have used other extensions before, you maybe should give this a try. The repository can still do with more extensions, so developers please apply.
The developer beta version of the extension is available on GitHub:
The GitHub page has instructions on how to install the extension.
Use this extension at your own risk!
Make regular backups of your Roon database.
This extension is in beta status, as is the API it depends on. This means that there can be small or even bigger issues!
Using this extension requires some tinkering (as the forum category suggests), I tried to make the installation instructions as clear as possible but things can be slightly different depending on the OS you’re using.
Call for feedback
I wouldn’t have reached this point in development without the feedback I already got. By entering this next phase I hope to get feedback from others as well. So let me know your ideas about this!
An update of the Roon Extension Manager is now available!!
Implemented Auto Update. The installed extensions, the repository and the manager itself are updated at the configured time. Auto Update can be disabled by clearing the time field. It is always possible to update individual extensions via the ‘Actions’ pull down menu.
Implemented Auto Restart. When the extension manager restarts after an update the controlled extensions that were running previously are also restarted.
Implemented watchdog. In case the communication with the Roon Core gets lost after a core update or a network issue, the watchdog takes care that the extensions recover from this situation.
How to install
Read the first post for detailed information and installation instructions.
How to update
If you are updating from the previous release you have to take the following steps:
Terminate the Roon Extension Manager process
Update using the npm update -g roon-extension-manager command
Start the extension using the node <path to extension>/start.js command
The update of the Roon Web Controller provided by @Mike_Plugge gave me a good opportunity to test the update function of the extension manager in a real life situation.
I performed the update via the Actions pull down menu within the manager settings. The update went fine and when at completion the extension restarted, it identified itself as version 1.2.0. The only additional action I had to take is to re-authorize the web controller due to the additional Roon APIs that it now uses.
So I’m pretty happy, a nice and up to date web controller without the need to fall back to the command line
@hifi_swlon, Your shared observation deserves a proper reply…
The idea behind this is more than just the extension manager. The extension manager is the first step that bundles multiple extensions in a single entry point. This should make it easier to come up with installers for the different platforms that Roon supports. This step can then be followed by getting it preinstalled on different Roon servers and endpoints.
The current release of the extension manager already takes care that execution is moved to the background and that the console output with the pinging messages gets hidden. All to move complexity away from the user.
How successful this all will be has to be seen. It will depend on if I am able to attract other developers and what the Roon team has in mind for this.
I tried installing a fresh copy of yourcode from github and then running “node start.js”. The result was the same as before: no extensions visible from within the Roon interface.
Then I tried to run “node start.js inherit” but the output from this program did not provide any more debugging info. As you can see at the bottom of this message, the two node commands produced the same info.
You are right about both.
Now that you are on it, maybe you can do me a favor…
I have a first test version of the Windows installer and the only way I can test this myself is in a VM running Windows XP (I’m a Linux guy). Are you willing to test the installer on Windows 10 and give me some feedback on the results?
Just let me know if you want the 32 or 64 bit version and I’ll sent you a PM.
For some reason over the weekend my extension manager stopped running and thus all the extensions also stopped running. Had to manually kick start it back in to action and then get it to restart all the extensions.
I take it the extension manager wont auto run when Roon starts? Will I have to run it as a service to ensure this?