Commit log

230061a Support multiple OpenAI compatible providers (#34212)

Click to expand commit body
TODO
- [x] OpenAI Compatible API Icon
- [x] Docs
- [x] Link to docs in OpenAI provider section about configuring OpenAI
API compatible providers

Closes #33992

Related to #30010

Release Notes:

- agent: Add support for adding multiple OpenAI API compatible providers

---------

Co-authored-by: MrSubidubi <dev@bahn.sh>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Bennet Bo Fenner , MrSubidubi , and Danilo Leal created

1a76a6b gpui: Simplify `bindings_for_action` API (#34857)

Click to expand commit body
Closes #ISSUE

Simplifies the API to no longer have a variant that returns indices. The
downside is that a few places that used to call
`bindings_for_action_with_indices` now compare `Box<dyn Action>` instead
of indices, however the result is the removal of wrapper code and index
handling that is largely unnecessary

Release Notes:

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

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

Ben Kunkle and Conrad created

2eeab5b textmate: Correct context for 'Editor && mode == full' keybinds (#34895)

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

Release Notes:

- Fixed textmate keymap misbehaving in certain contexts

Peter Tripp created

30177b8 Fix detection of pending bindings when binding in parent context matches (#34856)

Click to expand commit body
Broke in #34664

Release Notes:

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

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

Ben Kunkle and Conrad created

0fa7d58 Pass Zed MCP Server as command args

Ben Brandt created

9b91445 Use pathbuf in McpServerConfig

Ben Brandt created

31aab89 ai_onboarding: Fix API key onboarding callout not showing properly (#34880)

Click to expand commit body
The current onboarding callout for ApiKeysWithProviders is broken.

| Before | After |
|--------|--------|
| <img width="822" height="1914" alt="CleanShot 2025-07-22 at 16 21
53@2x"
src="https://github.com/user-attachments/assets/5a611a8c-1ca2-4a13-965e-6fbd7cfe757a"
/> | <img width="814" height="1956" alt="CleanShot 2025-07-22 at 16 22
38@2x"
src="https://github.com/user-attachments/assets/3263b804-671a-4637-b5dc-ee7c87befa48"
/> |

cc @danilo-leal 

Release Notes:

- N/A

---------

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

Umesh Yadav and Danilo Leal created

a3850b3 agent: Add `use_modifier_to_send` section in the settings view (#34866)

Click to expand commit body
This PR also converts all of these switch-based settings to use the new
`SwitchField` component, introduced in
https://github.com/zed-industries/zed/pull/34713.

Release Notes:

- agent: Added the ability to change the `use_modifier_to_send` setting
from the agent panel settings UI.

Danilo Leal created

480adad Add correct codex path and setup e2e tests (not running yet)

Ben Brandt created

47dec0d Add local command for codex

Ben Brandt created

c7158f0 Improve distinguishing user from agent edits (#34716)

Click to expand commit body
We no longer rely on the `author` field to tell if a change was made by
the user or the agent. The `author` can be set to `User` in many
situations that are not really user-made edits, such as saving a file,
accepting a change, auto-formatting, and more. I started tracking and
fixing some of these cases, but found that inspecting changes in
`diff_base` is a more reliable method.

Also, we no longer show empty diffs. For example, if the user adds a
line and then removes the same line, the final diff is empty, even
though the buffer is marked as user-changed. Now we won't show such
edit.

There are still some issues to address:

- When a user edits within an unaccepted agent-written block, this
change becomes a part of the agent's edit. Rejecting this block will
lose user edits. It won't be displayed in project notifications, either.

- Accepting an agent block counts as a user-made edit.

- Agent start to call `project_notifications` tool after seeing enough
auto-calls.

Release Notes:

- N/A

Oleksiy Syvokon created

f20edf1 Remove unneeded todo

Ben Brandt created

03b94f5 Merge branch 'main' into mcp-codex

Ben Brandt created

3a651c5 context_server: Change command string field to PathBuf (#34873)

Click to expand commit body
Release Notes:

- N/A

Ben Brandt created

87014ce theme: Add `panel.overlay_background` and `panel.overlay_hover` (#34655)

Click to expand commit body
In https://github.com/zed-industries/zed/pull/33994 sticky scroll was
added to project_panel.

I love this feature! 

This introduces a new element layering not seen before. On themes that
use transparency, the overlapping elements can make it difficult to read
project panel entries. This PR introduces a new selector:
~~panel.sticky_entry.background~~ `panel.overlay_background` This
selector lets you set the background of entries when they become sticky.

Closes https://github.com/zed-industries/zed/issues/34654

Before:

<img width="373" height="104" alt="Screenshot 2025-07-17 at 10 19 11 AM"
src="https://github.com/user-attachments/assets/d5bab065-53ca-4b27-b5d8-3b3f8d1f7a81"
/>

After:

<img width="292" height="445" alt="Screenshot 2025-07-17 at 11 46 57 AM"
src="https://github.com/user-attachments/assets/4cd2b87b-2989-4489-972f-872d2dc13a33"
/>

<img width="348" height="390" alt="Screenshot 2025-07-17 at 11 39 57 AM"
src="https://github.com/user-attachments/assets/49c0757f-2c50-4e01-92c6-2ae7e4132a53"
/>

<img width="668" height="187" alt="Screenshot 2025-07-17 at 11 39 29 AM"
src="https://github.com/user-attachments/assets/167536c2-5872-4306-90c6-c6b68276b618"
/>

Release Notes:

- Add `panel.sticky_entry.background` theme selector for modifying
project panel entries when they become sticky when scrolling and overlap
with entries below them.

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

Bret Comnes and Smit Barmase created

2b671a4 ai onboarding: Don't show API keys section if user is already in Pro (#34867)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

eaccd54 Add fast-follows to the AI onboarding flow (#34737)

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

Release Notes:

- N/A

---------

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

Danilo Leal and Bennet Bo Fenner created

5a530ec zed: Add support for `zed://agent` links (#34862)

Click to expand commit body
This PR adds support for `zed://agent` links for opening the Agent
Panel.

Release Notes:

- N/A

Marshall Bowers created

233e66d Add `editor::BlameHover` action for triggering the blame popover via keyboard (#32096)

Click to expand commit body
Make the git blame popover available via the keymap by making it an
action. The blame popover stays open after being shown via the action,
similar to the `editor::Hover` action.

I added a default vim-mode key binding for `g b`, which goes in hand
with `g h` for hover. I'm not sure what the keybind would be for regular
layouts, if any would be set by default.

I'm opening this as a draft because I coludn't figure out a way to
position the popover correctly above/under the cursor head. I saw some
uses of `content_origin` in other places for calculating absolute pixel
positions, but I'm not sure how to make use of it here without doing a
big refactor of the blame popover code 🤔. I would appreciate some
help/tips with positioning, because it seems like the last thing to
implement here.

Opening as a draft for now because I think without the correct
positioning this feature is not complete.

Closes https://github.com/zed-industries/zed/discussions/26447

Release Notes:

- Added `editor::BlameHover` action for showing the git blame popover
under the cursor. By default bound to `ctrl-k ctrl-b` and to `g h` in
vim mode.

Daste created

1535363 zed: Add `OpenRequestKind` (#34860)

Click to expand commit body
This PR refactors the `OpenRequest` to introduce an `OpenRequestKind`
enum.

It seems most of the fields on `OpenRequest` are mutually-exclusive, so
it is better to model it as an enum rather than using a bunch of
`Option`s.

There are likely more of the existing fields that can be converted into
`OpenRequestKind` variants, but I'm being conservative for this first
pass.

Release Notes:

- N/A

Marshall Bowers created

5289b81 ai_onboarding: Send users directly into the trial checkout flow when starting the trial (#34859)

Click to expand commit body
This PR makes it so users will be sent immediately into the trial
checkout flow (by hitting zed.dev/account/start-trial) when they click
the "Start Pro Trial" button.

Release Notes:

- N/A

Marshall Bowers created

8515487 agent: Add new thread start buttons to the empty state (#34829)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

e7298c0 Display tool calls

Agus Zubiaga created

19ab1eb Fix an issue where xkb defined hotkeys for arrows would not work (#34823)

Click to expand commit body
Addresses
https://github.com/zed-industries/zed/pull/34053#issuecomment-3096447601
where custom-defined arrows would stop working in Zed.

How to reproduce:

1. Define custom keyboard layout

```bash
cd /usr/share/X11/xkb/symbols/
sudo nano mykbd
```

```
default partial alphanumeric_keys
xkb_symbols "custom" {

    name[Group1]= "Custom Layout";

    key <AD01> { [ q,  Q,  Escape,     Escape      ] };
    key <AD02> { [ w,  W,  Home,       Home        ] };
    key <AD03> { [ e,  E,  Up,         Up          ] };
    key <AD04> { [ r,  R,  End,        End         ] };
    key <AD05> { [ t,  T,  Tab,        Tab         ] };

    key <AC01> { [ a,  A,  Return,     Return      ] };
    key <AC02> { [ s,  S,  Left,       Left        ] };
    key <AC03> { [ d,  D,  Down,       Down        ] };
    key <AC04> { [ f,  F,  Right,      Right       ] };
    key <AC05> { [ g,  G,  BackSpace,  BackSpace   ] };

    // include a base layout to inherit the rest
    include "us(basic)"
};
```

2. Activate custom layout with win-key as AltGr

```bash
setxkbmap mykbd -variant custom -option lv3:win_switch
```

3. Now Win-S should produce left arrow, Win-F right arrow
4. Test whether it works in Zed

Release Notes:

 - linux: xkb-defined hotkeys for arrow keys should behave as expected.

---------

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

Sergei Surovtsev and Conrad Irwin created

a822711 Stop generation

Agus Zubiaga created

4b1ace9 Handle Agent Reasoning

Agus Zubiaga created

769d6dc Stream text

Agus Zubiaga created

722a05b Wire up stop button in claude threads (#34839)

Click to expand commit body
Release Notes:

- N/A

---------

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

Agus Zubiaga and Ben Brandt created

5b3e371 gpui: Round `scroll_max` to two decimal places (#34832)

Click to expand commit body
Follow up to #31836 

After enabling rounding in the Taffy layout engine, we frequently run
into cases where the bounds produced by Taffy and ours slightly differ
after 5 or more decimal places. This leads to cases where containers
become scrollable for less than 0.0000x Pixels. In case this happens for
e.g. hover popovers, we render a scrollbar due to the container being
technically scrollable, even though the scroll amount here will in
practice never be visible.

This change fixes this by rounding the `scroll_max` by which we clamp
the current scroll position to two decimal places. We don't benefit from
the additional floating point precision here at all and it stops such
containers from becoming scrollable altogether. Furthermore, we now
store the `scroll_max` instead of the `padded_content_size` as the
former gives a much better idea on whether the corresponding container
is scrollable or not.

| `main` | After these changes |
| -- | -- |
| <img width="610" height="316" alt="main"
src="https://github.com/user-attachments/assets/ffcc0322-6d6e-4f79-a916-bd3c57fe4211"
/> | <img width="610" height="316" alt="scroll_max_rounded"
src="https://github.com/user-attachments/assets/5fe530f5-2e21-4aaa-81f4-e5c53ab73e4f"
/> |

Release Notes:

- Fixed an issue where scrollbars would appear in containers where no
scrolling was possible.

Finn Evers created

8eca7f3 Fix for vim bindings in Pickers on Linux (#34840)

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

Also relocated undo/redo selection in the keymap (no-op) as they are
from Sublime, not VSCode.

Release Notes:

- vim: Fixed an issue so `ctrl-w` / `ctrl-h` and `ctrl-u` work in
pickers on Linux when Vim mode is enabled.

Peter Tripp created

1a17157 Fix enter to select model in agent panel (#34846)

Click to expand commit body
Broken by #34664

Release Notes:

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

Ben Kunkle created

241acbe Stop onboarding page from showing up instead of welcome page (#34845)

Click to expand commit body
This is from PR #34723 where I was working on developing the onboarding
page, but I forgot to switch the first page back to our current version.

Release Notes:

- N/A

Anthony Eid created

6ea09be terminal: Handle spaces in cwds of remote terminals (#34844)

Click to expand commit body
Closes #34807

Release Notes:

- Fixed "Open in terminal" action not working with paths that contain
spaces in SSH projects.

Piotr Osiewicz created

3e50d99 agent: Fix double-lease panic when clicking on thread to jump (#34843)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Piotr Osiewicz created

da8bf9a Auto-retry agent errors by default (#34842)

Click to expand commit body
Now we explicitly carve out exceptions for which HTTP responses we do
*not* retry for, and retry at least once on all others.

Release Notes:

- The Agent panel now automatically retries failed requests under more
circumstances.

Richard Feldman created

f569105 Connect to Codex MCP server

Agus Zubiaga created

589af59 collab: Refresh the LLM token once the terms of service have been accepted (#34833)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

254c7a3 Regroup LSP context menu items by the worktree name (#34838)

Click to expand commit body
Also 

* remove the feature gate
* open buffers with an error when no logs are present
* adjust the hover text to indicate that difference

<img width="480" height="380" alt="image"
src="https://github.com/user-attachments/assets/6b2350fc-5121-4b1e-bc22-503d964531a2"
/>

Release Notes:

- N/A

Kirill Bulatov created

b6cf398 docs: Fix PHP docs typo (#34836)

Click to expand commit body
This fixes a minor typo in the PHP docs.

Release Notes:

- N/A

Balboa Codes created

bc5c5cf onboarding: Create basic onboarding page (#34723)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>

Anthony Eid and Ben Kunkle created

bf8aba5 collab: Remove unused billing preferences queries (#34830)

Click to expand commit body
This PR removes some billing preferences queries that are no longer in
use.

Release Notes:

- N/A

Marshall Bowers created

e14c947 chore: Pin taffy version (#34827)

Click to expand commit body
Follow-up to 34817

Closes #ISSUE

Release Notes:

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

Piotr Osiewicz created

97af7e1 collab: Remove `PUT /billing/preferences` endpoint (#34825)

Click to expand commit body
This PR removes the `PUT /billing/preferences` endpoint, as it has been
moved to `cloud.zed.dev`.

Release Notes:

- N/A

Marshall Bowers created

c251f2a gpui: Throttle interactive resize events on Wayland (#34760)

Click to expand commit body
Wayland compositors can potentially generate thousands of resize
requests when drag-resizing a window, which Zed is unable to keep up
with. This commit changes the behavior to only resize once per vblank
cycle, which helps significantly when resizing the window with a high
poll-rate mouse (1000Hz is common these days)

Here is an example of the behavior pre and post this commit, with some
print-debugging added for tracking resize calls. I have a wireless mouse
with a 2000Hz polling rate and a 165Hz display:

Before: 


https://github.com/user-attachments/assets/4c657f90-5fd2-4809-97ef-363fd48e81b8

After: 


https://github.com/user-attachments/assets/4a0f5fbd-c3c4-40a1-9f71-3b4358c827cf






Closes #20660

Release Notes:

- Improved: Make resizing smoother on Wayland/Linux

Kamal Ahmad created

cc56196 Fix loading agent server settings (#34662)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created

405244d Display ACP plans (#34816)

Click to expand commit body
Release Notes:

- N/A

---------

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

Agus Zubiaga and Danilo Leal created

35b4a91 chore: Bump taffy to 0.5.1 (#34817)

Click to expand commit body
We've had problems in the past with bumping past 0.5.2 due to perf
regressions reported by @huacnlee; 0.5.1 was fine though.

Hence, let's bump taffy to 0.5.1 as a safe bet and then try to push past
0.5.2 (after we identify the root cause of regression
Related to #19189
Release Notes:

- N/A

Piotr Osiewicz created

56fd950 thread view: Add ability to expand message editor and fix scroll (#34766)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

88af35f collab: Add screen selector (#31506)

Click to expand commit body
Instead of selecting a screen to share arbitrarily, we'll now allow user
to select the screen to share. Note that sharing multiple screens at the
time is still not supported (though prolly not too far-fetched).

Related to #4666

![image](https://github.com/user-attachments/assets/1afb664f-3cdb-4e0a-bb29-9d7093d87fa5)

Release Notes:

- Added screen selector dropdown to screen share button

---------

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

Piotr Osiewicz , Kirill Bulatov , and Cole Miller created

57ab09c claude: Don't quote executable path in mcp configuration (#34805)

Click to expand commit body
This was generating an invalid string for the configuration, removing
the extra quotes makes it work. This affected the versions of Zed that
have a space in their name.

Release Notes:

- N/A

Ben Brandt created