76f1876
Bump to 0.224.1 for @probably-neb
Zed Zippy created
76f1876
Bump to 0.224.1 for @probably-neb
Zed Zippy created
ff82952
Cherry-pick "git: Remove unnecessary block map recomputation when splitting `SplittableEditor` (#49075)" to v0.224.x (#49127)
Release Notes: - Improved performance when toggling from the unified diff to the split diff. Co-authored-by: Jakub <jakub@zed.dev> Co-authored-by: Cameron McLoughlin <cameron.studdstreet@gmail.com>
Cole Miller , Jakub , and Cameron McLoughlin created
0aae8dc
ep: Fix panic when merging events from different buffers (#49097) (cherry-pick to preview) (#49125)
Cherry-pick of #49097 to preview ---- Release Notes: - N/A Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
zed-zippy[bot] and Oleksiy Syvokon created
31ea733
Separate accepted edit predictions in edit history (#49056) (cherry-pick to preview) (#49123)
Cherry-pick of #49056 to preview ---- Release Notes: - N/A --------- Co-authored-by: Ben Kunkle <ben@zed.dev> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com> Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev> Co-authored-by: Ben Kunkle <ben@zed.dev> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
zed-zippy[bot] , Oleksiy Syvokon , Ben Kunkle , and Max Brunsfeld created
d73ef24
git: Fix misalignment in the split diff when inlays fall at the end of an excerpt (#49078) (cherry-pick to preview) (#49124)
Cherry-pick of #49078 to preview ---- - [x] Tests or screenshots needed? - [ ] Code Reviewed - [x] Manual QA Release Notes: - Fixed misalignment of lines in the split diff when using inlay hints. Co-authored-by: Cole Miller <cole@zed.dev>
zed-zippy[bot] and Cole Miller created
4793371
Fix semantic highlights not cleared when disabled in settings (#49066)
Closes https://github.com/zed-industries/zed/issues/49060 Release Notes: - Fixed semantic highlights not cleared when disabled in settings
Kirill Bulatov created
01043f9
Potentially fix hang when opening LSP menu (#49046) (cherry-pick to preview) (#49048)
Cherry-pick of #49046 to preview ---- It is maybe possible that, if a process's parent dies, the PID can be reused by a different process. This could cause an infinite loop in `is_descendant_of`. To fix this, break out of the loop when a cycle is detected. - [ ] Tests or screenshots needed? - [X] Code Reviewed - [X] Manual QA Release Notes: - N/A --------- Co-authored-by: Eric Holk <eric@zed.dev> Co-authored-by: John Tur <john-tur@outlook.com> Co-authored-by: Eric Holk <eric@zed.dev>
zed-zippy[bot] , John Tur , and Eric Holk created
4291288
git: Disable some more expensive things for the split diff's left-hand side (#48953) (cherry-pick to preview) (#48979)
Cherry-pick of #48953 to preview ---- - Conflict UI - LSP data - Runnables Release Notes: - Improved performance when opening the split diff view. Co-authored-by: Cole Miller <cole@zed.dev>
zed-zippy[bot] and Cole Miller created
64161d2
Fix ACP agents not loading when not authenticated (#48959)
Closes #48857 - [x] Code Reviewed - [x] Manual QA Release Notes: - Fixed an issue where some ACP agents would not be loading correctly when unauthenticated --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Bennet Bo Fenner and cameron created
aa84a46
v0.224.x preview
Joseph T. Lyons created
4ed2b3d
rope: Fix `point_utf16_to_offset` returning relative offset instead of absolute (#48862)
`ChunkSlice::point_utf16_to_offset` returned `line.len()` (a relative line byte length) instead of `row_offset_range.end` (the absolute byte offset within the chunk) when clipping an out-of-range UTF-16 column on a non-first row. This caused incorrect position calculations in LSP coordinate conversions whenever a UTF-16 point had a column beyond the line's extent on any row after the first in a chunk. Added a regression test covering clipping on both row 0 and row 1. Not sure if it's the best place for a test like this one though. Release Notes: - N/A
Jordi Villar created
40b468e
git: Fix another `WrapPointCursor` panic in `spacer_blocks` (#48932)
Closes ZED-4ZH Release Notes: - N/A
Cole Miller created
3938403
Fix terminal pane showing welcome screen during loading (#48930)
This fixes an issue where we would show the welcome screen when opening the terminal panel. The issue could technically occur in any panel, but was only occurred in the terminal panel since we only render some content after the `cx.spawn` inside `new_terminal_pane` completes. This caused the welcome screen to show up for a single frame. This PR fixes this by showing a blank panel instead. Before https://github.com/user-attachments/assets/4b805c42-5dc5-4742-b090-2f62e8839f3e After https://github.com/user-attachments/assets/5da16b73-5999-461d-9057-438714d8d4ee Screenshot from the videos: Before <img width="1164" height="579" alt="image" src="https://github.com/user-attachments/assets/87ba2dff-d7c0-4104-b983-31bdd21cf0f9" /> After <img width="1537" height="803" alt="image" src="https://github.com/user-attachments/assets/359bc413-9794-4565-832d-83548b67cea5" /> - [x] Tests or screenshots needed? - [x] Code Reviewed - [x] Manual QA Release Notes: - Fixed an issue where the welcome screen would show up in the terminal panel if the terminal was slow to load
Bennet Bo Fenner created
975d5ac
ztracing: Annotate more callsites that invoke TreeSitter (#47522)
Release Notes: - N/A
Jakub Konka created
bf01a92
agent_ui: Fix editor not getting focused when adding selections (#48926)
Fixes a regression that was introduced by the thread view refactor (Nightly only). Also fixed another minor focus issue: Dropping files into the agent panel would not focus the message editor. - [x] Code Reviewed - [x] Manual QA Release Notes: - N/A
Bennet Bo Fenner created
8f70765
docs: Update the formatting section for Python (#48904)
I have added the `code_actions_on_format` setting. I also temporarily removed the mention of `"formatter": null`. Based on our findings in #48600, its current behavior is inconsistent, so I've omitted it for now to avoid confusing users. I will add it back once the underlying issue is fixed (likely in a subsequent PR). Closes #48600. - [ ] Tests or screenshots needed? - [x] Code Reviewed - [x] Manual QA Release Notes: - N/A --------- Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
Xin Zhao and Kunall Banerjee created
3880090
gpui: Fix double-close of fd in read_fd on linux (#48850)
`read_fd` calls `File::from_raw_fd(fd.as_raw_fd())`, which creates a new `File` that assumes ownership of the raw fd, while the original `FileDescriptor` also retains ownership. when both drop at the end of the function, the same fd is closed twice. between the two closes another thread can receive that fd number from the kernel for an unrelated file/socket, and the second close silently kills it. this can cause hard to diagnose data corruption or i/o failures. fix: use `fd.into_raw_fd()` instead of `fd.as_raw_fd()` to transfer ownership to the `File` without running `FileDescriptor`'s drop. Release Notes: - N/A
Albab Hasan created
f731497
git: Enable the split diff for everyone (#48912)
Release Notes:
- Added support for viewing diffs in split ("side by side") mode
Cole Miller created
05e99da
git: Standardize nomenclature for side-by-side diff (#48910)
"Unified" for the old view, and "split" for the new one. Release Notes: - N/A
Cole Miller created
2b7b886
agent_ui: Fix keybinding display inside tooltips in the footer actions (#48909)
- [x] Code Reviewed - [x] Manual QA Release Notes: - Agent: Fixed an issue where keybindings inside tooltips in the message editor footer actions weren't being displayed.
Danilo Leal created
6f09ead
git: Add click with modifier to set default for side-by-side diff toolbar buttons (#48908)
Release Notes: - N/A
Cole Miller created
47cb1cf
Use sccache in CI (#48895)
Try sccache in CI to paper over cargo's abyssmal caching Release Notes: - N/A
Conrad Irwin created
74419f6
git: Correct logic for updating companion excerpt IDs mapping (#48906)
We try to remove old excerpt IDs from the companion when mutating excerpts for a path, but we were incorrectly doing this using the excerpt IDs for the right-hand side multibuffer _after_ any excerpt mutations had occurred, causing stale excerpt IDs to accumulate. Release Notes: - N/A
Cole Miller created
8e3e6b8
Fix path handling regressions on Windows (#48905)
https://github.com/zed-industries/zed/pull/48891 changed `find_worktree` to use `PathStyle::strip_prefix`, which exposed this bug. - [ ] Tests or screenshots needed? - [X] Code Reviewed - [X] Manual QA Release Notes: - N/A
John Tur created
6cd7586
Switch to a Zed user-agent header for Copilot traffic (#48591)
Follow-up to #48528 Release Notes: - N/A --------- Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Richard Feldman and Mikayla Maki created
de213ad
Replace `always_allow_tool_actions` with `tool_permissions.default` (#48553)
<img width="1275" height="154" alt="Screenshot 2026-02-10 at 6 55 03 PM" src="https://github.com/user-attachments/assets/db87fe3f-274b-4bca-b342-b72e651ce57c" /> <img width="1275" height="176" alt="Screenshot 2026-02-10 at 6 55 15 PM" src="https://github.com/user-attachments/assets/4b9a0e70-4897-4736-8cc1-8d1415508f58" /> Replaces the boolean `always_allow_tool_actions` setting with a three-valued `tool_permissions.default` field (`"allow"` / `"confirm"` / `"deny"`). Release Notes: - Introduced per-tool permission settings, including regexes for controlling when tools may be auto-allowed, auto-denied, or always require confirmation. - Replaced the `always_allow_tool_actions` setting with `tool_permissions.default`. --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Richard Feldman and Zed Zippy created
c8054ca
git: Fix searching in the split diff (#48894)
- Fix panics caused by reusing cached matches for the wrong side - Highlight matches on the side that was searched only - Clear matches in non-searched editor when initiating a new search Release Notes: - N/A --------- Co-authored-by: Eric <eric@zed.dev> Co-authored-by: Jakub <jakub@zed.dev>
Cole Miller , Eric , and Jakub created
d2c922b
Reuse existing windows when opening files in remote workspaces (#48891)
Closes https://github.com/zed-industries/zed/issues/42366 - [ ] Tests or screenshots needed? - [X] Code Reviewed - [X] Manual QA Release Notes: - Opening files with the Zed CLI will reuse existing windows for remote workspaces.
John Tur created
aba74e6
git: Fewer buffer diff snapshots (#48886)
Release Notes: - N/A --------- Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Cole Miller and Jakub Konka created
aa37eda
Don't run nix checks on PRs (#48849)
Although this introduces a small possiblity that we will regress the nix build, the existing check is very slow and fails very rarely. Release Notes: - N/A
Conrad Irwin created
094122a
devcontainer: Support `.devcontainer.json` in project root (#48814)
Closes #48683 Per the devcontainer spec, `.devcontainer.json` in the project root is a valid config location. It is only used when no configurations are found inside `.devcontainer/`. Extract `find_configs_in_snapshot` for testability and add tests. Release Notes: - Added support for `.devcontainer.json` in project root
Oliver Azevedo Barnes created
191b4cc
workspace: Move the update Zed button to the title bar (#48467)
Currently, whenever Zed has a new version available for download, the update button shows up in the status bar. Problem is: that status bar slot can also display other buttons/information, such as problems with your language server or general errors. In case the two things exist (a problem and a new version), just one of them would be displayed, which is not great; you should be able to see both. Additionally, given we ship new versions pretty often, I've frequently saw feedback about wanting to hide away the new version button... at least temporarily while there's no immediate interest in upgrading. So, this PR tackles all of that. The button to update a new version is moved up to the title bar, nearby your avatar, and you have the ability to dismiss, which effectively just moves the button from the title bar to inside your user menu. https://github.com/user-attachments/assets/e3f1d76d-9b85-4bee-a70f-e22dd5e7fdb3 Release Notes: - Moved the update Zed button to the title bar and allowed it to be dismissed. --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Danilo Leal and Conrad Irwin created
695fcde
Canonicalize extension paths (#48632)
Release Notes: - N/A
Mikayla Maki created
9e1fed3
ep_cli: Include `request_id` in rated events and tag rated examples with experiment name and prompt format (#48883)
Closes #ISSUE - [ ] Tests or screenshots needed? - [ ] Code Reviewed - [ ] Manual QA Release Notes: - N/A *or* Added/Fixed/Improved ... Co-authored-by: Tom <tom@zed.dev>
Ben Kunkle and Tom created
8206521
ep_cli: Add sync deployments command (#48880)
Closes #ISSUE - [ ] Tests or screenshots needed? - [ ] Code Reviewed - [ ] Manual QA Release Notes: - N/A *or* Added/Fixed/Improved ... --------- Co-authored-by: Tom <tom@zed.dev>
Ben Kunkle and Tom created
4b4fb67
Un-feature-flag granular tool permissions (#48881)
The granular tool permissions feature is now generally available, and this flag is no longer used anywhere. Release Notes: - N/A
Richard Feldman created
77df6bf
Tool permissions settings UI improvements (#48796)
Various improvements to settings UI for granular tool permissions, extracted from a larger change: - Add **copy_path** tool to the permissions configuration list - Replace local `RuleType` enum with `ToolPermissionMode` from the settings crate - Improve rule summary display: singular "1 rule" instead of always "1 rules", show invalid pattern count - Add **terminal command parsing preview** — uses `extract_commands` to split chained commands (`&&`, `||`, `;`) so the preview matches the real permission engine's behavior - Add **verdict label** showing the authoritative permission decision (Allow/Deny/Confirm) - Log disagreements between the pattern preview and the engine's authoritative verdict - Display **invalid regex patterns section** with compilation error details - Add regex validation error banner (dismissible) on tool config pages - Add **compile-time validated** `tool_index` for macro-generated render functions (fails to compile if a tool ID is misspelled) - Update move_path/copy_path regex explanations for multi-input tools - Add test validating all tools have `ToolInfo` entries or are in the exclusion list - Add `clear_on_confirm()` — clears the input after confirming (used for "add pattern" inputs) - Add editor reconciliation fix — when settings change externally (e.g. editing settings.json), syncs the cached editor text when not focused - Rename "Configure Tool Rules" → "Tool Permissions" in the settings sidebar - Update description text - Add `regex_validation_error` field to `SettingsWindow` (cleared on page navigation) (No release notes because granular tool permissions are behind a feature flag.) Release Notes: - N/A --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Richard Feldman and Danilo Leal created
1176c39
ci: Fix builds on Windows following mtime finnickery (#48878)
- **Revert "vim: Make `:bdelete` use new `workspace::CloseItemInAllPanes` command (#48592)"** - **Revert "linux: Forward env vars starting with ZED_ to flatpak-spawn (#48118)"** - **ci: Fix builds on hel1-windows-1** - [x] Tests or screenshots needed? - [x] Code Reviewed - [x] Manual QA Release Notes: - N/A
Piotr Osiewicz created
de7f2f0
Improve performance when detecting JSX auto close (#48622)
Helps #48601 <img width="1649" height="1071" alt="image" src="https://github.com/user-attachments/assets/ff3dfee0-cc65-430f-a5fa-b4b4c36e8183" /> `syntax_layers` does some offset conversion that might require getting some chunks from the rope, which is quite expensive. For detecting autoclose, we only use the language from those syntax layers, so having a short path that skips all the conversion should skip some sum_tree traversals. I'm pretty sure other places would benefit from this as well, but I haven't searched them yet. Release Notes: - N/A --------- Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Marco Mihai Condrache and Smit Barmase created
53a0075
terminal: Fix Spawn Task and Agent terminal hangs on macOS (#48877)
Follow-up to #47420 and #44193. #47420 fixed child-exit status handling via upstream alacritty change (https://github.com/alacritty/alacritty/pull/8825). However, stable/preview/nightly builds still reproduced hangs that dev builds did not. The root cause matches #44193: spawned children inherit crash-handler Mach exception ports and hang. We already reset exception ports in `util::command::new_smol_command` and `util::set_pre_exec_to_start_new_session`, but PTY child spawning in `alacritty_terminal` was not covered. This PR updates `alacritty_terminal` to include PTY `pre_exec` exception-port reset: https://github.com/zed-industries/alacritty/commit/9d9640d4e56d67a09d049f9c0a300aae08d4f61e Upstream: - https://github.com/alacritty/alacritty/pull/8835 Release Notes: - Fixed terminal tasks hanging on macOS when a spawned process is killed by a signal.
Smit Barmase created
4911855
vim: Make `:bdelete` use new `workspace::CloseItemInAllPanes` command (#48592)
Add `workspace::CloseItemInAllPanes` action that closes the active item's buffer in every pane where it's open, matching Vim's `:bdelete` semantics. Pane layout is preserved, only the buffer is removed. `:bd` respects pinned tabs, `:bd!` overrides them and skips save. Also refactors the tab switcher's close button to use the new `close_items_with_project_path` method, removing duplicated logic. Release Notes: - Vim: `:bd` (`:bdelete`) now closes the file in all panes where it's open - Added `workspace::CloseItemInAllPanes` action to close a file across all panes --------- Co-authored-by: dino <dinojoaocosta@gmail.com>
David Baldwin and dino created
95890a9
Revert "ci: Restore mtime of source files to the git log time" (#48874)
Reverts zed-industries/zed#48607 The problem we've ran into is that CI started reusing already-cached runs from newer branches (that did not have that change pulled in). Yet this unveiled another potential issue, which is that relying on mtime might make it so that an artifact for a different (newer) commit would be reused by an unrelated run of CI. The answer is: checksum-based-freshness. Release Notes: - N/A
Piotr Osiewicz created
f7a4fb1
linux: Forward env vars starting with ZED_ to flatpak-spawn (#48118)
Otherwise, it's not easily possible to set *any* of these variables when running Zed. Release Notes: - Added forwarding of `ZED_*` environment variables when using the Flatpak
refi64 created
7f45408
acp: Only use the resumed cwd if it is in the workspace (#48873)
I think we may want to revisit in the future which history sessions we show, but given the current setup and behavior, I think it makes sense to only use the cwd if it matches in the worktrees to avoid issues with reading and editing files outside of there. - [x] Tests or screenshots needed? - [x] Code Reviewed - [x] Manual QA Release Notes: - N/A
Ben Brandt created
8b5328c
Bump tree-sitter-go to v0.25.0 (#48870)
Fixes #48357 ## Summary - Bumps `tree-sitter-go` from `0.23` to `0.25` - This fixes wrong syntax highlighting with chained indexing in Go (e.g. `a[b][c] = 0` being incorrectly parsed as a type instantiation expression instead of an index expression) - The upstream fix ([tree-sitter/tree-sitter-go#160](https://github.com/tree-sitter/tree-sitter-go/issues/160)) landed in v0.25.0, which gives index expressions a higher dynamic precedence over type instantiation expressions - Updated `runnables.scm` to account for the new `statement_list` node that wraps statements inside blocks in tree-sitter-go 0.25 ## Test plan - [x] `cargo test -p languages` — all 47 tests pass - Verified that existing Go runnables queries (table tests, subtests, test detection) work with the updated grammar Release Notes: - Fixed wrong syntax highlighting with chained indexing in Go (e.g. `a[b][c]`) by bumping tree-sitter-go to 0.25
MohibShaikh created
13154e1
gpui: Impl `Cow<'static, str>` to `IntoElement` (#48585)
Release Notes:
- N/A
Make this change to let `div().child(...)` support any types that have
impl `Into<SharedString>`, for example: `Cow<'static, str>`.
```rs
// From somewhere get a `Cow<'static, str>` type.
let label = Cow::Borrowed("Hello");
div()
.child(label);
```
Jason Lee created
4084a5a
ci: Restore mtime of source files to the git log time (#48607)
Release Notes: - N/A
Piotr Osiewicz created
61e5755
languages: Change syntax highlighting for C/C++ preprocessor directives (#48109)
This changes the highlight capture for preprocessor directives from `@keyword.directive` to `@preproc` in both C and C++. PR #44043 changed C from `@keyword` to `@keyword.directive` for consistency with C++, but `@keyword.directive` is still semantically wrong. Preprocessor directives are not language keywords — they are instructions to a separate preprocessing phase that runs before compilation. Using `@preproc` reflects this distinction and allows themes to style them independently from actual language keywords like `const`, `struct`,`if`, etc. This is consistent with how editors like CLion handle preprocessor directives. Before: <img width="710" height="653" alt="before" src="https://github.com/user-attachments/assets/5c02fc06-bc19-4112-ae53-ad72eb8044e3" /> After: <img width="710" height="653" alt="after" src="https://github.com/user-attachments/assets/2490e796-7286-4fbb-81b0-387f551cde8f" /> Release Notes: - C/C++: Syntax highlighting for preprocessor directives can now be tweaked with @preproc capture group. Co-authored-by: ozacod <ozacod@users.noreply.github.com>
ozacod and ozacod created
7a6674d
agent: Move subagent spawning to `ThreadEnvironment` (#48381)
TODO - [x] Cancellation - [x] Show subagent card as soon as tool_name == "subagent" - [x] Keybinding for closing subagent full screen view - [x] Only fire subagent notifications when appropriate - [x] Fix tests Release Notes: - N/A --------- Co-authored-by: Cameron <cameron@zed.dev> Co-authored-by: Tom Houlé <tom@tomhoule.com> Co-authored-by: cameron <cameron.studdstreet@gmail.com> Co-authored-by: Danilo Leal <daniloleal09@gmail.com> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Bennet Bo Fenner , Cameron , Tom Houlé , cameron , Danilo Leal , and Ben Brandt created
ad7b1f5
vim: Make end of line infallible (#48867)
When using `$` to move to the end of line (`vim::EndOfLine`), the `vim::motion::Motion.move_point` method checks whether the new point, that is, the point after the motion is applied is different from the point that was passed as a method argument. If the point is not different, the point and selection goals are only updated if `vim::motion::Motion.infallible` returns true for the motion in question. In short, this means that, if the cursor was already at the end of the line, and it got there using `vim::Right`, for example, the selection goal wouldn't actually be set to `SelectionGoal::HorizontalPosition(f64::INFINITY)`, so when the cursor was moved to a shorter line, it wouldn't be set at the end of that line, even though `$` had been used. This commit updates `vim::motion::Motion.infallible` to ensure that, for `vim::motion::Motion::EndOfLine`, it returns `true`, so that the selection goal is always updated, regardless of whether the cursor is already at the end of the line. Closes #48855 - [X] Tests or screenshots needed? - [X] Code Reviewed - [X] Manual QA Release Notes: - vim: Fixed `$` not sticking to end-of-line on vertical motions (`j`/`k`) when the cursor was already at the end of the line via `l` or arrow keys
Dino created