This Week at Zed Industries: #9

June 30th, 2023

This week we are shipping features and merging PRs! Inlay hints just got added to the editor and collaboration in Zed now supports voice chat. We've also been making progress on our AI and collaboration features. Read on for details!


This week, I polished up the code collecting page events on and built some preliminary charts for seeing which pages are most popular each day and to get an overview of the activity in our blog posts. I also finished off the migration of page events from Mixpanel to Clickhouse, which ended up being a bit more involved than I expected. As of yesterday, Julia and I began pair programming together to write tests to squash more bugs in our in-house AI analytics tool.


This week we've shipped voice calls, which is pretty exciting by itself; I am currently working on git dropdown menu. You will soon be able to check it out by checking out your branches!


This week I landed my optimization to Zed's file-system scanning logic, which avoids a lot of unnecessary computation related to gitignored files, and files located outside of the project. This should fix a long-standing issue with Zed's resource usage when opening projects containing symlinks that point out to large directories.

I also fixed a bug in Zed's parsing logic that caused a crash for some .heex files.


We've shipped voice calls! ๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰

And we just had our first company meeting, entirely in Zed ๐Ÿคฉ

Now I'm just wrapping up the remaining UI hang ups for this feature and then I'll be moving on to scoping out our next big feature on the road to open sourcing Zed on Zed.


It finally happened! First version of inlay hints is merged and should find its way through releases to the stable version. It's not the end of the hints' story, all the "dynamic" features are missing and who knows what we'll find during more extensive testing. So far so good though, only one racy bug I've managed to overlook is pending its fix, and I can concentrate on further editor improvements.


With my second week wrapping up at Zed, we've got our initial version of a semantic indexing engine built out. It's a critical piece of our infrastructure when interacting with AI agents inside Zed, and I'm pretty happy with our progress so far. We've got a feature built upon this, we are testing internally now, surrounding semantic navigation, that I've already found myself missing in Preview builds. Hopefully we can wrap this up over the next week, and get it released soon.


To complement the mechanism I've been working on to reinstall broken language servers, I spent the first part of this week building a similar mechanism for the copy of Node we download. We need Node to run a bunch of the language servers we support and we don't want to rely on users having Node installed. With that reinstallation saga wrapping up, I've been spending the remaining time this week pairing with various folks on their work.


Busy week! Lots of design work happening on the titlebar to support shipping Voice to preview. We've been building new components like Interactive & Toggleable elements, standard Popover components, etc. Lots of design system-y stuff.

We also landed generating TypeScript types from the Theme & GPUI rust crates, which will enable us to keep the Typescript theme and the rust app in sync much tighter.

Nathan & Antonio

We're together this week in Bologna, Italy working on CRDB. What a beautiful city, and a great place to eat lots of pasta while we figure out how to persist the full operation history of a repository to enable persistent annotations. We've gotten clarity on the experience we want to provide.

A very rough mock up of one experience we're trying to enable with CRDB.
A very rough mock up of one experience we're trying to enable with CRDB.

In the screenshot above, we're imagining being able to insert a live "portal" into any piece of text you can select in Zed. You can jump back to the moment the portal was created, or follow the text as it exists live in a variety of branches. Or use the slider to scrub across the previous edits. This will be a fundamental primitive in Zed's approach to conversations about code.

What's emerging is a system that looks a lot like Git, but which supports a streaming storage model that records edits one operation at a time. Being together in person has been helpful in forging a shared mental model of what we're building.

Thanks for reading!