Commit log

1ae3264 Extract a scheduler crate from GPUI to enable unified integration testing of client and server code (#37326)

Click to expand commit body
Extracts and cleans up GPUI's scheduler code into a new `scheduler`
crate, making it pluggable by external runtimes. This will enable
deterministic integration testing with cloud components by providing a
unified test scheduler across Zed and backend code. In Zed, it will
replace the existing GPUI scheduler for consistent async task management
across platforms.

## Changes

- **Core Implementation**: `TestScheduler` with seed-based
randomization, session tracking (`SessionId`), and foreground/background
task separation for reproducible testing.
- **Executors**: `ForegroundExecutor` (!Send, thread-local) and
`BackgroundExecutor` (Send, with blocking/timeout support) as
GPUI-compatible wrappers.
- **Clock and Timer**: Controllable `TestClock` and future-based `Timer`
for time-sensitive tests.
- **Testing APIs**: `once()`, `with_seed()`, and `many()` methods for
configurable test runs.
- **Dependencies**: Added `async-task`, `chrono`, `futures`, etc., with
updates to `Cargo.toml` and lock file.

## Benefits

- **Integration Testing**: Facilitates reliable async tests involving
cloud sessions, reducing flakiness via deterministic execution.
- **Pluggability**: Trait-based design (`Scheduler`) allows easy
integration into non-GPUI runtimes while maintaining GPUI compatibility.
- **Cleanup**: Refactors GPUI scheduler logic for clarity, correctness
(no `unwrap()`, proper error handling), and extensibility.

Follows Rust guidelines; run `./script/clippy` for verification.

- [x] Define and test a core scheduler that we think can power our cloud
code and GPUI
- [ ] Replace GPUI's scheduler


Release Notes:

- N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>

Nathan Sobo and Antonio Scandurra created

a05f86f windows: Don't log error when `RedrawWindow` (#37542)

Click to expand commit body
Release Notes:

- N/A

张小白 created

473bbd7 onboarding: Fix typos in comments (#37541)

Click to expand commit body
This PR fixes some grammatical typos in some comments in the
`onboarding` crate.

Release Notes:

- N/A

Marshall Bowers created

28c78d2 windows: Keep just one copy of GPU instance (#37445)

Click to expand commit body
Now we only keep a single copy of the GPU device. The GPU lost handling
got broken after #35376, but it’s properly handled again now.

Release Notes:

- N/A

张小白 created

fca44f8 languages: Allow installing pre-release of rust-analyzer and clangd (#37530)

Click to expand commit body
Release Notes:

- Added lsp binary config to allow fetching nightly rust-analyzer and
clangd releases

Lukas Wirth created

b7ad207 worktree: Create parent directories on rename (#37437)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/37357

Release Notes:

- Allow creating sub-directories when renaming a file in file finder

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

Mitch (a.k.a Voz) and Kirill Bulatov created

aa1629b Remove some unused events (#37498)

Click to expand commit body
This PR cleans up some emitted events around the codebase. These events
are either never emitted or never listened for.

It seems better to re-implement these at some point should they again be
needed - this ensures that they will actually be fired in the cases
where they are needed as opposed to being there and getting unreliable
and stale (which is already the case for the majority of the events
removed here).

Lastly, this ensures the `CapabilitiesChanged` event is not fired too
often.

Release Notes:

- N/A

Finn Evers created

69a5c45 gpui: Fix out-of-bounds node indices in dispatch_path (#37252)

Click to expand commit body
Observed in a somewhat regular startup crash on Windows at head (~50% of
launches in release mode).

Closes #37212

Release Notes:

- N/A

James Tucker created

d0aaf04 Change DeepSeek max token count to 128k (#36864)

Click to expand commit body
https://api-docs.deepseek.com/zh-cn/news/news250821

Now the official API supports 128k token content

and have modify the name to v3.1/v3.1 thinking

Release Notes:

- N/A

---------

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

沈瑗杰 and Ben Brandt created

d677c98 agent2: Use inline enums in `now` and `edit_file` tools JSON schema (#37397)

Click to expand commit body
Added schemars annotations to generate inline enums instead of
references ($ref) in the JSON schema passed to LLMs.

Concerns :
- "timezeone" parameter for "now" tool function
- "mode" parameter for "edit_file" tool function

Should be the same for futures tools/functions enums. This is easier for
LLMs to understand the schema since many of them don't use JSON
references correctly.

Tested with :
- local GPT-OSS-120b with llama.cpp server (openai compatible)
- remote Claude Sonnet 4.0 with Zed pro subscription

Thanks in advance for the merge.
(notice this is my first PR ever on Github, I hope I'm doing things
well, please let me know if you have any comment - edit: just noticed my
username/email were not correctly setup on my local git, sorry, it's
been 5 years I've not used git)

Closes #37389

Release Notes:

- agent: Improve "now" and "edit_file" tool schemas to work with more
models.

Francis created

ce36286 docs: Update OpenAI-compatible provider config format (#37517)

Click to expand commit body
The example was still showing how we used to setup openai compatible
providers, but that format should only be used for changing the url for
your actual OpenAI provider.

If you are doing a compatible provider, it should be using the new
format.

Closes #37093

Release Notes:

- N/A

Ben Brandt created

3c021d0 language_models: Fix beta_headers for Anthropic custom models (#37306)

Click to expand commit body
Closes #37289

The current implementation has a problem. The **`from_id` method** in
the Anthropic crate works well for predefined models, but not for custom
models that are defined in the settings. This is because it fallbacks to
using default beta headers, which are incorrect for custom models.

The issue is that the model instance for custom models lives within the
`language_models` provider, so I've updated the **`stream_completion`**
method to explicitly accept beta headers from its caller. Now, the beta
headers are passed from the `language_models` provider all the way to
`anthropic.stream_completion`, which resolves the issue.

Release Notes:

- Fixed a bug where extra_beta_headers defined in settings for Anthropic
custom models were being ignored.

---------

Signed-off-by: Umesh Yadav <git@umesh.dev>

Umesh Yadav created

f36a545 onboarding: Improve performance of AI upsell card (#37504)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

9eeeda1 onboarding: Add telemetry to Basics page (#37502)

Click to expand commit body
- Welcome Keymap Changed
- Welcome Theme Changed
- Welcome Theme mode Changed
- Welcome Page Telemetry Diagnostics Toggled
- Welcome Page Telemetry Metrics Toggled
- Welcome Vim Mode Toggled
- Welcome Keymap Changed
- Welcome Sign In Clicked

cc: @katie-z-geer 

Release Notes:

- N/A

Anthony Eid created

da2d791 Update external agents installation docs (#37500)

Agus Zubiaga created

d6f0811 acp: Receive available commands over notifications (#37499)

Click to expand commit body
See: https://github.com/zed-industries/agent-client-protocol/pull/62

Release Notes:

- Agent Panel: Fixes an issue where Claude Code would timeout waiting
for slash commands to be loaded

Co-authored-by: Cole Miller <cole@zed.dev>

Agus Zubiaga and Cole Miller created

be0bb4a Centralize `ZED_STATELESS` (#37492)

Click to expand commit body
Closes #ISSUE

Centralizes the references to the `ZED_STATELESS` env var into a single
location in a new crate named `zed_env_vars`

Release Notes:

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

Ben Kunkle created

bf1ae1d docs: Fix typo in the `CLAUDE.md` section (#37497)

Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/37496. Fix a
typo and improves writing overall.

Release Notes:

- N/A

Danilo Leal created

3b7dbb8 docs: Add note about `CLAUDE.md` usage (#37496)

Click to expand commit body
Some users asked whether Claude Code in Zed can also observe/consume
`CLAUDE.md` guidelines, regardless of whether they're at the root
`.claude` directory or within the project. Answer is yes and the
documentation will mention it now!

Release Notes:

- N/A

Danilo Leal created

bb13228 Revert "Remote: Change "sh -c" to "sh -lc" (#36760)" (#37417)

Click to expand commit body
This reverts commit bf5ed6d1c9795369310b5b9d6c752d9dc54991b5.

We believe this may be breaking some users whose shell initialization
scripts change the working directory.

Release Notes:

- N/A

Max Brunsfeld created

ec1528b thread view: Refine the terminal tool card header UI (#37488)

Click to expand commit body
Rendering the disclosure button last (on the far right of the header
container) to avoid awkward layouts when there's truncation and elapsed
time information being displayed.

Release Notes:

- N/A

Danilo Leal created

2aa0114 ai onboarding: Add some fast-follow adjustments (#37486)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/37305

Release Notes:

- N/A

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>

Danilo Leal , Ben Kunkle , and Anthony Eid created

bb2d833 Revert "gpui: Fix overflow_hidden to support clip with border radius" (#37480)

Click to expand commit body
This reverts commit 40199266b6634cc3165f3842abae1d562ef4dcca.

The issue with the commit is: ContentMask<Pixels>::intersect is doing
intersection of corner radii which makes inner containers use the max
corner radius out of all the parents when it should be more complex to
correctly clip children (clip sorting..?)

Release Notes:

- N/A

localcc created

eedfc5b acp: Improve handling of invalid external agent server downloads (#37465)

Click to expand commit body
Related to #37213, #37150

When listing previously-downloaded versions of an external agent, don't
try to use any downloads that are missing the agent entrypoint
(indicating that they're corrupt/unusable), and delete those versions,
so that we can attempt to download the latest version again.

Also report clearer errors when failing to start a session due to an
agent server entrypoint or root directory not existing.

Release Notes:

- N/A

Cole Miller created

0e76cc8 acp: Display a new version call out when one is available (#37479)

Click to expand commit body
<img width="500" alt="CleanShot 2025-09-03 at 16 13 59@2x"
src="https://github.com/user-attachments/assets/beb91365-28e2-4f87-a2c5-7136d37382c7"></img>



Release Notes:

- Agent Panel: Display a callout when a new version of an external agent
is available

---------

Co-authored-by: Cole Miller <cole@zed.dev>

Agus Zubiaga and Cole Miller created

6bd5251 settings_ui: Add test for default values (#37466)

Click to expand commit body
Closes #ISSUE

Adds a test that checks that all settings have default values in
`default.json`. Currently only tests that settings supported by
SettingsUi have defaults, as more settings are added to the settings
editor they will be added to the test as well.

Release Notes:

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

Ben Kunkle created

13de400 editor: Do not correct text contrast on non-opaque editor (#37471)

Click to expand commit body
We don’t know the background color behind a non-opaque editor, so we
should skip contrast correction in that case. This prevents
single-editor mode (which is always transparent) from showing weird text
colors when text is selected.

We can’t account for the actual background during contrast correction
because we compute contrast outside gpui, while the actual color
blending happens inside gpui during drawing.

<img width="522" height="145" alt="image"
src="https://github.com/user-attachments/assets/6ee71475-f666-482d-87e6-15cf4c4fceef"
/>

Release Notes:

- Fixed an issue where Command Palette text looked faded when selected.

Smit Barmase created

c3480c3 docs: Update external agents content (#37413)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>

Danilo Leal and Bennet Bo Fenner created

0cbacb8 Make word deletions less greedy (#37352)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/37144

Adjusts `editor::DeleteToPreviousWordStart`,
`editor::DeleteToNextWordEnd`, `editor::DeleteToNextSubwordEnd` and
`editor::DeleteToPreviousSubwordStart` actions to

* take whitespace sequences with length >= 2 into account and stop after
removing them (whilst movement would also include the word after such
sequences)

* take current language's brackets into account and stop after removing
the text before them

The latter is configurable and can be disabled with `"ignore_brackets":
true` parameter in the action.

Release Notes:

- Improved word deletions to consider whitespace sequences and brackets
by default

Kirill Bulatov created

7327ef6 terminal_view: Fix focusing of center-pane terminals (#37359)

Click to expand commit body
With `reveal_stragegy=always` + `reveal_target=center`,
`TerminalPanel::spawn_task` activates & focuses the pane of the task.
This works fine in the terminal pane but doesn't for
`reveal_target=center`.

Please note: I'm not verified familiar with the architecture and
internal APIs of zed. If there's a better way or if this fix is a bad
idea, I'm fine with adapting this 😃

Closes #35908

Release Notes:

- Fixed task focus when re-spawning a task with `reveal_target=center`

---------

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

Moritz von Göwels and Marshall Bowers created

c1ca730 editor: Make blame and inline blame work for multibuffers (#37366)

Click to expand commit body
Release Notes:

- Added blame view and inline blame support for multi buffer editors

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

Lukas Wirth and Kirill Bulatov created

9228328 Fix rendering on devices that don't support MapOnDefaultTextures (#37456)

Click to expand commit body
Closes #37231

Release Notes:

- N/A

localcc created

d80f9dd languages: Fix python tasks failing when binary contains whitespaces (#37454)

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

Release Notes:

- Fixed python tasks failing when the python binary path contains
whitespaces

Lukas Wirth created

ebc22c2 gpui: Don't risk accidentally panicking during tests (#37457)

Click to expand commit body
See the failure in
https://github.com/zed-industries/zed/actions/runs/17413839503/job/49437345296

Release Notes:

- N/A

Nia created

7633bbf acp: Fix issue with claude code /logout command (#37452)

Click to expand commit body
### First issue

In the scenario where you have an API key configured in Zed and you run
`/logout`, clicking on `Use Anthropic API Key` would show `Method not
implemented`.

This happened because we were only intercepting the `Use Anthropic API
Key` click if the provider was NOT authenticated, which would not be the
case when the user has an API key set.

### Second issue

When clicking on `Reset API Key` the modal would be dismissed even
though you picked no Authentication Method (which means you still would
be unauthenticated)

---

This PR fixes both of these issues

Release Notes:

- N/A

Bennet Bo Fenner created

91cbb2e Add onboarding banner for claude code support (#37443)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Bennet Bo Fenner and Danilo Leal created

4019926 gpui: Fix overflow_hidden to support clip with border radius (#35083)

Click to expand commit body
Release Notes:

- N/A

---

Same case in HTML example:


https://developer.mozilla.org/en-US/play?id=p7FhB3JAhiVfLHAXnsbrn7JYYX%2Byq1gje%2B%2BTZarnXvvjmaAx3NlrXqMAoI35s4zeakShKee6lydHYeHr

```html
<div style="padding: 50px; text-align: center;">
  <div style="overflow: hidden; border-radius: 24px">
    <div style="background: #000; border: 3px solid red; color: #fff; padding: 8px 28px;">
      Let build applications with GPUI.
    </div>
    <div style="background: #333; border: 3px dashed black; color: #fff; padding: 8px 28px;">
      Let build applications with GPUI.
    </div>
  </div>

  <div style="margin-top: 20px; border-radius: 24px">
    <div style="background: #000; color: #fff; padding: 8px 28px;">
      This is not overflow: hidden.
    </div>
  </div>
</div>
```

<img width="610" height="213" alt="image"
src="https://github.com/user-attachments/assets/5f95e263-e52c-414f-8f0c-e6aa04ceb802"
/>

### Before

<img width="912" height="740" alt="image"
src="https://github.com/user-attachments/assets/f09c1936-52fc-4381-9a50-93977e9d64a6"
/>

### After 

```bash
cargo run -p gpui --example content_mask
```

<img width="912" height="740" alt="image"
src="https://github.com/user-attachments/assets/4bde58f3-c850-418d-9dc7-d2245852e7d7"
/> |


- [x] Metal
- [x] Blade
- [x] DirectX
- [x] ContentMask radius must reduce the container border widths.
- [x] The dash border render not correct, when not all side have
borders.

Jason Lee created

9a8c505 agent: Update message editor placeholder (#37441)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

c446662 Fix font rendering at very large scales (#37440)

Click to expand commit body
Release Notes:

- Fixed fonts disappearing at very large scales on windows

localcc created

6feae92 rust: Improve highlighting in derive macros (#37439)

Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/37049

This fixes an issue where we would lose highlighting in derive macros if
one of the names was qualified.

| Before | After |
| --- | --- |
| <img width="886" height="398" alt="Bildschirmfoto 2025-09-03 um 10 39
25"
src="https://github.com/user-attachments/assets/dbc680e3-6ce3-4059-9934-9daa4c59d4a0"
/> | <img width="886" height="398" alt="Bildschirmfoto 2025-09-03 um 10
38 14"
src="https://github.com/user-attachments/assets/6e10df6f-5158-4bfd-81ab-8f2b384f1e99"
/> |


Release Notes:

- N/A

Finn Evers created

ae840c6 acp: Fix handling of single-file worktrees (#37412)

Click to expand commit body
When the first visible worktree is a single-file worktree, we would
previously try to use the absolute path of that file as the root
directory for external agents, causing an error. This PR changes how we
handle this situation: we'll use the root of the first non-single-file
visible worktree if there are any, and if there are none, the parent
directory of the first single-file visible worktree.

Related to #37213

Release Notes:

- acp: Fixed being unable to run external agents when a single file (not
part of a project) was opened in Zed.

Cole Miller created

d7fd591 Use slice from Rope chunk when possible while iterating lines (#37430)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

8d58613 Allow wrapping markdown text into `*` by selecting text and writing the `*` (#37426)

Click to expand commit body
Release Notes:

- Allowed wrapping markdown text into `*` by selecting text and writing
the `*`

Kirill Bulatov created

5a9e186 gpui: Fix intra rustdoc links (#37320)

Click to expand commit body
The only warnings remaining are links to private modules/items, but I
lack knowledge to work out if the referenced modules/items should be
made public, or if the links should be rewritten into exposed
traits/items.

Links to associated items such as trait implementations have to be
written using full markdown format such as:

... [[ `App::update_global` ]](( BorrowAppContext::update_global ))

This is due to https://github.com/rust-lang/rust/issues/74563 which
sadly prohibits fully-qualified syntax:

... [[ `<App as BorrowAppContext>::update_global` ]]

Release Notes:

- N/A

Probably related to https://github.com/zed-industries/zed/pull/37072

Jakub Konka created

2a7761f Instruct macOS users to run `xcodebuild -downloadComponent MetalToolchain` (#37411)

Click to expand commit body
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Closes #ISSUE

Release Notes:

- N/A

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

chris and Conrad Irwin created

f230960 Remove wsl command line args on non-windows platforms (#37422)

Click to expand commit body
Release Notes:

- N/A

Max Brunsfeld created

1ed17fd Bump Zed to v0.204 (#37415)

Click to expand commit body
Release Notes:

-N/A

Peter Tripp created

7ea7f4e reqwest_client: Remove example (#37410)

Click to expand commit body
This PR removes the example from the `reqwest_client` crate, as it
doesn't seem worth maintaining.

Release Notes:

- N/A

Marshall Bowers created

035d7dd ci: Skip Nix for commits on release branches and tags (#37407)

Click to expand commit body
When doing stable/preview releases simultaneously there are two tags and
two branches pushed. Previously nix was attempting 1 job for each. Our
current mac parallelism is 4.
 
Can't easily test this. 🤷 

Release Notes:

- N/A

Peter Tripp created

9d67276 agent: Fix cut off slash command descriptions (#37408)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created