Commit log

66f4d36 WIP: zeta2 eval: Compute the edit sites coverage metric

Click to expand commit body
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

Oleksiy Syvokon and Max Brunsfeld created

e7fd603 Allow commit hashes in eval examples

Oleksiy Syvokon created

9c8e37a clangd: Fix switch source header action on windows (#42105)

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

Release Notes:

- Fixed clangd's switch source header action not working on windows

Lukas Wirth created

d54c64f Refresh outline panel on file renames (#42104)

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

Release Notes:

- Fixed outline panel not updating file headers on rename

Kirill Bulatov created

0b53da1 remote: Flush to stdin when writing to sftp (#42103)

Click to expand commit body
https://github.com/zed-industries/zed/issues/42027#issuecomment-3497210172

Release Notes:

- Fixed ssh remoting potentially failing due to not flushing stdin to
sftp

Lukas Wirth created

5ced3ef editor: Improve multibuffer header spacing (#42071)

Click to expand commit body
BEFORE:
<img width="1751" height="629" alt="image"
src="https://github.com/user-attachments/assets/f88464d3-5daa-4d53-b394-f92db8b0fd8c"
/>

AFTER:
<img width="1714" height="493" alt="image"
src="https://github.com/user-attachments/assets/022c883b-b219-40a3-aa5f-0c16d23e8abf"
/>

Release Notes:

- N/A

---------

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

Libon and Danilo Leal created

7a37dd9 Do not serialize buffers containing bundled files (#38102)

Click to expand commit body
Fix bundled file persistence by introducing SerializationMode enum

Closes: #38094

What's the issue?

Opening bundled files like Default Key Bindings
(zed://settings/keymap-default.json) was causing SQLite foreign key
constraint errors. The editor was trying to save state for these
read-only assets just like regular files, but since bundled files don't
have database entries, the foreign key constraint would fail.

The fix

Replaced the boolean serialize_dirty_buffers flag with a type-safe
SerializationMode enum:

```rust
pub enum SerializationMode {
    Enabled,   // Regular files persist across sessions
    Disabled,  // Bundled files don't persist
}
```

This prevents serialization at the source: workspace_id() returns None
for disabled editors, serialize() bails early, and should_serialize()
returns false. When opening bundled files, we set the mode to Disabled
from the start, so they're treated as transient views that never
interact with the persistence layer.

Changes

- editor.rs: Added SerializationMode enum and updated serialization
methods to respect it
- items.rs: Guarded should_serialize() to prevent disabled editors from
being serialized
- zed.rs: Set SerializationMode::Disabled in open_bundled_file()

Result

Bundled files open cleanly without SQLite errors and don't persist
across workspace reloads (expected behavior). Regular file persistence
remains unaffected.

Release Notes: Fixed SQLite foreign key constraint errors when opening
bundled files like Default Key Bindings.

---------

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

ʟᴜɴᴇx and MrSubidubi created

a716362 agent_ui: Make "add more agents" menu item take to extensions (#42098)

Click to expand commit body
Now that agent servers are a thing, this is the primary and easiest way
to quickly add more agents to Zed, without touching any settings JSON
file. :)

Release Notes:

- N/A

Danilo Leal created

f080686 agent_ui: Do not show Codex wsl warning on wsl take 2 (#42096)

Click to expand commit body
https://github.com/zed-industries/zed/pull/42079#discussion_r2498472887

Release Notes:

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

Lukas Wirth created

a951e41 util: Fix shell environment fetching with `cmd` (#42093)

Click to expand commit body
Release Notes:

- Fixed shell environment fetching failing when having `cmd` configured
as terminal shell

Lukas Wirth created

e75c6b1 remote: Fix `detect_can_exec` detection (#42087)

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

Release Notes:

- Fixed an issuer with wsl exec detection eagerly failing, breaking
remote connections

Lukas Wirth created

149eedb Fix scroll position restoration (#42088)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/42035
Scroll position needs to be stored immediately, otherwise editor close
may not register that.

Release Notes:

- N/A

Kirill Bulatov created

fb46bae remote: Add missing quotation in `extract_server_binary` (#42085)

Click to expand commit body
Also respect the shell env for various commands again
Should close https://github.com/zed-industries/zed/issues/42027

Release Notes:

- Fixed remote server installation failing on some setups

Lukas Wirth created

28d7c37 recent_projects: Improve user facing error messages on connection failure (#42083)

Click to expand commit body
cc https://github.com/zed-industries/zed/issues/42004

Release Notes:

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

Lukas Wirth created

f6da987 agent_ui: Do not show Codex wsl warning on wsl (#42079)

Click to expand commit body
Release Notes:

- Fixed the codex wsl warning being shown on wsl itself

Lukas Wirth created

efc71f3 Tone down extension errors (#42080)

Click to expand commit body
Before:
<img width="2032" height="1161" alt="before"
src="https://github.com/user-attachments/assets/5c497b47-87e8-4167-bc28-93e34556ea4d"
/>

After:
<img width="2032" height="1161" alt="after"
src="https://github.com/user-attachments/assets/4a87803f-67df-4bf8-ade0-306f3c9ca81e"
/>

Release Notes:

- N/A

Kirill Bulatov created

3b7ee58 zed: Attach console to parent process before processing `--printenv` (#42075)

Click to expand commit body
Otherwise the `--printenv` flag will simply not work on windows

Release Notes:

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

Lukas Wirth created

32047be text: Improve panic messages with more information (#42072)

Click to expand commit body
Release Notes:

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

Lukas Wirth created

4003287 vim: Downgrade user config error from panic to log (#42070)

Click to expand commit body
Fixes ZED-2W3

Release Notes:

- Fixed panic due to invalid vim keycap

Lukas Wirth created

001a47c gpui: Inline some hot recursive scope functions (#42069)

Click to expand commit body
This reduces stack usage in prepainting slightly as we stack less
references to window/app.

Release Notes:

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

Lukas Wirth created

113f078 agent_ui: Fix string slicing panic in message editor (#42068)

Click to expand commit body
Fixes ZED-302

Release Notes:

- Fixed a panic in agent message editor when using multibyte whitespace
characters

Lukas Wirth created

2733216 gpui: Add debug assertion to Window::on_action and make docs consistent (#41202)

Click to expand commit body
Improves formatting consistency across various docs, fixes some typos,
and adds a missing `debug_assert_paint` to `Window::on_action` and
`Window::on_action_when`.

Release Notes:

- N/A

Lexi Mattick created

92cfce5 language: Fix completion menu no longer prioritizes relevant items for Typescript and Python (#42065)

Click to expand commit body
Closes #41672

Regressed in https://github.com/zed-industries/zed/pull/40242

Release Notes:

- Fixed issue where completion menu no longer prioritizes relevant items
for TypeScript and Python.

Smit Barmase created

2b6cf31 file_finder: Display duplicated file in file finder history (#41917)

Click to expand commit body
Closes #41850

When digging into this I figured out that basically what was going on is
in the history of the file finder it doesn't update the name of the file
duplicated because when you duplicate a file it's named automatically
with `filename copy` and so this filename was added to the history but
not updated so once you wanted to go back into this file it was not part
of file finder displayed history anymore because this file doesn't exist
anymore but the entity id remains the same.
I was also to reproduce this bug when just renaming a file.

Release Notes:

- Fixed: Display duplicated file in file finder history

---------

Signed-off-by: Benjamin <5719034+bnjjj@users.noreply.github.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>

Coenen Benjamin , Conrad Irwin , and Lukas Wirth created

58cec41 Adjust terminal decorative character ranges to include missing Powerline characters (#42043)

Click to expand commit body
Closes #41975.

This change adjusts some of the ranges which were incorrectly labeled or
excluded characters. The new ranges include three codepoints which are
not assigned in Nerd Fonts. However, one of these codepoints were
already included prior to this change. These codepoints are:

- U+E0C9, between the two ice separators
- U+E0D3, between the two trapezoid separators. The ranges prior to this
PR already included this one.
- U+E0D5, between the trapezoid separators and the inverted triangle
separators

I included these so as to not overcomplicate the ranges by
cherry-picking the defined codepoints. That being said, if we're okay
with this and an additional unassigned codepoint (U+E0CB, between ice
separators and honeycomb separators) being included then a simple range
from 0xE0B0 to 0xE0D7 nicely includes all of the Powerline characters.

I wasn't sure how to write tests for this so I just added two characters
to the existing tests which were previously not covered lol. All of the
Powerline characters can be seen
[here](https://www.nerdfonts.com/cheat-sheet) by searching `nf-pl`.

Release Notes:

- Fixed certain Powerline characters incorrectly having terminal
contrast adjustment applied.

Lemon created

2ec5ca0 Fix generate release notes script on first stable (#42061)

Click to expand commit body
Don't crash in generate-release-notes on the first stable
commit on a branch.

Release Notes:

- N/A

Conrad Irwin created

f8da550 Refresh zed.dev releases page after releases (#42060)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

0b1d3d7 git: Fix pull failing when tracking remote with different branch name (#41768)

Click to expand commit body
Closes #31430

Release Notes:

- Fixed git pull failing when tracking remote with different branch name

Here's a before/after comparison when `dev` branch has upstream set to
`origin/main`:


https://github.com/user-attachments/assets/3a47e736-c7b7-4634-8cd1-aca7300c3a73

Mayank Verma created

930b489 ci: Don't require protobuf and postgres checks for tests_pass for now (#42057)

Click to expand commit body
For now, there are cases where we want to merge PRs (advisedly) even
though these checks fail.

Release Notes:

- N/A

Cole Miller created

121cee8 git: Add cursor pointer on last commit to check changes (#41960)

Click to expand commit body
Release Notes:
-  Improved visual cue on git panel ui to check previous commit changes 

Before: 
<img width="1470" height="956" alt="Screenshot 2025-11-05 at 2 06 49 pm"
src="https://github.com/user-attachments/assets/b8c54bb6-c8b8-4d36-a14f-71d725ed68f2"
/>

After:
<img width="1470" height="956" alt="Screenshot 2025-11-05 at 2 06 24 pm"
src="https://github.com/user-attachments/assets/d8d96f9e-ceed-4c02-9f93-de9fd3dfcbf1"
/>

Delvin created

5360dc1 Refactor timestamp formatting in Git UI components to use `chrono` for local time calculations (#41005)

Click to expand commit body
- Updated `blame_ui.rs`, `branch_picker.rs`, `commit_tooltip.rs`, and
`commit_view.rs` to replace the previous timestamp formatting with
`chrono` for better accuracy in local time representation.
- Introduced `chrono::Local::now().offset().local_minus_utc()` to obtain
the local offset for timestamp formatting.

Closes #40878

Release Notes:
- Improved timestamp handling in various Git UI components for enhanced
user experience.

Viraj Bhartiya created

6986279 docs: Improve content in /ai/agent-panel and /ai/rules (#42055)

Click to expand commit body
- Clarify about first-party supported features in external agents
- Create new section for selection as context for higher visibility
- Add keybindings for agent profiles
- Fix outdated setting using `assistant` instead of `agent`
- Add keybinding for accessing the rules library

Release Notes:

- N/A

Danilo Leal created

284d8f7 Support Forgejo and Gitea avatars in git blame (#41813)

Click to expand commit body
Part of #11043.

Codeberg is a public instance of Forgejo, as confirmed by the API
documentation at https://codeberg.org/api/swagger. Therefore, I renamed
the related component from codeberg to forgejo and added codeberg.org as
a public instance.

Furthermore, to optimize request speed for the commit API, I set
`stat=false&verification=false&files=false`.

<img width="1650" height="1268" alt="CleanShot 2025-11-03 at 19 57
06@2x"
src="https://github.com/user-attachments/assets/c1b4129e-f324-41c2-86dc-5e4f7403c046"
/>

<br/>
<br/>

Regarding Gitea Support: 

Forgejo is a fork of Gitea, and their APIs are currently identical
(e.g., for getting avatars). However, to future-proof against potential
API divergence, I decided to treat them as separate entities. The
current gitea implementation is essentially a copy of the forgejo file
with the relevant type names and the public instance URL updated.

Release Notes:

- Added Support for Forgejo and Gitea avatars in git blame

ᴀᴍᴛᴏᴀᴇʀ created

f824e93 docs: Remove non-existing keybinding in /visual-customization (#42053)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

e71bc48 docs: Add section about agent servers in /external-agents (#42052)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

64c8c19 gpui: Impl Default for TextRun (#41084)

Click to expand commit body
Release Notes:

- N/A

When I was implementing Input, I often used `TextRun`, but `background`,
`underline` and `strikethrough` were often not used.

So make change to simplify it.

Jason Lee created

622d626 Add agent-servers.md (#41609)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>

Richard Feldman and Danilo Leal created

7144810 Fix macOS new window stacking (#38683)

Click to expand commit body
Closes #36206 

Disclaimer: I did use AI for help to end up with this proposed solution.
😅

## Observed behavior of native apps on macOS (like Safari)

I first did a quick research on how Safari behaves on macOS, and here's
what I have found:

1. Safari seems to position new windows with an offset based on the
currently active window
2. It keeps opening new windows with an offset until the new window
cannot fit the display bounds horizontally, vertically or both.
3. When it cannot fit horizontally, the new window opens at x=0
(y=active window's y)
4. When it cannot fit vertically, the new window opens at y=0 (x=active
window's x)
5. When it cannot fit both horizontally and vertically, the new window
opens at x=0 and y=0 (top left).
6. At any moment if I activate a different Safari window, the next new
window is offset off of that
7. If I resize the active window and open a new window, the new window
has the same size as the active window

So, I implemented the changes based on those observations.

I am not sure if touching `gpui/src/window.rs` is the way to go. I am
open to feedback and direction here.

I am also not sure if making my changes platform (macOS) specific, is
the right thing to do. I reckoned that Linux and Windows have different
default behaviors, and the original issue mentioned macOS. But,
likewise, I am open to take a different approach.

## Tests

I haven't included tests for such change, as it seems to me a bit
difficult to properly test this, other than just doing a manual
integration test. But if you would want them for such a change, happy to
try including them.

## Alternative approach

I also did some research on macOS native APIs that we could use instead
of trying to make the calculations ourselves, and I found
`NSWindow.cascadeTopLeftFromPoint` which seems to be doing exactly what
we want, and more. It probably takes more things into consideration and
thus it is more robust. We could go down that road, and add it to
`gpui/src/platform/mac/window.rs` and then use it for new window
creation. Again, if that's what you would do yourselves, let me know and
I can either change the implementation here, or open a new pull request
and let you decide which one would you would like to pursue.

## Video showing the behavior


https://github.com/user-attachments/assets/f802a864-7504-47ee-8c6b-8d9b55474899

🙇‍♂️

Release Notes:

- Improved macOS new window stacking

Petros Amoiridis created

eccdfed gpui: Convert macOS clipboard file URLs to paths for paste (#36848)

Click to expand commit body
- On macOS, pasting now inserts the actual file path when the clipboard
contains a file URL (public.file-url/public.url)
- Terminal paste remains text-only; no temp files or data URLs are
created. If only raw image bytes exist on the clipboard, paste is a
no-op.
- Scope: macOS only; no dependency changes.
- Added a test (test_file_url_converts_to_path) that verifies URL→path
conversion using a unique pasteboard.

Release Notes:

- Improved pasting on macOS: now inserts the actual file path when the
clipboard contains a file URL (enables image paste support for Claude
Code)

Sean Timm created

2664596 gpui: Fix incorrect handling of Function key modifier on macOS (#38518)

Click to expand commit body
On macOS, the Function key is reserved for system use and should not be
used in application code.

This commit updated keystroke matching and key event handling to ignore
the Function key modifier while users are typing or pressing
keybindings.

For some keyboards with compact layout (like my 65% keyboard), there is
no separated backtick key. Esc and it shares the same physical key. To
input backtick, users may press `Fn-Esc`. However, macOS will still
deliver events with Fn key modifier to applications. Cocoa framework can
handle this correctly, which typically ignore the Fn directly. GPUI
should also follow the same rule, otherwise, the backtick key on those
keyboards won't work.

Release Notes:

- Fixed a bug where typing fn-\` on macOS would not insert a `.

Cyandev created

23f2fb6 Run ACP login from same cwd as agent server (#42038)

Click to expand commit body
This makes it possible to do login via things like `cmd: "node", args:
["my-node-file.js", "login"]`

Also, that command will now use Zed's managed `node` instance.

Release Notes:

- ACP extensions can now run terminal login commands using relative
paths

Richard Feldman created

fb2c2c5 Fix windows crash handler (#42039)

Click to expand commit body
Closes #41471

We were killing the crash handler when it received a second copy of any
of the messages, but this GPU specs one is sent on each new window
rather than once at startup. We could gate the sending to only happen
once, but it's simpler to just allow multiple gpu specs messages.

Release Notes:

- N/A

Julia Ryan created

8315fde Fix LSP spawning by resetting exception ports in child processes (#40716)

Click to expand commit body
## Summary

Fixes #36754

This PR fixes an issue where LSPs fail to spawn after the crash handler
is initialized.

## Problem

After PR #35263 added minidump crash reporting, some users experienced
LSP spawn failures. The issue manifests as:
- LSPs fail to spawn with no clear error messages
- The problem only occurs after crash handler initialization
- LSPs work when a debugger is attached, revealing a timing issue

### Root Cause

The crash handler installs Mach exception ports for minidump generation.
Due to a timing issue, child processes inherit these exception ports
before they're fully stabilized, which can block child process spawning.

## Solution

Reset exception ports in child processes using the `pre_exec()` hook,
which runs after `fork()` but before `exec()`. This prevents children
from inheriting the parent's crash handler exception ports.

### Implementation

- Adds macOS-specific implementation of `new_smol_command()` that resets
exception ports before exec
- Calls `task_set_exception_ports` to reset all exception ports to
`MACH_PORT_NULL`
- Graceful error handling: logs warnings but doesn't fail process
spawning if port reset fails

Release Notes:

- Fixed LSPs failing to spawn on some macOS systems

---------

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

Rémi Kalbe and Julia Ryan created

fc87440 Update Windows docs (#41423)

Click to expand commit body
- Document Arm64 support
- Document minimum Windows version requirements

Release Notes:

- N/A

John Tur created

c996ead Update editor data only after real scroll reports (#42035)

Click to expand commit body
Release Notes:

- N/A

Kirill Bulatov created

e8c6c1b agent_ui: Fix how icons from external agents are displayed (#42034)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

b8364d7 node: Move managed runtime to v24 LTS (#41956)

Click to expand commit body
Release Notes:

- Moved managed Node runtime to v24 LTS

versecafe created

7c23ef8 Fix corrupted characters being inserted when Alt is pressed (#42033)

Click to expand commit body
The Alt+Numpad buffer that's maintained by the input stack is getting
corrupted, leading to garbage characters being inserted on keystrokes
like Alt+Up. Disable the automatic handling of Alt+Numpad for now until
the cause of this corruption is understood. The Alt+Numpad input did not
work anyway, so this does not regress anything.

Release Notes:

- windows: Fixed corrupted characters being inserted when Alt is pressed
(preview only)

John Tur created

2f46337 Refactor buffer headers to collapse on click (#42021)

Click to expand commit body
Release Notes:
Updated how clicking on multi-buffer headers works to provide better
control and prevent unexpected navigation:

Clicking the header now collapses/expands the file section instead of
opening the file.
Opening files can be done by clicking the filename or the "Open file"
button on the right side of the header.
Existing shortcuts continue to work: use the left chevron to collapse or
your keyboard shortcut to jump to the file

**Demo:**

https://github.com/user-attachments/assets/dca9ccc5-bd98-416c-97af-43b4e4b2f903

Matt Miller created

feed34c gpui: Add support for rendering SVG from external files (#42024)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>

Danilo Leal and Mikayla Maki created