Commit log

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

0b34b1d Fix first/last item margin on scroll (#8880)

Click to expand commit body
![output](https://github.com/zed-industries/zed/assets/5518/e39a3600-99c4-4d3c-baee-efd53a474f38)

Before:

https://github.com/zed-industries/zed/assets/5518/f7a4563a-504a-4a41-bfd4-21e9439cd02b

After:

https://github.com/zed-industries/zed/assets/5518/0ba41527-46fd-404f-8207-1b8c5cf37434


Release Notes:

- Fixed first and last item margin when scroll view has padding

Jason Lee created

537d925 Backport `code_actions_on_format` docs and update them (#8881)

Click to expand commit body
Release Notes:

- N/A

Thorsten Ball created

fae5e83 Fix all Picker Item cursor to use `Pointer`. (#8877)

Click to expand commit body
Before:

https://github.com/zed-industries/zed/assets/5518/84874858-7847-4fa4-b7a3-41ecc65a2f7d

After: 

https://github.com/zed-industries/zed/assets/5518/d395ea96-aa26-4de1-8bfc-73cc43ee75cf


Release Notes:

- Made picker items to use `Pointer` cursor style

Jason Lee created

6a268e9 Improve VCS Menu header top margin. (#8879)

Click to expand commit body
## Before

![SCR-20240305-nga](https://github.com/zed-industries/zed/assets/5518/e814d770-a5b1-4289-acc4-808bf7d96690)

![SCR-20240305-nge](https://github.com/zed-industries/zed/assets/5518/abba4f7c-7e6c-447f-8e4f-fbecdf802f62)

## After

![SCR-20240305-nfp](https://github.com/zed-industries/zed/assets/5518/5539b15c-c67d-466b-9c46-44e488788b04)

![SCR-20240305-nfu](https://github.com/zed-industries/zed/assets/5518/5cfdf861-b55c-4f1e-a41f-dcd42a449488)

Release Notes:

- Improve VCS Menu header top margin, and use `TextMuted` color for
matched count label.

Jason Lee created

4b2e774 Fix license generation and Closure LSP repo link (#8876)

Click to expand commit body
Release Notes:

- N/A

Kirill Bulatov created

e0c66b3 Fix panic in enclosing bracket ranges (#8870)

Click to expand commit body
This function was operating in the wrong co-ordinate space (c.f. #8081)

Release Notes:

- Fixed a panic on `ctrl-m` in a multibuffer

Conrad Irwin created

27c5343 hosted projects (#8627)

Click to expand commit body
- **Allow joining a hosted project**

You can't yet do anything in a hosted project, but you can join it and
look how empty it is.

Release Notes:

- N/A

Conrad Irwin created

4167c66 macOS: Fix center window with fixed bounds size (#8475)

Click to expand commit body
This PR fixes window showing up in the center of the monitor when
`center: true` option is provided.

The idea is to set the `window_wize` when creating the `window` using
`native_window.initWithContentRect_styleMask_backing_defer_screen_()`

Before: 

<img width="851" alt="SCR-20240227-qokf"
src="https://github.com/zed-industries/zed/assets/20229808/27494966-2e97-4771-8837-ccb6658ced78">

After:

<img width="1132" alt="SCR-20240227-qlmg"
src="https://github.com/zed-industries/zed/assets/20229808/439568da-d380-4331-8d19-cd501f211c4c">


Release Notes:

- N/A

Quadri A. Adekunle created

d223fe4 vim: Add support for `ap` and `ip` paragraph text objects (#7687)

Click to expand commit body
This PR adds support for `ap`/`ip` text objects in Vim mode and allows
users to perform paragraph-based operations.

Cases where compatibility with Neovim's behavior is checked, cases where
there are known differences in behavior with Neovim (cases where the
landing position is other than the beginning of the line), and cases
where the Neovim behavior in the test suite seems strange are separated
in the test code so that they can be identified.

Release Notes:

- Added support for `ap` and `ip` paragraph text objects in Vim mode
([#7359](https://github.com/zed-industries/zed/issues/7359)).

Noritada Kobayashi created

b742db6 vim: Support keybinding `z.` (#8702)

Click to expand commit body
`z.` is similar to zz but moves the cursor to the first non-blank
character.

From the documentation:
```
z.   Redraw, line [count] at center of window (default cursor line). Put cursor at first non-blank in the line.
zz   Like "z.", but leave the cursor in the same column.
```

Release Notes:

- Support the `z.` vim keybinding: Center cursor in window and put
cursor at first non-blank

snorkypie created

f53823c Remove release channel from Zed URLs (#8863)

Click to expand commit body
Also adds a new command `cli: Register Zed Scheme` that will cause URLs
to be opened in the current zed version, and we call this implicitly if
you install the CLI

Also add some status reporting to install cli

Fixes: #8857



Release Notes:

- Added success/error reporting to `cli: Install Cli`
([#8857](https://github.com/zed-industries/zed/issues/8857)).
- Removed `zed-{preview,nightly,dev}:` url schemes (used by channel
links)
- Added `cli: Register Zed Scheme` to control which zed handles the
`zed://` scheme (defaults to the most recently installed, or
the version that you last used `cli: Install Cli` with)

Conrad Irwin created

2201b9b task: Add task contexts (#8675)

Click to expand commit body
This PR supplements tasks with additional environment variables; ideally
we'll be able to write a task like:
`cargo test -p $ZED_CURRENT_PACKAGE -- $ZED_CURRENT_FUNCTION`
- [x] Flesh out multibuffer interactions
- [x] Add ZED_SYMBOL detection based on tree-sitter queries
- [ ] Add release note and demo
- [x] Figure out a solution for rerun dilemma - should `task: rerun`
reevaluate contexts for tasks?

This PR introduced the following variables:
- ZED_COLUMN - current line column
- ZED_ROW - current line row
and the following, which are available for buffers with associated
files:
- ZED_WORKTREE_ROOT - absolute path to the root of the current worktree.
- ZED_FILE - absolute path to the file
- ZED_SYMBOL - currently selected symbol; should match the last symbol
shown in a symbol breadcrumb (e.g. `mod tests > fn test_task_contexts`
should be equal to ZED_SYMBOL of `test_task_contexts`). Note that this
isn't necessarily a test function or a function at all.

Also, you can use them in `cwd` field of definitions (note though that
we're using https://docs.rs/subst/latest/subst/#features for that, so
don't expect a full shell functionality to work); the syntax should
match up with your typical Unix shell.


Release Notes:

- Added task contexts, which are additional environment variables set by
Zed for task execution; task content is dependent on the state of the
editor at the time the task is spawned.

---------

Co-authored-by: Anthony <anthonyeid7@protonmail.com>

Piotr Osiewicz and Anthony created

b2f18cf Ensure followed cursors are always visible (#8849)

Click to expand commit body
Before this change they would disappear if you blurred the pane.

Release Notes:

- Fixed an issue where the followed users' cursor would disappear if you
blurred the pane.

Conrad Irwin created

95e532c Add option to sign in to copilot from welcome screen (#8853)

Click to expand commit body
Fixes: https://github.com/zed-industries/zed/issues/8851


https://github.com/zed-industries/zed/assets/19867440/5d391289-34e8-4abc-9337-b7e253f4e513

Release Notes:

- Added GitHub Copilot sign in on welcome screen
([#8851](https://github.com/zed-industries/zed/issues/8851)).

Joseph T. Lyons created

d7b5c88 Optimize project panel subscriptions (#8846)

Click to expand commit body
The project panel now both observes all the project updates and
subscribes to project events it's interested in. The observing handler
updates the list of visible entries on any notification, which looks
pretty excessive.

This PR removes the observer completely, and adds missing event handlers
to the subscription, thus removing unnecessary work.

Release Notes:

- N/A

Andrew Lygin created

78fa596 Enable `clippy::crate_in_macro_def` (#8845)

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

Release Notes:

- N/A

Marshall Bowers created

1dd4c1b Enable `clippy::redundant_closure_call` (#8840)

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

Release Notes:

- N/A

Marshall Bowers created

9ea50ed Enable `clippy::iter_overeager_cloned` (#8839)

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

Release Notes:

- N/A

Marshall Bowers created

9c6a0d9 Set working directory for `project` to project path (#8837)

Click to expand commit body
This fixes #8823 by setting the current working directory we use when
launching our own `prettier` process via `node` to the project path.

Why does this fix it?

We already *did* read the correct configuration options for `prettier`
from any configuration files, we also correctly inferred which
`prettier` plugins to use, but somehow when running

    ./node_modules/.bin/prettier my-file.tsx

produced different results compared to `prettier` in Zed.

But we *do* pass the right options to `prettier.format` when calling it
here:
https://github.com/zed-industries/zed/blob/996f1036fcc86dc95f6402311175929ed3c00909/crates/prettier/src/prettier_server.js#L177-L190

I checked those against the `prettier --loglevel=debug` output: they're
the same.

Turns out that the difference is we launch our `prettier_server.js` (a
JavaScript shim that wraps `prettier`-the-library in a language server
interface) not in the project path.

So somewhere inside `prettier.format` something is `require`d and fails
because we're not in that project directory. But when you run
`./node_modules/.bin/prettier` you are.

With the fix here, `prettier` now correctly picks up the tailwind plugin
that didn't seem to work in #8823. It probably fixes a bunch of other
oddities that folks reported with `prettier` too.



Release Notes:

- Fixed `prettier` integration not correctly picking up `prettier`
plugins, because it didn't run in the project's root path when invoked.
([#8823](https://github.com/zed-industries/zed/issues/8823)).

Thorsten Ball created

0976034 linux: remove todo for credential implementation (#8834)

Click to expand commit body
As commented
[here](https://github.com/zed-industries/zed/pull/8035#issuecomment-1976894590),
this is already done.



Release Notes:
- N/A

Christian Bergschneider created

12980dd Enable `clippy::derivable_impls` (#8836)

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

Release Notes:

- N/A

Marshall Bowers created

a860530 Assign OpenAI model based on Azure OpenAI deployment ID (#8835)

Click to expand commit body
Following up on #8646, this PR makes it so we select an OpenAI model
based on the deployment ID when using Azure OpenAI.

Release Notes:

- N/A

Marshall Bowers created

996f103 linux: clipboard (#8822)

Click to expand commit body
Linux clipboard implementation with `copypasta`.


Release Notes:

- Added linux clipboard support

Rom Grk created