Hello everyone! We've got a very exciting new update out for you today. Read on for the details: API One-Click Install The API has always been one our best Pro-level features, but until now it's required at least some amount of familiarity with coding and scripting to use it. Starting today, though, all Pro users have access to a library of "one click install" scripts which don't require any additional setup or copying/pasting code and work "right out of the box" on your game! You'll now find a new tab in your API menu called "Script Library" that will have a vetted list of pre-approved API Scripts, similar to the list of community Character Sheets. These are scripts that have been generously contributed by community members for everyone to use. Some offer the ability to customize them in simple ways as well. As scripts are added to your game it will automatically determine what dependencies and conflicts the script you're adding has and will notify you accordingly. Another great feature of this system is that as script authors release a new version of their script, you'll automatically get the upgrade without needing to manage that part of it yourself. It's quick, easy, and accessible -- give it a try! Finally, if you have been using a script and really want to get in and make some changes, you can import it as a custom script in one-click (so no more needing to go and copy/paste from Github). Note that if you do that, you'll no longer get the latest version of the script automatically, so proceed with caution! Script Authors, if you're interested in having your scripts added to the approved script list, there are a handful of steps you need to do, even if your script is already included in the API repository. In particular, there is a new file structure required for supported scripts, to allow for versioning and backwards compatibility, as well as additional fields that need to be added to your script.json file. To take a look at an example file structure and completed script.json check out the example script provided in the repository. New API Architecture Today we're pleased to roll out a major new project that we've been working on for the past couple of months. In particular, we have completely re-done the way that the API server architecture works behind the scenes. Previously we were using a method based around spawning lots of individual node processes. However, these weren't very well contained, could easily interfere with each other, and could lead to other issues such as the dreaded "PORT IN USE" error. We've gone back and redone this backend to take advantage of Docker ( https://en.wikipedia.org/wiki/Docker_(software)
) containers, which is a fantastic new-ish technology which allows us to run each API sandbox in its own "Virtual Machine container". These containers are completely separate from each other, and have much better resource tracking and sharing capabilities. In addition, the API that the Docker ecosystem provides gives us better control over making sure that sandboxes spin up when they are supposed to, and spin down when we think they need to. Finally, this new architecture allows us to no longer need to run each API sandbox on the same server that it's run on in the past, which should allow us to make our architecture fully modular, spinning up and spinning down capacity for the API as needed during peak times. So, if you run an API script, you will now be running on this new system. In theory everything should be largely transparent, the API scripting interface and logging should continue to work the same. However, if you do notice that any scripts aren't working properly or that you are getting unexpected behavior, don't hesitate to let me know so that I can investigate. Character Sheet Zooming We've added a "Zoom" button which will appear in the Character Sheet and Handout dialog boxes. This allows you to easily "zoom in" (or out) of the sheet/handout if you want to make the text and images larger or smaller. Unlike using the browser's built-in zoom (which we don't encourage), using this zoom feature will not break anything else in your Roll20 game, and it won't cause the formatting of your sheet to become incorrect. It just works! Infinite Deck Fixes We've upgraded our support for using Infinite Decks, and now you'll see some additional options that allow you to specify how you want the deck to behave (for example, if you have multiple cards in your infinite deck, do we give a random one every time? Or always deal them in the same order?) You'll also notice that when you "Recall" cards from the tabletop/player's hands when using an infinite deck, it now works correctly instead of only recalling some of the cards.