Commit log

edac6e4 Add font ligatures and format on save buttons to onboarding UI (#35487)

Click to expand commit body
Release Notes:

- N/A

Anthony Eid created

6052115 zeta: Add CLI tool for querying edit predictions and related context (#35491)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Michael Sloan and Marshall Bowers created

561ccf8 onboarding: Serialize onboarding page (#35490)

Click to expand commit body
Closes #ISSUE

Serializes the onboarding page to the database to ensure that if Zed is
closed during onboarding, re-opening Zed restores the onboarding state
and the most recently active page (Basics, Editing, etc) restored. Also
has the nice side effect of making dev a bit nicer as it removes the
need to re-open onboarding and navigate to the correct page on each
build.

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

ac75593 onboarding: Actions for page navigation (#35484)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

a3a3f11 zeta: Rename binding back to `user_store` (#35486)

Click to expand commit body
This PR renames a binding from `cloud_user_store` to `user_store` now
that we've consolidated the two into the `UserStore`.

Release Notes:

- N/A

Marshall Bowers created

faa45c5 onboarding: Add design adjustments (#35480)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Anthony <anthony@zed.dev>

Danilo Leal and Anthony created

b31f893 Rasterize glyphs without D2D (#35376)

Click to expand commit body
This allows debugging Zed with Renderdoc, and also fixes an issue where
glyphs' bounds were miscalculated for certain sizes and scale factors.

Release Notes:

- N/A

---------

Co-authored-by: Kate <kate@zed.dev>
Co-authored-by: Julia <julia@zed.dev>
Co-authored-by: Junkui Zhang <364772080@qq.com>

Max Brunsfeld , Kate , Julia , and Junkui Zhang created

f888f3f Start separating authentication from connection to collab (#35471)

Click to expand commit body
This pull request should be idempotent, but lays the groundwork for
avoiding to connect to collab in order to interact with AI features
provided by Zed.

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Co-authored-by: Richard Feldman <oss@rtfeldman.com>

Antonio Scandurra , Marshall Bowers , and Richard Feldman created

b01d187 onboarding: Add the AI page (#35351)

Click to expand commit body
This PR starts the work on the AI onboarding page as well as the
configuration modal

Release Notes:

- N/A

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Anthony <anthony@zed.dev>

Finn Evers , Danilo Leal , and Anthony created

e5c6a59 agent_ui: More agent notifications (#35441)

Click to expand commit body
Release Notes:

- N/A

Ben Brandt created

106aa0d Add default binding to open settings profile selector (#35459)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

f7f9059 inline_completion_button: Replace `UserStore` with `CloudUserStore` (#35456)

Click to expand commit body
This PR replaces usages of the `UserStore` in the inline completion
button with the `CloudUserStore`.

Release Notes:

- N/A

Marshall Bowers created

8be3f48 client: Remove unused `subscription_period` from `UserStore` (#35454)

Click to expand commit body
This PR removes the `subscription_period` field from the `UserStore`, as
its usage has been replaced by the `CloudUserStore`.

Release Notes:

- N/A

Marshall Bowers created

76a8293 editor_tests: Fix for potential race loading editor languages (#35453)

Click to expand commit body
Fix for potential race when loading HTML and JS languages (JS is
slower). Wait for both to load before continue tests.
Observed failure on linux:
[job](https://github.com/zed-industries/zed/actions/runs/16662438526/job/47162345259)
as part of https://github.com/zed-industries/zed/pull/35436

```
    thread 'editor_tests::test_autoclose_with_embedded_language' panicked at crates/editor/src/editor_tests.rs:8724:8:
    assertion failed: `(left == right)`: unexpected buffer text

    Diff < left / right > :
     <body><>
         <script>
    <        var x = 1;<>
    >        var x = 1;<
         </script>
     </body><>
```

Inserted `<` incorrect gets paired bracket inserted `>`.
I believe because the JS language injection hasn't fully loaded.

Release Notes:

- N/A

Peter Tripp created

2315962 cloud_api_client: Add `accept_terms_of_service` method (#35452)

Click to expand commit body
This PR adds an `accept_terms_of_service` method to the
`CloudApiClient`.

Release Notes:

- N/A

Marshall Bowers created

f8673da ai_onboarding: Read the plan from the `CloudUserStore` (#35451)

Click to expand commit body
This PR updates the AI onboarding to read the plan from the
`CloudUserStore` so that we don't need to connect to Collab.

Release Notes:

- N/A

Marshall Bowers created

72d354d Update Agent panel to work with `CloudUserStore` (#35436)

Click to expand commit body
This PR updates the Agent panel to work with the `CloudUserStore`
instead of the `UserStore`, reducing its reliance on being connected to
Collab to function.

Release Notes:

- N/A

---------

Co-authored-by: Richard Feldman <oss@rtfeldman.com>

Marshall Bowers and Richard Feldman created

09b93ca Rework authentication for local Cloud/Collab development (#35450)

Click to expand commit body
This PR reworks authentication for developing Zed against a local
version of Cloud and/or Collab.

You will still connect the same way—using the `zed-local` script—but
will need to be running an instance of Cloud locally.

Release Notes:

- N/A

Marshall Bowers created

7c169fc debugger: Send initialized event from fake server at a more realistic time (#35446)

Click to expand commit body
The spec says:

> :arrow_left: Initialized Event
> This event indicates that the debug adapter is ready to accept
configuration requests (e.g. setBreakpoints, setExceptionBreakpoints).
>
> A debug adapter is expected to send this event when it is ready to
accept configuration requests (but not before the initialize request has
finished).

Previously in tests, `intercept_debug_sessions` was just spawning off a
background task to send the event after setting up the client, so the
event wasn't actually synchronized with the flow of messages in the way
the spec says it should be. This PR makes it so that the `FakeTransport`
injects the event right after a successful response to the initialize
request, and doesn't send it otherwise.

Release Notes:

- N/A

Cole Miller created

2b36d4e Add a field to MultiLSPQuery span showing the current request (#35372)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

4a82b6c jetbrains: Unmap cmd-k in Jetbrains keymap (#35443)

Click to expand commit body
This only works after a delay in most situations because of the all
chorded `cmd-k` mappings in the so disable them for now.

Reported by @jer-k:
https://x.com/J_Kreutzbender/status/1951033355434336606

Release Notes:

- Undo mapping of `cmd-k` for Git Panel in default Jetbrains keymap
(thanks [@jer-k](https://github.com/jer-k))

Peter Tripp created

5feb759 Additions for settings profile selector (#35439)

Click to expand commit body
- Added profile selector to `zed > settings` submenu.
- Added examples to the `default.json` docs.
- Reduced length of the setting description that shows on autocomplete,
since it was cutoff in the autocomplete popover.


Release Notes:

- N/A

Joseph T. Lyons created

410348d Acquire LLM token from Cloud instead of Collab for Edit Predictions (#35431)

Click to expand commit body
This PR updates the Zed Edit Prediction provider to acquire the LLM
token from Cloud instead of Collab to allow using Edit Predictions even
when disconnected from or unable to connect to the Collab server.

Release Notes:

- N/A

---------

Co-authored-by: Richard Feldman <oss@rtfeldman.com>

Marshall Bowers and Richard Feldman created

8e7f189 Revert "Increase the number of parallel request handlers per connection" (#35435)

Click to expand commit body
Reverts zed-industries/zed#35046

This made the problem worse ;-;

Release Notes:

- N/A

Mikayla Maki created

aea1d48 cloud_api_client: Add `create_llm_token` method (#35428)

Click to expand commit body
This PR adds a `create_llm_token` method to the `CloudApiClient`.

Release Notes:

- N/A

Marshall Bowers created

c946b98 onboarding: Expand power of theme selector (#35421)

Click to expand commit body
Closes #ISSUE

The behavior of the theme selector is documented above the function,
copied here for reference:
```rust
/// separates theme "mode" ("dark" | "light" | "system") into two separate states
/// - appearance = "dark" | "light"
/// - "system" true/false
/// when system selected:
///  - toggling between light and dark does not change theme.mode, just which variant will be changed
/// when system not selected:
///  - toggling between light and dark does change theme.mode
/// selecting a theme preview will always change theme.["light" | "dark"] to the selected theme,
///
/// this allows for selecting a dark and light theme option regardless of whether the mode is set to system or not
/// it does not support setting theme to a static value
```

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

c6947ee onboarding ui: Add theme preview tiles and button functionality to basic page (#35413)

Click to expand commit body
This PR polishes and adds functionality to the onboarding UI with a
focus on the basic page. It added theme preview tiles, got the Vim,
telemetry, crash reporting, and sign-in button working.

The theme preview component was moved to the UI crate and it now can
have a click handler on it.

Finally, this commit also changed `client::User.github_login` and
`client::UserStore.by_github_login` to use `SharedStrings` instead of
`Strings`. This change was made because user.github_login was cloned in
several areas including the UI, and was cast to a shared string in some
cases too.

Release Notes:

- N/A

---------

Co-authored-by: Remco Smits <djsmits12@gmail.com>

Anthony Eid and Remco Smits created

b59f992 cloud_api_types: Add types for `POST /client/llm_tokens` endpoint (#35420)

Click to expand commit body
This PR adds some types for the new `POST /client/llm_tokens` endpoint.

Release Notes:

- N/A

Co-authored-by: Richard <richard@zed.dev>

Marshall Bowers and Richard created

0a21b84 Tighten up settings profile selector modal width (#35419)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

6a8be17 Fix panic with completion ranges and autoclose regions interop (#35408)

Click to expand commit body
As reported [in
Discord](https://discord.com/channels/869392257814519848/1106226198494859355/1398470747227426948)
C projects with `"` as "brackets" that autoclose, may invoke panics when
edited at the end of the file.

With a single selection-caret (`ˇ`), at the end of the file,
```c
ifndef BAR_H
#define BAR_H

#include <stdbool.h>

int fn_branch(bool do_branch1, bool do_branch2);

#endif // BAR_H
#include"ˇ"
```
gets an LSP response from clangd
```jsonc
{
  "filterText": "AGL/",
  "insertText": "AGL/",
  "insertTextFormat": 1,
  "kind": 17,
  "label": " AGL/",
  "labelDetails": {},
  "score": 0.78725427389144897,
  "sortText": "40b67681AGL/",
  "textEdit": {
    "newText": "AGL/",
    "range": { "end": { "character": 11, "line": 8 }, "start": { "character": 10, "line": 8 } }
  }
}
```

which replaces `"` after the caret (character/column 11, 0-indexed).
This is reasonable, as regular follow-up (proposed in further
completions), is a suffix + a closing `"`:

<img width="842" height="259" alt="image"
src="https://github.com/user-attachments/assets/ea56f621-7008-4ce2-99ba-87344ddf33d2"
/>

Yet when Zed handles user input of `"`, it panics due to multiple
reasons:

* after applying any snippet text edit, Zed did a selection change:
https://github.com/zed-industries/zed/blob/55379876301bd4dcfe054a146b66288d2e60a523/crates/editor/src/editor.rs#L9539-L9545
which caused eventual autoclose region invalidation:
https://github.com/zed-industries/zed/blob/55379876301bd4dcfe054a146b66288d2e60a523/crates/editor/src/editor.rs#L2970

This covers all cases that insert the `include""` text.

* after applying any user input and "plain" text edit, Zed did not
invalidate any autoclose regions at all, relying on the "bracket" (which
includes `"`) autoclose logic to rule edge cases out

* bracket autoclose logic detects previous `"` and considers the new
user input as a valid closure, hence no autoclose region needed.
But there is an autoclose bracket data after the plaintext completion
insertion (`AGL/`) really, and it's not invalidated after `"` handling

* in addition to that, `Anchor::is_valid` method in `text` panicked, and
required `fn try_fragment_id_for_anchor` to handle "pointing at odd,
after the end of the file, offset" cases as `false`

A test reproducing the feedback and 2 fixes added: proper, autoclose
region invalidation call which required the invalidation logic tweaked a
bit, and "superficial", "do not apply bad selections that cause panics"
fix in the editor to be more robust

Release Notes:

- Fixed panic with completion ranges and autoclose regions interop

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

Kirill Bulatov and Max Brunsfeld created

a2aea00 Bump livekit-rust-sdks with another attempt to fix build failures (#35344)

Click to expand commit body
Includes https://github.com/zed-industries/livekit-rust-sdks/pull/7

Release Notes:

- N/A

Cole Miller created

98c66ed windows: Don't create directx device with debug flag when debug layer is missing (#35405)

Click to expand commit body
Release Notes:

- N/A

张小白 created

558bbff title_bar: Show the plan from the `CloudUserStore` (#35401)

Click to expand commit body
This PR updates the user menu in the title bar to show the plan from the
`CloudUserStore` instead of the `UserStore`.

We're still leveraging the RPC connection to listen for `UpdateUserPlan`
messages so that we can get live-updates from the server, but we are
merely using this as a signal to re-fetch the information from Cloud.

Release Notes:

- N/A

Marshall Bowers created

89ed0b9 workspace: Fix multiple remote projects not restoring on reconnect or restart and not visible in recent projects (#35398)

Click to expand commit body
Closes #33787

We were not updating SSH paths after initial project was created. Now we
update paths when worktrees are added/removed and serialize these
updated paths. This is separate from workspace because unlike local
paths, SSH paths are not part of the workspace table, but the SSH table
instead. We don't need to update SSH paths every time we serialize the
workspace.

<img width="400"
src="https://github.com/user-attachments/assets/9e1a9893-e08e-4ecf-8dab-1e9befced58b"
/>

Release Notes:

- Fixed issue where multiple remote folders in a project were lost on
reconnect, not restored on restart, and not visible in recent projects.

Smit Barmase created

4b9334b Fix vim `cw` at end of words (#35300)

Click to expand commit body
Fixes #35269

Release Notes:

- N/A

Julia Ryan created

47af878 Do not sort settings profiles (#35389)

Click to expand commit body
After playing with this for a bit, I realize it does not feel good to
not have control over the order of profiles. I find myself wanting to
group similar profiles together and not being able to.

Release Notes:

- N/A

Joseph T. Lyons created

5488398 onboarding: Refine page and component designs (#35387)

Click to expand commit body
Includes adding new variants to the Dropdown and Numeric Stepper
components.

Release Notes:

- N/A

Danilo Leal created

b1a7993 cloud_api_types: Add more data to the `GetAuthenticatedUserResponse` (#35384)

Click to expand commit body
This PR adds more data to the `GetAuthenticatedUserResponse`.

We now return more information about the authenticated user, as well as
their plan information.

Release Notes:

- N/A

Marshall Bowers created

b90fd42 client: Don't fetch the authenticated user once we have them (#35385)

Click to expand commit body
This PR makes it so we don't keep fetching the authenticated user once
we have them.

Release Notes:

- N/A

Marshall Bowers created

e1e2775 docs: Run lychee link check on generated docs output (#35381)

Click to expand commit body
Closes #ISSUE

Following #35310, . This PR makes it so the lychee link check is ran
before building the docs on the md files to catch basic errors, and then
after building on the html output to catch generation errors, including
regressions like the one #35380 fixes.

Release Notes:

- N/A

Ben Kunkle created

ed104ec Ensure settings are being adjusted via settings profile selector (#35382)

Click to expand commit body
This PR just pins down the behavior of the settings profile selector by
checking a single setting, `buffer_font_size`, as options in the
selector are changed / selected.

Release Notes:

- N/A

Joseph T. Lyons created

67a491d Use outlined bolt icon for the LSP tool (#35373)

Click to expand commit body
| Before | After |
|--------|--------|
| <img width="266" height="67" alt="image"
src="https://github.com/user-attachments/assets/bbfc75b6-6747-4eb1-ab94-ab098eba5335"
/> | <img width="266" height="67" alt="image"
src="https://github.com/user-attachments/assets/4631be9d-3d5e-4eb6-bf2f-596403fdf014"
/> |

Release Notes:

- Changed the icon of the language servers entry in the status bar.

Kainoa Kanter created

f003036 docs: Pin `mdbook` to v0.4.40 (#35380)

Click to expand commit body
This PR pins `mdbook` to v0.4.40 to fix an issue with sidebar links
having some of their path segments duplicated (e.g.,
`http://localhost:3000/extensions/extensions/developing-extensions.html`.

For reference:

-
https://zed-industries.slack.com/archives/C04S5TU0RSN/p1745439470378339?thread_ts=1745428671.190059&cid=C04S5TU0RSN
-
https://zed-industries.slack.com/archives/C04S5TU0RSN/p1753922478290399

Release Notes:

- N/A

Marshall Bowers created

fbc784d Use the user from the `CloudUserStore` to drive the user menu (#35375)

Click to expand commit body
This PR updates the user menu in the title bar to base the "signed in"
state on the user in the `CloudUserStore` rather than the `UserStore`.

This makes it possible to be signed-in—at least, as far as the user menu
is concerned—even when disconnected from Collab.

Release Notes:

- N/A

Marshall Bowers created

296bb66 chore: Move a few more tasks into background_spawn (#35374)

Click to expand commit body
Release Notes:

- N/A

Piotr Osiewicz created

bb1a7cc client: Add `CloudUserStore` (#35370)

Click to expand commit body
This PR adds a new `CloudUserStore` for storing information about the
user retrieved from Cloud instead of Collab.

Release Notes:

- N/A

Marshall Bowers created

289f420 Sort crate members in `Cargo.toml` (#35371)

Click to expand commit body
This PR sorts the crate members in the `Cargo.toml` file, as they had
gotten unsorted.

Release Notes:

- N/A

Marshall Bowers created

15ad986 windows: Port to DirectX 11 (#34374)

Click to expand commit body
Closes #16713
Closes #19739
Closes #33191
Closes #26692
Closes #17374
Closes #35077
Closes https://github.com/zed-industries/zed/issues/35205
Closes https://github.com/zed-industries/zed/issues/35262


Compared to the current Vulkan implementation, this PR brings several
improvements:

- Fewer weird bugs
- Better hardware compatibility
- VSync support
- More accurate colors
- Lower memory usage
- Graceful handling of device loss

---

**TODO:**

- [x] Don’t use AGS binaries directly
- [ ] The message loop is using too much CPU when ths app is idle
- [x] There’s a
[bug](https://github.com/zed-industries/zed/issues/33191#issuecomment-3109306630)
in how `Path` is being rendered.

---

Release Notes:

- N/A

---------

Co-authored-by: Kate <kate@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

张小白 , Kate , and Max Brunsfeld created

0d97153 docs: Add section about terminal contrast adjustments (#35369)

Click to expand commit body
Closes #35146

This change adds documentation for the `terminal.minimum_contrast`
setting to the docs as we've had a lot of reports regarding the contrast
adjustments, yet are missing proper documentation (aside from that in
the `defaults.json`) for it.

Release Notes:

- N/A

Finn Evers created

5ef5f3c Introduce settings profiles (#35339)

Click to expand commit body
Settings Profiles

- [X] Allow profiles to be defined, where each profile can be any of
Zed's settings
    - [X] Autocompletion of all settings
    - [X] Errors on invalid keys
- [X] Action brings up modal that shows user-defined profiles
- [X] Alphabetize profiles
- [X] Ability to filter down via keyboard, and navigate via arrow up and
down
- [X] Auto select Disabled option by default (first in list, after
alphabetizing user-defined profiles)
- [X] Automatically select active profile on next picker summoning
- [X] Persist settings until toggled off
- [X] Show live preview as you select from the profile picker
- [X] Tweaking a setting, while in a profile, updates the profile live
- [X] Make sure actions that live update Zed, such as `cmd-0`, `cmd-+`,
and `cmd--`, work while in a profile
- [X] Add a test to track state

Release Notes:

- Added the ability to configure settings profiles, via the "profiles"
key. Example:

```json
{
  "profiles": {
    "Streaming": {
      "agent_font_size": 20,
      "buffer_font_size": 20,
      "theme": "One Light",
      "ui_font_size": 20
    }
  }
}
```

To set a profile, use `settings profile selector: toggle`

Joseph T. Lyons created