08646f1
Also preserve ACP config options (model, permissions) across worktree creation
Richard Feldman created
08646f1
Also preserve ACP config options (model, permissions) across worktree creation
Richard Feldman created
d5a6823
Preserve selected agent when starting thread in new worktree
When the user selected a custom agent (e.g. Codex) and chose 'Start Thread in New Worktree', the new workspace's panel ignored the selection and defaulted to Zed Agent. The fix captures self.selected_agent() in handle_worktree_creation_requested before the async task, passes it through to setup_new_workspace, and forwards it to external_thread instead of None.
Richard Feldman created
cbc3966
Remove std::fs::read_link in fs (#50974)
Closes #46307 Before you mark this PR as ready for review, make sure that you have: - [ ] Added a solid test coverage and/or screenshots from doing manual testing - [X] Done a self-review taking into account security and performance aspects - [ ] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - Improved compatibility with mounted VHDs on Windows. --------- Co-authored-by: John Tur <john-tur@outlook.com>
Alex Mihaiuc and John Tur created
8a7daea
ep: Ensure prompt is always within token limit (#51529)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
e482301
http_client: Fix GitHub downloads failing if the destination path exists (#51548)
cc https://github.com/zed-industries/zed/pull/45428#issuecomment-4060334728 Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
e79429b
agent_ui: Add more UI refinements to sidebar (#51545)
- Move archive button to the header for simplicity - Hook up the delete button in the archive view - Improve how titles are displayed before summary is generated - Hook up keybinding for deleting threads in both the sidebar and archive view Release Notes: - N/A
Danilo Leal created
80acfff
which-key: Removed some keys from the filter list that were wrongly filtered (#51543)
Closes #49845 Follow up on #50992 Really simple, just removing some vim commands from the filter list that are useful enough to justify not being filtered out. tested to make sure the changes work: <img width="944" height="1123" alt="Screenshot 2026-03-13 at 11 23 52 PM" src="https://github.com/user-attachments/assets/23b2db73-d0e7-413b-aef7-efe62e84b542" /> Before you mark this PR as ready for review, make sure that you have: - [x] Added a solid test coverage and/or screenshots from doing manual testing - [x] Done a self-review taking into account security and performance aspects - [x] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - which-key: fixed filter list for some vim commands
Finn Eitreim created
da8a7e8
markdown: Fix block quote continuation highlighting (#51465)
There is no highlight for block quotes continued on multiple lines
Currently, the ">" on lines 2 and 3 are not highlighted in the same way
as line 1
<img width="291" height="73" alt="image"
src="https://github.com/user-attachments/assets/7a2f2e25-6ee1-40a6-8833-f06ca7ee6ba9"
/>
After this PR,
<img width="249" height="75" alt="image"
src="https://github.com/user-attachments/assets/34a2971f-8061-4d92-ac45-a8043d5d0566"
/>
for this input
```md
> abcd
>
> abcd
```
tree-sitter produces this
```
(document [0, 0] - [3, 0]
(section [0, 0] - [3, 0]
(block_quote [0, 0] - [3, 0]
(block_quote_marker [0, 0] - [0, 2])
(paragraph [0, 2] - [1, 1]
(inline [0, 2] - [0, 6])
(block_continuation [1, 0] - [1, 1]))
(block_continuation [2, 0] - [2, 2])
(paragraph [2, 2] - [3, 0]
(inline [2, 2] - [2, 6])))))
```
the screenshots in #43043 also show this issue
Release Notes:
- Fixed highlighting of block quotes continued over multiple lines in
markdown files
Kurian Jojo created
2b39fba
agent_ui: Mask API key input in Add LLM provider modal (#50379)
Release Notes: - Added Mask API key input in Add LLM provider modal <img width="427" height="430" alt="截屏2026-02-28 17 35 22" src="https://github.com/user-attachments/assets/ae628815-f7df-4ea0-90ea-a23bbd703521" /> --------- Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com> Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Xiaobo Liu and Danilo Leal created
a39201a
acp_thread: Stream in agent text in a more continous manner (#51499)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
28fa947
agent_ui: Enable deleting a thread from the sidebar (#51532)
Currently only available for native threads. Release Notes: - N/A
Danilo Leal created
b7266ba
Fix panic in crease folding (#51531)
Fixes ZED-5BZ Release Notes: - N/A
Conrad Irwin created
ee8ecfa
language_models: Make subscription text exhaustive (#51524)
Closes CLO-493. Release Notes: - N/A
Neel created
8fc880e
ep: Ensure predictions are not refreshed while following (#51489)
Release Notes: - N/A
Ben Kunkle created
0ccdd9b
agent_ui: Auto-expand and then collapse thinking blocks (#51525)
With these newer models that come with different thinking levels, it's become more frequent to want to see what the thinking is outputting. Thus far in Zed, the thinking block would show up automatically collapsed and every time you wanted to see it, you had to expand it manually. This PR changes that by making the thinking block automatically _expanded_ instead, but as soon as it's done, it collapses again. Release Notes: - Agent: Improved visibility of thinking blocks by making them auto-expanded while in progress.
Danilo Leal created
b63a2ab
agent_ui: Fix new thread in location setting renderer and flag (#51527)
Follow up to https://github.com/zed-industries/zed/pull/51384 This PR fixes the settings UI rendering of this setting by adding a default value and also wraps it in the feature flag (only the settings UI rendering), given it's not widely available just yet. Release Notes: - N/A
Danilo Leal created
165c033
seo: Expand /docs/ai/tools examples + cross-link from external-agents (#49758)
Two changes to support pushing `/docs/ai/tools` into the top 10 for "agent tools" (8,900 monthly volume, currently position 11). **`docs/src/ai/tools.md`** — adds a concrete usage example to 7 tools: `diagnostics`, `grep`, `fetch`, `edit_file`, `terminal`, `web_search`, and `subagent`. Each example shows a realistic scenario rather than restating the description. **`docs/src/ai/external-agents.md`** — adds a single sentence cross-linking to `tools.md` after the supported-agents intro paragraph, for users who land on that page looking for what the built-in agent can do.
Katie Geer created
db362f5
extension_ci: Use proper PR description for main repository (#51519)
Release Notes: - N/A (https://tenor.com/view/ironic-star-wars-chode-gif-5274592)
Finn Evers created
55c9498
docs: Add callouts about student plan for usage and spend limits (#51506)
Add details about how student plan differs in token usage and spend limits Release Notes: - N/A *or* Added/Fixed/Improved ...
Katie Geer created
08abc48
glsl: Bump to v0.2.1 (#51517)
This PR bumps the version of the GLSL extension to v0.2.1. Release Notes: - N/A Co-authored-by: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
zed-zippy[bot] and zed-zippy[bot] created
fe7fa37
gpui_macos: Skip IME for Cmd+key events on non-QWERTY layouts (#51394)
Closes #51297 On non-QWERTY layouts, all Cmd+key events are routed through the macOS IME because `key_char` is always `None` when Cmd is held. For certain characters (dead keys like backtick, and non-dead keys like ç), the IME calls `insertText:` instead of `doCommandBySelector:`, consuming the event before it reaches GPUI's keybinding system or macOS system shortcuts. This adds `!platform` to the IME-path condition in `handle_key_event` so Cmd+key events bypass the IME (except when composing). GPUI handles them if a binding matches, otherwise `performKeyEquivalent:` returns `NO` and macOS handles them. **This won't fully fix Cmd+backtick window cycling by itself** because Zed's key_equivalents system maps default keybindings onto the physical backtick key on various layouts. For example, `cmd-'` (ToggleSelectedDiffHunks) maps to the backtick key on Spanish, `cmd-=` (IncreaseBufferFontSize) on Scandinavian layouts, `cmd-"` (ExpandAllDiffHunks) on German/Portuguese/Swiss, and `cmd-}` (ActivateNextItem) on Spanish-ISO. These Zed bindings shadow the backtick key and consume the event before macOS can cycle windows. I'd appreciate guidance on the preferred approach to resolve these keybinding conflicts -- IMO, Zed's default shortcuts should not be interfering with Cmd+backtick for any layout. Release Notes: - Fixed Cmd+key shortcuts being consumed by the IME on non-QWERTY keyboard layouts, preventing Zed keybindings and macOS system shortcuts from working with special characters.
jamarju created
b531c40
glsl/html: Clean up some things (#51516)
Release Notes: - N/A
Finn Evers created
d820b07
extension_ci: Fix main repository version bumps (#51515)
Release Notes: - N/A
Finn Evers created
933923c
docs: Add roles page under Account & Privacy section (#51413)
Add new page detailing the roles available for users in their organizations. Release Notes: - N/A *or* Added/Fixed/Improved ...
Katie Geer created
231b0cc
glsl: Add `task` and `mesh` path suffixes (#50605)
The GLSL language extension was missing the "task" and "mesh" path suffixes for task and mesh shaders. "task" and "mesh" are the official suffixes used in glslang. Release Notes: - N/A Co-authored-by: MrSubidubi <finn@zed.dev>
rcmz and MrSubidubi created
bb6a6e0
ci: Fix jq command (#51510)
Sigh.. The missing flag caused the wrong output to be used, resulting in an error in the process. Release Notes: - N/A
Finn Evers created
ccb2674
extension_ci: Add infrastructure for this repository (#51493)
This will allow us to also use the workflows for this repository, which will especially come in handy once we revisit provider extensions. Not perfect, as we will trigger some failed workflows for extensions that were just added Release Notes: - N/A
Finn Evers created
4e8937b
ui: Refactor the `Button` component icon methods (#51496)
Previously, if you wanted to have a button that contains icons on both
edges, you'd need to use a `ButtonLike` component, which takes any
children. Meanwhile, the `Button` would only take one icon, where you
could control its position through the `IconPosition` enum. This has
always felt unnecessarily limiting. So, this PR removes this limitation
by adding two new methods to the button: `start_icon` and `end_icon`.
In the meantime, I have also been bothered by the unnecessary
indirection in the `IconButton` due to the existence of the `ButtonIcon`
component. So I figured I could also completely eliminate that by adding
some of its methods directly to the `IconButton` and in the Button, just
using a regular `Icon` component.
---
## Before
```rust
Button::new("id", "Label")
.icon(IconName::Plus)
.icon_position(IconPosition::Start)
.icon_size(IconSize::Small)
.icon_color(Color::Muted)
```
## After
```rust
Button::new("id", "Label")
.start_icon(Icon::new(IconName::Check))
.end_icon(Icon::new(IconName::ChevronDown).size(IconSize::XSmall))
```
This should have no visual impact to the UI.
Release Notes:
- N/A
Danilo Leal created
a623dc3
agent_ui: Insert branch diff crease when clicking on menu item (#51509)
Follow up to https://github.com/zed-industries/zed/pull/51487 The PR above added the item to the menu, and this one makes the menu item actually insert a mention crease with the branch diff. That was missing in the previous one. Release Notes: - N/A
Danilo Leal created
f04b4e0
file_finder: Put collab channel inclusion behind a setting (#51505)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
e29206b
Do not overly eagerly invalidate the runnables (#51500)
Follow-up of https://github.com/zed-industries/zed/pull/51299 Release Notes: - N/A
Kirill Bulatov created
e6f571c
gpui: Fix busyloop on X disconnect (#41986)
When the connection to X is broken zed will go into an infinite loop and eat up 100% (of one core) of CPU; this change causes it to exit with an error instead. I encountered this behavior while running zed in [Xephyr](https://freedesktop.org/wiki/Software/Xephyr/) for testing, though I do sometimes terminate my X server as a way to log out or attempt to recover from a (very) broken state, and I appreciate a graceful exit in those situations! Exiting in case of X server disconnect is common practice in my observations, likely as the difficulty of recreating state stored server-side outweighs the potential utility in attempting to recover (if "reconnecting" to an X server is ever desired in regular usage, [Xpra](https://xpra.org/index.html) might be able to help!). Release Notes: - N/A
kitt created
2c0d6c0
project_panel: Add horizontal scroll setting (#51143)
This PR introduces the `project_panel.scrollbar.horizontal_scroll` setting to allow users to toggle the horizontal scroll bar in the project panel. This was Zed's design before PR #18513, and the default behavior of VSCode (`workbench.list.horizontalScrolling`). https://github.com/user-attachments/assets/f633f4e4-a585-4494-8f48-df77c6aca418 ## Rationale Zed's design used to be the same as the default behavior of VSCode. I.e., no horizontal scrolling, and the view is always snapped to the left, with long file names clipped of. If you want to see the content that is out-of-frame, you'll need to drag the handle and expand the project panel. This could be problematic, especially for large repos with multiple levels of nested directories, as pointed out by issues #5550 and #7001. <img width="1398" height="992" alt="image" src="https://github.com/user-attachments/assets/d86563f2-0f06-4e9e-818c-155ac45f0f56" />\ *VSCode's default setup, for reference.* Then came PR #18513, which added horizontal scroll and addressed this pain point, but users didn't have a choice. They're stuck with horizontal scrolling always turned on. I, for instance, personally prefer the old, VSCode-default behavior, for most projects I open are small and don't need horizontal scrolling in the project panel. With horizontal scrolling always turned on, I find it annoying to have my project panel view accidentally scrolled to the middle, and I'll have to grab my mouse and scroll it back. It's also visually redundant. Thus, why not add an option like VSCode's `workbench.list.horizontalScrolling` and let users choose? I'd love to be able to, say, set a per-project override for the projects that need horizontal scrolling, while having it disabled by default. ## Extra Notes - I was originally thinking about using `ScrollbarAxes` from `src/editor_settings.rs` and make the option `project_panel.scrollbar.axes.horizontal` similar to the global editor scrollbar settings, but this option is specific to the project panel and it doesn't quite make sense to allow disabling vertical scrolling on the project panel, so I added a standalone option for it instead, similar to VSCode's `workbench.list.horizontalScrolling`. - I went the conservative route and set horizontal scrolling to enabled (current behavior) by default. Imo it might make more sense to disable it by default instead, similar to VSCode, but I'll leave this for the Zed team to decide. - I named it `horizontal_scroll` instead of `horizontal_scrolling` to be consistent with the adjacent setting `sticky_scroll`. - As for tests, I don't see tests for the scrollbar, so I didn't add any. I'd be glad to update the PR if anything is not inline with the project's requirements or conventions. --- Release Notes: - Added `project_panel.scrollbar.horizontal_scroll` setting to allow toggling horizontal scrolling in the project panel Signed-off-by: k4yt3x <i@k4yt3x.com>
K4YT3X created
bde0834
git: Log some more information when opening a git repository and when `git show` fails (#51495)
Release Notes: - N/A
Cole Miller created
697e5be
git: Fix commit message generation in untrusted projects and block external diff (#51323)
When on a untrusted project, if one was to try and use the commit generation functionality, the command would fail because of the `-c diff.external` configuration provided in `GitBinary::build_command`, as git would interpret this as `""` and try to run that command. This `-c diff.external` is a good safeguard to have on untrusted repositories because it prevents random commands, configured in `.git/config` from being run. For example, if one uses `git config diff.external "touch bananas.txt"` and then run `git diff`, a new `bananas.txt` file would be created. However, it was still possible to bypass this safeguard using the following strategy: 1. Specify a custom diff for a specific file format. For example, for markdown files, with `printf '*.md diff=pwned\n' > .gitattributes` 2. Update the command run by the `pwned` diff, for example, `git config diff.pwned.command "touch bananas.txt"` 3. Open Zed and attempt to generate a commit message in an untrusted repository and check that a new `bananas.txt` file was created This is only prevented by using the `--no-ext-diff` flag on the `diff` command, so a new `GitBinary::build_diff_command` has been introduced which simply wraps `GitBinary::build_command` and adds the `--no-ext-diff` flag, if necessary. As a side-effect, this also makes it so that generating a commit message in an untrusted repository works again, which was accidentally broken on https://github.com/zed-industries/zed/pull/50649 . Before you mark this PR as ready for review, make sure that you have: - [X] Added a solid test coverage and/or screenshots from doing manual testing - [X] Done a self-review taking into account security and performance aspects - [X] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - Fixed commit message generation in untrusted repositories
Dino created
3e7f2e3
agent_ui: Add branch diff menu item to context menu (#51487)
This PR adds the recently introduced "branch diff" mention option to the "Add Context" menu in the message editor: <img width="450" height="582" alt="Screenshot 2026-03-13 at 9 58@2x" src="https://github.com/user-attachments/assets/1f5102e7-9018-4a5b-992d-43befa55dcbe" /> Release Notes: - N/A
Danilo Leal created
b0cc006
ep: Error indication when Mercury free tier limit reached (#51447)
Release Notes: - Added an error indicator in the edit prediction menu with an error message when the free tier limit is exceeded
Ben Kunkle created
7d566e0
extension_ci: Add initial support for extensions in a subdirectory (#51173)
This wil help with releases for extensions living this repository, which will become more relevant once agent provider extensions are back on the table. Release Notes: - N/A
Finn Evers created
46f16c7
docs: Introduce fresh documentation for snippets in extensions (#50874)
Add documentation for snippets in extensions. Feel free to change the wording or add more content. Before you mark this PR as ready for review, make sure that you have: - [ ] Added a solid test coverage and/or screenshots from doing manual testing - [ ] Done a self-review taking into account security and performance aspects - [ ] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - N/A --------- Co-authored-by: Finn Evers <finn.evers@outlook.de>
LBF38 and Finn Evers created
0674324
agent: Fix session close capability check (#51479)
Release Notes: - agent: Fixed an issue where external agents would return an error because unsupported ACP method was called
Bennet Bo Fenner created
6fb9680
agent_ui: Wire up archive entry loading (#51475)
Release Notes: - N/A --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com> Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Ben Brandt , cameron , and Bennet Bo Fenner created
b77c444
editor: Remove unnecessary clone (#51470)
Release Notes: - N/A
Finn Evers created
5ab2d97
Revert "project: Support resolving paths with worktree names prefixed" (#51474)
Reverts zed-industries/zed#50692 The test here doesn't pass, unsure how this managed to even get merged
Lukas Wirth created
3bc4b58
editor: Replace `BreadcrumbText` with `HighlightedText` (#51083)
Remove the BreadcrumbText struct from workspace and use the existing HighlightedText struct from the language crate instead. The per-segment font field is replaced by returning an optional Font alongside the segments from the breadcrumbs() method, since the font was always uniform across all segments of a given item. Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
e4b6286
file_finder: Show collab channels in file search (#51120)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
1285253
project: Support resolving paths with worktree names prefixed (#50692)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
95a9340
lsp: Fix LSP restart breaking semantic token highlighting (#51452)
Closes #51450 When you restart the lsp, it does not sufficiently clear cached data regarding the semantic tokens, if using semantic_tokens = "full", this would mean that you would have no syntax highlighting. also, toggling on and off semantic tokens in the menu would have no effect. this change properly clears the cached state and things work again! Before: https://github.com/user-attachments/assets/67ac1be1-ae3d-4c84-afbc-056fd81f63f0 After: https://github.com/user-attachments/assets/644f8297-8003-4d74-b962-81ba9bb8274c You might notice that the syntax highlighting is quite spare in the videos, especially compared to the non semantic token based highlighting, and you would be correct! but thats just how it is with `semantic_tokens: "full"`, other editors, like neovim, provide basic syntax highlighting that zed doesn't (because it doesn't need to with treesitter usually, but here treesitter is disabled), however if we turn off that syntax highlighting we can see that neovim actually matches zed here: <img width="847" height="485" alt="Screenshot 2026-03-12 at 11 33 19 PM" src="https://github.com/user-attachments/assets/7f90789c-dac3-41bf-9d19-640c6c7b1144" /> Before you mark this PR as ready for review, make sure that you have: - [x] Added a solid test coverage and/or screenshots from doing manual testing - [x] Done a self-review taking into account security and performance aspects - [x] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - lsp: Fixed restarting the LSP breaking semantic token highlighting.
Finn Eitreim created
07cfa81
Grace period for inaccessible workspaces (#50829)
Closes #49603 Release Notes: - Added a 7-day grace period to prevent recently used local workspaces from being deleted when their paths are temporarily unavailable. Session workspaces are always preserved on restart.
Oussama ELJabbari created
7eb009e
editor: Make underscores and newlines subword boundaries (#50552)
Updates #21054 Authored-By: @ngauder Release Notes: - Added _ and newline to subword boundaries --------- Co-authored-by: Nikolas Gauder <nikolas.gauder@tum.de>
Conrad Irwin and Nikolas Gauder created
b8eea31
agent: Add tooltip to diff stats (#51448)
Cameron Mcloughlin created