dbd95ea
gpui_linux: Force scene rebuild after GPU device recovery (#52389)
Click to expand commit body
After GPU device recovery clears the atlas, the next frame could
re-present a stale scene via the needs_present path (which skips scene
rebuilding). The stale scene references texture IDs that no longer exist
in the cleared atlas, causing an index-out-of-bounds panic.
Fix this by setting a force_render_after_recovery flag when device
recovery completes. The platform refresh loop reads this flag and passes
force_render: true in RequestFrameOptions, ensuring GPUI rebuilds the
scene before presenting.
Fixes ZED-5QT
Release Notes:
- N/A or Added/Fixed/Improved ...
Lukas Wirth
created
9973a34
project_panel: Add Git status indicators (#50216)
Click to expand commit body
This PR adds Git status badges next to file names in the Project Panel,
following my older PR #49802
These are enabled by having "git_status" true.
Screenshot
<img width="343" height="320" alt="image"
src="https://github.com/user-attachments/assets/b2c208bf-5027-4947-a5ee-eeb74fadb02b"
/>
I'd love to hear feedback about any of this :)
Especially feedback on these:
- File name colour is determined only by Git status, the diagnostic
badges remain separate. Should diagnostics also affect the filename
colour?
- (Unstaged) Modified files and staged modifications share the same
colour, in vscode staged modifications use a brownish colour by default
which I could not find the colours. I think differentiating them is
definetely something to add.
Release Notes
- Added git status indicators in Project Panel. It can be enabled by
setting `git_status_indicator` to `true` in `project_panel` settings.
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Davide Scaccia
and
Smit Barmase
created
9f58770
agent: Add a regression test to ensure title updates do not loop (#52395)
Click to expand commit body
## Context
Follow up to #52388
## How to Review
<!-- Help reviewers focus their attention:
- For small PRs: note what to focus on (e.g., "error handling in
foo.rs")
- For large PRs (>400 LOC): provide a guided tour β numbered list of
files/commits to read in order. (The `large-pr` label is applied
automatically.)
- See the review process guidelines for comment conventions -->
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Bennet Bo Fenner
created
90fa50a
go: Add semantic token rule for format string interpolations (#52394)
Click to expand commit body
## Context
Closes #52391
gopls sends semantic tokens for format args with [format] modifier.
Without a simple support for there is no special highlighting for format
args like `%s`. Its a simple change inside
`go/semantic_token_rules.json` that makes this a default behavior.
Currently (on 0.229 preview):
<img width="1136" height="675" alt="Screenshot 2026-03-25 at 11 34 57"
src="https://github.com/user-attachments/assets/cd3d9a52-6740-47b5-8f05-02514cb4f9df"
/>
After fix:
<img width="1136" height="675" alt="Screenshot 2026-03-25 at 11 58 37"
src="https://github.com/user-attachments/assets/5ec4277b-39c1-4fe1-bed5-8a6fa63c18c9"
/>
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- gopls: Add semantic token rule for format string interpolations
Marat Fattakhov
created
6d9e285
zed: Add `track-project-leak` feature for easier leak debugging (#52172)
Click to expand commit body
Release Notes:
- N/A or Added/Fixed/Improved ...
Lukas Wirth
created
a667d9c
agent: Reduce DB load in ThreadMetadataStore (#52313)
Click to expand commit body
## Context
We now batch multiple db operations together if they happen very
frequently (similar to how we handle it in `thread_history.rs`)
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
---------
Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
Bennet Bo Fenner
and
Gaauwe Rombouts
created
d09cc53
acp: Clean up archive download code (#52331)
Click to expand commit body
Follow up to bzip support to clean up some of this code
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Ben Brandt
created
b67c162
agent: Fix issues when editing thread title (#52388)
Click to expand commit body
## Context
Follow up to #52193
We changed this code in #52193, but moving the thread title read outside
of the spawn, causes a loop of title updated events
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Bennet Bo Fenner
created
3d5ec54
Add .tar.bz2 archive support for ACP agent server downloads (#52188)
Click to expand commit body
## Summary
- Added `TarBz2` variant to `AssetKind` enum for `.tar.bz2` / `.tbz2`
archives
- Implemented `extract_tar_bz2` using the `bzip2` feature of
`async-compression` (already a workspace dependency, just enabled the
feature flag)
- Wired up both streaming and file-based extraction paths in
`github_download.rs`
- Added `.tar.bz2` / `.tbz2` URL detection in both
`LocalExtensionArchiveAgent` and `LocalRegistryArchiveAgent`
This unblocks ACP registry entries (like Goose) that only ship
`.tar.bz2` archives.
Reference: https://github.com/block/goose/issues/8047
## Test plan
- [ ] Verify `cargo check` and `clippy` pass (confirmed locally)
- [ ] Test downloading an ACP agent that ships a `.tar.bz2` archive
(e.g., Goose)
- [ ] Verify existing `.tar.gz` and `.zip` agent downloads still work
Release Notes:
- Added support for `.tar.bz2` archives in ACP agent server downloads,
unblocking registry entries like Goose that only ship bzip2-compressed
tarballs.
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Vincenzo Palazzo
and
Ben Brandt
created
3216126
agent: Disable update_plan for staff (#52386)
Click to expand commit body
Needs some more work.
Release Notes:
- N/A
Ben Brandt
created
72bc4dc
cloud_llm_client: Move `CompletionIntent` to `language_model` (#52359)
Click to expand commit body
This PR moves the `CompletionIntent` enum from the `cloud_llm_client`
crate to the `language_model` crate, as it is no longer part of the
Cloud interface.
Release Notes:
- N/A
Marshall Bowers
created
9bbdff4
Fix double borrow when resizing bottom dock (#52383)
Click to expand commit body
Fixes a double borrow panic when resizing the bottom dock, introduced in
#52276
Release Notes:
- N/A
Max Brunsfeld
created
103fa37
Use the most recent serial of kinds KeyPress or MousePress when copying (#52053)
Click to expand commit body
Release Notes:
- Fix copy for some Wayland users
Matthew Chisolm
created
a6fa2d4
Don't grow agent panel to fill entire center (#52380)
Click to expand commit body
This PR simplifies the flexible-width agent panel's rendering such that
for now, it will not grow to fill the center area when there are no
files open. The problem with doing that is that it makes the bottom dock
invisible.
We could potentially revisit this, and just shrink the width of the
agent panel when the bottom dock was toggled, but that might feel
unstable, so for now I'm doing a simpler thing and just keeping the
center area visible even when it is empty.
Release Notes:
- N/A
b5e85c8
gpui_linux: Set _NET_WM_NAME on X11 window creation to support UTF-8 titles (#51909)
Click to expand commit body
Release Notes:
- Fixed window title displaying garbled characters (e.g. "Zed Γ’ββ
Settings") on Linux X11 due to missing UTF-8 encoding for the
`_NET_WM_NAME` property.
Valery Borovsky
created
5baec85
Always open microphone track on call join (#52236)
Click to expand commit body
Release Notes:
- Fixed 1-2 seconds of audio silence when unmuting for the first time
during a call with Bluetooth headphones when `mute_on_join` is enabled.
## Context
Since https://github.com/zed-industries/zed/pull/52232/, there have been
a lot of problems related to panels randomly hiding and showing
themselves. However, the code in that PR is pretty innocuous. It
shouldn't be having that kind of effect. However, it turns out there's a
bug in how GPUI subscriptions work that caused there to be orphaned
observe callbacks firing spuriously. The core sequence is captured in
`test_unsubscribe_during_callback_with_insert`, essentially you have to
have two observers on the same item (`SettingsStore`, in this case),
that both drop themselves. If the first observer _adds_ a callback onto
the _same item_, then the second observer will never successfully drop
itself.
While in there, I also fixed an unrelated bug that @maxbrunsfeld noticed
where if you have two callbacks on the same item, and an earlier
callback drops a later one, then the second callback will spuriously
fire.
I also added a few extra smoke tests to the subscription code, and a
test capturing the observed bug at the workspace level.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
---------
Co-authored-by: max <max@zed.dev>
Marc-Andre Lureau
,
Claude
, and
Conrad Irwin
created
34807eb
gpui_macos: Fix stale atlas key causing crash on None texture lookup (#51996)
Click to expand commit body
MetalAtlas::remove() used tiles_by_key.get(key) to look up the texture
ID but only called tiles_by_key.remove(key) when the texture became
fully unreferenced. When a tile was removed while other tiles remained
on the same texture, the key stayed in tiles_by_key as a stale entry.
Once subsequent removals deleted the texture, get_or_insert_with could
return the stale tile referencing a now-deleted texture slot, causing an
unwrap panic in MetalAtlasState::texture().
Fix: change .get(key) to .remove(key) unconditionally, matching the WGPU
and DirectX atlas implementations which already do this correctly.
Closes ZED-5KV
Release Notes:
- N/A or Added/Fixed/Improved ...
Lukas Wirth
created
95852d4
workspace: Deduplicate navigation history entries (#44504)
Click to expand commit body
Closes #43545
Remove existing entries for an item before adding new ones to the
navigation history. This prevents Go Back (Ctrl-O) from bouncing between
the same items repeatedly.
Navigation pattern A->B->A->B->C now creates history [A,B,C] instead of
[A,B,A,B,C], making backward navigation more efficient.
Release Notes:
- N/A
Ignacio
created
ddc327f
gpui: Fix Vim jj keybinding intercepting j key from IME on macOS (#52192)
Click to expand commit body
## Fixes
Closes #28174
Closes #30393
Closes #36610
Closes #38616
Updates #31819
Updates #21136
## Context
There was an issue where CJK input could not be entered correctly when
certain keys used during IME composition conflicted with custom
keybindings while the CJK IME was enabled.
(In particular, in Vim mode, the `jj` keybinding in INSERT MODE could
not be entered correctly.)
This issue had already been fixed on Windows, but not on macOS (and
judging from the code, it is likely also present on Linux, although this
has not been verified).
In this change, we aligned the behavior with Windows.
Currently, on Windows, when the CJK ( or other ) IME is enabled, IME
input is prioritized.
Following this behavior, we updated macOS to also prioritize IME input.
| Input source | Source type | ASCII-capable | Result | Behavior |
|---|---|---|---|---|
| Japanese Hiragana | `KeyboardInputMode` | `false` | `true` | IME
handles key first |
| Japanese Romaji | `KeyboardInputMode` | `true` | `false` | Keybinding
matching first |
| Korean | `KeyboardInputMode` | `false` | `true` | IME handles key
first |
| Chinese Pinyin | `KeyboardInputMode` | `false` | `true` | IME handles
key first |
| Armenian | `KeyboardLayout` | `false` | `false` | Keybinding matching
first |
| Ukrainian | `KeyboardLayout` | `false` | `false` | Keybinding matching
first |
| English (ABC) | `KeyboardLayout` | `true` | `false` | Keybinding
matching first |
(Since similar approaches are used in tools like Vim and Neovim, we
consider this policy to be appropriate.)
## Videos
### before fix
https://github.com/user-attachments/assets/9b204220-d0de-4819-8dc4-00ba85169ef6
### after fix
https://github.com/user-attachments/assets/045cc808-8d29-42d2-9de5-f903fcb602db
## How to Review
This change modifies the gpui layer rather than Zed itself, so please
verify the behavior at the gpui level, not just within Zed.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- Fixed IME composition on macOS in Vim insert mode with multi-stroke keybindings like `jj`
Fixes a crash introduced by removing some defensive code in
https://github.com/zed-industries/zed/pull/52276
Release Notes:
- N/A
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Max Brunsfeld
and
Mikayla Maki
created
fc66e4e
ep: Only report shown once prediction is previewed in subtle mode (#52362)
Click to expand commit body
## Context
We currently mark the current prediction as "shown" when the subtle mode
indicator appears. This doesn't really make sense. We make an effort
elsewhere to differentiate between a user rejecting a prediction that
they viewed vs. never saw in order to compute accurate metrics.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A or Added/Fixed/Improved ...
Ben Kunkle
created
7ccef1d
extension_api: Expose preferred_line_length in LanguageSettings (#52175)
Click to expand commit body
Closes #21822
## Context
Exposes `preferred_line_length` from `AllLanguageSettings` to the
Extension
API's `LanguageSettings` struct. Currently only `tab_size` is available
to
extensions, which prevents language extensions (e.g. Dart) from reading
the
user's preferred line length and forwarding it to their language server
(e.g. as `dart.lineLength`).
Related: https://github.com/zed-extensions/dart/issues/2
## How to Review
Small change β follow how `tab_size` is plumbed through:
1. WIT definition (`language-settings` record)
2. `extension_api` Rust struct
3. Host-side bridge conversion
The new field follows the exact same pattern.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- Compile-time verified via WIT bindings; no runtime behavior change
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Roman Cinis
created
c7951fa
agent_ui: Add support for pasting external files and directories (#52300)
Click to expand commit body
This PR adds support to paste external files and directories in Agent
Panel, along with the existing image paste path.
Release Notes:
- Added support for pasting files and folders into the Agent Panel.
Smit Barmase
created
1358e42
title_bar: Display the org name in the user avatar trigger when not the personal (#52356)
Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/52343
We'll be experimenting showing the org name in the avatar trigger button
when that's not the personal one.
Release Notes:
- N/A
---------
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Danilo Leal
and
Marshall Bowers
created
d0baf21
Make PathList equality ignore display order (#52052)
Click to expand commit body
`PathList` stores both sorted paths and the original insertion order
(for display in the project panel). Previously, `PartialEq`, `Eq`, and
`Hash` were derived, which meant two `PathList` values with the same
paths but different display orderings were considered unequal.
This change replaces the derived impls with manual ones that only
compare
the sorted `paths` field, matching the semantic intent: a `PathList`
identifies a set of directories, and the display order is not part of
that identity.
Release Notes:
- N/A
Eric Holk
created
64d4e01
terminal_view: Ensure terminal toggle shortcut appears in tooltip (#52357)
Click to expand commit body
Follow-up to the discussion in #51670.
@ConradIrwin, thanks for the review!
You're right about the other editors. VS Code and JetBrains use
dedicated shortcuts for bottom panel tabs, which exactly mirrors how
`ctrl-`` already behaves in Zed, so we don't need a new keybinding.
The reason I originally proposed `cmd-shift-j` was just to match the UI
pattern of the Debugger, which clearly shows `cmd-shift-d` on hover.
Because of a minor UI discoverability bug, the Terminal button's tooltip
was completely blank, which made it look like it just lacked a shortcut
entirely.
It turns out the Terminal button's internal `toggle_action()` method was
just telling the UI to look up `ToggleFocus` instead of
`terminal_panel::Toggle` (which is what `ctrl-`` is actually bound to).
I've updated this branch with a simple one-word fix that just points the
`toggle_action` to the correct keymap. The existing `ctrl-`` shortcut
now shows up perfectly in the hover tooltip. Good catch on the existing
shortcuts, keeps this much cleaner.
Co-authored-by: Michael Smolkin <msmolkin@users.noreply.github.com>
Michael Smolkin
and
Michael Smolkin
created
d3ab0d9
agent: Mark subagent completions with Subagent intent (#52350)
Click to expand commit body
## Context
Ensure subagent threads build requests with the Subagent intent instead
of UserPrompt. This allows us to properly
attribute this as a tool call for certain providers instead of a user
request.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- copilot_chat: Fix subagent requests being marked as user requests.
Ben Brandt
created
2b8e9cc
ep: Follow-ups for binding changes (#52258)
Click to expand commit body
## Context
- Updates docs for how to update edit prediction bindings
- Walks back how often we use tab to accept prediction where we
previously didn't; now just when in leading whitespace, tab does not
accept completion when completions menu is open
- migration for keymaps using the old `edit_prediction_conflict` key
context
## How to Review
The only code worth reviewing is the migration
<!-- Help reviewers focus their attention:
- For small PRs: note what to focus on (e.g., "error handling in
foo.rs")
- For large PRs (>400 LOC): provide a guided tour β numbered list of
files/commits to read in order. (The `large-pr` label is applied
automatically.)
- See the review process guidelines for comment conventions -->
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A or Added/Fixed/Improved ...
---------
Co-authored-by: Max <max@zed.dev>
4c3179f
Fix flaky terminal test for position / cell conversion (#52351)
Click to expand commit body
This PR fixes test flakiness introduced in
https://github.com/zed-industries/zed/pull/52111
The flakiness was because the test was using its own RNG, rather than
using gpui's built-in support for consistently-seeded RNGs in tests. The
fix was just to adjust the test to use the same logic for computing row
and column count as was introduced in the above PR.
Release Notes:
- N/A
Max Brunsfeld
created
5d8c09e
terminal_panel: Cmd+N opens new terminal where you are already working (#48609)
Click to expand commit body
Related to #31504
## Problem
If you drag a terminal into the center editor area as a tab, pressing
`Cmd+N` still opens the new terminal in the terminal panel instead of
next to the tab you're looking at.
## Solution
`Cmd+N` now checks whether the center pane is focused and its active tab
is a terminal. If both are true, the new terminal opens there. All other
behavior is unchanged.
https://github.com/user-attachments/assets/01036cb4-5f1f-456e-900e-eed2e53d61f5
## Test plan
- [ ] Drag a terminal into the center editor area. Focus it. Press
Cmd+N. New terminal opens as a center tab.
- [ ] Toggle terminal panel with Ctrl+`. Press Cmd+N. Opens in panel as
before.
- [ ] Focus a regular code file. Press Cmd+N. Opens in panel as before.
- [ ] Have a terminal in the center, but focus the terminal panel. Press
Cmd+N. Opens in panel as before.
Release Notes:
- Improved `terminal: New Terminal` (Cmd+N) to open in the center pane
when a terminal tab there is focused, instead of always opening in the
terminal panel.
Saurabh Singh
created
1d5dfe6
cloud_api_types: Add `is_personal` field to `Organization` (#52349)
Click to expand commit body
This PR adds an `is_personal` field to the `Organization` DTO returned
from Cloud.
We're already returning this field in production.
Part of CLO-569.
Release Notes:
- N/A
Marshall Bowers
created
9dd588a
Allow PRs to not have a newline before the first release note (#52336)
Click to expand commit body
Release Notes:
- N/A
Conrad Irwin
created
b1e94da
eval: Port over evals for streaming edit tool (#52317)
Click to expand commit body
Setting up the infra for unit evals on the new tool. For now,
replicating the eval setup as close as possible to the old tool.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Ben Brandt
created
bf92d19
Fix switching between helix and vim modes to not require returning to non-modal in between (#51706)
Click to expand commit body
* Update `Vim::register` to correctly re-activate when either `vim_mode`
or `helix_mode` are enabled, when they were previously disabled.
* Update `settings_ui::page_data::keymap_page` such that, when enabling
or disabling `vim_mode` or `helix_mode`, the other setting is
disabled, in case it is set. This ensures that only one mode is
enabled at a time, as it should be.
Closes #51704
Release Notes:
- Fixed switching between vim and helix mode needing multiple calls to
have an effect while an editor is already open
- Update Settings UI such that, enabling vim or helix mode, now disables
the other if it was previously active
---------
Co-authored-by: dino <dinojoaocosta@gmail.com>
Finn Eitreim
and
dino
created
aca5209
Make the agent panel have a flexible width (#52276)
Click to expand commit body
Release Notes:
- The agent panel now has a flexible width, similar to the center panes
of the workspace.
Max Brunsfeld
created
23ac4fd
title_bar: Move the organization items inside the user menu (#52343)
Click to expand commit body
Closes CLO-339
This PR moves the organization menu items inside the user menu, instead
of a standalone button within the title bar. We did it so because 1)
we're not fully sure how useful _always_ seeing in which org you are in
will be, and 2) seeing in which org you're in and seeing in which _plan_
you are in are very similar in terms of use case, and we don't currently
display the plan in the title bar... thus, that served as argument for
the same level of visibility.
---
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
---------
Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
Danilo Leal
and
Gaauwe Rombouts
created
9b0f454
sidebar: Make sure workspace has git state loaded when opening a new one (#52233)
Click to expand commit body
## Context
This fixes a bug where switching to a worktree workspace sometimes
briefly flashes it as a top-level project in the sidebar. This happened
because the sidebar would rebuild its entries whenever the multi
workspace emits the added workspace event.
The fix is checking from the root workspace git linked worktree list as
well to see if newly added workspaces are linked.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Anthony Eid
created
b5fc09e
Don't keep stale predictions in if they were discarded (#52334)
Click to expand commit body
## Context
We're seeing issues where discarding a prediction (e.g. `editor::Cancel`
while a prediction is being shown) seems to just hide it temporarily.
This is becoming a larger issue with #51842 as we now expect people to
be dismissing predictions in order to insert literal tabs in certain
contexts.
The logic changed in this PR is part of the problem, but the model
generating the same prediction multiple times is also likely
contributing. That will be solved as-needed later.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- Fixed an issue where dismissing an edit prediction would not fully
discard it, causing it to re-appear
Increases timeouts, simplifies queries, and makes other changes needed to
pull data more efficiently.
Release Notes:
- N/A
---------
Co-authored-by: Ben Kunkle <ben@zed.dev>
Oleksiy Syvokon
and
Ben Kunkle
created
72c1d97
editor: Include closing delimiter on same line when folding (#50090)
Click to expand commit body
CLOSES: #50002
When using indent-based folding (the default, `document_folding_ranges =
Off`),
collapsed folds in brace-delimited languages displayed the closing
delimiter on
a separate line:
fn b() {β―
}
This extends the fold range in `crease_for_buffer_row` to include the
trailing
newline and leading whitespace before a closing `}`, `)`, or `]`,
producing
the expected single-line display:
fn b() {β―}
Whitespace-sensitive languages like Python are unaffected β their
terminating
lines don't start with a closing delimiter, so the existing behavior is
preserved.
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)
Screenshots:
Before:
<img width="676" height="584" alt="image"
src="https://github.com/user-attachments/assets/0779233b-e287-495a-bab4-d2a97829e1c0"
/>
After:
<img width="1498" height="824" alt="image"
src="https://github.com/user-attachments/assets/ec6b4cb0-dac1-4db0-beed-38131a27b5c8"
/>
Release Notes:
- Fixed indent-based code folding to display the closing delimiter (`}`,
`)`, `]`) on the same line as the fold placeholder instead of on a
separate line
([#50002](https://github.com/zed-industries/zed/issues/50002)).
JoΓ£o Soares
created
2072471
settings: Fix incorrect worktree root for symlinked settings.json on Windows (#51453)
Click to expand commit body
Closes #47007
After #50974, symlinked `settings.json` can be opened and saved, but the
worktree ends up rooted at the file itself rather than its parent
directory, which causes this error to be logged when changing settings
via the settings GUI:
```
2026-03-18T22:24:05+01:00 ERROR [worktree] ignoring event
"C:\\Users\\Bryan\\dev\\bryanpth\\dotfiles\\config\\zed\\settings.json~RF1ab7ae0.TMP" outside of root path
"C:\\Users\\Bryan\\dev\\bryanpth\\dotfiles\\config\\zed\\settings.json"
```
Fixed by canonicalizing the symlink path before passing to `open_paths`.
Tested with a symlinked settings.json, both directly and through WSL.
Release Notes:
- Fixed incorrect worktree root when settings.json is a symlink on
Windows
Bryan Pothon
created
2315856
task: Skip .vscode tasks when .zed/tasks.json exists (#51797)
Click to expand commit body
Fixes #51733
The previous fix in #32590 only filtered `.vscode` tasks at the modal
presentation layer, so they still appeared in other code paths and in
the used-tasks list. This moves the filtering into
`worktree_scenarios()` in the task inventory, so all consumers see the
correct behavior.
Changes:
- `InventoryFor::worktree_scenarios()` now skips `.vscode` entries when
`.zed` entries exist for the same worktree
- `used_and_current_resolved_tasks()` filters previously spawned
`.vscode` tasks from the used-tasks list
- Removes the now-redundant `.vscode` filter from the task picker modal
Release Notes:
- Fixed .vscode/tasks.json still being used when .zed/tasks.json is
present
Co-authored-by: moktamd <moktamd@users.noreply.github.com>
moktamd
and
moktamd
created
e9d1419
agent: Allow model to respond with stringified array when it edits (#52303)
Click to expand commit body
## Context
Sometimes the model likes to respond with `"[...]"` for the edits array,
instead of just `[...]`, which causes deserialisation to fail:
```
Failed to receive tool input: invalid type: string "[{"old_text": ..., "new_text": ...}]", expected a sequence
```
## How to Review
<!-- Help reviewers focus their attention:
- For small PRs: note what to focus on (e.g., "error handling in
foo.rs")
- For large PRs (>400 LOC): provide a guided tour β numbered list of
files/commits to read in order. (The `large-pr` label is applied
automatically.)
- See the review process guidelines for comment conventions -->
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
---------
Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
Bennet Bo Fenner
and
Gaauwe Rombouts
created
4add781
remote_connection: Add visibility toggle to password prompt (#52297)
Click to expand commit body
This adds an eye icon button to the right of the password input field
when connecting to a remote device, allowing users to toggle the
visibility of the typed password. The toggle defaults to masked and only
appears for actual password prompts, avoiding yes/no confirmations.
After modification, an eye button has been added:
https://github.com/user-attachments/assets/76fb5a89-0aa3-4017-b050-d6bb9c2ad4a8
---
Release Notes:
- Added a toggle to control password visibility when connecting to a
remote project.
---------
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Xiaobo Liu
and
Danilo Leal
created
f3534fc
git_ui: Improve UI for the branch, stash, and worktree pickers (#52274)
Click to expand commit body
## Context
This PR refines the design for all of these Git pickers but making them
look more consistent and polished (using same fonts, dividers, and
alignment). It also adds a delete button to all items in each picker so
you can more intuitively delete each item if you're on a mouse-based
flow.
| Worktrees | Stashes | Branches |
|--------|--------|--------|
| <img width="1490" height="1178" alt="Screenshot 2026-03-23 at 9β― 15
2@2x"
src="https://github.com/user-attachments/assets/3143a626-1b97-43b5-b769-d6cab2c5df7c"
/> | <img width="1490" height="1178" alt="Screenshot 2026-03-23 at 9β― 15
3@2x"
src="https://github.com/user-attachments/assets/80cbd5ee-394d-42b7-84f8-2d9950d9889e"
/> | <img width="1490" height="1178" alt="Screenshot 2026-03-23 at 9β―
15@2x"
src="https://github.com/user-attachments/assets/408fd12e-fb18-4233-a4bf-5fad53aa307f"
/> |
---
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Danilo Leal
created
4b598bf
agent_ui: Add some thread view design improvements (#52322)
Click to expand commit body
This PR adds some small design refinements to the thread view: making
keybinding size consistent throughout, improving the activity bar
shadow, fixing the keybinding to open a file from an edit tool diff, and
other smaller spacing/color tweaks.
Release Notes:
- N/A