Commit Graph

10297 Commits

Author SHA1 Message Date
Nate Butler
bfdd0824e2 Resolve TS errors and warnings
TODO: Use StyleTree types to remove `any`s from styleTrees.
2023-06-28 17:54:36 -04:00
Julia
2ed0284d49 Stub out for language plugin 2023-06-28 17:06:50 -04:00
Julia
48bed2ee03
Merge branch 'main' into fix-broken-lsp-installations 2023-06-28 16:46:06 -04:00
Nate Butler
1177980172 Fix basic eslint errors 2023-06-28 16:44:18 -04:00
Julia
db2b3e47bc Reinstall Node whenever a NodeRuntime operation has serious error 2023-06-28 16:43:45 -04:00
Nate Butler
e30ad9109c wip 2023-06-28 16:28:46 -04:00
Mikayla Maki
0b900f4faf
Fix project panel bug (#2656)
Release Notes:

* Fix a bug where project panel entries would not be styled correctly
(preview only)
2023-06-28 10:36:59 -07:00
Mikayla Maki
1d4a922185
prettier format 2023-06-28 10:35:28 -07:00
Mikayla Maki
bf2c2fe242
fix bug with dragged entry 2023-06-28 10:34:47 -07:00
Nate Butler
cf8e0befc8 Update 2023-06-28 13:27:41 -04:00
Mikayla Maki
4659c34d46
WIP: Fix style overwriting in project panel 2023-06-28 09:55:25 -07:00
Mikayla Maki
18dd3102bf
WIP: Add click out event to fix context menus 2023-06-28 09:29:49 -07:00
Joseph T. Lyons
6c53653831 v0.94.x dev 2023-06-28 12:23:42 -04:00
Mikayla Maki
ce52d90a9d
Collab UI v2 (#2618)
This PR implements
https://www.figma.com/file/pLq7dvhx2mFeWFOedXpUQ5/Project-%E2%80%93-Collaboration-UI?type=design&node-id=666%3A8610&t=XFGk6KEtTCFXBvCQ-1

Release notes:
- [x] Redesigned collaboration UI
- [x] Added voice support
2023-06-28 09:14:39 -07:00
Mikayla Maki
cb782c5a7b
Remove menu tracking state 2023-06-28 09:06:06 -07:00
Max Brunsfeld
34b81e2aab collab 0.15.0 2023-06-28 09:01:07 -07:00
Mikayla Maki
88b30dea10
fmt 2023-06-28 08:44:17 -07:00
Mikayla Maki
9ab0efa1f8
Fix microphone and speaking styles 2023-06-28 08:41:31 -07:00
Julia
00212d4383
Handle new elixir-ls release zip name (#2655)
Fix downloading Elixir being broken

Release Notes:

- N/A
(Should be mentioned in 0.92.x)
2023-06-28 10:28:30 -04:00
Julia
1882ce48be Handle new elixir-ls release zip name 2023-06-28 10:22:39 -04:00
Nate Butler
c381e8821c Update icon sizes 2023-06-28 10:19:30 -04:00
Nate Butler
a889f3db54 Reduce the right spacing of the contacts menu 2023-06-28 10:06:12 -04:00
Piotr Osiewicz
49ce1977e3 Optimize user menu trigger 2023-06-28 15:27:38 +02:00
Piotr Osiewicz
c2f5855fdc Fix warning 2023-06-28 15:22:17 +02:00
Piotr Osiewicz
456be1f86e Hide user menu on second click 2023-06-28 15:19:32 +02:00
Piotr Osiewicz
dddff644ca
tests: Test 'db' package sequentially (#2654)
/cc @as-cii  @nathansobo  

Release Notes:

- N/A
2023-06-28 15:00:43 +02:00
Antonio Scandurra
2cb4616609 Enable assistant on stable
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-06-28 12:09:49 +02:00
Antonio Scandurra
0d0c71e215
Polish assistant (#2653)
This is a mix of styling and behavioral improvements to the assistant
that we wanted to land before shipping today.

Release Notes:

- N/A
2023-06-28 12:02:18 +02:00
Nathan Sobo
8f8a99d788 Bind cmd-? to assistant::toggle_focus
Bypass system help menu shortcut at the app delegate level to achieve this.

Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 11:43:24 +02:00
Piotr Osiewicz
2ddf0e12bf Undeafen: unmute if user was not muted prior to deafening 2023-06-28 11:10:56 +02:00
Nathan Sobo
7efcd60608 Remove border from assistant message header
Also: Increase right margin on token count to space it from the scrollbar.

Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:54:44 +02:00
Nathan Sobo
83fc7b9b7c Avoid scrolling to the new cursor position so the assistant's output is stable
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:32:06 +02:00
Nathan Sobo
f52d3ea5ef Clean up tooltips, create conversation on cmd-n
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:27:29 +02:00
Nathan Sobo
d41a7f41fb Space out assistant icons to match pane icons
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2023-06-28 10:00:28 +02:00
Mikayla Maki
749f60ba81
fmt 2023-06-27 19:25:46 -07:00
Mikayla Maki
5d02b49058
Added muted and currently speaking tracking 2023-06-27 19:23:13 -07:00
Max Brunsfeld
f128cf4a33
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
201188fdaa Use FakeFs in worktree gitignore test 2023-06-27 15:40:36 -07:00
Max Brunsfeld
fc02381196
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
81c26cfea0 Fix bugs in handling combined injections exposed by HEEx 2023-06-27 15:08:26 -07:00
Nate Butler
9a07696240 Update titlebar item spacing 2023-06-27 17:56:44 -04:00
Nate Butler
8b2732c3aa workspace.titlebar -> titlebar in Theme 2023-06-27 17:27:58 -04:00
Mikayla Maki
19ca6a8875
Seperate online and offline 2023-06-27 13:33:04 -07:00
Nate Butler
825a7cb799 Update screenshare toggle, titlebar spacing 2023-06-27 16:20:45 -04:00
Mikayla Maki
60ce584427
WIP: Add mute icons 2023-06-27 13:12:52 -07:00
Julia
b2de28ccfc Match original logic when determining server to request formatting 2023-06-27 14:16:01 -04:00
Mikayla Maki
37cb202c93
Rename and toggle screenshare 2023-06-27 09:58:01 -07:00
Nate Butler
b4f9faee3b Update share, call control buttons 2023-06-27 12:24:19 -04:00
Nate Butler
5af33407f0 Add script for building theme types 2023-06-27 11:34:26 -04:00
Nate Butler
331800c14d Use icon_button for leave call 2023-06-27 11:34:12 -04:00