ea85f90
docs: Fix small typo in docs for Snippets (#43238)
Click to expand commit body
Happened to notice this typo while going through the docs.
Release Notes:
- N/A
---
💖
Kunall Banerjee
created
1ce58a8
zed: Allocate more rayon threads depending on available parallelism (#43235)
Click to expand commit body
While zed itself is not a heavy user of rayon, wasmtime is, especially
for compilation. This change is similar to the rayon default but we
halve the number of threads still so we don't spawn too many threads
overall.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Closes https://github.com/zed-industries/zed/issues/14639
## Release Notes:
Various improvements to the Jetbrains keymap. Added various missing
keyboard shortcuts that I use on a daily basis in Jetbrains, and changed
a few which were present in the keymap but mapped to the wrong behavior.
### Added:
- Added various missing keybindings for Jetbrains keymap
- `ctrl-n` → `project_symbols::Toggle`
- `ctrl-alt-n` → `file_finder::Toggle` (open project files)
- `ctrl-~` → `git::Branch`
- `ctrl-\` → `assistant::InlineAssist`
- `ctrl-space` → `editor::ShowCompletions`
- `ctrl-q` → `editor::Hover`
- `ctrl-p` → `editor::ShowSignatureHelp`
- `ctrl-f5` → `task::Rerun`
- `shift-f9` → `debugger::Start`
- `shift-f10` → `task::Spawn`
- Added macOS equivalents for all of the above, however I only have a
Linux machine so I have not tested the mac bindings. The binding are
generally the same except `ctrl → cmd` with few exceptions.
- `cmd-j` → `editor::Hover`
### Fixed:
- Several incorrectly mapped keybindings for the Jetbrains keymap
- `ctrl-alt-s` → `editor::OpenSettings` (was `editor::OpenSettingsFile`)
- `ctrl-alt-b` → `editor::GoToImplementation` (was
`editor::GoToDefinitionSplit`)
- `alt-left` → `pane::ActivatePreviousItem`
- `alt-right` → `pane::ActivateNextItem`
- `ctrl-k` now opens the Git panel. I believe this was commented out
because of a bug where focus is not given to the commit message text
box, but imo the current behavior of not doing anything at all feels
more confusing/frustrating to a Jetbrains user (projecting a little
here, happy to revert).
jtaub
created
0a6cb61
Fix `connect.host` setting being ignored by debugpy (#43190)
Click to expand commit body
Closes #42727
Unfortunately we can only support IPv4 addresses right now because
`TcpArguments` only supports an IPv4 address. I'm not sure how difficult
it would be to lift this limitation.
Release Notes:
- Fixed `connect.host` setting being ignored by debugpy
Co-authored-by: Cole Miller <cole@zed.dev>
Andrew Farkas
and
Cole Miller
created
e2f6422
language: Move language server update to background when it takes too long (#43164)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/42360
If updating a language server takes longer than 10 seconds, we now fall
back to launching the currently installed version (if exists) and
continue downloading the update in the background.
Release Notes:
- Improved language server updates for slow connection, now Zed launches
existing server if the update is taking too long.
---------
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Smit Barmase
and
Piotr Osiewicz
created
bb514c1
macOS: Enumerate GPUs first; prefer low-power non-removable; fall back to system default (#38164)
Click to expand commit body
Problem: Some macOS environments report no devices via
MTLCopyAllDevices, causing startup failure with “unable to access a
compatible graphics device,” especially on Apple Silicon.
Change: Prefer MTLCreateSystemDefaultDevice
(metal::Device::system_default()) first. If None, enumerate devices and
select a non‑removable, low‑power device by preference.
Why this works: On Apple Silicon the system default is the unified GPU;
on Intel, the fallback keeps a stable policy and avoids accidentally
picking removable/high‑power devices.
Impact: Fixes startup on affected ASi systems; improves selection
consistency on Intel multi‑GPU. Behavior unchanged where
system_default() succeeds.
Risk: Low. Aligns with Apple’s recommended selection path. Still fails
early with a clearer message if no Metal devices exist.
Closes #37689.
Release Notes:
- Fixed: Startup failure on some Apple Silicon machines when Metal
device enumeration returned no devices by falling back to the system
default device.
---------
Co-authored-by: 张小白 <364772080@qq.com>
Co-authored-by: Kate <work@localcc.cc>
They're flakier than phyllo dough, and not nearly as delicious
Release Notes:
- N/A
Conrad Irwin
created
b3ebcef
gpui: Only time out multi-stroke bindings when current prefix matches (#42659)
Click to expand commit body
Part One for Resolving #10910
### Summary
Typing prefix (partial keybinding) will behave like Vim. No timeout
until you either finish the sequence or hit Escape, while ambiguous
sequences still auto-resolve after 1s.
### Description
This follow-up tweaks the which-key system first part groundwork so our
timeout behavior matches Vim’s expectations. Then we can implement the
UI part in the next step (reference latest comments in
https://github.com/zed-industries/zed/pull/34798)
- `DispatchResult` now reports when the current keystrokes are already a
complete binding in the active context stack (`pending_has_binding`). We
only start the 1s flush timer in that case. Pure prefixes or sequences
that only match in other contexts—stay pending indefinitely, so
leader-style combos like `space f g` no longer evaporate after a second.
- `Window::dispatch_key_event` cancels any prior timer before scheduling
a new one and only spawns the background flush task when
`pending_has_binding` is true. If there’s no matching binding, we keep
the pending keystrokes and rely on an explicit Escape or more typing to
resolve them.
Release Notes:
- Fixed multi-stroke keybindings so only ambiguous prefixes auto-trigger
after 1 s; unmatched prefixes now stay pending until canceled, matching
Vim-style leader behavior.
Xipeng Jin
created
2b9eeb9
Disable keychain timeout in bundle-mac (#43204)
Click to expand commit body
Attempt to reduce the number of times bundle-mac fails to notorize by
disabling
keychain's auto-lock timeout
Release Notes:
- N/A
Conrad Irwin
created
07d9898
Make the edit prediction status bar menu work correctly when using sweep (#43203)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Ben Kunkle <ben@zed.dev>
Max Brunsfeld
and
Ben Kunkle
created
8bbd101
ci: Run `check_docs` when code changes (#43188)
dbdc501
Fix casing in comments in `default.json` (#43201)
Click to expand commit body
This PR fixes the casing of the operating system names in the
language-specific sections of `default.json`.
This files serves as documentation for users (since it can be viewed
through `zed: open default settings`), so we should make sure it is
tidy.
Release Notes:
- N/A
Marshall Bowers
created
898c133
Simplify error management in stream_completion (#43035)
Click to expand commit body
This PR simplifies error and event handling by removing the
`Ok(LanguageModelCompletionEvent::Status(CompletionRequestStatus::Failed)))`
state from the stream returned by `LanguageModel::stream_completion()`,
by changing it into an `Err(LanguageModelCompletionError)`. This was
done by collapsing the valid `CompletionRequestStatus` values into
`LanguageModelCompletionEvent`.
Release Notes:
- N/A
---------
Co-authored-by: Michael Benfield <mbenfield@zed.dev>
Mikayla Maki
and
Michael Benfield
created
659169f
Add codegen_ranges function in inline_assistant.rs (#43186)
Click to expand commit body
Just a simple refactor.
Release Notes:
- N/A
---------
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: Richard Feldman <oss@rtfeldman.com>
Michael Benfield
,
Mikayla Maki
, and
Richard Feldman
created
361fcc5
Make search field in panels be at the top (#43200)
Click to expand commit body
This mostly affects the collab and outline panels for now. It has always
been a bit weird that the search field was at the bottom of the panel,
even more so because in both cases, you can _arrow down_ to start
navigating the list with your keyboard. So, with the search at the
bottom, you'd arrow down and get to the top of the list, which was very
strange. Now, with it at the top, it not only looks better but it is
also more generally consistent with other surfaces in the app, like
pickers, the settings UI, rules library, etc. Most search fields are
always at the top.
<img width="800" height="1830" alt="image"
src="https://github.com/user-attachments/assets/3e2c3b8f-5907-4d83-8804-b3fc77342103"
/>
Release Notes:
- N/A
Danilo Leal
created
9667d78
extensions_ui: Improve error message when extensions fail to load (#43197)
Click to expand commit body
<img width="500" height="1902" alt="Screenshot 2025-11-20 at 6 12@2x"
src="https://github.com/user-attachments/assets/daa5b020-17c8-4398-a64a-d691c566d6e7"
/>
Release Notes:
- extensions UI: Improved the feedback message for when extensions are
not being displayed due to a fetch error caused by lack of connection.
Danilo Leal
created
6adb0f4
agent_ui: Improve UI for the feedback container (#43195)
Click to expand commit body
Improves a previously weird wrapping and simplify the UI by adding the
meta text inside the tooltip itself.
https://github.com/user-attachments/assets/9896d4a2-6954-4e61-9b77-864db8f2542a
Release Notes:
- N/A
The WM_DPICHANGED suggested RECT is calculated for non-maximized
windows. When a maximized window's DPI changes, we now query the
monitor's work area directly to ensure the window correctly fills the
entire screen.
For non-maximized windows, the original behavior using the
system-suggested RECT is preserved.
Release Notes:
- windows: Fixed maximized window size when DPI scale changes
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu
created
6899448
Remove `prompt-caching-2024-07-31` beta header for Anthropic AI (#43185)
Click to expand commit body
Closes #42715
Release Notes:
- Remove `prompt-caching-2024-07-31` beta header for Anthropic AI
Co-authored-by: Cole Miller <cole@zed.dev>
Andrew Farkas
and
Cole Miller
created
28ef745
gpui: #[inline] some trivial functions (#43189)
Click to expand commit body
These appear in a lot of stacktraces (especially on windows) despite
them being plain forwarding calls.
Also removes some intermediate calls within gpui that will only turn
into more unnecessary compiler work.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Lukas Wirth
created
7e341bc
Support bracket colorization (rainbow brackets) (#43172)
Click to expand commit body
Deals with https://github.com/zed-industries/zed/issues/5259
Highlights brackets with different colors based on their depth.
Uses existing tree-sitter queries from brackets.scm to find brackets,
uses theme's accents to color them.
https://github.com/user-attachments/assets/cc5f3aba-22fa-446d-9af7-ba6e772029da
1. Adds `colorize_brackets` language setting that allows, per language
or globally for all languages, to configure whether Zed should color the
brackets for a particular language.
Disabled for all languages by default.
2. Any given language can opt-out a certain bracket pair by amending the
brackets.scm like `("\"" @open "\"" @close) ` -> `(("\"" @open "\""
@close) (#set! rainbow.exclude))`
3. Brackets are using colors from theme accents, which can be overridden
as
```jsonc
"theme_overrides": {
"One Dark": {
"accents": ["#ff69b4", "#7fff00", "#ff1493", "#00ffff", "#ff8c00", "#9400d3"]
}
},
```
Release Notes:
- Added bracket colorization (rainbow brackets) support. Use
`colorize_brackets` language setting to enable.
---------
Co-authored-by: MrSubidubi <dev@bahn.sh>
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: MrSubidubi <finn@zed.dev>
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Kirill Bulatov
,
MrSubidubi
,
Lukas Wirth
,
MrSubidubi
,
Lukas Wirth
, and
Smit Barmase
created
e6e5ccb
ui: Render fallback icon for avatars that failed to load (#43183)
Click to expand commit body
Before we were simply not rendering anything which could lead to some
very surprising situations when joining channels ...
Now it will look like so
<img width="147" height="50" alt="image"
src="https://github.com/user-attachments/assets/13069de8-3dc0-45e1-b562-3fe81507dd87"
/>
Release Notes:
- Improved rendering of avatars that failed to load by rendering a
fallback icon
Lukas Wirth
created
d6d967f
Re-resolve anchor before applying AI inline assist edits (#43103)
Click to expand commit body
Closes #39088
Release Notes:
- Fixed AI assistant edits being scrambled when file was modified while
it was open
--
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Andrew Farkas
and
Conrad Irwin
created
18f14a6
vim: Fix paste action for visual modes (#43031)
Click to expand commit body
Closes #41810
Release Notes:
- Fixed paste not working correctly in vim visual modes
Adrian
created
58fe19d
project search: Skip loading of gitignored paths when their descendants will never match an inclusion/exclusion query (#42968)
Click to expand commit body
Co-authored-by: dino <dinojoaocosta@gmail.com>
Related-to: #38799
Release Notes:
- Improved project search performance with "Also search files ignored by
configuration" combined with file inclusion/exclusion queries.
---------
Co-authored-by: dino <dinojoaocosta@gmail.com>
Piotr Osiewicz
and
dino
created
2a40dcf
acp: Support specifying settings for extensions (#43177)
Click to expand commit body
This allows you to specify default_model and default_mode for ACP
extensions, e.g.
```
"auggie": {
"default_model": "gpt-5",
"default_mode": "default",
"type": "extension"
},
```
Release Notes:
- Added support for specifying settings for ACP extensions
(`default_mode`, `default_model`)
Bennet Bo Fenner
created
a5c3267
extensions: Add `-` as linked edit character for HTML (#43179)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/43060
Release Notes:
- Fixed issue where typing in custom HTML tag would not complete
subsequent end tag for `-` character.
Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
Smit Barmase
and
Kunall Banerjee
created
5ef6402
editor: Ensure all menus and popups are dismissed (#43169)
Click to expand commit body
While investigating a bug report that, in Helix mode, pressing the
`escape` key would only hide the signature help popup and not the
completions menu, when `auto_signature_help` was enabled, it was noted
that the `editor::Editor.dismiss_menus_and_popups` method was not
dismissing all possible menus and popups and was, instead, stopping as
soon as a single menu or popup was dismissed.
From the name of the method it appears that we actually want to dismiss
all so this commit updates it as such, ensuring that the bug reported is
also fixed.
Closes #42499
Release Notes:
- Fixed issue with popups and menus not being dismissed while using
`auto_signature_help` in Helix Mode
We're not using it anywhere anymore, so I think we can clean it up now.
This was a somewhat specific component we did for the sake of
Onboarding, but it ended up being removed.
Release Notes:
- N/A
56401fc
debugger: Allow users to include PickProcessId in debug tasks and resolve Pid (#42913)
Click to expand commit body
Closes #33286
This PR adds support for Zed's `$ZED_PICK_PID` command in debug
configurations, which allows users to select a process to attach to at
debug time. When this variable is present in a debug configuration, Zed
automatically opens a process picker modal.
Follow up for this will be integrating this variable in the task system
instead of just the debug configuration system.
Release Notes:
- Added `$ZED_PICK_PID` variable for debug configurations, allowing
users to select which process to attach the debugger to at runtime
---------
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Per
https://github.com/zed-industries/zed/discussions/23371#discussioncomment-13533635,
the issue is not new and I don't know how to solve the problem more
holistically yet.
All of the native themes don't have spec for `@diff.plus` and
`@diff.minus` leaving addition and deletion not being highlighted. For
diff file, the most valuable highlighting comes from exactly what we're
missing. Hence, I think this is worth fixing.
Perhaps, the ideal fix would be standardizing and documenting captures
such as `@diff.plus` and `@diff.minus` on
https://zed.dev/docs/extensions/languages#syntax-highlighting for theme
writers to adopt. But the existing list of captures seems to be
language-agnostic so I'm not sure if that's the best way forward.
Per
https://github.com/the-mikedavis/tree-sitter-diff/pull/18#issuecomment-2569785346,
`tree-sitter-diff`'s author prefers using `@keyword` and `@string` so
that `tree-sitter highlight` can work out of the box. So it seems to be
an ok choice for Zed.
Another approach is just adding `@diff.plus` and `@diff.minus` to the
native themes. Let me know if I should pursue this instead.
Before
<img width="668" height="328" alt="Screenshot 2025-09-18 at 11 16 14 AM"
src="https://github.com/user-attachments/assets/d9a5b3b5-b9ef-4e74-883f-831630fb431e"
/>
After
<img width="1011" height="404" alt="Screenshot 2025-09-18 at 12 11
15 PM"
src="https://github.com/user-attachments/assets/9cf453c0-30df-4d17-99e9-f2297865f12a"
/>
<img width="915" height="448" alt="Screenshot 2025-09-18 at 12 12 14 PM"
src="https://github.com/user-attachments/assets/9e7438a6-9009-4136-b841-1f8e1356bc9b"
/>
Closes https://github.com/zed-industries/extensions/issues/490
Release Notes:
- Fixed highlighting for addition and deletion for diff language
---------
Co-authored-by: MrSubidubi <finn@zed.dev>
Vinh Tran
and
MrSubidubi
created
61f512a
Move protobuf action to default linux runner (#43085)
dd5482a
docs: Update developing extension docs for updating specific submodule (#42548)
Click to expand commit body
Release Notes:
- N/A
Arun Chapagain
created
9094eb8
git: Compress diff for commit message generation (#42835)
Click to expand commit body
This PR compresses diff capped at 20000 bytes by:
- Truncation of all lines to 256 chars
- Iteratively removing last hunks from each file until size <= 20000
bytes.
Closes #34486
Release Notes:
- Improved: Compress large diffs for commit message generation (thanks
@11happy)
---------
Signed-off-by: 11happy <soni5happy@gmail.com>
Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
Bhuminjay Soni
and
Oleksiy Syvokon
created
29f9853
svg_preview: Remove unnecessary dependency on editor (#43147)
Click to expand commit body
Editor is a choke point in our compilation graph while also being a very
common crate that is being edited. So reducing things that depend on it
will generally improve compilation times for us.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Lukas Wirth
created
1e45c99
Improve readability of files in the git changes panel (#41857)
Click to expand commit body
Closes _unknown_
<img width="1212" height="463" alt="image"
src="https://github.com/user-attachments/assets/ec00fcf0-7eb9-4291-b1e2-66e014dc30ac"
/>
This PR places the file_name before the file_path so that when the panel
is slim it is still usable, mirrors the behaviour of the file picker
(cmd+P)
Release Notes:
- Improved readability of files in the git changes panel
Aaron Saunders
created
28f5097
agent_ui: Add support for setting a model as the default for external agents (#43122)
Click to expand commit body
This PR builds on top of the `default_mode` feature where it was
possible to set an external agent mode as the default if you held a
modifier while clicking on the desired option. Now, if you want to have,
for example, Haiku as your default Claude Code model, you can do that.
This feature adds parity between external agents and Zed's built-in one,
which already supported this feature for a little while.
Note: This still doesn't work with external agents installed from
extensions. At the moment, this is limited to Claude Code, Codex, and
Gemini—the ones we include out of the box.
Release Notes:
- agent: Added the ability to set a model as the default for a given
built-in external agent (Claude Code, Codex CLI, or Gemini CLI).
Motivated by user feature requests
* https://github.com/zed-industries/zed/issues/6880
* https://discord.com/channels/869392257814519848/1439453067119562793
In analogy with VSCode functionality, we're adding a keybinding to the
project panel.
This is particularly for useful for large monorepos.
Release Notes:
- Keybinding added for `CollapseAllEntries` when in the `ProjectPanel`.
Co-authored-by: mikayla <mikayla@zed.dev>
Miguel Raz Guzmán Macedo
and
mikayla
created
5052a46
vim: Fix increment panicking due to invalid utf8 offsets (#43101)
Click to expand commit body
Fixes ZED-3ER
Release Notes:
- Fixed a panic when using vim increment on a multibyte character
This PR removes basically all of the component stories, with the
exception of the context menu, which is a bit more intricate to set up.
All of the component that won't have a story after this PR will have an
entry in the Component Preview, which serves basically the same purpose.
Release Notes:
- N/A
Danilo Leal
created
ba59626
ui: Remove the `ToggleButton` component (#43115)
Click to expand commit body
This PR removes the old `ToggleButton` component, replacing it with the
newer `ToggleButtonGroup` component in the couple of places that used to
use it. Ended up also adding a few more methods to the newer toggle
button group so the UI for the extensions page and the debugger main
picker didn't get visually impacted much. Then, as I was already in the
extensions page, decided to bake in some reasonably small UI
improvements to it as well.
Release Notes:
- N/A
Danilo Leal
created
1fab43d
Allow styling the container of markdown elements (#43107)
Click to expand commit body
Closes #43033
Release Notes:
- FIxed an issue where the padding on info popovers would overlay text
when the content was scrollable.
Finn Evers
created
f2f40a5
zeta2: Merge Sweep and Zeta2 Providers (#43097)
c70f2d1
lsp_button: Do not surface language servers from different windows in current workspace (#42733)
Click to expand commit body
This led to a problem where we'd have a zombie entries in LSP dropdown
because they were treated as if they originated from an unknown
worktree.
Closes #42077
Release Notes:
- Fixed LSP status list containing zombie entries for LSPs in other
windows
---------
Co-authored-by: HactarCE <6060305+HactarCE@users.noreply.github.com>
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Piotr Osiewicz
,
HactarCE
, and
Kirill Bulatov
created
This PR introduces a new `MultiBufferOffset` new type wrapping size. The
goal of this is to make it clear at the type level when we are
interacting with offsets of a multi buffer versus offsets of a language
/ text buffer. This improves readability of things quite a bit by making
it clear what kind of offsets one is working with while also reducing
accidental bugs by using the wrong kin of offset for the wrong API.
This PR also uncovered two minor bugs due to that.
Does not yet introduce the MultiBufferPoint equivalent, that is for a
follow up PR.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Lukas Wirth
created
5e21457
Fix panic in the git panel when toggling `sort_by_path` (#43074)
Click to expand commit body
We call `entry_by_path` on the `bulk_staging` anchor entry at the
beginning of `update_visible_entries`, but in the codepath where
`sort_by_path` is toggled on or off, we clear entries without clearing
`bulk_staging` or counts, causing that `entry_by_path` to do an out of
bounds index. Fixed by clearing `bulk_staging` as well.
Release Notes:
- N/A