b3dd515
docs: Fix broken links in docs with lychee (#42404)
Click to expand commit body
Lychee is a [Rust based](https://lychee.cli.rs) async parallel link
checker.
I ran it against the codebase to suss out stale links and fixed those
up.
There's currently 2 remaining cases that I don't know how to resolve:
1. https://flathub.org/apps/dev.zed.Zed - nginx is giving a 502 bad
gateway
2.
https://github.com/zed-industries/zed/actions/workflows/ci.yml/badge.svg
- I don't want to mess with the CI pipeline in this PR.
Once again, I'll punt to the Docs Czar to see if this gets incorporated
into CI later.
---
## Running `lychee` locally:
```
cargo binstall -y lychee
lychee .
```
---
Release Notes:
- N/A
Signed-off-by: mrg <miguelraz@ciencias.unam.mx>
Miguel Raz Guzmán Macedo
created
25489c2
Fix adding a Python virtual environment, may duplicate the "open this dictionary" string when modifying content. (#41840)
Click to expand commit body
Release Notes:
- Fixed an issue when adding a Python virtual environment that may cause
duplicate "open this dictionary" entries
- Trigger condition:
Type `C:\`, delete `\`, then repeatedly add `\`.
-Video
bug:
https://github.com/user-attachments/assets/f68008bb-9138-4451-a842-25b58574493b
fix:
https://github.com/user-attachments/assets/2913b8c2-adee-4275-af7e-e055fd78915f
dDostalker
created
dc372e8
editor: Unfold buffers with selections on edit + Remove selections on buffer fold (#37953)
Click to expand commit body
Closes #36376
Problem:
Multi-cursor edits/selections in multi-buffers view were jumping to
incorrect locations after toggling buffer folds. When users created
multiple selections across different buffers in a multi-buffer view
(like project search results) and then folded one of the buffers,
subsequent text insertion would either:
1. Insert text at wrong locations (like at the top of the first unfolded
buffer)
2. Replace the entire content in some buffers instead of inserting at
the intended cursor positions
3. Create orphaned selections that caused corruption in the editing
experience
The issue seems to happen because when a buffer gets folded in a
multi-buffer view, the existing selections associated with that buffer
become invalid anchor points.
Solution:
1. Selection Cleanup on Buffer Folding
- Added `remove_selections_from_buffer()` method that filters out all
selections from a buffer when it gets folded
- This prevents invalid selections from corrupting subsequent editing
operations
- Includes edge case handling: if all selections are removed (all
buffers folded), it creates a default selection at the start of the
first buffer to prevent panics
2. Unfolding buffers before editing
- Added `unfold_buffers_with_selections()` call in `handle_input()`
ensures buffers with active selections are automatically unfolded before
editing
- This helps in fixing an edge case (covered in the tests) where, if you
fold all buffers in a multi-buffer view, and try to insert text in a
selection, it gets unfolded before the edit happens. Without this, the
inserted text would override the entire buffer content.
- If we don't care about this edge case, we could remove this method. I
find it ok to add since we already trigger buffer unfolding after edits
with `Event::ExcerptsEdited`.
Release Notes:
- Fixed multi-cursor edits jumping to incorrect locations after toggling
buffer folds in multi-buffer views (e.g, project search)
- Multi-cursor selections now properly handle buffer folding/unfolding
operations
- Text insertion no longer occurs at the wrong positions when buffers
are folded during multi-cursor editing
- Eliminated content replacement bugs where entire buffer contents were
incorrectly overwritten
- Added safe fallback behavior when all buffers in a multi-buffer view
are folded
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Alexandre Anício
and
Smit Barmase
created
1c4bb60
gpui: Fix invalid unwrap in windows window creation (#42426)
97100ce
editor: Respect search case sensitivity when selecting occurrences (#42121)
Click to expand commit body
Update how the editor's `select_*` methods work in order to respect the
`search.case_sensitive` setting, or to be overriden by the
`BufferSearchBar` search options.
- Update both the `SearchableItem` and `SearchableItemHandle` traits
with a new `set_search_is_case_sensitive` method that allows callers
to set the case sensitivity of the search
- Update the `BufferSearchBar` to leverage
`SearchableItemHandle.set_search_is_case_sensitive` in order to sync
its case sensitivity options with the searchable item
- Update the implementation of the `SearchableItem` trait for `Editor`
so as to store the argument provided to the
`set_search_is_case_sensitive` method
- Update the way search queries are built by `Editor` so as to rely on
`SearchableItem.set_search_is_case_sensitive` argument, if not `None`,
or default to the editor's `search.case_sensitive` settings
Closes #41070
Release Notes:
- Improved the "Select Next Occurrence", "Select Previous Occurrence"
and "Select All Occurrences" actions in order to respect the case
sensitivity search settings
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Dino
and
Conrad Irwin
created
dcf5614
vim: Sort whole buffer when no range is specified (#42376)
Click to expand commit body
- Introduce a `default_range` field to `VimCommand`, to be optionally
used when no range is specified for the command
- Update `VimCommand.parse` to take into consideration the
`default_range`
- Introduce `CommandRange::buffer` to obtain the `CommandRange` which
corresponds to the whole buffer
- Update the `VimCommand` definitions for both `sort` and `sort i` to
default to the whole buffer when no range is specified
Closes #41750
Release Notes:
- Improved vim's `:sort` command to sort the buffer's content when no
selection is used
Dino
created
46db753
diagnostics: Fix panic due non-sorted diagnostics excerpt ranges (#42416)
1a807a7
terminal: Spawn terminal process on main thread on macos again (#42411)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/42365, follow up to
https://github.com/zed-industries/zed/pull/42234
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Lukas Wirth
created
f90d078
git: Add notification to git clone (#41712)
Click to expand commit body
Adds a simple notification when cloning a repo using the integrated git
clone on Zed. Before this, the user had no feedback after starting the
cloning action.
Demo:
https://github.com/user-attachments/assets/72fcdf1b-fc99-4fe5-8db2-7c30b170f12f
Not sure about that icon I'm using for the animation, but that can be
easily changed.
Release Notes:
- Added notification when cloning a repo from zed
We've had several outages with a proximate cause of "vercel is
complicated",
and auto-update is considered a critical feature; so lets not use vercel
for
that.
Release Notes:
- Auto Updates (and remote server binaries) are now downloaded via
https://cloud.zed.dev instead of https://zed.dev. As before, these URLs
redirect to the GitHub release for actual downloads.
Similar to #42246, we'd like to avoid having Vercel on the critical
path.
https://zed.dev/install.sh is served from Cloudflare by intercepting a
route on that page, so this makes the shell-based install flow vercel independent.
Release Notes:
- `./script/install.sh` will now fetch assets via
`https://cloud.zed.dev/`
instead of `https://zed.dev`. As before it will redirect to GitHub
releases
to complete the download.
Conrad Irwin
created
83e7c21
collab: Remove unused user queries (#42400)
Click to expand commit body
This PR removes queries on users that were no longer being used.
Release Notes:
- N/A
Marshall Bowers
created
e488b6c
agent_ui: Fix issue where MCP extension could not be uninstalled (#42384)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/42312
The issue here was that we assumed that context servers provided by
extensions would always need a config in the settings to be present when
actually the opposite was the case - context servers provided by
extensions are the only context servers that do not need a config to be
in place in order to be available in the UI.
Release Notes:
- Fixed an issue where context servers provided by extensions could not
be uninstalled if they were previously unconfigured.
This is progress toward multi-word snippets (including snippets with
prefixes containing symbols)
Release Notes:
- Removed `trigger` argument in `ShowCompletions` command
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Andrew Farkas
and
Conrad Irwin
created
11b38db
collab: Drop `channel_messages` table and its dependents (#42392)
Click to expand commit body
This PR drops the `channel_messages` table and its
dependents—`channel_message_mentions` and `observed_channel_messages`—as
they are no longer used.
Release Notes:
- N/A
Applications can select a policy for when the app quits using the new
function `Application::with_quit_mode`:
- Only on explicit calls to `App::quit`
- When the last window is closed
- Platform default (former on macOS, latter everywhere else)
Release Notes:
- N/A
John Tur
created
32ec103
collab: Remove unused models left over from chat (#42390)
Click to expand commit body
This PR removes some database models that were left over from the chat
feature.
Release Notes:
- N/A
Marshall Bowers
created
a44fc9a
Rename `ThemeMode` to `ThemeAppearanceMode` (#42279)
Click to expand commit body
There was a TODO in `crates/settings/src/settings_content/theme.rs` to
make this rename.
This PR is just splitting off this change from
https://github.com/zed-industries/zed/pull/40035 to make reviewing that
one a bit easier since that PR is a bit more involved than expected.
Release Notes:
- N/A
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Connor Tsui
created
efcd7f7
Slightly improve completion in settings.json (for lsp.<language-server>.) (#42263)
Click to expand commit body
Document "any-typed" (`serde_json::Value`) "lsp" keys to include them in
json-language-server completions.
The vscode-json-languageserver seems to skip generically typed keys when
offering completion.
For this schema
```
"LspSettings": {
"type": "object",
"properties": {
...
"initialization_options": true,
...
}
}
```
"initialization_options" is not offered in the completion.
The effect is easy to verify by triggering completion inside:
```
"lsp": {
"basedpyright": {
COMPLETE HERE
```
<img width="797" height="215" alt="image"
src="https://github.com/user-attachments/assets/d1d1391c-d02c-4028-9888-8869f4d18b0f"
/>
By adding a documentation string the keys are offered even if they are
generically typed:
<img width="809" height="238" alt="image"
src="https://github.com/user-attachments/assets/9a072da9-961b-4e15-9aec-3d56933cbe67"
/>
---
Note: I did some cursory research of whether it's possible to make
vscode-json-languageserver change behavior without success. IMO, not
offering completions here is a bug (or at minimal should be
configurable)
---
Release Notes:
- N/A
---------
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
Ole Jørgen Brønner
and
Kirill Bulatov
created
aaf2f9d
Ignore "Option as Meta" setting outside of macOS (#42367)
Click to expand commit body
The "Option" key only exists on a Mac. On other operating systems, it is
always expected that the Alt key generates escaped characters.
Fixes https://github.com/zed-industries/zed/issues/40583
Release Notes:
- N/A
John Tur
created
62e3a49
editor: Fix rare panic in wrap map (#39379)
Click to expand commit body
Closes ZED-1SV
Closes ZED-TG
Closes ZED-22G
Closes ZED-22J
This seems to fix the reported error there, but ultimately, this might
benefit from a test to reproduce. Hence, marking as draft for now.
Release Notes:
- Fixed a rare panic whilst wrapping lines.
Finn Evers
created
87d0401
editor: Show relative line numbers for deleted rows (#42378)
Click to expand commit body
Closes #42191
This PR adds support for relative line numbers in deleted hunks. Note
that this only applies in cases where there is a form of relative
numbering.
It also adds some tests for this functionality as well as missing tests
for other cases in line layouting that was previously untested.
Release Notes:
- Line numbers will now be shown in deleted git hunks if relative line
numbering is enabled
Finn Evers
created
2c375e2
agent_ui: Ensure message editor placeholder text is accurate (#42375)
Click to expand commit body
This PR creates a dedicated function for the agent panel message
editor's placeholder text so that we can wait for the agent
initialization to capture whether they support slash commands or not. On
the one (nice) hand, this allow us to stop matching agents by name and
make this a bit more generic. On the other (bad) hand, the "/ for
commands" bit should take a little second to show up because we can only
know whether an agent supports it after it is initialized.
This is particularly relevant now that we have agents coming from
extensions and for them, we would obviously not be able to match by
name.
Release Notes:
- agent: Fixed agent panel message editor's placeholder text by making
it more accurate as to whether agents support slash commands,
particularly those coming from extensions.
Danilo Leal
created
c24f9e4
Try to download wasi-sdk ahead of time (#42377)
Click to expand commit body
This hopefully resolves the lingering test failures on linux,
but also adds some logging just in case this isn't the problem...
Release Notes:
- N/A
---------
Co-authored-by: Ben Kunkle <ben@zed.dev>
Conrad Irwin
and
Ben Kunkle
created
3fbfea4
Support relative paths in LSP & DAP binaries (#42135)
Click to expand commit body
Closes #41214
Release Notes:
- Added support for relative paths in LSP and DAP binaries
---------
Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Julia Ryan <juliaryan3.14@gmail.com>
Andrew Farkas
,
Cole Miller
, and
Julia Ryan
created
Closes #42030
This matches what VSCode and basically also this capture does. However,
the identifier capture was overridden by other captures, hence the need
to be explicit here.
| Before | After |
| - | - |
| <img width="930" height="346" alt="Bildschirmfoto 2025-11-10 um 17 56
28"
src="https://github.com/user-attachments/assets/e938c863-0981-4368-ab0a-a01dd04cfb24"
/> | <img width="930" height="346" alt="Bildschirmfoto 2025-11-10 um 17
54 35"
src="https://github.com/user-attachments/assets/f3b74011-c75c-448a-819e-80e7e8684e92"
/> |
Release Notes:
- Improved lifetime highlighting in Rust using the `lifetime` capture.
Finn Evers
created
ed61a79
agent_ui: Fix history view losing focus when empty (#42374)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/42356
This PR fixes the history view losing focus by simply always displaying
the search editor. I don't think it's too weird to not have it when it's
empty, and it also ends up matching how regular pickers work.
Release Notes:
- agent: Fixed a bug where navigating the agent panel with the keyboard
wouldn't work if you visited the history view and it was empty/had no
entries.
Closes #5344
https://github.com/user-attachments/assets/37ec58b0-7cf6-4eea-9b34-dccf03d3526b
Release Notes:
- Added a setting to stick scopes to the top of the editor
---------
Co-authored-by: KyleBarton <kjb@initialcapacity.io>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Tim Vermeulen
,
KyleBarton
, and
Conrad Irwin
created
Update `GitStore.on_buffer_store_event` so that, when a
`BufferStoreEvent::BufferChangedFilePath` event is received, we check if
there's any diff state for the buffer and, if so, update it according to
the new file path, in case the file exists in the repository.
Closes #40499
Release Notes:
- Fixed issue with git diff tracking when updating a buffer's file from
an untracked to a tracked file
Dino
created
c748b17
zeta2 cli: Cache at LLM request level (#42371)
Click to expand commit body
We'll now cache LLM responses at the request level (by hash of
URL+contents) for both context and prediction. This way we don't need to
worry about mistakenly using the cache when we change the prompt or its
components.
Release Notes:
- N/A
---------
Co-authored-by: Oleksiy Syvokon <oleksiy.syvokon@gmail.com>
Agus Zubiaga
and
Oleksiy Syvokon
created
ddf5937
gpui: Move 'app closing on last window closed' behavior to app-side (#41436)
Click to expand commit body
This commit is a continuation of #36548. As per [mikayla-maki's
Comment](https://github.com/zed-industries/zed/pull/36548#issuecomment-3412140698),
I removed the process management behavior located in GPUI and
reimplemented it in Zed.
Release Notes:
- N/A
---------
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Tryanks
and
Mikayla Maki
created
6e1d86f
fs: Handle io::ErrorKind::NotADirectory in fs::metadata (#42370)
Click to expand commit body
New error variants were stabilized in 1.83, and this might've led to us
mis-handling not-a-directory errors.
Co-authored-by: Dino <dino@zed.dev>
Release Notes:
- N/A
Co-authored-by: Dino <dino@zed.dev>
Piotr Osiewicz
and
Dino
created
a3f04e8
agent_ui: Fix thread history item showing GMT time instead of local time on Windows (#42198)
Click to expand commit body
Closes #42178
Now it's consistent with the DateAndTime path which already does
timezone conversion.
- **Future Work**
Happy to tackle the TODO in `time_format.rs` about implementing native
Windows APIs for proper localized formatting (similar to macOS's
`CFDateFormatter`) as a follow-up.
Release Notes:
- agent: Fixed the thread history item timestamp, which was being shown
in GMT instead of in the user's local timezone on Windows.
Abul Hossain Khan
created
3c81ee6
agent_ui: Allow to configure a default model for profiles through modal (#42359)
Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/39220
This PR allows to configure a default model for a given profile through
the profile management modal.
| Option In Picker | Model Selector |
|--------|--------|
| <img width="1172" height="538" alt="Screenshot 2025-11-10 at 12 24
2@2x"
src="https://github.com/user-attachments/assets/33dfb6f1-f8fd-42f9-b824-3dab807094da"
/> | <img width="1172" height="1120" alt="Screenshot 2025-11-10 at 12
24@2x"
src="https://github.com/user-attachments/assets/50360b0a-fbb1-455e-9cf7-9fa987345038"
/> |
Release Notes:
- N/A
I ran [proselint](https://github.com/amperser/proselint) (recommended by
cURL author [Daniel
Stenberg](https://daniel.haxx.se/blog/2022/09/22/taking-curl-documentation-quality-up-one-more-notch/))
against all the `.md` files in the codebase to see if I could fix some
easy typos.
The tool is noisier than I would like and picking up the overrides to
the default config in a `.proselintrc.json` was much harder than I
expected.
There's many other small nits [1] that I believe are best left to your
docs czar whenever they want to consider incorporating a tool like this
into big releases or CI, but these seemed like small wins for now to
open a conversation about a tool like proselint.
---
[1]: Such nits include
- incosistent 1 or 2 spaces
- "color" vs "colour"
- ab/use of `very`
- awkward or superfluous phrasing.
Release Notes:
- N/A
Signed-off-by: mrg <miguelraz@ciencias.unam.mx>
Extract some of the improvements from to the unified diff prompt from
https://github.com/zed-industries/zed/pull/42171 and adds some other
about how context work to improve the reliability of predictions.
We also now strip the `<|user_cursor|>` marker if it appears in the
output rather than failing.
Release Notes:
- N/A
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Agus Zubiaga
and
Max Brunsfeld
created
42ed032
Fix circular reference issue between EditPredictionButton and PopoverMenuHandle (#42351)
Click to expand commit body
Closes #ISSUE
While working on issue #40906, I discovered that RemoteClient was not
being released after the remote project closed.
Analysis revealed a circular reference between EditPredictionButton and
PopoverMenuHandle.
Dependency Chain: RemoteClient → Project → ZetaEditPredictionProvider →
EditPredictionButton ↔ PopoverMenuHandle
<img width="400" height="300" alt="image"
src="https://github.com/user-attachments/assets/6b716c9b-6938-471a-b044-397314b729d4"
/>
a) EditPredictionButton hold the reference of PopoverMenuHandle
https://github.com/zed-industries/zed/blob/5f8226457ee6e1346a224ae6b0329f014ea883f7/crates/zed/src/zed.rs#L386-L394
b) PopoverMenuHandle hold the reference of Fn which capture
`Entity<EditPredictionButton>`
https://github.com/zed-industries/zed/blob/5fc54986c72f2863645302c5e6a99277f8c38cab/crates/edit_prediction_button/src/edit_prediction_button.rs#L382-L389
https://github.com/zed-industries/zed/blob/a9bc890497f1edaf4f177385cf96785de60e910c/crates/ui/src/components/popover_menu.rs#L376-L384
Release Notes:
- N/A
feeiyu
created
2d84af9
agent: Add ability to set a default_model per profile (#39220)
Click to expand commit body
Split off from https://github.com/zed-industries/zed/pull/39175
Requires https://github.com/zed-industries/zed/pull/39219 to be merged
first
Adds support for `default_model` for profiles:
```
"my-profile": {
"name": "Coding Agent",
"tools": {},
"enable_all_context_servers": false,
"context_servers": {},
"default_model": {
"provider": "copilot_chat",
"model": "grok-code-fast-1"
}
}
```
Which will then switch to the default model whenever the profile is
activated

Release Notes:
- Added `default_model` configuration to agent profile
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
David
and
Danilo Leal
created
7aacc75
Add support for closing window tabs with middle mouse click (#41628)
Click to expand commit body
This change adds support for closing a system window tabs by pressing
the middle mouse button.
It improves tab management UX by matching common tab behavior.
Release Notes:
- Added support for closing system window tabs with middle mouse click.
Abdugani Toshmukhamedov
created
8d63295
Add better labels for completions for ty lsp (#42233)
Click to expand commit body
Verified that this works locally. I modeled it after how basedpyright
and pyright work. Here is a screenshot of what it looks like (issue has
screenshots of the old state):
<img width="593" height="258" alt="Screenshot 2025-11-07 at 2 40 50 PM"
src="https://github.com/user-attachments/assets/5d2371fc-360b-422f-ba59-0a95f2083c87"
/>
Closes #42232
Release Notes:
- python/ty: Code completion menu now shows packages that will be
imported when a given entry is accepted.
Caleb Van Dyke
created
0149de4
git: Fix panic in `git2` due to empty repo paths (#42304)
Click to expand commit body
Fixes ZED-1VR
Release Notes:
- Fixed sporadic panic in git features
Lukas Wirth
created
359160c
git: Add askpass delegate to git-commit handlers (#42239)
Click to expand commit body
In my local setup, I always enforce git-commit signing with GPG/SSH
which automatically enforces `git commit -S` when committing. This
changeset will now show a modal to the user for them to specify the
passphrase (if any) so that they can unlock their private key for
signing when committing in Zed.
<img width="1086" height="948" alt="Screenshot 2025-11-07 at 11 09
09 PM"
src="https://github.com/user-attachments/assets/ac34b427-c833-41c7-b634-8781493f8a5e"
/>
Release Notes:
- Handle automatic git-commit signing by presenting the user with an
askpass modal
Jakub Konka
created
b8081ad
Make it easy to point zeta2 at ollama (#42329)
Click to expand commit body
I wanted to be able to work offline, so I made it a little bit more
convenient to point zeta2 at ollama.
* For zeta2, don't require that request ids be UUIDs
* Add an env var `ZED_ZETA2_OLLAMA` that sets the edit prediction URL
and model id to work w/ ollama.
Release Notes:
- N/A
Max Brunsfeld
created
35c5815
git: Fix support for self-hosted Bitbucket (#42002)
Click to expand commit body
Closes #41995
Release Notes:
- Fixed support for self-hosted Bitbucket