c8054ca
git: Fix searching in the split diff (#48894)
Click to expand commit body
- 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)
Click to expand commit body
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.
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)
Click to expand commit body
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)
Click to expand commit body
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>
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)
Click to expand commit body
- **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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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
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)
Click to expand commit body
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)
Click to expand commit body
Release Notes:
- N/A
Piotr Osiewicz
created
61e5755
languages: Change syntax highlighting for C/C++ preprocessor directives (#48109)
Click to expand commit body
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)
Click to expand commit body
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
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
64c3e8a
languages: Exclude TestMain from Go runnables (#46575)
Click to expand commit body
Exclude special [TestMain](https://pkg.go.dev/testing#hdr-Main) function
from Go runnables.
Release Notes:
- Excluded `TestMain` function from Go runnables.
These are heavily used by the side-by-side diff. Previously, we were
iterating over all hunks for each call. Now we skip hunks that can't
affect the provided range.
Release Notes:
- N/A
Cole Miller
created
da8a611
Expose the scheduler executor for ex (#48854)
Click to expand commit body
Release Notes:
- N/A
Conrad Irwin
created
4ffaf64
repl: Bump jupyter-protocol to v1.1.1 (#48848)
Click to expand commit body
Bringing in the handling of the lack of execution count noticed while
testing other kernels. xref:
https://github.com/zed-industries/zed/pull/48837
Release Notes:
- N/A
Kyle Kelley
created
303c1aa
repl: Be more resilient with message parsing (#48837)
Click to expand commit body
Closes #21529
Show a toast when a message from a Jupyter kernel doesn't parse
properly.
Discovered that some kernels don't include their execution count in an
`ExecuteReply` which is required in the jupyter protocol. Upstream I'll
go make that field either be an `Option` or just stick
`#[serde(default)]` on it so it's not a change in the interface.
Release Notes:
- Show error when parsing a message from a Jupyter kernel fails
Just improving the visualization for all icons in the component preview;
I think this will make it easier to quickly skim for an existing icons.
Release Notes:
- N/A
Danilo Leal
created
24d9c00
repl: Use split() on shell and control dealer sockets (#48823)
Click to expand commit body
Hot on the heels of https://github.com/zed-industries/zed/pull/48817 I'm
bringing the best improvement to the repl underneath: `split()`-able
sockets! Much more will be unlocked by having this.
This split the shell and control `DealerSocket` connections into
independent send/recv halves using the new `split()` API from zeromq
0.5.0 and runtimelib 1.x. This also nicely cleaned things up so we could
have a single `select!` loop over iopub, shell, and control recv halves.
That replaces three separate recv tasks.
This likely closes some issues for certain kernels that would get stuck
either during startup or other flows due to them not sending replies to
specific requests. I'll see if I can find issues around this and update
the release notes after.
This allows us to unlock some nifty new things we can do on the shell
socket, particularly autocompletion for in-memory values, stdin support,
and others. I _think_ it also help with sending and receving
`KernelInfo`, which not all kernels do properly at the start. This makes
us a bit more resilient to errant kernels.
Release Notes:
- N/A
Kyle Kelley
created
2028f85
languages: Fix block comment indentation for C/C++ (#47810)
Click to expand commit body
Before:
<img width="426" height="128" alt="before"
src="https://github.com/user-attachments/assets/89f84f4b-4810-4d11-b8a2-c841d8506cef"
/>
After:
<img width="437" height="125" alt="after"
src="https://github.com/user-attachments/assets/a63c5265-8f1b-4926-a334-93effad22f2b"
/>
Release Notes:
- Fixed for block comment indentation problem for C/C++
ozacod
created
5ba3d6a
languages: Fix C/C++ outline for function definitions and declarations with mixed storage and type qualifiers (#47500)
Click to expand commit body
Before:
<img width="1002" height="228" alt="before"
src="https://github.com/user-attachments/assets/94c5d0b7-a467-4bfe-8eaf-5a2c4b3cb7ea"
/>
After:
<img width="1002" height="228" alt="after"
src="https://github.com/user-attachments/assets/73d049d2-4dd1-40a4-ac21-984ca3fd32ee"
/>
Release Notes:
- Fixed C/C++ outline for function definitions and declarations with
mixed storage and type qualifiers.
ozacod
created
b2150a4
Fix incorrect first line detection for libstdc++ files (#48351)
Click to expand commit body
https://github.com/zed-industries/zed/pull/48250#issuecomment-3846774856
To ensure the fix covers all affected files, I have checked all C++
files without extensions using the following command:
```bash
find /usr/include/c++ -type f | grep -v '.h' | grep -v '.cpp' | grep -v '.tcc' | xargs head -1 | zed -
```
<details>
<summary>Click to expand images</summary>
<img width="940" height="935" alt="image"
src="https://github.com/user-attachments/assets/d0346ad4-d9f7-47d5-a85e-cb574dacf290"
/>
<img width="956" height="939" alt="image"
src="https://github.com/user-attachments/assets/d9e872fc-f2b8-4fff-b5a9-99e8a4fc21a3"
/>
<img width="953" height="940" alt="image"
src="https://github.com/user-attachments/assets/dee53cd4-d598-4d65-918d-353b037cdf1b"
/>
<img width="956" height="938" alt="image"
src="https://github.com/user-attachments/assets/777b899c-db25-4dc8-b4a5-fafe28cc14a4"
/>
</details>
Release Notes:
- N/A
feeiyu
created
28e743b
languages: Add attribute highlighting in C++ (#47825)
5af15f7
Fix panic in zeta1 prompt parsing (#48822)
Click to expand commit body
Closes #48712
- [ ] Tests or screenshots needed?
- [ ] Code Reviewed
- [ ] Manual QA
Release Notes:
- Fixed a panic when parsing predictions made by zeta1
Ben Kunkle
created
3f53a3a
Add a `Show All Channels` button to the collab panel (#48826)
Click to expand commit body
This makes it easy to see all the activity that is happening in a more
condensed view.
Helps you fend off endless scrolling in the collaboration panel when
trying to find the meeting room. ⚔️
https://github.com/user-attachments/assets/5b538636-5672-42a4-a831-ffe303051c84
- [X] Tests or screenshots needed?
- [ ] Code Reviewed
- [X] Manual QA
Release Notes:
- Added a `Show All Channels` button to the collab panel to filter down
to only channels with participants.
Joseph T. Lyons
created
b97a6c3
extension_ci: Increase timeout for extension version bump job (#48828)
Click to expand commit body
This fixes another issue for the ruby extension where a cargo index
update can sometimes take quite some time. However, this will not change
anything for all other extensions, as they continue to bump within the
defined timeout.
Release Notes:
- N/A
This PR removes the `GET /extensions` endpoint from Collab, as it has
been moved to Cloud.
In #48717 we changed it to just proxy to Cloud, but we didn't end up
needing that.
Release Notes:
- N/A
Marshall Bowers
created
d712963
git: Fix missing excerpts panic with side-by-side diff (#48755)
Click to expand commit body
When we update excerpts, pull the changes to the `Companion` excerpt
mappings into the multibuffer's update block, so that buffer
subscriptions don't get the chance to run and observe an invalid state
while attempting to snapshot the editor
Release Notes:
- N/A
---------
Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Cole Miller
,
cameron
, and
Jakub Konka
created
3d327cf
extension_ci: Be more precise with clippy targets (#48824)
Click to expand commit body
This fixes an issue where we would run into build errors during testing.
Release Notes:
- N/A
- No more "locked mode", it's on by default
- Only `ToggleDiffView` action
- Re-enable code actions on the RHS
Release Notes:
- N/A *or* Added/Fixed/Improved ...
---------
Co-authored-by: Cole Miller <cole@zed.dev>
Cameron Mcloughlin
and
Cole Miller
created
81f9354
docs: Mention support for alternate LSP for Kotlin (#45650)
Click to expand commit body
Would believe https://github.com/zed-industries/zed/pull/40776 did
change the default lsp to official implementation.
Release Notes:
- N/A
---------
Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
ilsubyeega
and
Kunall Banerjee
created
29f2048
repl: Shutdown all kernels on app quit (#48760)
Click to expand commit body
Closes #17985
Closes #21911
Force the shutdown of the kernel by ensuring the kernel sessions are
dropped on app quit.
Release Notes:
- Fixed shutdown of kernels on app exit
Kyle Kelley
created
7f2ee83
repl: Bump `runtimed` ecosystem packages to 1.x (#48817)
Click to expand commit body
Bump the runtimed ecosystem packages to their 1.0 releases:
- `jupyter-protocol`: 0.10.0 → 1.1.0
- `jupyter-websocket-client`: 0.15.0 → 1.0.0
- `nbformat`: 0.15.0 → 1.0.0
- `runtimelib`: 0.30.0 → 1.1.0
One breaking change: `MimeType::Json` now wraps `serde_json::Value`
directly instead of `serde_json::Map<String, Value>`, so the redundant
`Value::Object(...)` wrapping in `outputs.rs` was removed.
Closes #41649
More Quality of Life improvements and Bug Fixes are coming in new PRs
after this is merged.
Release Notes:
- Fixes startup for R kernels and Python kernels on windows.
Adding @rgbkrk so we have extra reminders in place to remain attentive.
Release Notes:
- N/A
Joseph T. Lyons
created
c873440
docs: Suggest alternative to Vim tag navigation feature (#48735)
Click to expand commit body
Closes N/A
- [ ] Tests or screenshots needed? -- no
- [x] Code Reviewed
- [x] Manual QA -- I ran `mdbook serve` and checked the output looks OK
Release Notes:
- N/A
---------
Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
Martin Pool
and
Kunall Banerjee
created
5e86a8d
extension_rollout: Improve naming for PR titles (#48815)
Click to expand commit body
This PR updates the names for the PRs to roll out to the extensions, as
having the `zed@` prefix does not look too pretty.
It also increases the concurrency of matrix jobs run to 10, as the
rollout has matured by now and is safe to perform for more repositories
at once.
Release Notes:
- N/A
Finn Evers
created
82dedcb
extension_ci: Merge extension workflow files into one file (#48810)
Click to expand commit body
This PR consolidates the two workflow files shipped to extensions into
one, which stops us from requiring a separate runner for what can
actually be done in one workflow.
It also
- adds a check that version bumps will now only be created by zed-zippy
in separate commits.
- Makes the bumping of versions faster and more reliable.
- (Hopefully) fixes an issue we were seeing in some CI tests.
Release Notes:
- N/A