Commit log

3ab4ad6 language_models: Use `JsonSchemaSubset` for Gemini models in OpenRouter (#33477)

Click to expand commit body
Closes #33466

Release Notes:

- N/A

Umesh Yadav created

e3ce061 collab: Lookup avatars by GitHub ID instead of username (#33523)

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

This will correctly show Avatars for recently renamed/deleted users and
for enterprise users where the username avatar url triggers a redirect
to an auth prompt. Also saves a request (302 redirect) per avatar.

Tested locally and avatars loaded as expected.

Release Notes:

- N/A

Peter Tripp created

865dd4c Rework LSP tool keyboard story (#33525)

Click to expand commit body
https://github.com/user-attachments/assets/81da68fe-bbc5-4b23-8182-923c752a8bd2

* Removes all extra elements: headers, buttons, to simplify the menu
navigation approach and save space.
Implements the keyboard navigation and panel toggling.

* Keeps the status icon and the server name, and their ordering approach
(current buffer/other) in the menu.
The status icon can still be hovered, but that is not yet possible to
trigger from the keyboard: future ideas would be make a similar side
display instead of hover, as Zeta menu does:


![image](https://github.com/user-attachments/assets/c844bc39-00ed-4fe3-96d5-1c9d323a21cc)

* Allows to start (if all are stopped) and stop (if some are not
stopped) all servers at once now with the button at the bottom

Release Notes:

- N/A

Kirill Bulatov created

2178f66 agent_ui: Rename MaxModeTooltip to BurnModeTooltip (#33521)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Umesh Yadav created

338a739 Fix blend alpha colors with editor background in inline preview (#33513)

Click to expand commit body
Closes #33505

## Before

<img width="434" alt="Screenshot 2025-06-27 at 12 22 57"
src="https://github.com/user-attachments/assets/ac215a39-b3fe-4c9e-bd7d-0d7568d5fd1f"
/>

## After

<img width="441" alt="Screenshot 2025-06-27 at 12 22 47"
src="https://github.com/user-attachments/assets/28218ed6-c1aa-4d3f-a268-def2fa9f0340"
/>

Release Notes:

- Fixed inline color previews not correctly blending alpha/transparency
values with the editor background

ddoemonn created

4c2415b editor: Use `em_advance` everywhere for horizontal scroll position computations (#33514)

Click to expand commit body
Closes #33472

This PR fixes some regressions that were introduced in
https://github.com/zed-industries/zed/pull/32558, which updated the
editor scrolling to use `em_advance` instead of `em_width` for the
horizontal scroll position calculation.
However, not all occurrences were updated, which caused issues with wrap
guides and some small stuttering with horizontal autoscroll whilst
typing/navigating with the keyboard.

Release Notes:

- Fixed an issue where horizontal autoscrolling would stutter and indent
guides would drift when scrolling horizontally.

Finn Evers created

e6bc130 Add SVG preview (#32694)

Click to expand commit body
Closes #10454

Implements SVG file preview capability similar to the existing markdown
preview.
- Adds `svg_preview` crate with preview view and live reloading upon
file save.
- Integrates SVG preview button in quick action bar.
- File preview shortcuts (`ctrl/cmd+k v` and `ctrl/cmd+shift+v`) are
extension-aware.

Release Notes:

- Added SVG file preview, accessible via the quick action bar button or
keyboard shortcuts (`ctrl/cmd+k v` and `ctrl/cmd+shift+v`) when editing
SVG files.

Ron Harel created

6c46e11 Cleanup remaining references to max mode (#33509)

Click to expand commit body
Release Notes:

- N/A

Ben Brandt created

fbb5628 Reset selection goal after helix motion (#33184)

Click to expand commit body
Closes #33060

Motions like `NextWordStart` don't reset the selection goal in vim mode
`helix_normal` unlike in `normal` which can lead to the cursor jumping
back to the previous horizontal position after going up or down.

Release Notes:

- N/A

fantacell created

8c9116d Fix panic in ctrl-g (#33474)

Click to expand commit body
Release Notes:

- vim: Fixed a crash with ctrl-g

Conrad Irwin created

20a3e61 vim: Better jump list support (#33495)

Click to expand commit body
Closes #23527
Closes #30183
Closes some Discord chats

Release Notes:

- vim: Motions now push to the jump list using the same logic as vim
(i.e.
`G`/`g g`/`g d` always do, but `j`/`k` always don't). Most non-vim
actions
(including clicking with the mouse) continue to push to the jump list
only
  when they move the cursor by 10 or more lines.

Conrad Irwin created

ba1c05a keymap: Add ability to update user keymaps (#33487)

Click to expand commit body
Closes #ISSUE

The ability to update user keybindings in their keymap is required for
#32436. This PR adds the ability to do so, reusing much of the existing
infrastructure for updating settings JSON files.

However, the existing JSON update functionality was intended to work
only with objects, therefore, this PR simply wraps the object updating
code with non-general keymap-specific array updating logic, that only
works for top-level arrays and can only append or update entries in said
top-level arrays. This limited API is reflected in the limited
operations that the new `update_keymap` method on `KeymapFile` can take
as arguments.

Additionally, this PR pulls out the existing JSON updating code into its
own module (where array updating code has been added) and adds a
significant number of tests (hence the high line count in the diff)

Release Notes:

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

Ben Kunkle created

2823771 Add design improvements to the LSP popover (#33485)

Click to expand commit body
Not the ideal design just yet as that will probably require a different
approach altogether, but am pushing here just some reasonably small UI
adjustments that will make this feel slightly nicer!

Release Notes:

- N/A

Danilo Leal created

343f155 Update docs for Swift debugging (#33483)

Click to expand commit body
Release Notes:

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

Cole Miller created

2dece13 nix: Update to access new rust toolchain version (#33476)

Click to expand commit body
Needed due to #33439

Release Notes:

- N/A

Julia Ryan created

985dcf7 chore: Bump Rust version to 1.88 (#33439)

Click to expand commit body
Goodies in this version:
- if-let chains 🎉
- Better compiler perf for Zed
(https://github.com/rust-lang/rust/pull/138522)

For more, see: https://releases.rs/docs/1.88.0/

Release Notes:

- N/A

---------

Co-authored-by: Junkui Zhang <364772080@qq.com>

Piotr Osiewicz and Junkui Zhang created

b079871 Fix subtraction with overflow (#33471)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

4983b01 helix: Change word motions (#33408)

Click to expand commit body
When starting on the newline character at the end of a line the helix
word motions select that character, unlike in helix itself. This makes
it easy to accidentaly join two lines together.
Also, word motions that go backwards should stop at the start of a line.
I added that.

Release Notes:

- helix: Fix edge-cases with word motions and newlines

fantacell created

35863c4 debugger: Fix treatment of node-terminal scenarios (#33432)

Click to expand commit body
- Normalize `node-terminal` to `pwa-node` before sending to DAP
- Split `command` into `program` and `args`
- Run in external console

Release Notes:

- debugger: Fixed debugging JavaScript tasks that used `"type":
"node-terminal"`.

Cole Miller created

a0bd25f Feature gate the LSP button (#33463)

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

The tool still looks like designed by professional developers, and still
may change its UX based on the internal feedback.

Release Notes:

- N/A

Kirill Bulatov created

8a1e795 agent: Move `ActiveThread` and `MessageEditor` into `ActiveView` (#33462)

Click to expand commit body
`ActiveThread` and `MessageEditor` only make sense when `active_view` is
`Thread`, so we moved them in there. This will make it easier to work on
new agent threads.

Release Notes:

- N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

Agus Zubiaga , Antonio Scandurra , Conrad Irwin , and Smit Barmase created

f4818b6 linux: Add agent::ToggleBurnMode shortcut (super-ctrl-b) (#33458)

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

Release Notes:

- N/A

Peter Tripp created

7031ed8 ci: Fix duplicated/failed eval jobs (#33453)

Click to expand commit body
I think this should fix the CI issues with Eval jobs:

1. Duplicated workflows because `synchronize` / `opened` were triggering
distinct runs. This caused failed job entries because the duplicated
workflows had a shared concurrency group and so one would pre-empt the
other.

3. Removes the no-op job, introduced as an attempted workaround in
   https://github.com/zed-industries/zed/pull/29420.

These should correctly show as "Skipped" now:

| Before | After |
| - | - |
| <img width="359" alt="Screenshot 2025-06-26 at 9 57 04"
src="https://github.com/user-attachments/assets/6ddd4f46-27c7-4d82-98ba-0f1166fc55e7"
/> | <img width="355" alt="Screenshot 2025-06-26 at 10 09 54"
src="https://github.com/user-attachments/assets/5faade2c-f17c-447a-9af9-6396f9e53016"
/> |

Release Notes:

- N/A

Peter Tripp created

6073d2c Automatically retry when API is Overloaded or 500s (#33275)

Click to expand commit body
<img width="484" alt="Screenshot 2025-06-25 at 2 26 16 PM"
src="https://github.com/user-attachments/assets/340f15d7-b115-4895-bae8-b12a915bfda1"
/>

<img width="460" alt="Screenshot 2025-06-25 at 2 26 08 PM"
src="https://github.com/user-attachments/assets/6e587a38-d542-405f-809f-402e87520538"
/>

Now we:
* Automatically retry up to 3 times on upstream Overloaded or 500 errors
(currently for Anthropic only; will add others in future PRs)
* Also automatically retry on rate limit errors (using the provided
duration to wait, if we were given one)
* Give you a notification if you don't have Zed open and we stopped the
thread because of an error

Still todo in future PRs:
* Update collab to report Overloaded and 500 errors differently if
collab itself is passing through an upstream error vs not (currently we
report these as "Zed's API is overloaded" when actually it's the
upstream one!)
* Updating providers other than Anthropic to categorize their errors so
that they benefit from this
* Expanding graceful error handling/retry to other things besides
Overloaded and 500 errors (e.g. connection reset)

Release Notes:

- Automatically retry in Agent Panel instead of erroring out when an
upstream AI API is overloaded or 500s
- Show a notification when an Agent thread errors out and Zed is not the
active window

Richard Feldman created

00499aa Add back default keybindings to Burn Mode and branch picker toggles (#33452)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/33190, as they
were removed because of conflict with VS Code's usage of those bindings
to toggle the right dock. `cmd-ctrl-b` seems like a safe alternative.
Note that this PR is macOS only, though. I couldn't find yet any good
options for Linux as they were all mostly conflicting with something
else.

Release Notes:

- N/A

Danilo Leal created

d1eb69c ci: Improve check_docs skipping (#33455)

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

Logic there was incomplete. Caused [this
failure](https://github.com/zed-industries/zed/actions/runs/15904169712/job/44854558276).

Release Notes:

- N/A

Peter Tripp created

40cbfb7 docs: Add note about extension submodules needing to use HTTPS URLS (#33454)

Click to expand commit body
This PR adds a note to the extension publishing docs about extension
submodules needing to use HTTPS URLs.

Release Notes:

- N/A

Marshall Bowers created

5d0f02d Add cmd-alt-b (workspace::ToggleRightDock) on macOS (#33450)

Click to expand commit body
Release Notes:

- N/A

Peter Tripp created

ca8e213 Suggest reST extension for .rst files (#33413)

Click to expand commit body
Suggest the reST extension when opening a .rst file for the first time.

Release Notes:

- N/A

Renze Post created

90c8937 gpui: Prevent the same action name from being registered multiple times (#33359)

Click to expand commit body
Also removes duplicate `editor::RevertFile` and `vim::HelixDelete`
actions

Release Notes:

- N/A

Michael Sloan created

d09c7eb language: Add context-aware decrease indent for Python (#33370)

Click to expand commit body
Closes #33238, follow-up to
https://github.com/zed-industries/zed/pull/29625.

Changes:

- Removed `significant_indentation`, which was the way to introduce
indentation scoping in languages like Python. However, it turned out to
be unnecessarily complicated to define and maintain.
- Introduced `decrease_indent_patterns`, which takes a `pattern` keyword
to automatically outdent and `valid_after` keywords to treat as valid
code points to snap to. The outdent happens to the most recent
`valid_after` keyword that also has less or equal indentation than the
currently typed keyword.

Fixes:

1. In Python, typing `except`, `finally`, `else`, and so on now
automatically indents intelligently based on the context in which it
appears. For instance:

```py
try:
    if a == 1:
        try:
             b = 2
             ^  # <-- typing "except:" here would indent it to inner try block
```

but,

```py
try:
    if a == 1:
        try:
             b = 2
    ^  # <-- typing "except:" here would indent it to outer try block
```

2. Fixes comments not maintaining indent.

Release Notes:

- Improved auto outdent for Python while typing keywords like `except`,
`else`, `finally`, etc.
- Fixed the issue where comments in Python would not maintain their
indentation.

Smit Barmase created

1753432 Fix tree sitter python try statement to accept missing else/except/finally (#33431)

Click to expand commit body
We have fork now:
https://github.com/zed-industries/tree-sitter-python/commit/218fcbf3fda3d029225f3dec005cb497d111b35e

Release Notes:

- N/A

Smit Barmase created

d9218b1 Bump livekit-rust-sdks for candidate webrtc-sys build fix (#33387)

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

Don't merge yet, waiting until after new releases are cut in case of
unexpected breakage.

Release Notes:

- N/A

Cole Miller created

dfdeb1b linux: Don't insert characters if modifiers other than shift are held (#33424)

Click to expand commit body
Closes #32219 #29666

Release Notes:

- Linux: Now skips insertion of characters when modifiers are held. Before, characters were inserted if there's no match in the keymap.

Michael Sloan created

b9f81c7 Restore missing initialization of text thread actions (#33422)

Click to expand commit body
Fixes a regression introduced in
https://github.com/zed-industries/zed/pull/33289

Release Notes:

- Fixed a bug where some text thread actions were accidentally removed.

Max Brunsfeld created

b1450b6 Remove `git_panel::GenerateCommitMessage` in favor of `git::GenerateCommitMessage` (#33421)

Click to expand commit body
`git_panel::GenerateCommitMessage` has no handler,
`git::GenerateCommitMessage` should be preferred. Could add a
`#[action(deprecated_aliases = ["git_panel::GenerateCommitMessage"])]`,
but decided not to because that action didn't work. So instead uses of
it will show up as keymap errors.

Closes #32667

Release Notes:

- N/A

Michael Sloan created

1af9f98 lsp-log: Avoid trimming leading space in language server logs (#33418)

Click to expand commit body
Not sure what the full intention/right fix for this is, but
https://github.com/zed-industries/zed/pull/32659 re-introduced trimming
of leading spaces. rust-analyzer has [a custom tracing
formatter](https://github.com/rust-lang/rust-analyzer/blob/317542c1e4a3ec3467d21d1c25f6a43b80d83e7d/crates/rust-analyzer/src/tracing/hprof.rs)
that is _super_ useful for profiling what the heck rust-analyzer is
doing. It makes prodigious use of whitespace to delineate to create a
tree-shaped structure. This change reintroduces the leading whitespace.

I made a previous change similar to this that removed a `stderr:` in
https://github.com/zed-industries/zed/pull/27213/. If this is a
direction y'all are happy to go with, I'd be happy to add a test for
this!

<details>
<summary>A screenshot of the before</summary>

<img width="1624" alt="Screenshot 2025-06-25 at 2 12 45 PM"
src="https://github.com/user-attachments/assets/a714d973-9377-41ca-8087-3b0e82b41620"
/>

</details>

<details>
<summary>A screenshot of the after</summary>

<img width="1136" alt="Screenshot 2025-06-25 at 2 40 07 PM"
src="https://github.com/user-attachments/assets/b798ca13-11fc-4f97-9602-55e782068a5a"
/>

</details>

cc: @mgsloan.

Release Notes:

- Fixed the removal of leading whitespace in a language server's stderr
logs.

David Barsky created

1330cb7 docs: Update instructions to use Vercel's v0 model (#33415)

Click to expand commit body
To make sure this reflects the current reality as of today's
preview/stable version.

Release Notes:

- N/A

Danilo Leal created

dae4e84 Explicitly associate files as JSONC (#33410)

Click to expand commit body
Fixes an issue when the zed repo was checked out to folder other than
`zed` (e.g. `zed2`) files were incorrectly identified as JSON instead of
JSONC.

Release Notes:

- N/A

Peter Tripp created

6fb5500 collab: Save Customer name and billing address to Customer on checkout (#33385)

Click to expand commit body
We are collecting billing address and name on checkout now (for tax) but
we're not saving it back to the Customer level. Updating the Checkout
Session code to make`customer_update.address` equal to `auto`, instead
of the default `never`, as well as the same for `customer_update.name`.

Release Notes:

- N/A

morgankrey created

8f98171 pane: Update pinned tab count when it exceeds actual tab count (#33405)

Click to expand commit body
## Summary

This PR improves the workaround introduced in #33335 that handles cases
where the pinned tab count exceeds the actual tab count during workspace
deserialization.

## Problem

The original workaround in #33335 successfully prevented the panic but
had two issues:
1. **Console spam**: The warning message was logged repeatedly because
`self.pinned_tab_count` wasn't updated to match the actual tab count
2. **Auto-pinning behavior**: New tabs up until you exceed the old safe
tab count were automatically pinned after the workaround was triggered.

## Solution

Updates the defensive code to set `self.pinned_tab_count = tab_count`
when the mismatch is detected, ensuring:
- The warning is only logged once when encountered.
- New tabs behave normally (aren't auto-pinned)
- The workspace remains in a consistent state

This is an immediate fix for the workaround. I'll attempt to open up a
follow-up PR when i get the chance that will address the root cause by
implementing serialization for empty untitled tabs, as discussed in
#33342.

Release Notes:

- N/A

vipex created

aae4778 gpui: Add more flushing of x11 requests (#33407)

Click to expand commit body
Flushes should happen after sending messages to X11 when effects should
be applied quickly. This is not needed for requests that return replies
since it automatically flushes in that case.

Release Notes:

- N/A

Michael Sloan created

e5c812f gpui: Dynamic element arena (#32079)

Click to expand commit body
Implements a chunking strategy for the element arena that allows it to
grow dynamically based on allocations, it is initialised with a single
chunk of a total size of 1 mebibyte. On allocation of data with a size
greater than the remaining space of the current chunk a new chunk is
created.

This reduces the memory allocation from the static 32 mebibytes, this
especially helps GPUI applications that don't need such a large element
arena and even Zed in most cases. This also prevents the panic when
allocations ever exceed the element arena.

Release Notes:

- N/A

---------

Co-authored-by: Michael Sloan <michael@zed.dev>

Matin Aniss and Michael Sloan created

294147f ci: Skip build_docs more often (#33398)

Click to expand commit body
Don't run `build_docs` when the only change is:
`.github/{workflows,ISSUE_TEMPLATE}/**`.
Example [extra
run](https://github.com/zed-industries/zed/actions/runs/15883155767).

Release Notes:

- N/A

Peter Tripp created

4516b09 Reduce segment cloning when rendering messages (#33340)

Click to expand commit body
While working on retries, I discovered some opportunities to reduce
cloning of message segments. These segments have full `String`s (not
`SharedString`s), so cloning them means copying cloning all the bytes of
all the strings in the message, which would be nice to avoid!

Release Notes:

- N/A

Richard Feldman created

8e831ce ci: Remove community_delete_comments (#33396)

Click to expand commit body
This was a temporary mitigation against a spam campaign, I don't think
this is required any longer. We can easily revert if it's still active.

See:
- https://github.com/zed-industries/zed/pull/16886

Release Notes:

- N/A

Peter Tripp created

3740eec Do not show update "View Release Notes" notification in nightly builds (#33394)

Click to expand commit body
These are useless in nightly, as the link within the notification simply
directs us to a commit view on GitHub. We update frequently on nightly;
dismissing this after every update is annoying.

Release Notes:

- N/A

Joseph T. Lyons created

2a5a181 text_thread: Improve roles after `assistant::Split` (shift-enter) (#33215)

Click to expand commit body
Default to `You` when triggering `assistant::Split` at the end of a thread

Release Notes:

- agent_thread: Improved roles when triggering `assistant::Split`
(`shift-enter`)

Peter Tripp created

cc62125 agent: Add GEMINI.md as a supported rules file name (#33381)

Click to expand commit body
Gemini cli creates GEMINI.md file. This PR adds support for it.

Release Notes:

- agent: Add GEMINI.md as a supported rules file name

Umesh Yadav created

224de2e settings: Remove version fields (#33372)

Click to expand commit body
This cleans up our settings to not include any `version` fields, as we
have an actual settings migrator now.

This PR removes `language_models > anthropic > version`,
`language_models > openai > version` and `agent > version`.

We had migration paths in the code for a long time, so in practice
almost everyone should be using the latest version of these settings.


Release Notes:

- Remove `version` fields in settings for `agent`, `language_models >
anthropic`, `language_models > openai`. Your settings will automatically
be migrated. If you're running into issues with this open an issue
[here](https://github.com/zed-industries/zed/issues)

Bennet Bo Fenner created