Commit log

2e5d241 v0.218.x stable

Joseph T. Lyons created

56c78ad Skip worktree trust queries for remote collab project clients (#46256)

Click to expand commit body
Release Notes:

- Skip worktree trust queries for remote collab project clients

Kirill Bulatov created

930bf70 Fix stale pull diagnostics for open buffers (#46201) (cherry-pick to preview) (#46222)

Click to expand commit body
Cherry-pick of #46201 to preview

----
Release Notes:

- N/A

Co-authored-by: John Tur <john-tur@outlook.com>

zed-zippy[bot] and John Tur created

455eedb workspace: Auto-switch git context when focus changed (#45354) (cherry-pick to preview) (#46147)

Click to expand commit body
Cherry-pick of #45354 to preview

----
Closes #44955 

Release Notes:

- Fixed workspace incorrectly automatically switching Git
repository/branch context in multi-repository projects when repo/branch
switched manually from the Git panel.

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>

zed-zippy[bot] and Jakub Konka created

c6f850e Delete pulled diagnostics when the source registration is unregistered (#46105) (cherry-pick to preview) (#46117)

Click to expand commit body
Cherry-pick of #46105 to preview

----
Additionally, fix a race condition where we'd still insert diagnostics
from a document or workspace pull even if the registration had been
unregistered in the time since the request was issued.

And, as a bonus: when a new pull diagnostics registration is added,
issue document pulls immediately.

This should fix regressions with basedpyright caused by
https://github.com/zed-industries/zed/pull/43703.

Release Notes:

- N/A

Co-authored-by: John Tur <john-tur@outlook.com>

zed-zippy[bot] and John Tur created

2ab92ad Bump to 0.218.5 for @P1n3appl3

Zed Zippy created

21cf867 Fix minidump upload request (#46091) (cherry-pick to preview) (#46098)

Click to expand commit body
Cherry-pick of #46091 to preview

----
Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy
<234243425+zed-zippy[bot]@users.noreply.github.com>

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>

Julia Ryan and Zed Zippy created

af2fc5c Sync the winget repo before publishing (#46093) (cherry-pick to preview) (#46094)

Click to expand commit body
Cherry-pick of #46093 to preview

----
This seemed to fix a bug where our winget release was not automatically
published.

Release Notes:

- N/A

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

zed-zippy[bot] and Conrad Irwin created

34548e1 Bump to 0.218.4 for @benbrandt

Zed Bot created

15da87c editor: Use a default font for the minimap (#45999) (cherry-pick to preview) (#46024)

Click to expand commit body
Cherry-pick of #45999 to preview

----
Closes #45496
Should help #43460
And probably also #44503

The minimap usually renders about 10x more lines of code and shaped text
than the editor. With expensive fonts such as Google Sans Code, this can
cause noticeable lag, since we attempt to synthesize 300+ lines of code
using a heavy font. Because minimap text is rendered at around 2px and
is essentially illegible, it doesn’t make sense to use the custom buffer
font.

Release Notes:

- Improved minimap performance when using custom fonts

---------

Signed-off-by: Marco Mihai Condrache
<52580954+marcocondrache@users.noreply.github.com>

Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Co-authored-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>

zed-zippy[bot] and Marco Mihai Condrache created

4597740 Clean up image resources for the current window (#45969) (cherry-pick to preview) (#45970)

Click to expand commit body
Cherry-pick of #45969 to preview

----
Closes https://github.com/zed-industries/zed/issues/35894

Trace:

https://drive.google.com/file/d/1pXDFzOg4ZS4p2SX8fk9Cjnyy1Qd1Pkrx/view?usp=sharing
[Relevant
part](https://github.com/user-attachments/files/24412472/image_leak.txt)


Release Notes:

- Fixed a memory leak when opening images

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

6af77ec Fix worktree trust handling of multiple projects on the same remote host (#45834) (cherry-pick to preview) (#45839)

Click to expand commit body
Cherry-pick of #45834 to preview

----
Closes https://github.com/zed-industries/zed/issues/45630

Remote host location alone is not enough to distinguish between remote
worktrees: different remote projects open in different windows will have
the same remote host location and _will_ have the same `WorktreeId`.

Thus, require an associated `WorktreeStore` with all
`WorktreeId`-related trust questions, and store those IDs based on the
store key.

Release Notes:

- Fixed worktree trust handling of multiple projects on the same remote
host

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

d4541ec Fix Zed OOM-ing when macOS file descriptors become invalid (#45669) (cherry-pick to preview) (#45700)

Click to expand commit body
Cherry-pick of #45669 to preview

----
Closes https://github.com/zed-industries/zed/issues/42845

Repro steps:

https://github.com/zed-industries/zed/issues/42845#issuecomment-3687413958
Initial investigation and Zed memory trace:

https://github.com/zed-industries/zed/issues/42845#issuecomment-3687877977

The PR consists of 2 commits:
*

[first](https://github.com/zed-industries/zed/pull/45669/changes/732d308c8d7e9af3649ac71ea65a9c029af820fc)
adds cosmetic fixes to remove backtraces from logs yet again and print
paths in quotes, as file descriptors may return empty paths.
It also stubs the cause if OOM in project panel: that one traversed all
worktrees in `for worktree_snapshot in visible_worktrees` and "accepted"
the one with empty paths + never called `entry_iter.advance();` in "no
file name found for the worktree" case, thus looping endlessly and
bloating the memory quite fast.

*

[second](https://github.com/zed-industries/zed/pull/45669/changes/7ebfe5da2fc6d32f3fa2d71c761f8b2ec26d945b)
adds something that resembles a fix: `fn current_path` on macOS used the
file handler to re-fetch the worktree root file path on worktree root
canonicalization failure.
What's odd, is that `libc::fcntl` returns `0` in the case when external
volume is not mounted, thus resulting in the `""` path string that is
propagated all the way up.

*

[third](https://github.com/zed-industries/zed/pull/45669/changes/1a7560cef3e9fac604124c19f46b1f9c7b91815f)
moves the fix down to the platform-related FS implementations

The "fix" now checks the only usage of this method inside `async fn
process_events` for an empty path and bails if that is the case.
I am not sure what is a better fix, but this stops any memory leaks and
given how bad the situation now, seems ok to merge for now with the
`TODO` comment for more clever people to fix properly later.

----------------

Now, when I disconnect the SMB share and reconnect it again, Zed stops
displaying any files in the project tree but the ones opened as editors.

As before, at first, when the share is unmounted, Zed fails to save any
changes because of the timeouts.

Later, when the share is re-connected, macOS Finder hangs still but Zed
starts to react on saves yet still only shows the files that are open as
editors.
The files can be edited and saved from now on.

Later, when Finder finally stops hanging and indicates that the share is
mounted fully, the rest of the file structure reappear in the project
panel, and all file saves are propagated, hence can be observed in the
share in Finder.

It feels that one good improvement to add on top is some "disconnected"
indicator that clearly shows that the file is not properly handles in
the OS.
This requires much more changes and thinking as nothing like that exists
in Zed yet, hence not done.

Release Notes:

- Fixed Zed OOM-ing when macOS file descriptors become invalid

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

29d2bc1 Associate devcontainer.json with JSONC language (#45593) (cherry-pick to preview) (#45596)

Click to expand commit body
Cherry-pick of #45593 to preview

----
Release Notes:

- N/A

Co-authored-by: Teoh Han Hui <teohhanhui@gmail.com>

zed-zippy[bot] and Teoh Han Hui created

310f30b Do not trust Docker hosts by default (#45587) (cherry-pick to preview) (#45588)

Click to expand commit body
Cherry-pick of #45587 to preview

----
It's still possible to leak secrets by spawning odd MCP/LSP servers from
`.zed/settings.json`

Release Notes:

- N/A

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

42a9ae1 Fix the argument order when starting devcontainers (#45584) (cherry-pick to preview) (#45586)

Click to expand commit body
Cherry-pick of #45584 to preview

----
Release Notes:

- (Preview only) Fix devcontainers not starting when certain env
variables were set

Co-authored-by: KyleBarton <kjb@initialcapacity.io>

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Co-authored-by: KyleBarton <kjb@initialcapacity.io>

zed-zippy[bot] , Kirill Bulatov , and KyleBarton created

3110353 Small worktree trust fixes (#45500) (cherry-pick to preview) (#45501)

Click to expand commit body
Cherry-pick of #45500 to preview

----
* Abs path trust should transitively trust all single file worktrees on
the same host
* Init worktree trust on the client side even when devcontainers are
run: remote host unconditionally checks trust, hence the client has to
keep track of it and respond with approves/declines.
Do trust all devcontainers' remote worktrees, as containers are isolated
and "safe".

Release Notes:

- N/A

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

6af2b71 terminal: Fix pane re-entrancy panic when splitting terminal tabs (#45231) (cherry-pick to preview) (#45402)

Click to expand commit body
Cherry-pick of #45231 to preview

----
## Summary
Fix panic "cannot update workspace::pane::Pane while it is already being
updated" when dragging terminal tabs to split the pane.

## Problem
When dragging a terminal tab to create a split, the app panics due to
re-entrancy: the drop handler calls `terminal_panel.center.split()`
synchronously, which invokes `mark_positions()` that tries to update all
panes in the group. When the pane being updated is part of the terminal
panel's center group, this causes a re-entrancy panic.

## Solution
Defer the split operation using `cx.spawn_in()`, similar to how
`move_item` was already deferred in the same handler. This ensures the
split (and subsequent `mark_positions()` call) runs after the current
pane update completes.

## Test plan
- Open terminal panel
- Create a terminal tab
- Drag the terminal tab to split the pane
- Verify no panic occurs and split works correctly

Co-authored-by: Ahmed M. Ammar <ahmed3mar@outlook.com>

zed-zippy[bot] and Ahmed M. Ammar created

bfa8057 Fix terminal doesn't switch to project directory when opening remote project on Windows (#45328) (cherry-pick to preview) (#45390)

Click to expand commit body
Cherry-pick of #45328 to preview

----
Closes #45253

Release Notes:

- Fixed terminal doesn't switch to project directory when opening remote
project on Windows

Co-authored-by: feeiyu <158308373+feeiyu@users.noreply.github.com>

zed-zippy[bot] and feeiyu created

1287abc adjusted scheduler prioritization algorithm (#45367) (cherry-pick to preview) (#45370)

Click to expand commit body
Cherry-pick of #45367 to preview

----
This fixes a number of issues where zed depends on the order of polling
which changed when switching scheduler. We have adjusted the algorithm
so it matches the previous order while keeping the prioritization
feature.

Release Notes:
- N/A

Co-authored-by: Yara πŸ³οΈβ€βš§οΈ <git@yara.blue>

zed-zippy[bot] and Yara πŸ³οΈβ€βš§οΈ created

4adf4c6 zed 0.218.3

Joseph T. Lyons created

dc5dab3 git: Align checkboxes in git panel (#45048)

Click to expand commit body
Before this fix checkboxes would overflow off the visible view which
isn't ideal. This aligns the checkboxes by allowing the path name to
overflow.

#### Before
<img width="135" height="159" alt="image"
src="https://github.com/user-attachments/assets/1a9e4c64-0d7b-4a8d-870a-bb198cc7377a"
/>

#### After
<img width="148" height="165" alt="image"
src="https://github.com/user-attachments/assets/c7cf7a7c-c765-4e2b-8968-b3affcaa8649"
/>

Release Notes:

- N/A

Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Matt Miller <mattrx@gmail.com>

Anthony Eid , Cole Miller , and Matt Miller created

24f7712 agent_ui: Improve UX when pasting code into message editor (#45254)

Click to expand commit body
Follow up to #42982

Release Notes:

- agent: Allow pasting code without formatting via ctrl/cmd-shift-v.
- agent: Fixed an issue where pasting a single line of code would always
insert an @mention

Bennet Bo Fenner created

7775d3b deepseek: Fix for max output tokens blocking completions (#45236) (cherry-pick to preview) (#45250)

Click to expand commit body
Cherry-pick of #45236 to preview

----
They count the requested max_output_tokens against the prompt total.
Seems like a bug on their end as most other providers don't do this, but
now we just default to None for the main models and let the API use its
default behavior which works just fine.

Closes: #45134

Release Notes:

- deepseek: Fix issue with Deepseek API that was causing the token limit
to be reached sooner than necessary

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

zed-zippy[bot] and Ben Brandt created

9ff5b98 Keep tab stop-less snippets in completion list (#45227) (cherry-pick to preview) (#45229)

Click to expand commit body
Cherry-pick of #45227 to preview

----
Closes https://github.com/zed-industries/zed/issues/45083

cc @agu-z 

Release Notes:

- Fixed certain rust-analyzer snippets not shown

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

e5f9b03 acp: Change default for gemini back to managed version (#45218) (cherry-pick to preview) (#45223)

Click to expand commit body
Cherry-pick of #45218 to preview

----
It seems we unintentionally changed the default behavior of if we use
the gemini on the path in #40663

Changing this back so by default we use a managed version of the CLI so
we can better control min versions and the like, but still allow people
to override if they need to.

Release Notes:

- N/A

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

zed-zippy[bot] and Ben Brandt created

adaa21d Return back the eager snapshot update (#45210) (cherry-pick to preview) (#45212)

Click to expand commit body
Cherry-pick of #45210 to preview

----
Based on
https://github.com/zed-industries/zed/pull/45187#discussion_r2630140112

Release Notes:

- N/A

Co-authored-by: Lukas Wirth <lukas@zed.dev>

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Co-authored-by: Lukas Wirth <lukas@zed.dev>

zed-zippy[bot] , Kirill Bulatov , and Lukas Wirth created

5bd11ae Always invalidate tree-sitter data on buffer reparse end (#45187) (cherry-pick to preview) (#45190)

Click to expand commit body
Cherry-pick of #45187 to preview

----
Also do not eagerly invalidate this data on buffer reparse start

Closes https://github.com/zed-industries/zed/issues/45182

Release Notes:

- Fixed bracket colorization not applied on initial file open

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

090fd16 Restore generic modal closing on mouse click (#45183) (cherry-pick to preview) (#45185)

Click to expand commit body
Cherry-pick of #45183 to preview

----
Was removed in

https://github.com/zed-industries/zed/pull/44887/changes#diff-1de872be76a27a9d574a0b0acec4581797446e60743d23b3e7a5f15088fa7e61

Release Notes:

- (Preview only) Fixed certain modals not being dismissed on mouse click
outside

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

4851a6b Auto-release preview as Zippy (#45163)

Click to expand commit body
I think we're not triggering the after-release workflow because of
github's loop detection when you use the default GITHUB_TOKEN

Closes #ISSUE

Release Notes:

- N/A

Conrad Irwin created

5385df8 Trigger auto-fix auto-matically (#44947)

Click to expand commit body
This updates our CI workflow to try to run the autofix.yml workflow
if any of prettier, cargo fmt, or cargo clippy fail.

Release Notes:

- N/A

Conrad Irwin created

51ee310 More secure auto-fixer (#44952)

Click to expand commit body
Split running `cargo clippy` out of the job that has access to ZIPPY
secrets as
a precaution against accidentally leaking the secrets through build.rs
or
something...

Release Notes:

- N/A

Conrad Irwin created

d00da08 zed 0.218.2

Joseph T. Lyons created

1c48189 Autotrust new git worktrees (#45138) (cherry-pick to preview) (#45158)

Click to expand commit body
Cherry-pick of #45138 to preview

----
Follow-up of https://github.com/zed-industries/zed/pull/44887

- Inherit git worktree trust
- Tidy up the security modal


Release Notes:

- N/A

---------

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>

zed-zippy[bot] , Conrad Irwin , and Kirill Bulatov created

ef28d1c Remove global workspace trust concept (#45129) (cherry-pick to preview) (#45157)

Click to expand commit body
Cherry-pick of #45129 to preview

----
Follow-up of https://github.com/zed-industries/zed/pull/44887

Trims the worktree trust mechanism to the actual `worktree`s, so now
"global", workspace-level things like `prettier`, `NodeRuntime`,
`copilot` and global MCP servers are considered as "trusted" a priori.

In the future, a separate mechanism for those will be considered and
added.

Release Notes:

- N/A

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

eec646d Move DB away from the project (#45036) (cherry-pick to preview) (#45156)

Click to expand commit body
Cherry-pick of #45036 to preview

----
Follow-up of https://github.com/zed-industries/zed/pull/44887

This fixes remote server builds.

Additionally:

* slightly rewords workspace trust text in the security modal
* eagerly ask for worktree trust on open

Release Notes:

- N/A

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

zed-zippy[bot] and Kirill Bulatov created

4deaeb7 workspace: Don't debug display paths to users in trust popup (#45079) (cherry-pick to preview) (#45155)

Click to expand commit body
Cherry-pick of #45079 to preview

----
On windows this will render two backslashes otherwise

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>

zed-zippy[bot] and Lukas Wirth created

e47b245 Introduce worktree trust mechanism (#44887) (cherry-pick to preview) (#45151)

Click to expand commit body
Cherry-pick of #44887 to preview

----
Closes https://github.com/zed-industries/zed/issues/12589 

Forces Zed to require user permissions before running any basic
potentially dangerous actions: parsing and synchronizing
`.zed/settings.json`, downloading and spawning any language and MCP
servers (includes `prettier` and `copilot` instances) and all
`NodeRuntime` interactions.
There are more we can add later, among the ideas: DAP downloads on
debugger start, Python virtual environment, etc.

By default, Zed starts in restricted mode and shows a `! Restricted
Mode` in the title bar, no aforementioned actions are executed.
Clicking it or calling `workspace::ToggleWorktreeSecurity` command will
bring a modal to trust worktrees or dismiss the modal:

<img width="1341" height="475" alt="1"

src="https://github.com/user-attachments/assets/4fabe63a-6494-42c7-b0ea-606abb1c0c20"
/>

Agent Panel shows a message too:

<img width="644" height="106" alt="2"

src="https://github.com/user-attachments/assets/0a4554bc-1f1e-455b-b97d-244d7d6a3259"
/>

This works on local, SSH and WSL remote projects, trusted worktrees are
persisted between Zed restarts.
There's a way to clear all persisted trust with
`workspace::ClearTrustedWorktrees`, this will restart Zed.

This mechanism can be turned off with settings:
```jsonc
"session": {
  "trust_all_worktrees": true
}
```
in this mode, all worktrees will be trusted by default, allowing all
actions, but no auto trust will be persisted: hence, when the setting is
changed back, auto trusted worktrees will require another trust
confirmation.

This settings switch was added to the onboarding view also.

Release Notes:

- Introduced worktree trust mechanism, can be turned off with
`"session": { "trust_all_worktrees": true }`

---------

Co-authored-by: Matt Miller <mattrx@gmail.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: John D. Swanson <swanson.john.d@gmail.com>

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Co-authored-by: Matt Miller <mattrx@gmail.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: John D. Swanson <swanson.john.d@gmail.com>

zed-zippy[bot] , Kirill Bulatov , Matt Miller , Danilo Leal , and John D. Swanson created

ed95a47 zed 0.218.1

Joseph T. Lyons created

598fcda Add Gemini 3 Flash (#45139) (cherry-pick to preview) (#45141)

Click to expand commit body
Cherry-pick of #45139 to preview

----
Add support for the new Gemini 3 Flash model

Release Notes:

- Added support for Gemini 3 Flash model

Co-authored-by: Richard Feldman <richard@zed.dev>

zed-zippy[bot] and Richard Feldman created

262750a Fix a bug where switching the disable AI flag would cause a panic (#45050) (cherry-pick to preview) (#45140)

Click to expand commit body
Cherry-pick of #45050 to preview

----
Also quiet some noisy logs

Release Notes:

- N/A

Co-authored-by: Mikayla Maki <mikayla@zed.dev>

zed-zippy[bot] and Mikayla Maki created

90b8528 Revert "Remove CopyAsMarkdown" (#45101) (cherry-pick to preview) (#45102)

Click to expand commit body
Cherry-pick of #45101 to preview

----
Reverts https://github.com/zed-industries/zed/pull/44933.

It turns out that if you're copying agent responses to paste it anywhere
else that isn't the message editor (e.g., for a follow up prompt),
getting Markdown formatting is helpful. However, with the revert, the
underlying issue in https://github.com/zed-industries/zed/issues/42958
remains, so I'll reopen that issue, unfortunately.

Release Notes:

- N/A

Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>

zed-zippy[bot] and Danilo Leal created

4df9841 python: Fetch non pre-release versions of `ty` (#45080) (cherry-pick to preview) (#45082)

Click to expand commit body
Cherry-pick of #45080 to preview

----
0.0.2 is not a pre-release artifact unlike the previous one, so our
version fetch ignored it.

Fixes https://github.com/zed-industries/zed/issues/45061

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>

zed-zippy[bot] and Lukas Wirth created

0982a59 Revert "gpui: Take advantage of unified memory on Apple silicon (#44273)" (#45022)

Click to expand commit body
This reverts commit 2441dc3f6637431a781ae10b2e1aa8c4704b9502.

Release Notes:

- N/A

Joseph T. Lyons created

6d4915d Revert "Optimize editor rendering when clipped by parent containers" (#45011)

Click to expand commit body
This reverts commit 914b0117fb5a23469af85e567d5723eca6b53635 (#44995).

The optimization introduced a regression that causes the main thread to
hang for **100+ seconds** in certain scenarios, requiring a force quit
to recover.

## Analysis from spindump

When a large `AutoHeight` editor is displayed inside a `List` (e.g.,
Agent Panel thread view), the clipping calculation can produce invalid
row ranges:

1. `visible_bounds` from `window.content_mask().bounds` represents the
window's content mask, not the intersection with the editor
2. When the editor is partially scrolled out of view,
`clipped_top_in_lines` becomes extremely large
3. This causes `start_row` to be computed as an astronomically high
value
4. `blocks_in_range(start_row..end_row)` then spends excessive time in
`Cursor::search_forward` iterating through the block tree

The spindump showed **~46% of samples** (459/1001 over 10+ seconds)
stuck in `BlockSnapshot::blocks_in_range()`, specifically in cursor
iteration.

### Heaviest stack trace
```
EditorElement::prepaint
  └─ blocks_in_range + 236
       └─ Cursor::search_forward (459 samples)
```

## Symptoms

- Main thread unresponsive for 33-113 seconds before sampling even began
- UI completely frozen
- High CPU usage on main thread (10+ seconds of CPU time in the sample)
- Force quit required to recover

## Path forward

The original optimization goal (reducing line layout work for clipped
editors) is valid, but the implementation needs to:
1. Correctly calculate the **intersection** of editor bounds with the
visible viewport
2. Ensure row calculations stay within valid ranges (clamped to
`max_row`)
3. Handle edge cases where the editor is completely outside the visible
bounds

Release Notes:

- Fixed a hang that could occur when viewing large diffs in the Agent
Panel

Nathan Sobo created

fcacef7 v0.218.x preview

Joseph T. Lyons created

0466db6 helix: Map Zed's specific diff and git-related to goto mode (#45006)

Click to expand commit body
Until now, Helix-mode users would have to rely on Vim's `d *` behaviour
which cannot be reliably replicated with Helix's default delete
behaviour and so I believe that remapping this functionality to Helix's
goto mode is a better fit.

Release Notes:

- Added custom mappings for Zed specific diff and git-related actions to
Helix's goto mode:
  * `g o` - toggle selected diff hunks
  * `g O` - toggle staged
  * `g R` - restore change
  * `g u` - stage and goto next diff hunk
  * `g U` - unstage and goto next diff hunk

Jakub Konka created

420254c Re-add save_file and restore_file_from_disk agent tools (#45005)

Click to expand commit body
This re-introduces the `save_file` and `restore_file_from_disk` agent
tools that were reverted in #44949.

I pushed that original PR without trying it just to get the build off my
machine, but I had missed a step: the tools weren't added to the default
profile settings in `default.json`, so they were never enabled even
though the code was present.

## Changes

- Add `save_file` and `restore_file_from_disk` to the "write" profile in
`default.json`
- Add `Thread::has_tool()` method to check tool availability at runtime
- Make `edit_file_tool`'s dirty buffer error message conditional on
whether `save_file`/`restore_file_from_disk` tools are available (so the
agent gets appropriate guidance based on what tools it actually has)
- Update test to match new conditional error message behavior

Release Notes:

- Added `save_file` and `restore_file_from_disk` agent tools to handle
dirty buffers when editing files

Nathan Sobo created

8b9fa15 Update contribution ideas and guidelines (#45001)

Click to expand commit body
Release Notes:

- N/A

Lena created

914b011 Optimize editor rendering when clipped by parent containers (#44995)

Click to expand commit body
Fixes #44997

## Summary

Optimizes editor rendering when an editor is partially clipped by a
parent container (e.g., a `List`). The editor now only lays out and
renders lines that are actually visible within the viewport, rather than
all lines in the document.

## Problem

When an `AutoHeight` editor with thousands of lines is placed inside a
scrollable `List` (such as in the Agent Panel thread view), the editor
would lay out **all** lines during prepaint, even though only a small
portion was visible. Profiling showed that ~50% of frame time was spent
in `EditorElement::prepaint` β†’ `LineWithInvisibles::from_chunks`,
processing thousands of invisible lines.

## Solution

Calculate the intersection of the editor's bounds with the current
content mask (which represents the visible viewport after all parent
clipping). Use this to determine:
1. `clipped_top_in_lines` - how many lines are clipped above the
viewport
2. `visible_height_in_lines` - how many lines are actually visible

Then adjust `start_row` and `end_row` to only include visible lines. The
parent container handles positioning, so `scroll_position` remains
unchanged for paint calculations.

## Example

For a 3000-line editor where only 50 lines are visible:
- **Before**: Lay out and render 3000 lines
- **After**: Lay out and render ~50 lines

## Testing

Verified the following scenarios work correctly:
- Editor fully visible (no clipping)
- Editor clipped from top
- Editor clipped from bottom
- Editor completely outside viewport (renders nothing)
- Fractional line clipping at boundaries
- Scrollable editors with internal scroll state inside a clipped
container

Release Notes:

- Improved agent panel performance when rendering large diffs.

Antonio Scandurra created