Commit Graph
39175 Commits
Author SHA1 Message Date
Mikayla Maki 66efdaa04e fmt 2023-06-27 19:25:46 -07:00
Mikayla Maki 0a7651a1e3 Added muted and currently speaking tracking 2023-06-27 19:23:13 -07:00
Max Brunsfeld 59ef9557b3 Defer scanning some worktree subdirectories until they are expanded in the project panel (#2622)
Closes
https://linear.app/zed-industries/issue/Z-352/high-memory-usage-from-fs-scanning-if-project-contains-symlinks-that

### Background

Currently, when you open a project, Zed eagerly scans the directory,
building an in-memory representation of all of the files and directories
within. This scanning includes all git-ignored files and follows any
symlinks. When any directory changes on disk, Zed recursively rescans it
in order to keep its in-memory representation up-to-date. When
collaborating, all of these files are replicated to all guests.

Right now, there are some performance problems associated with the
maintenance of this filesystem state:
* For various reasons, some projects contain symlinks that point out to
large folders like `$HOME`, which itself contains many symlinks that
point to the same large directory. When these projects are opened, the
worktree scans endlessly, using more and more memory.
* Some git-ignored directories (like `target` in a rust project) contain
*many* more files than are actually tracked in the git repository. These
files often change as a result of saving, (e.g. because the compiler
runs). Maintaining in memory all of these paths isn't useful to the
user, and causes significant CPU usage on every save. Most importantly,
when collaborating sending all of these changes to guests can be slow,
and can delay all other RPC messages.

### Change

This PR changes the worktree's filesystem-scanning logic to be *lazy*
about scanning two types of directories:
* git ignored directories
* "external" directories (those that are canonically located outside of
the worktree root, but accessed via symlinks)

The laziness works as follows. When, during a recursive scan, a
directory is found that falls into one of the above 2 categories, that
directory is marked as "unloaded". The directory might later be scanned,
if some explicit operation is performed within it (like opening a
buffer, or creating a file), if any collaborator expands that directory
in their project panel, or if an LSP requests that it be watched.

### Results

When collaborating on the `zed` folder:

| metric | before | after |
|-------|--------|------|
| # `worktree_entries` in collab db initially | 154,763 |  77,679 |
| # `worktree_entries` in collab db after 5 saves | 181,952 | 77,679
(nothing new to scan) |
| app memory footprint (host) | 260MB | 228.5 MB  |

The db thing is a win, because reading and writing to the
`worktree_entries` table is one of the most expensive thing that the
`collab` server does.

There's also generally lower background CPU usage after every save,
because we don't need to recursively rescan directories inside of
`target`.

### Limitations

We still end up scanning some unnecessary directories (like
`target/debug/build/zed-b612db829aeac16e/out`) because the LSP instructs
us to watch those.

### To do:

* [x] Expand parent directories of any path opened via LSP
* [x] Avoid creating orphaned entries when FS events happen inside of
unscanned directories
* [x] Scan any newly-non-ignored directories after gitignore changes
* [x] Emit correct events for newly-discovered paths when expanding dirs
* [x] GC the set of expanded directory ids when dirs are removed
* [x] Don't include "external" entries in file-finder
* [x] Expand any directories watched by LSP
* [ ] manual testing and profiling

### Release Notes:

- Fixed a bug where Zed would use excessive memory when a project folder
contained symlinks pointing to directories outside of the project.
- Reduced Zed's memory and CPU usage when working in folders containing
many git-ignored files.
2023-06-27 17:07:23 -07:00
Max Brunsfeld ecf26b93d4 Use FakeFs in worktree gitignore test 2023-06-27 15:40:36 -07:00
Max Brunsfeld 0b2f2ccc17 Fix bugs in handling combined injections exposed by HEEx (#2652)
Fixes
https://linear.app/zed-industries/issue/Z-2481/heex-this-snippet-triggers-a-hard-crash

Release Notes:

- Fixed a crash that would sometimes occur when editing a HEEx file
([#1703](https://github.com/zed-industries/community/issues/1703)).
2023-06-27 15:17:29 -07:00
Max Brunsfeld 995045efa7 Fix bugs in handling combined injections exposed by HEEx 2023-06-27 15:08:26 -07:00
Nate Butler 404f01cb26 Update titlebar item spacing 2023-06-27 17:56:44 -04:00
Nate Butler d2c38b1954 workspace.titlebar -> titlebar in Theme 2023-06-27 17:27:58 -04:00
Mikayla Maki fbc5e7f63e Seperate online and offline 2023-06-27 13:33:04 -07:00
Nate Butler 0c6dd8615c Update screenshare toggle, titlebar spacing 2023-06-27 16:20:45 -04:00
Mikayla Maki b1a3d83c2e WIP: Add mute icons 2023-06-27 13:12:52 -07:00
KCaverlyandmaxbrunsfeld 3805698999 Added a dummy action for testing the semantic search functionality in the command palette.
Co-authored-by: maxbrunsfeld <max@zed.dev>
2023-06-27 15:53:07 -04:00
KCaverlyandmaxbrunsfeld e113054fdc Working incremental index engine, with streaming similarity search!
Co-authored-by: maxbrunsfeld <max@zed.dev>
2023-06-27 15:31:21 -04:00
Julia 3f5bc83ad1 Match original logic when determining server to request formatting 2023-06-27 14:16:01 -04:00
Mikayla Maki afd9263f61 Rename and toggle screenshare 2023-06-27 09:58:01 -07:00
Nate Butler fe7bf7a5b8 Update share, call control buttons 2023-06-27 12:24:19 -04:00
Nate Butler 624b8da9e7 Add script for building theme types 2023-06-27 11:34:26 -04:00
Nate Butler 1cc20b5d49 Use icon_button for leave call 2023-06-27 11:34:12 -04:00
Piotr Osiewicz a59f347ff2 Keep users muted once they undeafen themselves 2023-06-27 17:19:18 +02:00
Nate Butler a5f9c53f03 Update local-collaboration.md
Add missing livekit info
2023-06-27 10:52:38 -04:00
Nate Butler 4fc4ac369e Update local-collaboration.md 2023-06-27 10:05:37 -04:00
Nate Butler a0d0d3402e Create local-collaboration.md (#2651)
I forget how to do this every single time 😅 Please update anything that
is incorrect!

[[PR Description]]

Release Notes:

- N/A
2023-06-27 09:52:15 -04:00
Nate Butler efd490810d Create local-collaboration.md
I forget how to do this every single time 😅
2023-06-27 09:51:30 -04:00
Piotr Osiewicz 89cbe97810 Merge branch 'main' into collab-titlebar-2 2023-06-27 15:40:43 +02:00
Nathan Sobo cb9ffd81cf vim: indent/outdent (#2644)
Release Notes:

- vim: support indent/outdent
([#832](https://github.com/zed-industries/community/issues/832>)).
2023-06-27 04:15:55 -06:00
Nathan Sobo 1a5f35c7a2 Vim toggle case (#2648)
Release Notes:

- vim: Add ~ to toggle case
([#1410](https://github.com/zed-industries/community/issues/1410))
2023-06-27 04:13:24 -06:00
Nathan Sobo 8f7fa752cd Merge remote-tracking branch 'origin/main' into vim-indent 2023-06-27 12:09:47 +02:00
Nathan Sobo 56c6d840b3 vim: Fix scrolling (#2647)
After #2641 we noticed that scrolling didn't take a count parameter, and
a few other issues with the way that we calculated the distance to
scroll.
 
Release Notes:

- Improved distance calculations for page-up/page-down
- vim: Allow counts to work with scrolling shortcuts.
2023-06-27 04:01:14 -06:00
Nathan Sobo 0f08a5223d vim: shortcuts for tab navigation (#2649)
Release Notes:

- vim: added gt/ctrl-pagedown and gT/ctrl-pageup for tab navigation
2023-06-27 03:57:01 -06:00
Nathan Sobo f776a460ff vim: Fix code actions menu (#2650)
Fixes: zed-industries/community#1690

I'm not sure this is the correct way to fix this...
* A simpler approach would be to just say `!showing_code_actions` in the
binding file (as `showing_completions` can only happen in insert mode -
and `VimControl` will be false). This seemed a little error prone if
more menus were added in the future.
* A more complicated approach would be to copy the way this is done from
the MouseContextMenu, which registers its own keyboard shortcuts, and as
such uses those when it's open. This seems "more correct", but is a
major refactoring for a very small reward.

Release Notes:

- vim: Fix code actions menu
([#1690](https://github.com/zed-industries/community/issues/1690))
2023-06-27 03:56:08 -06:00
Piotr Osiewicz e113db485f Add styles for user menu 2023-06-27 11:55:06 +02:00
Conrad Irwin 19ac999fc4 vim: Fix code actions menu
Fixes: zed-industries/community#1690
2023-06-26 21:46:06 -06:00
Conrad Irwin 72df76d5f0 vim: Add ~ to change case
Fixes: zed-industries/community#1410
2023-06-26 20:22:24 -06:00
Conrad Irwin 3218a471fc vim: Fix cursor restoration when undoing substitute 2023-06-26 20:22:24 -06:00
KCaverlyandmaxbrunsfeld 7f3fc8e1f7 WIP: Got the streaming matrix multiplication working, and started work on file hashing.
Co-authored-by: maxbrunsfeld <max@zed.dev>
2023-06-26 19:01:19 -04:00
Conrad Irwin e6d5841335 vim: shortcuts for tab navigation 2023-06-26 15:07:19 -06:00
Conrad Irwin 04a35ae515 vim: Fix scrolling
After #2641 we noticed that scrolling didn't take a count parameter.

The PageDown/PageUp logic was also broken by an additional -1 (for both
vim mode and not).
2023-06-26 13:29:14 -06:00
KCaverlyandmaxbrunsfeld 104dc6f4c1 Updated database calls to share single connection, and simplified top_k_search sorting.
Co-authored-by: maxbrunsfeld <max@zed.dev>
2023-06-26 14:57:57 -04:00
Joseph T. Lyons 9940c81c67 Add installation_id to panic events (#2642)
We want to add installation_id to the panic events so that we can easily
know if multiple panics are coming from the same person or different
people. 5 panics from one person isn't as bad as 5 panics from 5 people.

[zed.dev pr](https://github.com/zed-industries/zed.dev/pull/343)

Release Notes:

- N/A
2023-06-26 13:35:23 -04:00
Joseph T. Lyons 1bf655ff8d Factor out key name 2023-06-26 13:31:41 -04:00
Joseph T. Lyons 2e9253369b Merge branch 'main' into add-installation-id-to-panic-events 2023-06-26 13:27:14 -04:00
Nate Butler d9f1b6c895 Fix incorrect ThemeAppearance (#2645)
[[PR Description]]

When we updated the way themes were built it looks like we accidentally
gave `Atelier Forest Light` the wrong `ThemeAppearance`. This PR fixes
that.

Release Notes:

- Fixed the `Atelier Forest Light` theme, which was incorrectly set as a
dark theme.
2023-06-26 13:20:32 -04:00
Antonio Scandurra 993846f094 Introduce the ability to load and save conversations with the assistant (#2623)
Closes
https://linear.app/zed-industries/issue/Z-1890/save-assistant-conversations-to-the-filesystem
Closes
https://linear.app/zed-industries/issue/Z-2459/cycling-message-roles-on-the-last-empty-message-alters-the-message
Closes
https://linear.app/zed-industries/issue/Z-2460/cycling-role-in-an-empty-message-cycles-wrong-messages-role
Closes https://linear.app/zed-industries/issue/Z-2365/assistant-toolbar
Closes
https://linear.app/zed-industries/issue/Z-2461/always-insert-an-empty-message-at-the-end-of-the-conversation

Release Notes:

- You can now save conversations with the assistant to
`~/.config/zed/conversations` with `cmd-s`. Conversations are also
automatically saved as they are edited.
2023-06-26 19:17:16 +02:00
Antonio Scandurra def2375461 Remove assistant panel zoom test
The test was testing pretty straightforward logic, but for some strange reason
it was failing on CI (but passed locally). I think it's fine to delete it and
make progress, if zooming regresses we'll find out pretty quickly.
2023-06-26 19:10:59 +02:00
Nate Butler 2537550ab6 Fix incorrect ThemeAppearance 2023-06-26 13:07:33 -04:00
Antonio Scandurra fe98fb56ff Try fixing test on CI 2023-06-26 18:18:22 +02:00
Conrad Irwin 47563405d7 vim: indent/outdent
Fixes: zed-industries/community#832
2023-06-26 10:08:34 -06:00
Julia 2d2e3fb417 Add installation test binaries for all remaining adapters 2023-06-26 11:54:20 -04:00
Antonio Scandurra 29f5161875 Add hover state to assistant buttons 2023-06-26 17:48:43 +02:00
Antonio Scandurra 503f93aa24 Show quote selection button 2023-06-26 17:24:31 +02:00