Captain's Log

Version 1.9: pure WebRTC communications December 5, 2023

Greetings Users & The Curious

I hope this version finds you well. This version has been unlike any before - just as I was starting to work on it war broke out.

Stories from the massacre hit me hard and I barely got anything done in the first couple of weeks. Almost every day we’ll have sirens go off rushing us the bomb shelter just below my building’s lobby. I remember one siren that went off just as I was cornering one snicky bug. I felt the complex flow I held in my mind dissolved in a second as my daughter was urging me to leave the keyboard and run to the shelter. Still, I’m thankful for that and other snicky bugs as they kept my mind away from the horrors.

The main feature of Version 1.9 is improved performance and stability through pure WebRTC communication. In 1.9 even the offer and answer are streamed over PeerBook’s WebRTC connection. We removed the websocket interface that was used before and upgraded PeerBook’s WebRTC server to support those additional commands. This simplified the whole disconnect/reconnect cycle, as keeping tab on one type of connection is far simpler than two. Whats more, WebRTC is more secure as the client only has access to its public key.

To improve performance we’ve upgraded PeerBook WebRTC server to support trickle ICE and implemented WHIP. GPT4 was a great help here. GPT4 read the WHIP RFC, documented the server’s API and generated initial server code. I’m using Simon Willison llm to access GPT4 from the shell and it’s great.

The WHIP server handlers were added to webexec/httpserver so webexec also got a faster, more standard server. webexec was also upgrade to provide colorful restore. It required some changed to the headless emulator we use - vt10x - which resulted in a PR over there.

We’ve also increased the limit of open panes by embedding the virtual-webgl script. It is needed as ach pane’s terminal is using WebGL for hardware accelerated rendering. These WebGL contexts are heavy, memory wise, and the browser runs out of memory at about ~16. virtual-webgl solves this by using one context and layering virtual contexts over it.

On the cosmetic side of things, we’ve brushed up our help and developed a system that’ll make it easier to change and add help items.

Hope you enjoy this version and if you find a bug or want a feature feel free to open an issue or chat with us