Commit log

c1fc9df Remove redundant use telemetry import from sidebar

Katie Geer created

436ebc8 Move source property onto Agent Thread Started, remove New Thread Clicked

Click to expand commit body
New Thread Clicked was redundant with Agent Thread Started for every
path that results in an actual thread. The only unique signal it carried
was source (sidebar vs agent_panel), which is now threaded through the
call chain instead.

Chain of changes:
- do_new_thread gains source: &'static str; new_thread passes
  'agent_panel', new_thread_from_sidebar passes 'sidebar'
- external_thread and create_agent_thread gain source: &'static str;
  all 11 existing external_thread call sites pass 'agent_panel'
- ConversationView::new and initial_state gain source: &'static str
- Agent Thread Started now includes source, side, thread_location
- New Thread Clicked removed from new_thread, new_thread_from_sidebar,
  and the + menu builder closure
- thread_location_str helper removed (no remaining callers)

Katie Geer created

4035ad2 Move thread_location onto Agent Thread Started, remove Start Thread In Changed

Click to expand commit body
Start Thread In Changed tracked a preference change, which is less
useful than knowing the actual location of each thread when it starts.
thread_location is now a property on Agent Thread Started, captured
synchronously before the spawn so it reflects the setting at the moment
the thread was created.

Katie Geer created

9c72071 Add agent property to Archived Thread Opened event

Katie Geer created

cdbd96b Complete remaining telemetry events for sidebar and agent panel

Click to expand commit body
Sidebar Side Changed (item 1):
  Fires in sidebar_side_context_menu when user picks a side from the
  right-click menu on the sidebar toggle button.

side property on View Thread History Clicked (item 2):
  Adds agent_panel_side_str helper (alongside the existing helpers) and
  threads it through the navigation menu builder closure.

side property on core agent funnel events (item 3):
  - Agent Thread Started: side captured before the spawn_in in
    conversation_view.rs and moved into the async closure.
  - Agent Message Sent / Agent Turn Completed: side captured once before
    the send_content spawn_in in thread_view.rs and shared by both events
    in the same async block.

Sidebar Archive Viewed + Archived Thread Opened (item 4):
  - Sidebar Archive Viewed fires in toggle_archive when transitioning
    from thread list to archive view (not on deserialization restore).
  - Archived Thread Opened fires on the row on_click in
    ThreadsArchiveView before unarchive_thread is called.

Start Thread In Changed (item 5):
  Fires in set_start_thread_in after all validation guards pass and
  self.start_thread_in is assigned, covering all call paths including
  direct dispatch, the picker confirm, and cycle_start_thread_in.

Katie Geer created

b4caad3 Fix three code quality issues found in telemetry review

Click to expand commit body
Startup false-positive in Sidebar Toggled:
  open_sidebar was called from workspace state restoration on every
  startup when the sidebar had been left open, which fired the
  'Sidebar Toggled {action=open}' telemetry event even though no user
  action occurred. Extract apply_open_sidebar as the shared
  implementation, keep open_sidebar for user-triggered opens (fires
  event), and add restore_open_sidebar for the startup path (no event).

Wildcard arm in Agent Panel Side Changed:
  set_position used '_ => "right"' which silently mapped
  DockPosition::Bottom to "right". Made the match exhaustive with
  explicit Right | Bottom arms so a future DockPosition variant would
  cause a compile error rather than silent misreporting.

Duplicated thread_location logic:
  The NewThreadLocation -> &'static str mapping appeared three times
  verbatim (new_thread, new_thread_from_sidebar, menu builder closure),
  each with its own local 'use settings::...' import. Extracted into a
  thread_location_str(cx: &App) free function alongside the existing
  agent_panel_dock_position helper.

Katie Geer created

9087eed Close keyboard gap in New Thread Clicked telemetry

Click to expand commit body
Previously the event only fired when the + dropdown menu was opened
(mouse path). The NewThread keyboard shortcut bypassed the menu builder
and called new_thread directly, producing no event.

Approach:
- Extract new_thread body into a private do_new_thread helper.
- new_thread (action handler / keyboard shortcut) fires the event with
  source='agent_panel' then delegates to do_new_thread.
- new_thread_from_sidebar (pub, for the sidebar crate) fires the event
  with source='sidebar' then delegates to do_new_thread.
- Both sidebar call sites (mouse click via create_new_thread and keyboard
  confirm in the list) now call new_thread_from_sidebar, eliminating the
  double-fire that would have occurred if the panel's own new_thread
  were called after the sidebar had already fired the event.

Katie Geer created

07a9e23 Add source and thread_location properties to New Thread Clicked

Click to expand commit body
Enriches the existing event with two new properties:

- source: 'agent_panel' when triggered from the toolbar + button in the
  agent panel, 'sidebar' when triggered from the sidebar thread list.

- thread_location: 'current_worktree' or 'new_worktree', read from
  AgentSettings::new_thread_location at event-fire time in both call
  sites. This reflects the user's active preference for where new
  threads land, matching NewThreadLocation::LocalProject and
  NewThreadLocation::NewWorktree respectively.

Katie Geer created

3b27abe Rename Sidebar Open Project Clicked to Sidebar Add Project Clicked

Katie Geer created

eaf2539 Add sidebar toggle, agent panel side, and workspace telemetry events

Click to expand commit body
Track three new telemetry signals:

- 'Sidebar Toggled' fires in MultiWorkspace::open_sidebar and
  close_sidebar with action ('open'/'close') and side ('left'/'right').
  Covers both mouse (status bar button / sidebar close button) and
  keyboard (ToggleWorkspaceSidebar / CloseWorkspaceSidebar actions)
  since all paths funnel through those two methods.

- 'Agent Panel Side Changed' fires in AgentPanel::set_position with
  the new side value. This fires whenever the user moves the panel
  via drag or the context menu.

- 'Workspace Added' fires in MultiWorkspace::add β€” which is only called
  during initial workspace restoration, not for user-initiated project
  opens β€” with workspace_count so we can understand portfolio size at
  session start.

- 'Sidebar Open Project Clicked' fires on the empty-state 'Open Project'
  button in the sidebar with the current side value.

Katie Geer created

64c69ca ci: Only link to PRs needing review if there are any (#53437)

Click to expand commit body
This further reduces the noise of the compliance checks.

Release Notes:

- N/A

Finn Evers created

4a02367 Persist fast mode across new threads (#53356)

Click to expand commit body
When toggling fast mode, the setting is now written to `settings.json`
under `agent.default_model.speed`, so new threads start with the same
speed. This follows the same pattern as `enable_thinking` and `effort`.

The `speed` field uses the existing `Speed` enum (`"fast"` /
`"standard"`) rather than a boolean, to leave room for future speed
tiers.

Example settings:
```json
{
  "agent": {
    "default_model": {
      "provider": "zed.dev",
      "model": "claude-sonnet-4",
      "speed": "fast"
    }
  }
}
```

cc @benbrandt

Release Notes:

- N/A

---------

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

Nathan Sobo and Ben Brandt created

08e43ae Fix repeated prompts in opencode acp (#53216)

Click to expand commit body
### Summary
Fixes duplicated Prompts/context in ACP threads after sending a message,
as reported in #53201.

### Root Cause
The thread already inserts the user prompt optimistically at send time.
If an ACP server also echoes UserMessageChunk updates for the same
prompt, the same content is appended again, which can duplicate rendered
context sections.

### Fix
Ignore echoed UserMessageChunk updates while a turn is actively running,
so user prompt content is not appended twice.

### Validation
- Reproduced with OpenCode ACP flow from the issue.
- Confirmed duplication appears after send (not in the input box).
- Confirmed duplicate Prompts/context no longer appears with the fix.

### Video 

[Screencast from 2026-04-06
08-21-32.webm](https://github.com/user-attachments/assets/33075312-9af7-4dd5-a2a3-5e1169b80243)


### Self-Review Checklist
- [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

Closes #53201

## Release Notes
- Fixed duplicated Prompts/context in ACP conversations when servers
echo user message chunks after send.

Om Chillure created

d1871d5 sidebar: Surface subagent permission requests (#53428)

Click to expand commit body
Self-Review Checklist:

- [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:

- (preview only) sidebar: Fixed issue where tool confirmation indicator
would not show up when subagent asks for permissions

Bennet Bo Fenner created

abc2f5f ci: Continue on error if non-blocking compliance step fails (#53398)

Click to expand commit body
This will make rerunning failing jobs easier, as this here is just a
pager, not anything we need to rerun - there exists a second check that
is blocking and should be rerun, this job however does not need to be.

Release Notes:

- N/A

Finn Evers created

e758d25 ci: Fix artifact naming conflict (#53433)

Click to expand commit body
This fixes the issue we saw in
https://github.com/zed-industries/zed/actions/runs/24147949240

Release Notes:

- N/A

Finn Evers created

dc3d8f1 ci: Remove noisy compliance webhook print (#53432)

Click to expand commit body
This is very noisy and does not provide much, the artifact link to the
report is sufficient for now.

Release Notes:

- N/A

Finn Evers created

d81b73f acp: Better handling of terminal auth on remote connections (#53396)

Click to expand commit body
We were incorrectly wrapping new terminal auth methods in double ssh
calls.

Only affected ACP beta users, but important for testing and stabilizing
the feature.

We moved the ssh wrapping to be only added in the acp process creation
where it was needed.

Self-Review Checklist:

- [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: Bennet Bo Fenner <bennetbo@gmx.de>

Ben Brandt and Bennet Bo Fenner created

64b9320 Removal of mold/wild scripts and mentions in docs (#53078)

Click to expand commit body
Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [ ] 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
- [ ] Performance impact has been considered and is acceptable


Release Notes:

- N/A

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

Nitin K. M. and Claude Opus 4.6 created

3f58232 Bump Zed to v0.233 (#53404)

Click to expand commit body
Release Notes:

- N/A

Dino created

a706e93 Update parallel agents onboarding copy (#53423)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

de81d61 Fix empty path being shown as an item in the recent projects picker (#53400)

Click to expand commit body
A couple of restore project group/workspaces functions weren't filtering
out project groups with empty paths, leading to an empty being shown in
the recent projects picker. This is the problem this PR solves:

<img width="400" height="1042" alt="Screenshot 2026-04-08 at 11β€― 06@2x"
src="https://github.com/user-attachments/assets/4d96cc53-5b03-445c-968b-8a8edec559da"
/>

Release Notes:

- N/A

Danilo Leal created

c32a7c1 sidebar: Fix focus movement to protect zoomed in panels (#53386)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/53283. That PR
replaced _where_ focus goes β€” from "always the center pane" to "the
saved element." But it didn't fix _when_ focus moves β€” it still moves
every time the sidebar closes, unconditionally. The problem is the saved
focus can be wrong... it's saved when the sidebar opens, but then it can
go to somewhere else after. An example:

1. Open sidebar β†’ save focus (center pane), focus sidebar
2. Open agent panel from sidebar β†’ focus moves to agent panel
3. Close sidebar β†’ restore saved focus β†’ **focuses center pane** (that's
what was saved in step 1, not the agent panel)

Effectively, this would still cause the agent panel to auto-dismiss.
This PR fixes it by no moving focus at all if the sidebar doesn't have
it. If the user already moved focus to the agent panel, there's nothing
to "restore".

Release Notes:

- N/A

Danilo Leal created

ae4404f project_panel: Fix duplicating a file only selects the copy suffix (#53146)

Click to expand commit body
Self-Review Checklist:

- [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
- [x] Performance impact has been considered and is acceptable

Closes #53116

Video 

[Screencast from 2026-04-04
19-14-55.webm](https://github.com/user-attachments/assets/d17945d6-b17c-435d-8155-648cd7ba574b)


Release Notes:

- Fixed: File duplication rename now selects the entire filename stem
instead of just the " copy" suffix, allowing users to type a new name
without manually clearing text

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

Om Chillure and Smit Barmase created

a7e677e gpui: Prevent underline and strikethrough artifacts on final glyph in text runs (#50934)

Click to expand commit body
Closes #50587 

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:
- Fixed issue that showed underline and strikethrough when markdown
preview screen was scaled to a smaller size


Previously:

<img width="741" height="457" alt="image"
src="https://github.com/user-attachments/assets/f127cf44-c679-4140-b246-e0756c9fca32"
/>



Now:

<img width="742" height="592" alt="image"
src="https://github.com/user-attachments/assets/a29fdc24-cac0-438f-8538-4e85c4df995a"
/>

---------

Signed-off-by: Pratik Karki <pratik@prertik.com>
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

Pratik Karki and Smit Barmase created

f18a404 Compile tree-sitter with opt-level 3 in dev profile (#53385)

Click to expand commit body
tree-sitter query compilation (used to set up language grammars) is a
significant bottleneck in test setup. Profiling showed rust_lang()
creation taking ~270ms per test in dev builds, with nearly all time
spent in tree-sitter's query compiler.

With opt-level = 3, this drops to ~63ms locally β€” a 4x speedup on that
step. Across hundreds of tests that create language grammars (vim,
editor, collab, etc.), this ought to save substantial CI time.



Release Notes:

- N/A or Added/Fixed/Improved ...

Lukas Wirth created

252e850 Disable flaky test_sidebar_invariants property test (#53410)

Click to expand commit body
The `test_sidebar_invariants` property test has been flaking recently.
Marking it as `#[ignore]` to unblock CI while the root cause is
investigated.

Release Notes:

- N/A

Richard Feldman created

b46be46 Disable visual tests in CI (#53408)

Click to expand commit body
Gate the `visual_tests` module behind the `visual-tests` feature flag
instead of `test`/`test-support`, so CI never compiles or runs visual
tests.

To run them locally:

```
cargo test -p zed --features visual-tests visual_tests -- --ignored --test-threads=1
```

Release Notes:

- N/A

Richard Feldman created

c372f24 agent_panel: Prevent content from overlapping with buttons in message editor (#53384)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/53349 as I was
still seeing cases where content would overlap with buttons.

<img width="500" height="266" alt="Screenshot 2026-04-08 at 6β€― 53@2x"
src="https://github.com/user-attachments/assets/e58742d4-a736-4509-9a29-35c135ddb980"
/>

I believe this PR makes the whole message editor more solid against
these cases because we're relying on `flex_basis` now to set the
max-width, which runs before we do any editor mode calculations. Tested
this a bunch and it seems to be pretty stable.

Release Notes:

- N/A

Danilo Leal created

248cc13 agent: Show notifications when thread is not the active one (#53149)

Click to expand commit body
We now always show a notification for a thread if it is not the active
one (even if the sidebar is open).
Also made clicking on the notification actually open the corresponding
thread (previously we would just changed the workspace)

Self-Review Checklist:

- [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

320cef3 project_panel: Add `sort_order` settings (#50221)

Click to expand commit body
_(Feature Requests #24962)_

_"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:

- Added a `sort_order` to `project_panel` settings which dictates how
files and directories are sorted relative to each other in a
`sort_mode`.

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>

Dionys Steffen and Smit Barmase created

bf10266 gpui: Lazy-init font DB in SvgRenderer to avoid per-test overhead (#53381)

Click to expand commit body
Commit eaf14d028a6c changed SvgRenderer::new() to eagerly deep-clone the
system font database and enrich it with bundled fonts at construction
time. Since every #[gpui::test] creates a TestAppContext β†’
App::new_app() β†’ SvgRenderer::new(), and nextest runs each test in its
own process, this added ~2-3s of overhead to every GPUI-based test (~132
minutes total across the full suite).

Move the expensive work (deep-clone + load_bundled_fonts +
fix_generic_font_families) into a OnceLock inside the font resolver
closure, so it only executes on the first actual SVG render. Tests that
never render SVGs thus do not need to load the fonts which in itself can
be fairly expensive.

This also bumps the opt-level for crane lift and some other wasmtime
crates, as only wasmtime isn't really sufficient

Release Notes:

- N/A or Added/Fixed/Improved ...

Lukas Wirth created

a0a7401 title_bar: Improve display of sign in state (#53255)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/52488

Release Notes:

- Improved the display of the sign in state in the title bar, by namely
showing "Signing in" when in an active process of signing in.

Danilo Leal created

b473ead ai: Preserve `draft_prompt` when creating a new agent threads (#53250)

Click to expand commit body
- added a shared helper `take_active_draft_initial_content` to resolve
initial content
- `draft_prompt` is copied over to a new thread and is persisted in old
thread with this behavior


Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] no Unsafe blocks 
- [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
- [ ] Performance impact has been considered and is acceptable

Closes #38028 

Release Notes:

- persist draft messages in ai thread when a new thread is created so we
dont use any messages or draft prompts mistakenly

Question: 
need some guidance on how to persist a thread when the `draft_prompt` is
present but the message is unsent because currently having a draft
prompt in the agent input box and thenmaking a new agent thread copies
the prompt over to the new thread(changes from this pr) but on going
back to the old thread new thread is destroyed

Amaan created

45efb00 compliance: Check repository status for actor (#53343)

Click to expand commit body
Also includes two other minor fixes for stdout info prints

Release Notes:

- N/A

Finn Evers created

6286b7c Fix workspace removal, and chase down all the ramifications (#53366)

Click to expand commit body
This PR adjusts how project group removal works in the sidebar to be
project group aware. Removal is now a batched operation, and supports a
contextually appropriate fallback active workspace fallback. In the
process of removing this, I had to chase down and fix other broken code:
- Removes the "move to new window" actions
- Changed the sidebar to store things in "most recently added" order
- The recent project UI was still using workspaces, instead of project
groups
- Adjusted the archive command to use the new APIs to remove the
workspace associated with that worktree (cc: @rtfeldman)
- The property tests where still using indexes and workspaces instead of
project groups

Self-Review Checklist:

- [ ] 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

Closes #ISSUE

Release Notes:

- N/A

Mikayla Maki created

a2cf71d agent_panel: Allow dismissing the worktree error callout (#53375)

Click to expand commit body
This error callout here wasn't dismissible before:

<img width="600" height="2154" alt="Screenshot 2026-04-08 at 5β€― 49@2x"
src="https://github.com/user-attachments/assets/4e9df452-9970-4145-a13d-75d5e0adee8b"
/>

Release Notes:

- N/A

Danilo Leal created

8b65a99 agent: Reset panel thread picker after git worktree creation (#53372)

Click to expand commit body
After a user creates successfully creates a new git worktree we reset
the agent thread picker state to avoid accidentally creating a new
worktree for a thread.

This also fixes some bugs where a past agent thread picker state was
invalid because it became out of sync after a new worktree was created,
or when a mutating git operation occurred.

Self-Review Checklist:

- [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 ...

Anthony Eid created

783e062 csv_preview: Add independently resizable columns (#53295)

Click to expand commit body
This PR adds spreadsheet-style independently resizable columns (dragging
changes total table width) and fixes scrolling issues in variable list
mode.

**What changed:**

- Adds `ResizableColumnsState` struct for independently resizable
columns (spreadsheet-style)
- Adds `ColumnWidthConfig::Resizable` variant for spreadsheet mode
- Adds `DraggedResizableColumn` drag payload type
- Adds `ResizableHeaderInfo` for double-click-to-reset functionality
- Adds `render_resize_handles_resizable` function for resize handles
rendering
- Adds horizontal scroll handle to `TableInteractionState`
- Adds `.on_drag_move::<DraggedResizableColumn>` handler to Table for
drag resizing

**Bug fixes:**

- Fixed missing vertical scrollbar in variable list mode
- Fixed half-broken scrolling in variable list mode (added
.measure_all() to make scrollbar aware of the height of the table)
- Moved vertical scrollbar to be pinned at the right side of the pane
with table β€” previously it was attached to the table content and was
pushed off-screen when table content was too wide

**API addition:**

```rust
// New variant added:
pub enum ColumnWidthConfig {
    Static { widths: StaticColumnWidths, table_width: Option<DefiniteLength> },
    Redistributable { entity: Entity<RedistributableColumnsState>, table_width: Option<DefiniteLength> },
    Resizable(Entity<ResizableColumnsState>),  // NEW: spreadsheet-style
}
```

**Callers updated:**

- csv_preview: Changed from `ColumnWidthConfig::redistributable()` to
use new resizable mode
- git_graph: Added `resizable_info` parameter

**Context:**

This is part 3 of a 3-PR series improving data table column width
handling:

1. [#51059](https://github.com/zed-industries/zed/pull/51059) - Extract
modules into separate files (mechanical change)
2. [#51120](https://github.com/zed-industries/zed/pull/51120) -
Introduce width config enum for redistributable column widths (API
rework)
3. **This PR**: Add independently resizable columns + fix variable list
scrolling (new feature + bug fixes)

The series builds on previously merged infrastructure:

- [#46341](https://github.com/zed-industries/zed/pull/46341) - Data
table dynamic column support
- [#46190](https://github.com/zed-industries/zed/pull/46190) - Variable
row height mode for data tables

Primary beneficiary: CSV preview feature
([#48207](https://github.com/zed-industries/zed/pull/48207))

This work is based on the [original draft PR
#44344](https://github.com/zed-industries/zed/pull/44344), decomposed
into reviewable pieces.

-----

Self-Review Checklist:

- [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

Closes #ISSUE

Release Notes:

- N/A or Added/Fixed/Improved ...

---------

Co-authored-by: Anthony Eid <anthony@zed.dev>

Oleksandr Kholiavko and Anthony Eid created

81733d4 settings_ui: Fix hover popover delay setting's json_path (#53359)

Click to expand commit body
The "Hover Popover β†’ Delay" setting item had its json_path set to
"hover_popover_enabled" (copy-paste error from the item above it),
introduced in #40739. This caused:

- "Copy Link" generating a wrong zed://settings/hover_popover_enabled
URL
- #hover_popover_delay filter returning no results in settings search
- Telemetry reporting delay changes as hover_popover_enabled

The pick/write closures were always correct, so the setting itself
functioned normally.

after the fix, filter works correctly

<img width="1793" height="752" alt="image"
src="https://github.com/user-attachments/assets/b7c459bf-c0d6-4988-ae87-087e859c6666"
/>

and the copy link button return the correct result
<img width="1787" height="120" alt="image"
src="https://github.com/user-attachments/assets/e2184f89-c400-453b-8e7d-f8ef8771e1d6"
/>

Release Notes:

- N/A

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

daydalek and Copilot created

5a7c099 sidebar: `ProjectGroup` -> `Project` rename (#53364)

Cameron Mcloughlin created

d2f0452 collab: Remove incoming invite badge count from panel icon (#53363)

Click to expand commit body
Self-Review Checklist:

- [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 ...

Anthony Eid created

4a5826b Make deserialization a bit more resilient to data changes (#53362)

Click to expand commit body
This PR makes sidebar deserialization enforce the invariants that the
multiworkspace is supposed to enforce. Also, this PR makes it so that
failing to deserialize the active workspace no longer totally fails to
deserialize the multiworkspace.

Self-Review Checklist:

- [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

Mikayla Maki created

a43ee6b Inherit parent thread settings when spawning subagents (#53328)

Click to expand commit body
When a subagent was spawned while the parent had runtime-modified
settings (fast mode, thinking, etc.), the subagent would start with
defaults from `AgentSettings` instead of inheriting the parent's current
values.

This adds `inherit_parent_settings` as a single place in
`Thread::new_subagent` that copies all runtime-mutable settings from the
parent:

- `speed`
- `thinking_enabled`
- `thinking_effort`
- `summarization_model`
- `profile_id`

These are the same properties that `set_*` methods already propagate to
`running_subagents` β€” this fix ensures they're also inherited at
creation time.

cc @benbrandt

Release Notes:

- N/A

Nathan Sobo created

871a342 agent_panel: Add some UI fixes post max-width introduction (#53352)

Click to expand commit body
Quick follow up to https://github.com/zed-industries/zed/pull/52730 with
some adjustments. Ended up cleaning some unused UI elements already
(i.e., the "Recent" history items in the agent panel's empty state).

Release Notes:

- N/A

Danilo Leal created

ac6117a Fix shell escaping in getting current env (#53335)

Click to expand commit body
Credit to Dario Weißer for bringing this to our attention.

Self-Review Checklist:

- [ ] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] 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
- [ ] Performance impact has been considered and is acceptable

Closes #ISSUE

Release Notes:

- Fixed a bug where a cleverly crafted directory name could lead to
remote code execution

Conrad Irwin created

30e7e8b Adjust worktree name display in agent panel and git picker (#53351)

Click to expand commit body
This PR adjust the name of the worktree within the agent panel: we
display `main` if you're in the main worktree and then the worktree name
when in a linked one. Additionally, I also took the opportunity to fix
something that confused me in the general worktree picker: for the list
item that represented the main worktree, we were using the current
checked out branch name for that item's name. I think that's a bit
incorrect, given the _name_ of that worktree isn't the name of the
branch you have active at that moment. For now, I'm using simply `main`
as the worktree name. Lastly, also added a little blue check icon in the
worktree _and branch_ picker to highlight which worktree/branch is
currently active.

| main worktree | linked worktree | main worktree in picker |
|--------|--------|--------|
| <img width="802" height="338" alt="Screenshot 2026-04-07 at 10β€― 32
2@2x"
src="https://github.com/user-attachments/assets/aad993e6-adc3-4c8d-b01a-abb2597182e7"
/> | <img width="804" height="332" alt="Screenshot 2026-04-07 at 10β€―
32@2x"
src="https://github.com/user-attachments/assets/e59c5b86-8cee-476c-ab7b-32ae87249c1a"
/> | <img width="804" height="856" alt="Screenshot 2026-04-07 at 10β€―
36@2x"
src="https://github.com/user-attachments/assets/282d89a8-570e-4e62-b703-853bed9b21ff"
/> |

Release Notes:

- Git: Fixed display of the main worktree name in the worktree picker.

Danilo Leal created

a5aea73 agent: Fix panel prompt footer layout in full screen (#53349)

Click to expand commit body
### Summary

Keep the prompt editor’s max-width centering, but move the footer
controls out of the same flexible wrapper as the full-height editor and
add `min_h_0()` shrink guards so the editor no longer overlaps the
footer in zoomed/full-screen mode.


#### Before
<img width="1624" height="1061" alt="Screenshot 2026-04-07 at 8 39
03β€―PM"
src="https://github.com/user-attachments/assets/db889fcd-af8a-4297-a1f9-0acb84e6ead3"
/>

#### After
<img width="1624" height="976" alt="Screenshot 2026-04-07 at 9 14 52β€―PM"
src="https://github.com/user-attachments/assets/ddae7fd4-e720-432d-b84d-45f667aa7dce"
/>

Self-Review Checklist:

- [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

Closes #ISSUE

Release Notes:

- N/A or Added/Fixed/Improved ...

Anthony Eid created

a0d0195 Add onboarding for parallel agents (#52940)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Eric Holk <eric@zed.dev>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Katie Geer <katie@zed.dev>

Danilo Leal , Eric Holk , Bennet Bo Fenner , and Katie Geer created

bf9cea6 agent_panel: Fix bug where worktree picker showed linked tree as main (#53334)

Click to expand commit body
Self-Review Checklist:

- [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

Closes #ISSUE

Release Notes:

- N/A or Added/Fixed/Improved ...

Anthony Eid created