Commit log

0b87be7 Make anchor_in_excerpt Optional (#8975)

Click to expand commit body
We were seeing panics due to callers assuming they had valid
excerpt_ids, but that cannot easily be guaranteed across await points as
anyone may remove an excerpt.

Release Notes:

- Fixed a panic when hovering in a multibuffer

Conrad Irwin created

ae5ec92 Small fixes to task modal & long commands (#8974)

Click to expand commit body
* Show the entire task tooltip on terminal tab hover:
<img width="979" alt="Screenshot 2024-03-07 at 01 40 56"
src="https://github.com/zed-industries/zed/assets/2690773/bc274a5c-70f6-4f3d-87b4-04aff3594089">

* Scroll to the end of the query when a menu label is reused as a query:
<img width="658" alt="Screenshot 2024-03-07 at 01 41 03"
src="https://github.com/zed-industries/zed/assets/2690773/972857f4-36db-49dc-8fa1-dd15e0470660">

Release Notes:

- Improved task modal UX with long bash-like commands

Kirill Bulatov created

ca37d39 add a script to get a flamegraph of collab in production (#8972)

Click to expand commit body
Add `./script/collab-flamegraph` so you can profile in production (or
staging)

Release Notes:

- N/A

Conrad Irwin created

675ae24 Add a command for building and installing a locally-developed Zed extension (#8781)

Click to expand commit body
This PR adds an `zed: Install Local Extension` action, which lets you
select a path to a folder containing a Zed extension, and install that .
When you select a directory, the extension will be compiled (both the
Tree-sitter grammars and the Rust code for the extension itself) and
installed as a Zed extension, using a symlink.

### Details

A few dependencies are needed to build an extension:
* The Rust `wasm32-wasi` target. This is automatically installed if
needed via `rustup`.
* A wasi-preview1 adapter WASM module, for building WASM components with
Rust. This is automatically downloaded if needed from a `wasmtime`
GitHub release
* For building Tree-sitter parsers, a distribution of `wasi-sdk`. This
is automatically downloaded if needed from a `wasi-sdk` GitHub release.

The downloaded artifacts are cached in a support directory called
`Zed/extensions/build`.

### Tasks

UX

* [x] Show local extensions in the Extensions view
* [x] Provide a button for recompiling a linked extension
* [x] Make this action discoverable by adding a button for it on the
Extensions view
* [ ] Surface errors (don't just write them to the Zed log)

Packaging

* [ ] Create a separate executable that performs the extension
compilation. We'll switch the packaging system in our
[extensions](https://github.com/zed-industries/extensions) repo to use
this binary, so that there is one canonical definition of how to
build/package an extensions.

### Release Notes:

- N/A

---------

Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>

Max Brunsfeld , Marshall , and Marshall Bowers created

e273198 Debounce language server updates (#8953)

Click to expand commit body
We'll send at least one every 100ms, but may send more if other messages
are sent on the connection.

Release Notes:

- Fixed some slowness when collaborating with verbose language servers.

Conrad Irwin created

af87fb9 Implement more GPUI services on windows. (#8940)

Click to expand commit body
### Description

This is a part of #8809 , impl the following functions:

- `os_version`
- `local_timezone`
- `double_click_interval`
- `set_cursor_style`
- `open_url`
- `reveal_path`

Release Notes:
- N/A

---------

Co-authored-by: Mikayla Maki <mikayla@zed.dev>

Small White and Mikayla Maki created

effc317 Fix project panel scrolling position restoration (#8961)

Click to expand commit body
Project panel loses the last scrolling position every time the user
hides/shows it. This PR fixes the problem.

The reason of the problem is that `UniformListScrollHandle`, which is
intended to store the scrolling position between redrawings, is only
used for ad-hoc autoscrollings to the list items, while the
`interactivity.scroll_handle` that is responsible for the scrolling
position, doesn't survive the project panel hiding.

How the problem looks:


https://github.com/zed-industries/zed/assets/2101250/7c7e3da6-9a9d-4f28-a181-ee9547349d4c

Release Notes:

- Fixed scrolling position restoration in the Project Panel.

Andrew Lygin created

6bbd09e Emit the WorktreeUpdatedEntries event for all projects, not just local (#8963)

Click to expand commit body
Fixes a regression introduced in
https://github.com/zed-industries/zed/pull/8846 (which hasn't yet been
released), in which the project panel didn't update correctly for remote
projects when collaborating.

Release Notes:

- N/A

Max Brunsfeld created

06035da windows: more frequent frame requests (#8921)

Click to expand commit body
Note rust analyzer running in background now without keyboard/mouse
movement.

![](https://media.discordapp.net/attachments/1208481909676576818/1214769879098597416/high-framerate-windows.gif?ex=65fa519c&is=65e7dc9c&hm=4c9ba72fa3c3c548964e46d9c07f0c0bf9545ed9a9ae11495101dcae5db06d59&=)

Release Notes:

- Improved frame rate on Windows

Ezekiel Warren created

8357039 Set the default DPI awareness for Zed (#8936)

Click to expand commit body
### Description

This is a part of #8809 


Release Notes:
- N/A

Small White created

59faef5 Update `mio` (#8935)

Click to expand commit body
### Description
This is a part of #8809 

Update mio from 0.8.8 to 0.8.11.

When using named pipes on Windows, mio will under some circumstances
return invalid tokens that correspond to named pipes that have already
been deregistered from the mio registry. The impact of this
vulnerability depends on how mio is used. For some applications, invalid
tokens may be ignored or cause a warning or a crash. On the other hand,
for applications that store pointers in the tokens, this vulnerability
may result in a use-after-free.

### Connections

[named-pipes: fix receiving IOCP events after deregister
#1760](https://github.com/tokio-rs/mio/pull/1760)

[Windows Named pipes invalid memory access
#6369](https://github.com/tokio-rs/tokio/issues/6369)


Release Notes:

- N/A

Small White created

a0fac38 prevent empty cwd in terminal view (#8924)

Click to expand commit body
closes #8825

Release Notes:

- N/A

Ezekiel Warren created

8352f39 Improve bindings to better match VS-Code (#8584)

Click to expand commit body
Release Notes:

- Changed default keybindings in the VS Code keymap so that
`alt-[up|down]` now move lines up/down and`alt-shift-[up|down]`
duplicate lines up/down. Previous bindings for selecting larger/smaller
syntax nodes are now bound to `ctrl-shift-[left|right]`.
([#4652](https://github.com/zed-industries/zed/issues/4652))([#7151](https://github.com/zed-industries/zed/issues/7151))

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>

Edvard Høiby and Thorsten Ball created

850dddd v0.127.x dev

Joseph T. Lyons created

563c4db Install perf tools in production containers (#8957)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

8eb0239 Remove console-subscriber (#8955)

Click to expand commit body
It doubles CPU and RAM usage for not really enough benefit

Release Notes:

- N/A

Conrad Irwin created

deb86a1 Fix ./script/symbolicate on Preview crashes (#8956)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

b622dcb Enable `clippy::cast_abs_to_unsigned` (#8912)

Click to expand commit body
Thankfully this one is a simple, single change that also prevents
overflow in the `abs()`

Kirpal Grewal created

2f15676 Update App Menus to add `...` for some modal action menu, and group menu items by type. (#8951)

Click to expand commit body
Release Notes:

- Improved App Menu, add `...` for modal action menu, and group menu
items by type.

In macOS and Windows, the `...` suffix of menu item, is means that will
open a dialog.

Jason Lee created

4a60326 Remove workspace border, avoid the main window having double borders (#8922)

Click to expand commit body
Release Notes:

- Fixed main window border, avoid double borders.



## Diff (Left is Before, Right is After)


![SCR-20240306-g2v](https://github.com/zed-industries/zed/assets/5518/b13bab55-9d74-4181-ae43-e338bb6f7112)

![SCR-20240306-g0x](https://github.com/zed-industries/zed/assets/5518/af9d4190-a974-4c26-8466-dce1c78c3f31)




Reference to Safari:

![SCR-20240306-ejo](https://github.com/zed-industries/zed/assets/5518/14c41898-8218-4bec-8574-8915a7186926)


## More Theme tests

![SCR-20240306-g0d](https://github.com/zed-industries/zed/assets/5518/8938671e-bc7c-4a6a-8c06-0992beb92bb1)

![SCR-20240306-g0j](https://github.com/zed-industries/zed/assets/5518/73a68663-70f5-4f83-aea0-2079236079e7)

![SCR-20240306-g0q](https://github.com/zed-industries/zed/assets/5518/0a2b4905-3dd1-4081-b538-a78728470004)



![SCR-20240306-fu9](https://github.com/zed-industries/zed/assets/5518/dd3a9e2c-ea28-46c6-a993-047dae8b2d8f)

Jason Lee created

567fee4 Update `Project search` to `Project Search`. (#8943)

Click to expand commit body
Release notes:

- N/A

Jason Lee created

6036830 Throttle the sending of UpdateFollowers messages (#8918)

Click to expand commit body
## Problem

We're trying to figure out why we sometimes see high latency when
collaborating, even though the collab server logs indicate that messages
are not taking long to process.

We think that high volumes of certain types of messages, including
`UpdateFollowers` may cause a lot of messages to queue up, causing
delays before collab sees certain messages.

## Fix

This PR reduces the number of `UpdateFollowers` messages that clients
send to collab when scrolling around or moving the cursor, using a
time-based throttle.

The downside of this change is that scrolling will not be as smooth when
following someone. The advantage is that it will be much easier to keep
up with the stream of updates, since they will be sent much less
frequently.

## Release Notes:

- Fixed slowness that could occur when collaborating due to excessive
messages being sent to support following.

---------

Co-authored-by: Nathan <nathan@zed.dev>
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Thorsten <thorsten@zed.dev>
Co-authored-by: Thorsten Ball <mrnugget@gmail.com>

Max Brunsfeld , Nathan , Conrad , Antonio Scandurra , Thorsten , and Thorsten Ball created

c8383e3 Use a string for ZED_LOAD_BALANCER_SIZE_UNIT in k8s template

Click to expand commit body
Co-Authored-By: Thorsten <thorsten@zed.dev>

Antonio Scandurra and Thorsten created

334c3c6 Use a string for ZED_LOAD_BALANCER_SIZE_UNIT

Click to expand commit body
Co-Authored-By: Thorsten <thorsten@zed.dev>

Antonio Scandurra and Thorsten created

e3a7192 Give a name to load balancers and increase node count for production (#8939)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Thorsten <thorsten@zed.dev>

Antonio Scandurra and Thorsten created

6327f3c Modify the link to the latest (#8925)

Click to expand commit body
Fixed the link for Vue LSP server

Release Notes:

- N/A

Hans created

c58422c Fix YAML indentation

Conrad Irwin created

6d53846 0-downtime collab deploys? (#8926)

Click to expand commit body
Before this change Kubernetes would send a SIGTERM to the old server
before the new one was ready. Now it will wait.

From my reading it seems like startupProbe should not be necessary if we
have a
readinessProbe; but from testing it seems like without startupProbe we
still
drop requests when using `rollout restart`

Release Notes:

- Fixed connectivity issues during Zed deploys.

Conrad Irwin created

01e5e42 Fix numeric sign of queue duration in logs

Max Brunsfeld created

4de8068 Revert "Install perf on collab image (#8910)"

Click to expand commit body
Keep the removal of the collab resource requests.

This reverts commit ce6bde5a242909834341998a49eeb7f95191ff75.

Max Brunsfeld created

ce6bde5 Install perf on collab image (#8910)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Conrad <conrad@zed.dev>

Max Brunsfeld and Conrad created

35c516f Log the time incoming RPC messages were queued (#8909)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Conrad <conrad@zed.dev>

Max Brunsfeld and Conrad created

bca98ca Enable `clippy::unnecessary_to_owned` (#8908)

Click to expand commit body
lint for `unnecessary_to_owned` and fix the sole violation in the
codebase

Kirpal Grewal created

b68a277 Fix tracing subscriber after introducing Tokio-console (#8907)

Click to expand commit body
We've also upgraded `Axum` in order to avoid having two versions of that
library in Collab (one due to Tokio-console).

Release Notes:

- N/A

---------

Co-authored-by: Conrad <conrad@zed.dev>

Max Brunsfeld and Conrad created

703c965 Always resolve code action if needed (#8904)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/8874 and
https://github.com/zed-industries/zed/pull/7635
Closes https://github.com/zed-industries/zed/issues/7609

* mentions all `lsp::CodeActions` properties in the Zed client resolve
capabilities to remove more json out of general actions request
potentially
* removes odd `CodeActions.data` field checks, as that field is opaque
and is intended to store data, needed by the langserver to resolve this
code action
* if any `CodeAction` lacks either `command` or `edits` fields, tries to
resolve the action

This all effectively causes Zed to always fire an action resolve
request, since we update actions list (replacing the resolved actions
with the new, unresolved ones) via `refresh_code_actions`

https://github.com/zed-industries/zed/blob/9e66d48ccd3bb87ee97aec4e63484dc8b78e45ac/crates/editor/src/editor.rs#L3650
that is being called on selections change and the actions menu open.

Yet, we do not query the resolve until the action is either applied
(selected in the list), or called for formatting, so it seems to be fine
to resolve them always, as it's not a frequent operation such as
reacting to every keystroke.


Release Notes:

- Fixed certain code actions not being resolved properly ([7609](https://github.com/zed-industries/zed/issues/7609))

---------

Co-authored-by: Derrick Laird <swampdonk@gmail.com>

Kirill Bulatov and Derrick Laird created

addfcde Enable `clippy::implied_bounds_in_impls` (#8906)

Click to expand commit body
This PR enables the
[`clippy::implied_bounds_in_impls`](https://rust-lang.github.io/rust-clippy/master/index.html#/implied_bounds_in_impls)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

d112bcf Fix project subscription order (#8900)

Click to expand commit body
Co-Authored-By: Antonio <as-cii@zed.dev>

Release Notes:

- Fixed a bug that prevents project joining

Co-authored-by: Antonio <as-cii@zed.dev>

Conrad Irwin and Antonio created

9e66d48 Enable `clippy::cmp_owned` (#8899)

Click to expand commit body
This PR enables the
[`clippy::cmp_owned`](https://rust-lang.github.io/rust-clippy/master/index.html#/cmp_owned)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

d98b61e Improve wording on recent projects placeholder instructions

Joseph T. Lyons created

ad0c573 Update config.yml

Joseph T. Lyons created

cfffa29 Enable tokio-console (#8897)

Click to expand commit body
Release Notes:

- Added tokio-console in production

Conrad Irwin created

9a2ed4b Windows: use folders under AppData (#8828)

Click to expand commit body
To be honest, I am not sure how to use these directories. But since it
is difficult to change these later, if we are going to change them, I
think it is time to do.

Release Notes:

- N/A

白山風露 created

b6af393 Enable `clippy::borrow_deref_ref` (#8894)

Click to expand commit body
This PR enables the
[`clippy::borrow_deref_ref`](https://rust-lang.github.io/rust-clippy/master/index.html#/borrow_deref_ref)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

a25edcc Add libxcb-devel build dep to void linux script (#8872)

Click to expand commit body
Added missing libxcb-devel to build dependency script for void-linux.

Owen Law created

22fe039 Move Clippy configuration to the workspace level (#8891)

Click to expand commit body
This PR moves the Clippy configuration up to the workspace level.

We're using the [`lints`
table](https://doc.rust-lang.org/cargo/reference/workspaces.html#the-lints-table)
to configure the Clippy ruleset in the workspace's `Cargo.toml`.

Each crate in the workspace now has the following in their own
`Cargo.toml` to inherit the lints from the workspace:

```toml
[lints]
workspace = true
```

This allows for configuring rust-analyzer to show Clippy lints in the
editor by using the following configuration in your Zed `settings.json`:

```json
{
  "lsp": {
    "rust-analyzer": {
      "initialization_options": {
        "check": {
          "command": "clippy"
        }
      }
    }
  }
```

Release Notes:

- N/A

Marshall Bowers created

52f750b Update blade to latest: work around Intel+NVidia driver bug (#8811)

Click to expand commit body
Picks up https://github.com/kvark/blade/pull/92
Should unblock some of the unhappy users.
Upstream bug - https://gitlab.freedesktop.org/mesa/mesa/-/issues/4688

Release Notes:
- N/A

Dzmitry Malyshau created

36c4831 windows: mouse and keyboard (#8791)

Click to expand commit body
Windows mouse and keyboard working! I also tweaked the message loop so
that it didn't get stuck. The peek message loop was almost never
returning for me during testing.

Release Notes:

- Added windows mouse and keyboard support

![windows-mouse-and-keyboard](https://github.com/zed-industries/zed/assets/1284289/08578fbf-0cb2-4e44-bab1-3c4f0291ea4b)

Ezekiel Warren created

7c9f680 Request more resources for collab pods on Kubernetes (#8890)

Click to expand commit body
Worried that if we don't do this, they don't give us enough. We're
maxing out the pod's CPU but the node is barely sweating.

Release Notes:

- N/A

Nathan Sobo created

2b8b913 Use correct worktree when getting permalink to line (#8888)

Click to expand commit body
Previously this code would call `project.visible_worktrees(cx).next`
which might not necessarily return the worktree matching the currently
open file.

What this change does is it adds `get_repo` method on `Project` that
allows us to get the `GitRepository` for the current buffer.

Release Notes:

- Fixed `open permalink to line` not working when multiple folders are
added to the project.

Co-authored-by: Mikayla <mikayla@zed.dev>

Thorsten Ball and Mikayla created

d286c56 Optimize rustybuzz and ttf-parser in Dev (#8873)

Click to expand commit body
This PR improves the `draw()` time from hundreds to about 30ms, so
roughly 10x.
It makes Zed quite usable in Dev profile.

Release Notes:
- N/A

Dzmitry Malyshau created