This Week at Zed Industries: #5

June 2nd, 2023

On Wednesday, we released Zed 0.88, which features a new, more flexible panel system. See Joseph's blog post for the details. We've been using the new system internally since last Wednesday, and over the course of the week, we've been collectively polishing subtle aspects of the new UI.

I'm personally excited about the new "zoom" feature, where you can bring any pane or panel into a full-screen mode. When collaborating in Zed, I often use split panes, and follow my teammate in one of the panes. When they're doing something outside of Zed, and I want to view their screen, it's really nice to be able to tap shift-escape to zoom in on their pane, and then to return to my full split layout with another shift-escape.

Here's what each of us has been up to this week:


As per our normal release schedule, we launched a new version of Zed on Wednesday. It felt good getting this version out, as it contained an overhaul of our panel system, as well as some other large changes under the hood, but we woke up Thursday morning to find that this new version had issues affecting a number of users. For some users, the app would crash on launch, for others, Zed was unresponsive. Zed would crash when changing themes too. We scrambled around a bit and ended up putting out three separate patches on Thursday. I came to the realization that we need a more detailed overview of our crashes.

Currently, we have a system set up that automatically creates issues in our issue tracker and bumps their priority as matching crashes occur. This is great for prioritizing the most frequent crashes, but it is lacking in other ways. With the changes added this week, we will be able to dig deeper into our crashes and see the trends graphed out. For example, we can create overviews of crashes that happened today, or crashes this week. We can also categorize crashes by attributes, such as system architecture or OS version. Having a dashboard built around various views into crashes is essential for improving our awareness of, and responsiveness to, these issues.


I started the week wanting to work on detecting broken LSP servers so we can reinstall them, but I was quickly dragged into helping fix several very annoying crashes. With Nathan's help I fixed a crash with theme initialization on some systems, Antonio, Max, and I were able to track down a crash on systems with missing settings files, and I paired with Kirill on some LSP related shenanigans. Now I can finally turn my attention back to detecting broken language servers.


Most of the week I was occupied by bug fixing and LSP-related maintenance: updating to new version, trying to support (and debugging why don't they work!) more requests. Thanks to my LSP tinkering, I've got most of the initial "backend" for the inlay hints done: rendering them effectively is another story though, and the hints are far from being ready.


I finished up the initial version of folder-specific settings this week. You can create settings that apply only to a specific folder by creating a .zed/settings.json file in that folder. Like most features in Zed, these settings work whether you are editing code on your own machine, or collaborating on someone else's project remotely.

The .zed folder can be located in any sub-folder of your project; it doesn't need to be in the project's root directory. As part of making this work, I spent some time optimizing how Zed watches for changes in your project directories, and syncs those changes to collaborators.


This week has been all about putting out fires. From fixing some bugs in the build that caused crashes, to working with Max to refine the Panels UX. I'm also working on a small rewrite of the git status system to integrate it more closely with our existing file system model. I also went to CDE Universe with Nathan! It was a lot of fun, had some great conversations about Zed's future.

Next week: I'll be diving into our conversations-on-code and AI features :D


This week was the designer special: Deck building! I spent a lot of the concepting around conversations, collaborating between people and AI models in Zed, and helping Nathan glue together his vision for his CDE Universe talk. There is some pretty cool stuff in here, I'm excited for us to share it with everyone!


I spoke at GitPod's CDE Universe conference yesterday, and I'm now busy distilling the most important ideas from my talk into a blog post for next week. I know I've been a bit elusive in these weekly update posts, but I really want to present things clearly, and I ran out of time this week due to working on this talk and diving deep with Antonio on building confidence in the theoretical underpinnings of what I proposed. Ever think so hard it's uncomfortable?