Commit log

1b43217 Add a jetbrains-like Toggle All Docks action (#40567)

Click to expand commit body
The current Jetbrains keymap has `ctrl-shift-f12` set to
`CloseAllDocks`. On Jetbrains IDEs this hotkey actually toggles the
docks, which is very convenient: You press it once to hide all docks and
just focus on the code, and then you can press it again to toggle your
docks right back to how they were. Unlike `CloseAllDocks`, a toggle
means the editor needs to remember the previous docks state so this
necessitated some code changes.

Release Notes:

- Added a `Toggle All Docks` editor action and updated the keymaps to
use it

Adir Shemesh created

1b6cde7 Revert "Fix ESLint linebreak-style errors by preserving line endings in LSP communication (#38773)" (#41355)

Click to expand commit body
This reverts commit 435eab68968fa11f8a476c78845b13df45498f25.

This caused format on save to scroll down to bottom instead of keeping
the position.

Release Notes:

- N/A

Kirill Bulatov created

bd0bcdb Fix line number settings migration (#41351)

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

Also updates the documentation.

Release Notes:

- N/A

Finn Evers created

2b56991 editor: Fix calculate relative line number panic (#41352)

Click to expand commit body
### Reproduction steps

1. Turn on relative line numbers
2. Start a debugging session and hit an active debug line
3. minimize Zed so the editor element with the active debug line has
zero visible rows

#### Before 

https://github.com/user-attachments/assets/57cc7a4d-478d-481a-8b70-f14c879bd858
#### After 

https://github.com/user-attachments/assets/19614104-f9aa-4b76-886b-1ad4a5985403

Release Notes:

- debugger: Fix a panic that could occur when minimizing Zed

Anthony Eid created

0857dda Always delete OpenConsole.exe on Windows uninstall (#41348)

Click to expand commit body
By default, the uninstaller will only delete files that were written by
the original installer. When users upgrade Zed, these new
OpenConsole.exe files will have been written by auto_upgrade_helper, not
the installer. Force them to be deleted on uninstall, so they do not
hang around.

Release Notes:

- N/A

John Tur created

3e3618b debugger: Add horizontal scrollbar for frame item and tooltip for variables (#41261)

Click to expand commit body
Closes #40360 

I first tried to use an horizontal scrollbar also for variables but as
it's a List that can be collapsed it didn't feel natural so I ended up
adding a tooltip to have to full value of the variable when you hover
the item. (cf screenshots).




https://github.com/user-attachments/assets/70c4150d-b967-46b0-8720-82bbad9c9cca




https://github.com/user-attachments/assets/d0b52189-b090-4824-8eb7-2f455fa58b33



Release Notes:

- Added: for debugger UI horizontal scrollbar for frame item and tooltip
for variables.

Signed-off-by: Benjamin <5719034+bnjjj@users.noreply.github.com>

Coenen Benjamin created

2163580 Fix tab switcher spacing bug (#41329)

Click to expand commit body
The tab switcher render matches calls each workspace item's
`Item::tab_content` function that can return an element of variable
size. Because the tab switcher was using a uniform list under the hood,
this would cause spacing issues when tab_contents elements had different
sizes.

The fix is by changing the picker to use a material list under the hood.

Release Notes:

- N/A

Anthony Eid created

4778d61 Fix copy button not working for REPL error output (#40669)

Click to expand commit body
## Description

Fixes the copy button functionality in REPL interactive mode error
output sections.

When executing Python code that produces errors in the REPL (e.g.,
`NameError`), the copy button in the error output section was
unresponsive. The stdout/stderr copy button worked correctly, but the
error traceback section copy button had no effect when clicked.

Fixes #40207

## Changes

Modified the following:
src/outputs.rs: Fixed context issues in render_output_controls by
replacing cx.listener() with simple closures, and added custom button
implementation for ErrorOutput that copies/opens the complete error
(name + message + traceback)
src/outputs/plain.rs: Made full_text() method public to allow access
from button handlers
src/outputs/user_error.rs: Added Clone derive to ErrorView struct and
removed a couple pieces of commented code

## Why This Matters

The copy button was clearly broken and it is useful to have for REPL
workflows. Users could potentially need to copy error messages for a
variety of reasons.

## Testing

See attached demo for proof that the fix is working as intended. (this
is my first ever commit, if there are additional test cases I need to
write or run, please let me know!)


https://github.com/user-attachments/assets/da158205-4119-47eb-a271-196ef8d196e4

Release Notes:

- Fixed copy button not working for REPL error output

h-michaelson20 created

46c5d51 recent_projects: Surface project opening errors to user (#41308)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

73bd12e editor: Optimize selection overlap checking (#41281)

Click to expand commit body
Replace the binary search approach with a more efficient partition_point
method for checking selection overlaps. This eliminates the need to
collect and sort selection ranges separately, reducing memory allocation
and improving performance when handling multiple selections.

Release Notes:

- N/A

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>

Xiaobo Liu created

cc829e7 remote: 60 second timeout on initial connection (#41339)

Click to expand commit body
Closes #41316

Release Notes:

- Fixes #41316 

> This keeps the 5 second heartbeat behavior for after the connection is
made

versecafe created

fdf5bf7 remote: Support building x86_64-linux-musl proxy in nix-darwin (#41291)

Click to expand commit body
This change adds two things to our remote server build
process:
1. It now checks if all required tooling is installed before using it or installing it on demand. This includes checks for `rustup` and `cargo-zigbuild` in your `PATH`.
2. Next, if `ZED_BUILD_REMOTE_SERVER` contains `musl` and `ZED_ZSTD_MUSL_LIB`
is set, we will pass its value (the path) to `cargo-zigbuild` as `-C
link-arg=-L{path}`.

Release Notes:

- N/A

Jakub Konka created

c94536a Fix Windows updater failing to copy OpenConsole.exe (#41338)

Click to expand commit body
Release Notes:

- N/A

John Tur created

9db4740 Reland Windows Arm64 builds in CI (#40855)

Click to expand commit body
Release Notes:

- windows: Added builds for Arm64 architecture

---------

Co-authored-by: Julia Ryan <juliaryan3.14@gmail.com>

John Tur and Julia Ryan created

1d0bb5a Make 'wrap selections in tag' work with line selection mode (#41030)

Click to expand commit body
The `wrap selections in tag` action currently did not take line_mode
into account, which means when selecting lines with `shift-v`, the
start/end tags would be inserted into the middle of the selection (where
the cursor sits)


https://github.com/user-attachments/assets/a1cbf3da-d52a-42e2-aecf-1a7b6d1dbb32

This PR fixes this behaviour by checking if the selection uses line_mode
and then adjusting start and end points accordingly.

NOTE: I looked into amending the test cases for this, but I am unsure
how to express line mode with range markers. I would appreciate some
guidance on this and then I am happy to add test cases.

After:


https://github.com/user-attachments/assets/a212c41f-b0db-4f50-866f-fced7bc677ca

Release Notes:

- Fixed `Editor: wrap selection in tags` when in vim visual line mode

---------

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

Lukas and Conrad Irwin created

6823847 Add buffer_search_deployed key context (#41193)

Click to expand commit body
Release Notes:

- Pane key context now includes 'buffer_search_deployed' identifier

The goal of this PR is to add a new identifier in the key context that
will let the user target when the BufferSearchBar is deployed even if
they are not focused on it.

requested in #36930

Same rational as #40454 this will allow users to make more flexible
keybindings, by including some additional information higher up the key
context tree.

i thought adding this context to `Pane` seemed more appropriate than
`Editor` since `Terminal` also has a `BufferSearchBar`; however, I ran
into some import issues between BufferSearchBar, Search, Pane, and
Workspace which made it difficult to implement adding this context
directly inside `Pane`'s render function.

instead i added a new method called `contributes_context` to
`ToolbarItem` which will allow any toolbar item to add additional
context to the `Pane` level, which feels like it might come in handy.

here are some screen shots of the context being displayed in the Editor
and the Terminal

<img width="1653" height="1051" alt="Screenshot 2025-10-25 at 14 34 03"
src="https://github.com/user-attachments/assets/21c5b07a-8d36-4e0b-ad09-378b12d2ea38"
/>

<img width="1444" height="1167" alt="Screenshot 2025-10-25 at 12 32 21"
src="https://github.com/user-attachments/assets/86afe72f-b238-43cd-8230-9cb59fb93b2c"
/>

Josh Piasecki created

3a7bdf4 Fix unwrap in branch diff (#41330)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Conrad Irwin created

d5e2971 Support relative line number on wrapped lines (#39268)

Click to expand commit body
**Problem:** Current relative line numbering creates a mismatch with
vim-style navigation when soft wrap is enabled. Users must mentally
calculate whether target lines are wrapped segments or logical lines,
making `<n>j/k` navigation unreliable and cognitively demanding.

**How things work today:**
- Real line navigation (`j/k` moves by logical lines): Requires
determining if visible lines are wrapped segments before jumping. Can't
jump to wrapped lines directly.
- Display line navigation (`j/k` moves by display rows): Line numbers
don't correspond to actual row distances for multi-line jumps.

**Proposed solution:** Count and number each display line (including
wrapped segments) for relative numbering. This creates direct
visual-to-navigational correspondence where the relative number shown
always matches the `<n>j/k` distance needed.

**Benefits:**
- Eliminates mental overhead of distinguishing wrapped vs. logical lines
- Makes relative line numbers consistently actionable regardless of wrap
state
- Preserves intuitive "what you see is what you navigate" principle
- Maintains vim workflow efficiency in narrow window scenarios

Also explained an discussed in
https://github.com/zed-industries/zed/discussions/25733.

Release Notes:

Release Notes:

- Added support for counting wrapped lines as relative lines and for
displaying line numbers for wrapped segments. Changes
`relative_line_numbers` from a boolean to an enum: `enabled`,
`disabled`, or `wrapped`.

---------

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

Thomas Heartman and Conrad Irwin created

1c4923e gpui: Add a timeout to `#[gpui::test]` tests (#41303)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

ee80ba6 zeta2: LLM-based context gathering (#41326)

Click to expand commit body
Release Notes:

- N/A

---------

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

Agus Zubiaga , Max Brunsfeld , and Max Brunsfeld created

fd306c9 Fix default settings entry for basedpyright (#40812)

Click to expand commit body
If you set `{"basedpyright": {"analysis": {"typeCheckingMode":
"off"}}}`, you will notice that it doesn't actually work, but
`{"basedpyright.analysis": {"typeCheckingMode": "off"}}` does.

Made the change on how the default is being set.

Release Notes:

- N/A

Abdelhakim Qbaich created

b3483a1 settings_ui: Fix tabbing in settings UI main page content (#41209)

Click to expand commit body
Tabbing into the main page would move focus to the navigation panel
instead of auto-scrolling. This PR fixes that bug.


Release Notes:

- N/A

Anthony Eid created

ac66e91 Don't upload symbols to DO anymore (#41317)

Click to expand commit body
Sentry now symbolicates stack traces, no need to make our builds slower

Release Notes:

- N/A

Conrad Irwin created

5e37a7b Fix shell welcome prompt showing up in Zed's stdout (#41311)

Click to expand commit body
The bug occurred because `smol::process::Command::from(_)` doesn't set
the correct fields for stdio markers. So moving the stdio configuration
after converting to a `smol` command fixed the issue.

I added the `std::process::Command::{stdout, stderr, stdin}` functions
to our disallowed list in clippy to prevent any bugs like this appearing
in the future.

Release Notes:

- N/A

Anthony Eid created

00278f4 Add Rust convenience Tree-sitter injections for common crates (#41258)

Cameron Mcloughlin created

ac3d2a3 Tune the focus-visible heuristics a bit (#41314)

Click to expand commit body
This isn't quite right yet, as a proper solution would remember the
input modality at the moment of focus change, rather than at painting
time. But this gets us close enough for now.

Release Notes:

- N/A

Mikayla Maki created

58f07ff Try gh-workflow (#41155)

Click to expand commit body
Experimenting with not writing YAML by hand...

Release Notes:

- N/A

Conrad Irwin created

db0f7a8 docs: Mention the settings and keymap UIs more prominently (#41302)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

f5ad4c8 Remove PostgREST (#41299)

Click to expand commit body
This PR removes the PostgREST containers and deployments, as we're no
longer using it.

Release Notes:

- N/A

Marshall Bowers created

1729849 collab: Add 'Copy channel notes link' to right click menu on channels (#41298)

Click to expand commit body
Release Notes:

- Added a "Copy Channel Notes Link" action to right-click menu of Zed
channels.

Piotr Osiewicz created

ba26ca4 docs: Document per-release channel configuration (#40833)

Click to expand commit body
## Summary
- Document the `stable`/`preview`/`nightly` top-level keys that let
users scope settings overrides per release channel.
- Provide an example `settings.json` snippet and call out that overrides
replace array values rather than merging them.
- Mention that UI-driven changes edit the root config so per-channel
blocks might need manual updates.

## Testing
- Not run (docs only).

Fixes #40458.

Release Notes:

- N/A

---------

Co-authored-by: MrSubidubi <finn@zed.dev>

Mohin Hasin Rabbi and MrSubidubi created

1ae8e0c keymap_editor: Clear action query when showing matching keybindings (#41296)

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

Release Notes:

- Fixed an issue where showing matching keystrokes in the keybind editor
modal would not clear an active text query.

Finn Evers created

a70f80d Add support for changing the Codestral endpoint (#41116)

Click to expand commit body
```json
  "edit_predictions": {
    "codestral": {
      "api_url": "https://codestral.mistral.ai",
      "model": "codestral-latest",
      "max_tokens": 150
    }
  },
```

Release Notes:

- Added support for changing the Codestral endpoint. This was discussed
at #34371.

---------

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

pedrxd and Bennet Bo Fenner created

821a488 cli: Use --wait to prefer focused window (#41051)

Click to expand commit body
Introduce a new `prefer_focused_window` field to the
`workspace::OpenOptions` struct that, when provided, will make it so
that Zed opens the provided path in the currently focused window.

This will now automatically be set to true when the `--wait` flag is
used with the CLI.

Closes #40551 

Release Notes:

- Improved the `--wait` flag in Zed's CLI so as to always open the
provided file in the currently focused window

---------

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

Dino and Conrad Irwin created

7f17d4b Add Tailwind CSS and Ruff to built-in features list (#41285)

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

This PR adds both Tailwind CSS and Ruff (linter for Python) as built-in
features; a banner mentioning this should show up now for these two when
searching for them in the extensions UI.

There will also be a corresponding zed.dev site PR adding a "Ruff is
built-in" card to the zed.dev/extensions page.

Release Notes:

- N/A

Danilo Leal created

ebf4a23 Use `paths::external_agents_dir` (#41286)

Click to expand commit body
We were not actually using `paths::agent_servers` and were manually
constructing the path to the `external_agents` folder in a few places.

Release Notes:

- N/A

Bennet Fenner created

370d4ce rope: Micro optimize the creation of masks (#41132)

Click to expand commit body
Using compiler explorer I saw that the compiler wasn't clever enough to
optimise away the branches in the masking code. I thought the compiler
would have a better chance if we always branched, which [turned out to
be the case](https://godbolt.org/z/PM594Pz18).

Running the benchmarks the biggest benefit I saw was:
```
push/65536              time:   [2.9067 ms 2.9243 ms 2.9417 ms]
                        thrpt:  [21.246 MiB/s 21.373 MiB/s 21.502 MiB/s]
                 change:
                        time:   [-8.3452% -7.2617% -6.2009%] (p = 0.00 < 0.05)
                        thrpt:  [+6.6108% +7.8303% +9.1050%]
                        Performance has improved.
```
But I did also see some regressions:
```
slice/4096              time:   [66.195 µs 66.815 µs 67.448 µs]
                        thrpt:  [57.915 MiB/s 58.464 MiB/s 59.012 MiB/s]
                 change:
                        time:   [+3.7131% +5.1698% +6.6971%] (p = 0.00 < 0.05)
                        thrpt:  [-6.2768% -4.9157% -3.5802%]
                        Performance has regressed.
```

Release Notes:

- N/A

Adam Richardson created

2284131 Add @rtfeldman to reviewers list (#41127)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Richard Feldman created

2f7045f settings_ui: Show migration banner (#41112)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

---------

Co-authored-by: Danilo <danilo@zed.dev>

Ben Kunkle and Danilo created

5d359ea remote: Fall back to SCP if SFTP fails (#41255)

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

After experimenting and reading through the implementation of OpenSSH
stack on Windows, it looks like batch mode precludes use of passwords.
In the listing
https://github.com/PowerShell/openssh-portable/blob/b8c08ef9da9450a94a9c5ef717d96a7bd83f3332/sshconnect2.c#L417,
the last field of each `Authmode` struct is a pointer to the config
value that *disables* that particular mode. In this case, `keyboard`
(interactive) and `password` modes are both disabled if batch mode is
used. We should therefore fall back to `scp` if `sftp` fails rather than
to fail outright.

Release Notes:

- N/A

Jakub Konka created

72c6a74 keymap_editor: Fix updating empty keymap (#40909)

Click to expand commit body
Closes #40898

Release Notes:

- Fixed an issue where attempting to add or update a key binding in the
keymap editor with an empty `keymap.json` file would fail

Ben Kunkle created

941033e settings_ui: Add vim motions on navigation menu (#39988)

Click to expand commit body
Closes #ISSUE

Release Notes:

- Added vim motions on settings navigation menu

Alvaro Parker created

83884ca lsp: Support tracking multiple registrations of diagnostic providers (#41096)

Click to expand commit body
Closes #40966
Closes #41195
Closes #40980 

Release Notes:

- Fixed diagnostics not working with basedpyright/pyright beyond an
initial version of the document

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: dino <dinojoaocosta@gmail.com>

Piotr Osiewicz , Smit Barmase , Anthony Eid , and dino created

f503c65 Make "About Zed" menu entry to work when all Zed windows are closed (#41272)

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

The only downside would be the fact that a Zed window will appear behing
the version modal, but this is a limitation for all "window-less"
actions currently.

Release Notes:

- Made "About Zed" menu entry to work when all Zed windows are closed

Kirill Bulatov created

c1cd371 fix: Edit predictions using stale snapshot (#41271)

Click to expand commit body
Release Notes:

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

Co-authored-by: David Kleingeld <davidsk@zed.dev>

Lukas Wirth and David Kleingeld created

7cb2d83 acp: Start sending Client Info to the Agent (#41265)

Click to expand commit body
Updates to acp crate 0.7, which allows us to send information about the
client to the Agent.
In the future, we can also use the AgentInfo on the response for
internal metrics.

Release Notes:

- N/A

Ben Brandt created

ae3abf5 editor: Fix panics in `CursorPosition::update_position` (#41237)

Click to expand commit body
Fixes a regression introduced in
https://github.com/zed-industries/zed/pull/39857. As for the exact
reason this causes this issue I am not yet sure will investigate (as per
the todos in code)

Fixes ZED-23R

Release Notes:

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

Lukas Wirth created

edf2ec7 editor: Make hover popover delay strictly respect hover_popover_delay setting (#41149)

Click to expand commit body
Previously, the hover popover delay was implemented using two
overlapping timers, which caused the minimum delay to always be at least
HOVER_REQUEST_DELAY_MILLIS, regardless of the hover_popover_delay
setting.
This change updates the logic to wait for hover_popover_delay only,
ensuring the total delay is always equals to hover_popover_delay . As a
result, the hover popover now appears after the intended delay, matching
the user's configuration more accurately.

Release Notes:

- Improved hover popover respecting settings delay correctly

deltamaya created

2919e19 docs: Display action names in backticks instead of quotes (#41248)

Click to expand commit body
This PR fixes some instances where we were displaying action names in
quotes instead of in backticks.

Also fixed some mentions of using an action to open the settings file,
as this has changed after the release of the settings UI.

Release Notes:

- N/A

Marshall Bowers created

fd3ca03 workspace: Handle non-cloneable items better (#41215)

Click to expand commit body
When trying to split and clone a non clone-able workspace item we now
attempt split and move instead of doing nothing. Additionally we disable
the split menu buttons if we can't split the active item at all.

Release Notes:

- Improved handling of unsplittable panes

Lukas Wirth created