又一个高效的一周结束了。我们主要关注人工智能、协作和性能。
Antonio
我一直在努力改进助手面板。值得注意的改进包括添加消息分割选项和引入多光标支持。与 Nathan 一起,我们还增加了保存和加载与助手对话的功能。
这周还穿插了与 Kirill 合作开发 inlay hint 的大量会话,他将在他的部分中介绍。
Joseph
本周我继续开发我们的内部分析工具。我正在编写一些测试,希望能够修复一些与我们在尝试发送到 OpenAI 之前如何对反馈进行分组相关的错误。我还编写了代码,将 zed.dev 页面事件发送到 ClickHouse,以便我们可以围绕人们如何导航和使用该网站构建更全面的图表。
Piotr
这周我和 Nate 一起主要致力于使我们的主题定义更简洁一些。 与 Mikayla 一起,我们在语音协作方面取得了很大进展,在此过程中更好地掌握了 GPUI。 在停机期间,Kirill 和我还研究了 Zed 的构建时间,并略微缩短了它们。 值得注意的是,我们已成功将 Zed 的 .dmg 文件大小减少了 10% 以上。 =)
下周,我的计划是与 Mikayla 一起将语音协作推向终点。
Max
我继续致力于优化 Zed 的系统,用于监视和扫描文件系统,以维护项目文件夹的内存表示。现在,我们会延迟加载任何已使用 .gitignore 忽略的目录,或位于项目目录之外的目录(并通过项目中的符号链接引用),直到您在其中打开缓冲区或在项目面板中展开它们。这项工作即将完成,但仍有一些细节需要处理。这应该可以减少 Zed 的内存使用量和 CPU 使用量(来自处理文件系统事件),并通过减少需要同步的文件和目录数量来加快协作速度。
Mikayla
这周,我完成了语音支持的连接!我们的设计师 Nate 不小心试驾了一下 :D。 我也在本周日完成了我的本科学习,并且这周一直在参加 DWeb 营地。 下周,Piotr 和我将尝试向所有人发布语音协作,我应该会有更多要说的!
Kirill
我致力于提高大型文件的 inlay hint 延迟和新代码的总体可靠性。 我花了一些时间来重写代码,以使新的 hints 缓存适应正确的策略。 作为奖励,hints 合作模式开始可靠地工作,我现在有测试来证明这一点。 有望完成该功能的第一个公共迭代:剩下的就是处理 hint 视觉效果、文档以及我们在过程中发现的任何小问题。
Kyle
由于这是我在 Zed 的第一周。 我开始与 Nathan 和 Antonio 一起参与助手面板,以了解初始功能和 UI,并致力于持久化对话。 从那以后,我花了一周的大部分时间与 Max 一起开发嵌入和索引引擎。 我对我们仅在本周取得的进展印象深刻,并希望我们可能会在未来几周内推出一个完全充实的语义导航功能。
Julia
除了完成重新安装损坏的语言服务器的工作外,Antonio 和我一起解决了一个困扰我们很久的烦人的性能问题。 我们注意到,在快速移动鼠标时滚动编辑器和项目面板非常慢。 快速分析表明,我们花费了大部分时间来更新鼠标光标样式。 由于 GPUI 是中间模式,因此它的工作方式与通常仅在悬停的窗口小部件更改时才更新光标样式的保留 UI 完全不同。 相反,我们会在鼠标移动时更新光标,这会导致系统在鼠标移动的每一帧上对光标样式进行代价高昂的路径光栅化。 解决这个问题就像只在光标样式与当前样式不匹配时才更新光标样式一样简单。
Nathan
我致力于 Zed 的新助手面板,以及即将推出的功能的博客文章,风格为“博客文章驱动的开发”,我们在构建功能之前先撰写公告。 我还与博尔德的一位新承包商合作改进 Vim 模式。
最后,我和 Derek Briggs 进行了长时间的谈话,他对 GPUI 的 UI 样式设计方法进行了深入的思考,他将于下个月加入我们。目前,GPUI 的元素很大程度上受到 Flutter 的启发,其中每个元素都扮演着非常特定的角色。因此,我们有像 Flex
、Stack
、Align
、Container
等元素。这在 Dart 中可能运作良好,但考虑到 Rust 较长的编译时间,我希望探索一种更类似于 HTML 和 CSS 的方法,即我们拥有单一类型的元素,可以在运行时使用数据应用任意样式。 这样,我们就可以将基本结构就位,然后在应用程序运行时调整更多的样式。 我希望这可以改善我们在构建 UI 时的反馈循环。
感谢阅读!