Commit log

37f49ce collab: Add support for overage billing for Claude Sonnet 4 (#31206)

Click to expand commit body
This PR adds support for billing for overages for Claude Sonnet 4.

Release Notes:

- N/A

Marshall Bowers created

cc42833 mistral: Add DevstralSmallLatest model to Mistral and Ollama (#31099)

Click to expand commit body
Mistral just released a sota coding model:
https://mistral.ai/news/devstral

This PR adds support for it in both ollama and mistral

Release Notes:

- Add DevstralSmallLatest model to Mistral and Ollama

Umesh Yadav created

1475ace anthropic: Add support for Claude 4 (#31203)

Click to expand commit body
This PR adds support for [Claude
4](https://www.anthropic.com/news/claude-4).

Release Notes:

- Added support for Claude Opus 4 and Claude Sonnet 4.

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Richard Feldman <oss@rtfeldman.com>

Marshall Bowers , Antonio Scandurra , and Richard Feldman created

dd4e8b9 editor: Fix block comment incorrectly continues to next line in some cases (#31204)

Click to expand commit body
Closes #31138

Fix edge case where adding newline if there is text afterwards end
delimiter of multiline comment, would continue the comment prefix. This
is fixed by checking for end delimiter on whole line instead of just
assuming it would always be at end.

- [x] Tests

Release Notes:

- Fixed the issue where in some cases the block comment continues to the
next line even though the comment block is already closed.

smit created

b188e5d Fix update status logic to preserve previous status (#31202)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

e3d3dae Fix bug where deleted toolchains stay selected on startup (#30562)

Click to expand commit body
This affects python's when debugging because the selected toolchain is
used as the python binary to spawn Debugpy

Release Notes:

- Fix bug where selected toolchain didn't exist

Anthony Eid created

ced8e4d debugger beta: Move path resolution to resolve scenario instead of just in new session modal (#31185)

Click to expand commit body
This move was done so debug configs could use path resolution, and
saving a configuration from the new session modal wouldn't resolve paths
beforehand.

I also added an integration test to make sure path resolution happens
from an arbitrary config. The test was placed under the new session
modal directory because it has to do with starting a session, and that's
what the new session modal typically does, even if it's implicitly used
in the test.

In the future, I plan to add more tests to the new session modal too.

Release Notes:

- debugger beta: Allow configs from debug.json to resolve paths

Anthony Eid created

fa1abd8 debugger: Always focus the active session whenever it is stopped (#31182)

Click to expand commit body
Closes #ISSUE

Release Notes:

- debugger: Fixed child debug sessions taking precedence over the
parents when spawned.

Piotr Osiewicz created

ee4e43f linux: Fix wrong keys are reported when using German layout (#31193)

Click to expand commit body
Part of #31174

Because the keyboard layout parameter wasn’t set correctly, characters
don’t show up properly when using the German layout at launch.

To reproduce:
Switch to the German layout, launch Zed, and press the `7` key. it
should output `7`, but instead it outputs `è`.


Release Notes:

- N/A

张小白 created

d61e1e2 docs: Fix debugger docs link from summary page (#31195)

Click to expand commit body
Release Notes:

- N/A

Anthony Eid created

3c03d53 debugger: Use integrated terminal for Python (#31190)

Click to expand commit body
Closes #ISSUE

Release Notes:

- debugger: Use integrated terminal for Python, allowing one to interact
with standard input/output when debugging Python projects.

Piotr Osiewicz created

8ab664a debugger beta: Update debugger docs for beta (#31192)

Click to expand commit body
The docs include basic information on starting a session but will need
to be further iterated upon once we get deeper into the beta

Release Notes:

- N/A

Anthony Eid created

2044426 gpui: Improve displayed keybinds shown in macOS application menus (#28440)

Click to expand commit body
Closes #28164

This PR adresses inproper keybinds being shown in MacOS application
menus. The issue arises because the keybinds shown in MacOS application
menus are unaware of keybind contexts (they are only ever updated [on a
keymap-change](https://github.com/zed-industries/zed/blob/6d1dd109f554579bdf676c14b69deb9e16acc043/crates/zed/src/zed.rs#L1421)).
Thus, using the keybind that was added last in the keymap can result in
incorrect keybindings being shown quite frequently, as they might belong
to a different context not generally available (applies the same for the
default keymap as well as for user-keymaps).

For example, the linked issue arises because the keybind found last in
the iterator is
https://github.com/zed-industries/zed/blob/6d1dd109f554579bdf676c14b69deb9e16acc043/assets/keymaps/vim.json#L759,
which is not even available in most contexts (and, additionally, the `e`
of `escape` is rendered here as a keybind which seems to be a seperate
issue).

Additionally, this would result in inconsistent behavior with some
Vim-keybinds. A vim-keybind would be used only when available but
otherwise the default binding would be shown (see `Undo` and `Redo` as
an example below), which seems inconsistent.

This PR fixes this by instead using the first keybind found in keymaps,
which is expected to be the keybind available in most contexts.
Additionally, this allows rendering some more keybinds for actions which
vim-keybind cannot be displayed (Find In Project for example) .This
seems to be more reasonable until [this related
comment](https://github.com/zed-industries/zed/blob/6d1dd109f554579bdf676c14b69deb9e16acc043/crates/gpui/src/keymap.rs#L199-L204)
is resolved.

This includes a revert of #25878 as well. With this change, the change
made in #25878 becomes obsolete and would also regress the behavior back
to the state prior to that PR.

|  | `main` | This PR |
| --- | --- | --- |
| Edit-menu | <img width="220" alt="main_edit"
src="https://github.com/user-attachments/assets/9f793b64-80b6-4a5b-b7e5-628f0d552166"
/> | <img width="220" alt="PR_edit"
src="https://github.com/user-attachments/assets/bccb444c-7a49-41d5-9377-d90b1639a3ed"
/> |
| View-menu | <img width="214" alt="main_view"
src="https://github.com/user-attachments/assets/0e6a6632-df02-4883-9f5a-facb4d0263b5"
/> | <img width="214" alt="PR_view"
src="https://github.com/user-attachments/assets/14600ece-fcaa-447a-94ef-4fa350eca49c"
/> |


Release Notes:

- Improved keybinds displayed for actions in MacOS application menus.

Finn Evers created

02fa6f6 Surface version to install in update status tooltip (#31179)

Click to expand commit body
Release Notes:

- Surfaced the version that will be installed, in a tooltip, when
hovering on the `Click to restart and update Zed` status.

Joseph T. Lyons created

80a00cd debugger beta: Fix panic that could occur when parsing an invalid dap schema (#31175)

Click to expand commit body
Release Notes:

- N/A

Anthony Eid created

06f725d debugger beta: Fix dap_schema for DAP extensions (#31173)

Click to expand commit body
We now actually call dap_schema provided by extensions instead of
defaulting to a null `serde_json::Value`. We still need to update the
Json LSP whenever a new dap is installed.

Release Notes:

- N/A

Anthony Eid created

baf6d82 Handle `~` in debugger launch modal (#31087)

Click to expand commit body
@Anthony-Eid I'm pretty sure this maintains the behavior of #30680, and
I added some tests to be sure.

Release Notes:

- `~` now expands to the home directory in the debugger launch modal.

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

Julia Ryan and Piotr Osiewicz created

28ec7fb debugger: Add telemetry for new session experience (#31171)

Click to expand commit body
This includes the following data:
- Where we spawned the session from (gutter, scenario list, custom form
filled by the user)
- Which debug adapter was used
- Which dock the debugger is in

Closes #ISSUE

Release Notes:

- debugger: Added telemetry for new session experience that includes
data about:
    - How a session was spawned (gutter, scenario list or custom form)
    - Which debug adapter was used
    - Which dock the debugger is in

---------

Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>

Piotr Osiewicz and Joseph T. Lyons created

0415e85 debugger: Use current worktree directory when spawning an adapter (#31054)

Click to expand commit body
/cc @osiewicz 

I think bringing this back should fix **bloveless** his issue with go
debugger.
This is also nice, so people are not forced to give us a working
directory, because most adapters will use their **cwd** as the project
root directory. For JavaScript, you don't need to specify the **cwd**
anymore because it can already infer it

Release Notes:

- debugger beta: Fixed some adapters fail to determine the right root level of the
debug program.

Remco Smits created

1c9b818 debugger: Use DAP schema to configure daps (#30833)

Click to expand commit body
This PR allows DAPs to define their own schema so users can see
completion items when editing their debug.json files.

Users facing this aren’t the biggest chance, but behind the scenes, this
affected a lot of code because we manually translated common fields from
Zed's config format to be adapter-specific. Now we store the raw JSON
from a user's configuration file and just send that.

I'm ignoring the Protobuf CICD error because the DebugTaskDefinition
message is not yet user facing and we need to deprecate some fields in
it.

Release Notes:

- debugger beta: Show completion items when editing debug.json
- debugger beta: Breaking change, debug.json schema now relays on what
DAP you have selected instead of always having the same based values.

---------

Co-authored-by: Remco Smits <djsmits12@gmail.com>
Co-authored-by: Cole Miller <m@cole-miller.net>
Co-authored-by: Cole Miller <cole@zed.dev>

Anthony Eid , Remco Smits , Cole Miller , and Cole Miller created

0d7f484 Restore scroll after undo edit prediction (#31162)

Click to expand commit body
Closes #29652

Release Notes:

- Fixed an issue where the scroll and cursor position would not be
restored after undoing an inline completion

Ben Kunkle created

ab01712 agent: Improve Gemini support in the edit_file tool (#31116)

Click to expand commit body
This change improves `eval_extract_handle_command_output` results for
all models:

Model                       | Pass rate before | Pass rate after
----------------------------|------------------|----------------
claude-3.7-sonnet           |  0.96            | 0.98
gemini-2.5-pro              |  0.35            | 0.86
gpt-4.1                     |  0.81            | 1.00

Part of this improvement comes from more robust evaluation, which now
accepts multiple possible outcomes. Another part is from the prompt
adaptation: addressing common Gemini failure modes, adding a few-shot
example, and, in the final commit, auto-rewriting instructions for
clarity and conciseness.

This change still needs validation from larger end-to-end evals.


Release Notes:

- N/A

Oleksiy Syvokon created

71fb17c debugger: Update the default layout (#31057)

Click to expand commit body
- Remove the modules list and loaded sources list from the default
layout
- Move the console to the center pane so it's visible initially

Release Notes:

- Debugger Beta: changed the default layout of the debugger panel,
hiding the modules list and loaded sources list by default and making
the console more prominent.

---------

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

Cole Miller and Remco Smits created

97e437c Remove test-support feature from auto_update's gpui dep (#31147)

Click to expand commit body
Fixes `cargo run` on main.

Release Notes:

- N/A

Cole Miller created

66667d1 Add kernel detection for language support of runnable markdown cells (#29664)

Click to expand commit body
Closes #27757

Release Notes:

- List of runnable markdown cells is now based on detected jupyter
kernels instead of hardcoded to Python and TypeScript

Jon Gretar Borgthorsson created

dce22a9 project search: Reduce clones and allocations (#31133)

Click to expand commit body
Release Notes:

- N/A

Remco Smits created

5f452db debugger: Add a couple more keybindings (#31103)

Click to expand commit body
- Add missing handler for `debugger::Continue` so `f5` works
- Add bindings based on VS Code for `debugger::Restart` and
`debug_panel::ToggleFocus`
- Remove breakpoint-related buttons from the debug panel's top strip,
and surface the bindings for `editor::ToggleBreakpoint` in gutter
tooltip instead

Release Notes:

- Debugger Beta: Added keybindings for `debugger::Continue`,
`debugger::Restart`, and `debug_panel::ToggleFocus`.
- Debugger Beta: Removed breakpoint-related buttons from the top of the
debug panel.
- Compatibility note: on Linux, `ctrl-shift-d` is now bound to
`debug_panel::ToggleFocus` by default, instead of
`editor::DuplicateLineDown`.

Cole Miller created

b2a9209 debugger: Add actions and keybindings for opening the thread and session menus (#31135)

Click to expand commit body
Makes it possible to open and navigate these menus from the keyboard.

I also removed the eager previewing behavior for the thread picker,
which was buggy and came with a jarring layout shift.

Release Notes:

- Debugger Beta: Added the `debugger: open thread picker` and `debugger:
open session picker` actions.

Cole Miller created

eb35d25 collab: Drop `billing_events` table (#31131)

Click to expand commit body
This PR drops the `billing_events` table, as we're no longer using it.

Release Notes:

- N/A

Marshall Bowers created

8742d4a editor: Fix regression causing incorrect delimiter on newline in case of multiple comment prefixes (#31129)

Click to expand commit body
Closes #31115

This fixes regression caused by
https://github.com/zed-industries/zed/pull/30824 while keeping that fix.

- [x] Test

Release Notes:

- Fixed the issue where adding a newline after the `///` comment would
extend it with `//` instead of `///` in Rust and other similar
languages.

smit created

b829f72 collab: Prefer the plan on the subscription over the one on the usage (#31127)

Click to expand commit body
This PR makes it so we always prefer the plan on the subscription.

The plan stored on the subscription usage is informational only.

Release Notes:

- N/A

Marshall Bowers created

ffa8310 collab: Drop `monthly_usages` and `lifetime_usages` tables (#31124)

Click to expand commit body
This PR drops the `monthly_usages` and `lifetime_usages` tables from the
LLM database, as they are no longer used.

Release Notes:

- N/A

Marshall Bowers created

3fda539 Allow updater to check for updates after downloading one (#31066)

Click to expand commit body
This PR brings back https://github.com/zed-industries/zed/pull/30969 and
adds some initial testing.

https://github.com/zed-industries/zed/pull/30969 did indeed allow Zed to
continue doing downloads after downloading one, but it introduced a bug
where Zed would download a new binary every time it polled, even if the
version was the same as the running instance.

This code could use a refactor to allow more / better testing, but this
is a start.

Release Notes:

- N/A

Joseph T. Lyons created

b444b32 collab: Remove `GET /billing/monthly_spend` endpoint (#31123)

Click to expand commit body
This PR removes the `GET /billing/monthly_spend` endpoint, as it is no
longer used.

Release Notes:

- N/A

Marshall Bowers created

f196288 docs: Fix broken link in ai/configuration (#31119)

Click to expand commit body
Release Notes:

- N/A

Peter Tripp created

e30cc13 Rename 'Quit' to 'Quit Zed' in macOS menu (#31109)

Click to expand commit body
This is standard for Mac apps.

I should have included this with [my other
PR](https://github.com/zed-industries/zed/pull/30697), but didn’t catch
it. 🤦🏻‍♂️

Release Notes:

- N/A

Rob McBroom created

09c8a84 docs: Link to models supported directly from table (#31112)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

---------

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

morgankrey and Marshall Bowers created

6e5996a Fix unzipping clangd and codelldb on Windows (#31080)

Click to expand commit body
Closes https://github.com/zed-industries/zed/pull/30454

Release Notes:

- N/A

Kirill Bulatov created

c8f56e3 Update `Cargo.lock` (#31105)

Click to expand commit body
This PR updates the `Cargo.lock` file, as running `cargo check` was
producing a diff on `main`.

Release Notes:

- N/A

Marshall Bowers created

cfd3b0f Meter edit predictions by acceptance in free plan (#30984)

Click to expand commit body
TODO:

- [x] Release  a new version of `zed_llm_client`

Release Notes:

- N/A

---------

Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Max Brunsfeld , Mikayla Maki , Antonio Scandurra , Ben Brandt , and Marshall Bowers created

afe23cf Canonicalize markdown link paths (#29119)

Click to expand commit body
Closes #28657

Release Notes:

- Fixed markdown preview not canonicalizing file paths

hrou0003 created

f915c24 copilot: Fix rate limit due to Copilot-Vision-Request header (#30989)

Click to expand commit body
Issues: #30994

I've implemented an important optimisation in response to GitHub
Copilot's recent rate limit on concurrent Vision API calls. Previously,
our system was defaulting to vision header: true for all API calls. To
prevent unnecessary calls and adhere to the new limits, I've updated our
logic: the vision header is now only sent if the current message is a
vision message, specifically when the preceding message includes an
image.

Prompt used to reproduce and verify the fix: `Give me a context for my
agent crate about. Browse my repo.`

Release Notes:

- copilot: Set Copilot-Vision-Request header based on message content

Umesh Yadav created

bdd9e01 Bump Zed to v0.189 (#31101)

Click to expand commit body
Release Notes:

-N/A

Joseph T. Lyons created

6bbab4b editor: Fix multi-cursor not added to lines shorter than current cursor column (#31100)

Click to expand commit body
Closes #5255, #1046, #28322, #15728

This PR makes `AddSelectionBelow` and `AddSelectionAbove` not skip lines
that are shorter than the current cursor column. This follows the same
behavior as VSCode and Sublime.

This change is only applicable in the case of an empty selection; if
there is a non-empty selection, it continues to skip empty and shorter
lines to create a Vim-like column selection, which is the better default
for that case.

- [x] Tests

The empty selection no longer skips shorter lines:


https://github.com/user-attachments/assets/4bde2357-20b6-44f2-a9d9-b595c12d3939

Non-empty selection continues to skip shorter lines.


https://github.com/user-attachments/assets/4cd47c9f-b698-40fc-ad50-f2bf64f5519b

Release Notes:

- Improved `AddSelectionBelow` and `AddSelectionAbove` to no longer skip
shorter lines when the selection is empty, aligning with VSCode and
Sublime behavior.

smit created

7450b78 editor: Prevent overlapping of signature/hover popovers and context menus (#31090)

Click to expand commit body
Closes #29358

If hover popovers or signature popovers ever clash with the context menu
(like code completion or code actions), they find the best spot by
trying different directions around the context menu to show the popover.
If they can’t find a good spot, they just overlap with the context menu.

Not overlapping state:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/2f1bdc4c-eb01-405c-b5fb-eb28eadc9957"
/>

Overlapping case, moves popover to bottom of context menu:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/3ce4be23-7701-4711-b604-5e29682360e1"
/>

Overlapping case, moves popover to right of context menu:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/60d47518-e412-4d64-9d17-a69a17248bdf"
/> <img width="350" alt="image"
src="https://github.com/user-attachments/assets/2a3de176-7443-46d8-99d1-b2973a0ffaa6"
/>

Overlapping case, moves popover to left of context menu:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/015b799b-8c6e-4405-aee6-e205d4caebec"
/>

Overlapping case, moves popover to top of context menu:
<img width="350" alt="image"
src="https://github.com/user-attachments/assets/fbd03d84-9a49-44eb-846b-a9852d2ff43e"
/>

Release Notes:

- Fixed an issue where hover popovers or signature popovers would
overlap with existing opened completion or code actions context menus.

smit created

0c03519 Fix project search panic (#31089)

Click to expand commit body
The panic occurred when querying a second search in the project search
multibuffer while there were dirty buffers.

The panic only happened in Nightly so there's no release notes 

Release Notes:

- N/A

Anthony Eid created

636eff2 Revert "Allow updater to check for updates after downloading one (#30969)" (#31086)

Click to expand commit body
This reverts commit 5c4f9e57d8f919f58e39d660515e1dbec7d71483.

Release Notes:

- N/A

Joseph T. Lyons created

6c8f400 nix: Prevent spurious bindgen rebuilds in the devshell (#31083)

Click to expand commit body
Release Notes:

- N/A

Julia Ryan created

91bc5ae evals: Add system prompt to edit agent evals + fix edit agent (#31082)

Click to expand commit body
1. Add system prompt: this is how it's called from threads. Previously,
we were sending
2. Fix an issue with writing agent thought into a newly created empty
file.

Release Notes:

- N/A

---------

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Antonio Scandurra <me@as-cii.com>

Oleksiy Syvokon , Ben Brandt , and Antonio Scandurra created

2f3564b Add icons to the built-in picker for Open (#30893)

Click to expand commit body
![image](https://github.com/user-attachments/assets/f1167251-627f-48f7-a948-25c06c842e4b)


Release Notes:

- Added icons to the built-in picker for `Open` dialog

Aleksei Gusev created