Improved terminals

We’ve released a number of significant improvements for the terminals!

Previously, each new terminal opened spawned a new websocket connection, which is not how websockets are meant to be used. Now, only one is opened for all the terminals on the page.

This fixes a bug that has cropped up intermittently over the years where the number of outstanding websocket connections in the browser would hit its limit because we were spawning too many. Turns out browsers have a fixed maximum number of websocket connections and don’t flush them until the browser is restarted!

It also means each new terminal launching takes < 1 second. Click here to launch a Python sandbox and see what that looks like! After your initial terminal loads, just click the + and select Terminal to start a new one.

And last but certainly not least, terminals now support text wrapping, thanks to the folks at Xterm.js. This means they behave essentially like your local terminal does by reflowing the text as you resize the terminal!