c842fb5
sidebar: Keyboard nav improvements (and vim mode) (#51856)
Cameron Mcloughlin created
c842fb5
sidebar: Keyboard nav improvements (and vim mode) (#51856)
Cameron Mcloughlin created
fdb769c
sidebar: Fix date formatting (#51851)
Previously we were not showing days Release Notes: - N/A
Bennet Bo Fenner created
5f12c92
Remove edit prediction conflict state (#51842)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ... --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Ben Kunkle and Zed Zippy created
062fca6
auto_update: Add better error context (#51850)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
4ee0bc3
ep: Fix prompt budget computation (#51843)
We now give some room for special tokens. Release Notes: - N/A
Oleksiy Syvokon created
84d70ce
languages: Support more JSON configuration files (#50800)
Several widely used configuration files are JSON but have no `.json` extension, such as `.babelrc` or `.eslintrc`. Editors like VS Code detect these as JSON automatically, but Zed currently treats them as plain text. This change adds common JSON config suffixes so they get proper JSON syntax highlighting. Added: - [`.babelrc`](https://babeljs.io/docs/config-files) - [`.eslintrc`](https://archive.eslint.org/docs/user-guide/configuring/configuration-files) - [`.stylelintrc`](https://stylelint.io/user-guide/configure/) - [`.swcrc`](https://github.com/swc-project/swc/pull/4236) 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 - [ ] 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: - Support more JSON configuration files
Rodrigo created
7ba5315
collab_ui: Add call diagnostics (#51816)
Release Notes: - Added call diagnostics when collaborating with other Zed users in collab. --------- Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Co-authored-by: Piotr Osiewicz <piotr@zed.dev> Co-authored-by: Danilo Leal <danilo@zed.dev>
Jakub Konka , Piotr Osiewicz , Piotr Osiewicz , and Danilo Leal created
00bee45
git_ui: Add starts_open setting to git panel (#51601)
Fixes #51542
Adds a `git_panel.starts_open` setting for parity with `project_panel`.
When set to `true`, the git panel opens automatically in new workspaces
that don't have saved panel state.
The default is `false`, matching current behavior (non-breaking).
### Usage
```json
{
"git_panel": {
"starts_open": true
}
}
```
### Implementation
Follows the same pattern as `project_panel.starts_open`:
1. `GitPanelSettingsContent` - added `starts_open: Option<bool>` to the
settings schema
2. `GitPanelSettings` - added `starts_open: bool` field
3. `GitPanel` Panel impl - overrides `starts_open()` to read from
settings
Release Notes:
- Added `git_panel.starts_open` setting to control whether the git panel
opens automatically in new workspaces (default: false)
---------
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Matt Van Horn , Matt Van Horn , and Claude Opus 4.6 (1M context) created
96a9397
sidebar: Refine how we display status in the thread item (#51840)
Refine the decorated icon as well as adding tooltips for extra clarity. Release Notes: - N/A
Danilo Leal created
4642413
recent_projects: Simplify folder addition affordances (#51841)
The recent projects had two plus buttons inside of it which weren't immediately clear what they did. Those buttons would add a project to the current workspace, which turned out to be _not_ what people expected it would do. Because of this, I removed one of them and swapped the icon of the other, to hopefully make the distinction more clear. <img width="500" height="484" alt="Screenshot 2026-03-18 at 11 59@2x" src="https://github.com/user-attachments/assets/341769fb-771e-450b-8814-a641bd8b63d5" /> Release Notes: - N/A
Danilo Leal created
a245660
gpui_linux: Fix "No Apps Available" dialog when opening URIs on Linux/Wayland (#49752)
Closes #48169 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: - Fixed "No Apps Available" dialog when opening URIs on Linux/Wayland Swaps the order of `open_uri_internal` function: try xdg-open first, and only fall back to the portal if every candidate command fails. Build Tests: I tested the build on Arch Linux & MacOS Tahoe and there were no issues. No error logs when opening repo links.
Taha created
090ef79
ep: Add two new prompt formats (#51836)
V0316 differences from V0306: - Use `<|marker_N|><|marker_N|>` instead of `NO_EDITS` - All intermediate markers are now emitted (should be more friendly to speculative decoding) - No newline padding around marker tags - No git conflict markers; we now use SeedCoder's EOS tag instead V0317 is like V0316, but marker numbers are relative to the cursor block (`<|marker-2|> ... -1 ... -0 ... +1 ... <|marker+2|>`) Release Notes: - N/A
Oleksiy Syvokon created
7b9df57
agent_ui: Clear original agent prompt when creating a new worktree (#51839)
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: - N/A
Anthony Eid created
eb10b8d
Remove `language-extension-version` script (#51838)
This PR removes the `language-extension-version` script and cleans up some of the related documentation around updating extensions, as this is no longer needed and at this point fully automated. Release Notes: - N/A
Finn Evers created
f823601
Bump Zed to v0.230 (#51837)
Release Notes: - N/A
Joseph T. Lyons created
f6fd673
language_models: Apply JSON schema subset transform to xAI (#51835)
The conversations on Grok 4 were failing right away on the first message in a conversation when using Zed provided model directly, but not the xAI API directly. The reason we were seeing this is that when sending the JSON schemas for built-in tools to the cloud API, we didn't use the transform we use for xAI in a BYOK context. The xAI API doesn't support the full JSON schema spec, and specifically for the spawn_agent tool, we were generating a `oneOf` type for a field. Applying that transformation in the cloud case too fixes the issue. Release Notes: - Fixed broken (failing on first message) xAI models over the Zed provider on profiles using the spawn_agent tool, including the default Ask and Write profiles. Co-authored-by: Neel <neel@zed.dev>
Tom Houlé and Neel created
c44f13c
git_ui: Improve delete branch tests to verify underlying repository state (#51825)
While fixing the tests in the previous PR (#48338), I noticed that the `delete_branch` tests only verified the UI state changes rather than the actual state of the underlying repository. Currently, if `delete_branch` were a no-op that returned Ok(), the tests would still pass incorrectly. This PR addresses that gap by ensuring the branch is actually removed from the repository. |Before|After| |--|--| |<img width="3476" height="2564" alt="图片" src="https://github.com/user-attachments/assets/f5c4c5c4-64fe-4074-9fff-fb166d160d77" />|<img width="3476" height="2564" alt="CleanShot 2026-03-18 at 17 51 36@2x" src="https://github.com/user-attachments/assets/47419d37-5051-4139-969e-65a1347bf555" />| 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 - [ ] Aligned any UI changes with the [UI checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) Release Notes: - N/A *or* Added/Fixed/Improved ...
ᴀᴍᴛᴏᴀᴇʀ created
c7870cb
editor: Add align selections action (#44769)
Closes #17090 Hello! This is a feature that I really wanted, so I've created an implementation of it. Hope u guys like it. It was alto mentioned at [this discussion](https://github.com/zed-industries/zed/discussions/30473) The use cases were based on the [vscode extension](https://marketplace.visualstudio.com/items?itemName=yo1dog.cursor-align) (only spaces case was implemented) - The algorithm is O(n + m × 2k), where: - n = total cursors (for initial analysis, to understand how many alignments will be performed) - m = number of alignment columns - k = number of alignment rows (first time to get the most-right occurrence, the next one to create the `Vec` of edits) Release Notes: - Added `editor: align selections` command  <br> Thank you for creating zed! --------- Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Tiago Lobão and Kirill Bulatov created
be3a5e2
open_ai: Support structured OpenAI tool output content (#51832)
Allow function call outputs to carry either plain text or a list of input content items, so image tool results are serialized as image content instead of a raw base64 string. Release Notes: - N/A
Ben Brandt created
eba7cea
sidebar: Load archived threads in the correct window (#51831)
Make sure we don't create a duplicate workspace if it is already open in another window. Release Notes: - N/A --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Ben Brandt and cameron created
3af7b64
vim: Fix visual block Shift-I jumping to original cursor after Ctrl-D scroll (#50822)
Ensure that the `vim::visual::Vim::visual_block_motion` method is called when `scroll_editor` is called while in Visual Block mode. This fixes an issue where, after getting into `Visual Block` mode, if the user used `ctrl-d` or `ctrl-u` to scroll half of the page, the wrong selection would be made and, if `shift-i` was used to start inserting at the start of the line, a single cursor would be placed at the cursor position where the selection was started, instead of one cursor per each of the selected lines. These changes ensure that we now match Neovim's behavior for the same flow. --------- Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com> Co-authored-by: dino <dinojoaocosta@gmail.com>
Xiaobo Liu and dino created
30d3467
extension_ci: Switch back to upstream action (#51829)
This switches the action back to the upstream one where the changes were merged (thanks @\huacnlee for the quick action) Aside from that, it does some minor fixes: It adds the bumper as an assignee on the extensions PR and also ensures we do not try to bump here in the repo for the test extensions. Release Notes: - N/A
Finn Evers created
4d2d076
agent: Collapsed project thread UI indicators (#51824)
Cameron Mcloughlin created
77425aa
agent: Fix `@mention` menu placement (#51817)
Cameron Mcloughlin created
d3f0510
auto_update: Strip pre-release and build metadata from release notes URL (#48570)
Without this fix, the zed.dev server doesn't recognize the version with metadata and redirects to /releases, which defaults to the Stable channel, so Preview users end up seeing Stable release notes. Closes #47539 Changes: - Strip pre and build metadata from the semver version in release_notes_url before constructing the path, so the URL becomes /releases/preview/0.218.0 instead of /releases/preview/0.218.0-beta.1+preview.131.68e98a53. - Standardized the ordering of pre/build clearing to pre-first across all 4 call sites (2 were build-first). Open question: With this fix, the URL now points to the specific version you're running (e.g. /releases/preview/0.218.0). An alternative would be to link to /releases/preview (no version) so users can see all Preview releases, including ones newer than what they have installed. I went with per-version linking since it matches the existing intent of the code, but happy to change it if the team prefers the other approach. Release Notes: - Fixed "View Release Notes" in Preview/Stable opening the wrong release channel page due to build metadata in the URL.
Ruben Fricke created
ed2c08f
git_ui: Fix branch picker deleting remote instead of remote branch (#48338)
Closes #48256 It appears that the current git remotes support was implemented in #42819, following the design described in https://github.com/zed-industries/zed/pull/42486#issuecomment-3524092306. That design does not include an interaction for deleting remotes, but the delete remote branch action was mistakenly implemented as deleting the remote itself. After this PR, there should be no code paths that use `remove_remote` anymore. I've kept it for now though, as it may be useful when we introduce the corresponding interaction in the future. Release Notes: - Fixed a bug where deleting a remote branch from the branch picker would incorrectly remove the entire remote configuration
ᴀᴍᴛᴏᴀᴇʀ created
695e8a9
Add workspace::FocusCenterPane (#46059)
solution for #43004 Release Notes: - Added workspace::FocusCenterPane The `editor::ToggleFocus` action not working really drives me bonkers, and it also doesn't really make sense, because it doesn't toggle anything. it moves focus, but doesn't move focus back anywhere if you run it again so 'ToggleFocus' seems misleading. Here we have added an action that just moves focus to the most recent center pane: `workspace::FocusCenterPane` this action correctly moves the focus to the center pane from any dock, even if the center pane is the project diff, branch diff, terminal, or keymap editor, etc. i'm not sure if this would be considered a 'replacement' for `editor::ToggleFocus` but i do think this is probably more in line with what most users would consider the expected behavior.
Josh P. created
46596a2
python: Upgrade `pet` to improve toolchain discovery in WSL (#51749)
This PR updates the pet dependency to incorporate performance improvements from upstream. Related Upstream Changes: - Issue: microsoft/python-environment-tools#369 - PR: microsoft/python-environment-tools#370 Updating pet reduces toolchain discovery time in WSL environments, specifically when Conda is installed on the host Windows system. In my testing, the time from clicking the toolchain button to the list appearing was reduced by approximately 2 seconds. While this is a notable improvement, discovery in WSL remains slightly slower than in native development or remote Linux environments, where toolchains are typically loaded near-instantaneously. 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 (no need) - [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: - Improved python toolchain discovery under WSL environment
Xin Zhao created
0c9b8fd
git_ui: Avoid blocking main thread during stage/unstage (#47806)
With a large number of files in the git status, pressing stage/unstage could cause a noticeable freeze. The async performance profiler showed that the task spawned inside `change_all_files_stage` blocked the main thread for 300ms+, resulting in a clear and visible UI stall. The main cause was the need to traverse all entries to determine what to stage or unstage, which becomes expensive for large change sets. Same repro as: #47800 Release Notes: - Improved latency of stage/unstage operations
Marco Mihai Condrache created
e6939ad
languages: Recognize module interface file as C++ file (#45968)
https://clang.llvm.org/docs/StandardCPlusPlusModules.html#file-name-requirements, `.cppm`, '.ccm', ".cxxm" files are C++20 module interface files. Release Notes: - Recognize module interface file as C++ file.
Haojian Wu created
81889c2
Clean up multiworkspace (#51794)
Remove old multiworkspace commands and fix a bug where multiworkspaces wouldn't be deserialized from the DB 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: - N/A --------- Co-authored-by: eric <eric@zed.dev>
Mikayla Maki and eric created
8c9fc9f
agent: Fix scrolling selection out of view causes panel to close while zoomed (#51806)
Release Notes: - Fixed an issue in the agent panel where scrolling a selection out of view would cause the panel to close while zoomed
Ben Kunkle created
d04a60e
sidebar: Add some more improvements (#51799)
Follow up to https://github.com/zed-industries/zed/pull/51763 Release Notes: - N/A
Danilo Leal created
f9cb072
sidebar: Improve keyboard navigation (#51796)
- In the project header, arrow keys left and right expand/collapse the group - Enter and space in any thread list item selects the item - Arrow key down from the search editor moves focus to the the list - Arrow key up from the first list item puts focus back to the editor - At any moment while focus on the list, cmd-f moves focus back to the search editor - Made the `FocusWorkspaceSidebar` action always reset focus back to the search editor Release Notes: - N/A
Danilo Leal created
9f3e3be
agent: Improve sidebar design and behavior (#51763)
- Selection/focus improvements (reduces flickers, move selection more correctly throughout the list) - Adds open folder button in the sidebar header - Fixes sidebar header design, including the thread view one, too - Fixes behavior of cmd-n when focused in the sidebar - Changes the design for the "new thread" button in the sidebar and adds a preview of the prompt on it - Rename items in the "start thread in" dropdown Release Notes: - N/A --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Danilo Leal and cameron created
65b80ff
repl: Avoid duplicate kernelspec fetches (#51024)
Switch python_env_kernel_specifications to a buffered stream (using buffer_unordered(4) and filter_map) to run discovery concurrently with a bounded parallelism and skip None results. Closes #50988 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: - N/A
MostlyK created
38b7c76
open_ai: Fix tool output for /responses endpoint (#51789)
We were sending the raw tool debug output as JSON to the model rather than whatever the tool intended as content for the model. Which meant we were sending unneeded information to the model, which matters in the edit tool case. Release Notes: - N/A
Ben Brandt created
5920e22
livekit: Bump livekit version (#51771)
Release Notes: - Fixed segfault at runtime on aarch64-linux when running static constructors.
Jakub Konka created
29403ee
client: Respect the default organization ID from the server (#51777)
This PR updates the `UserStore` to use the `default_organization_id` returned from the server to set the default organization rather than always picking the first one. Closes CLO-530. Release Notes: - N/A
Marshall Bowers created
89c118e
Remove past reviewer (#51767)
Release Notes: - N/A
Joseph T. Lyons created
83adaa5
task: Expose current buffer language as $ZED_LANGUAGE variable (#51614)
Closes #12628
Adds a `$ZED_LANGUAGE` task variable that resolves to the language name
of the active buffer (e.g., "Rust", "Python", "Shell Script"). This lets
tasks adapt behavior based on language without parsing file extensions.
Use cases from the issue:
- Pass syntax highlighting language to external tools (e.g., `rg --type
$ZED_LANGUAGE`)
- Adjust comment wrapping width per language
- Handle extensionless files and untitled buffers that have a language
assigned
VS Code provides equivalent functionality via
`${command:activeEditorLanguageId}`. Neovim exposes it as `&filetype`.
## Changes
- Added `Language` variant to `VariableName` in
`crates/task/src/task.rs`
- Populated from `buffer.language().name()` in
`BasicContextProvider::build_context`
(`crates/project/src/task_inventory.rs`), following the same pattern as
`File` and `Stem`
- Updated test fixtures in `crates/tasks_ui/src/tasks_ui.rs` to include
the new variable
- Added `ZED_LANGUAGE` to the variable list in `docs/src/tasks.md`
## Testing
Updated the existing `test_task_variables` test in `tasks_ui` to verify
`ZED_LANGUAGE` resolves to "Rust" and "TypeScript" for the respective
test buffers.
This contribution was developed with AI assistance (Claude Code).
Release Notes:
- Added `$ZED_LANGUAGE` task variable that exposes the current buffer's
language name
---------
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
Matt Van Horn , Matt Van Horn , and Kirill Bulatov created
546c70a
agent: Allow all settings in the thread to apply immediately (#51762)
Before we kind of had it mixed: you could change thinking but not model etc. We brute forced a solution by disabling, but it seems better to just allow all of them to be updated whenever we would build the request. Release Notes: - N/A
Ben Brandt created
ef40f21
agent_ui: Only create ThreadHistory if agent supports it (#51759)
Rather than always having a ThreadHistory with an internal option, changed it to be an Option<ThreadHistory> so we can better distingiuish between an empty list and unsupported Release Notes: - N/A
Ben Brandt created
95c96ad
sidebar: Close all button (#51755)
Cameron Mcloughlin created
6b91dfb
Add new guild member to PR autolabeler (#51753)
Release Notes: - N/A
Lena created
b9dbc86
Handle Linux FS Rescan Events (#51208)
Closes #ISSUE 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 *or* Added/Fixed/Improved ...
Ben Kunkle created
b453b6e
editor: Fix selection direction reversal in `SelectLargeSyntaxNode` with multiple cursors (#51752)
Closes https://github.com/zed-industries/zed/issues/47737 Regressed by https://github.com/zed-industries/zed/pull/27295 Release Notes: - Fixed an issue where using the `SelectLargeSyntaxNode` action with multiple cursors could reverse the selection direction for the last cursor.
Smit Barmase created
234c705
Fix settings file restored to both panes after restart (#50842)
Closes #35947 ## Summary When a settings file was moved to a second pane and Zed restarted, the file appeared in both panes. Closing it in one pane would close it in the other. ## Root cause `Editor::deserialize` restored standalone files (like settings.json) by calling `workspace.open_abs_path()`, which routes through `open_path_preview` → `pane.open_item()`, adding the editor to the workspace's default pane. The caller (`SerializedPane::deserialize_to`) then also adds the item to the target pane, so it ends up in two panes. This also caused the SQL constraint violations @MrSubidubi noted: the `items` table has `PRIMARY KEY(item_id, workspace_id)`, so the duplicate triggers errors on the next serialisation cycle. ## Fix Replace `workspace.open_abs_path()` with `project.open_local_buffer()`, which opens the buffer without touching any pane. Pane placement is left to `deserialize_to`. https://github.com/user-attachments/assets/68d3c5b4-d002-429f-b907-ec21cb0019ec ## Test plan - [x] Reproduced the original bug (settings file duplicated across panes after restart) - [x] Verified the fix: file restores only to the correct pane - [x] Added regression test (`test_deserialize_non_worktree_file_does_not_add_to_pane`) - [x] Existing `items::tests::test_deserialize` passes (all 6 cases) - [x] `cargo clippy -p editor` clean Release Notes: - Fixed settings file being restored to multiple panes after restart ([#35947](https://github.com/zed-industries/zed/issues/35947)).
iam-liam created
c59af48
agent: Fix issue where created file is not deleted after rejecting (#51745)
Release Notes: - N/A
Bennet Bo Fenner created
a3a28ea
agent_ui: Fix send failure for pasted file#line mention links (#49786)
Release Notes: - Fixed send failure for pasted file#line mention links Handle `MentionUri::Selection` with a file path in `confirm_mention_for_uri` by resolving it to text content via existing line-range loading logic, instead of returning "Unsupported mention URI type for paste". Keep untitled-buffer selections (`abs_path: None`) as an explicit unsupported error for now. Add a regression test for pasting selection mentions to ensure they resolve to `Mention::Text` with the expected line range. Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu created