Hi developers,
We have completed all of the work required for a production release of the Expressive Output Window. The new output window looks significantly different than when it was released into Beta and has some new behavior so we’re recapping features with the new design below.
If you are already familiar with the new functionality, feel free to skip ahead to details at the bottom on the new safe rollout process!
Features
Customize Your View
The output window allows full customization of the information presented with each message. Timestamp, message source and context, and table memory address can all be toggled on or off. There is also an option to print all tables expanded by default. Configure it for whatever you want to see!
Print(Tables)
Lua/Luau is all about tables - they’re everywhere! And now you can easily inspect them. With this release, using the print function on a table will print the full table contents with an expandable, explorable interface. By default, tables print collapsed with their memory addresses hidden. You can change this to print fully expanded tables and/or table memory addresses if you’d like.
No more being forced to write custom table unrolling functions - it just works!
Filter
Messages written to the Output Window are classified by their type and source. Using the filter dropdowns in the top left, you can restrict the output view to only show the desired messages. Filter options include the following:
- Message Context (where the message originated from - Studio/Client/Server)
- Message Type:
- Output - default message type
- Information - developer-facing Studio output
- System - saved place, auto-saved place, etc.
- Warning - you shouldn’t keep doing what you did
- Error - something has gone horribly wrong
There is also a custom filter in the top right. Using this will filter all messages by whatever term is entered.
Search
The Output Window can contain a lot of messages. To help find exactly the one you want, we’ve added our good friend Search!
The Search bar can be invoked inside the Output Window by pressing Cmd+F (or Ctrl+F). Search scans all messages and respects any applied filters. It will expand any tables that contain a search match. Common features such as matching case, enforcing whole word match and regex (for the ambitious!) are also included.
Superfast Jellyprint - Print at the Speed of Render!
One of the important use cases we explored during the beta process was printing on every render frame. The Output Window seamlessly supports this use case, for you and your virtual band. In fact, in all cases the Expressive Output should perform better or at par with the legacy output window.
Phased Rollout Process
The output window is a core part of Studio functionality - it is a commonly used tool and we want to ensure that introducing new functionality does not break any existing workflows. In an effort to provide more transparency into the rollout process, we are introducing a new staged rollout, hereafter called “Phased Rollout”.
Here’s how it will work:
- Today 11/30, we are launching the Expressive Output Window as a default-on Beta for a small but meaningful percentage of the Studio user base. This means some users will get the Expressive Output Window as their default experience. The new output can still be toggled on or off from the Beta Features menu.
- Over the next week or so, we will progressively increase the rollout percentage to 100%.
- If we uncover any breaking issues, we will roll the feature back to opt-in Beta.
Hopefully, this process can provide greater transparency on when you can expect to see changes in Studio. Many thanks to @IcyTides, @altisaltaccount, @Regal_Corgi, @iriszh, @sunny0724, and @darkmodeonn for getting us here!