fixes ZED-57B
Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- Fixed a (rare) panic when a fold was created immediately following a
tab character
Closes#49641
Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- Fixed panic when authentication failed to bind to lookback port
Fixes a regression introduced in #48545 (reasoning effort selector). We
saw edit file tool calls taking a long time (loading animation was
displayed, no diff) when using Opus 4.6. This was caused by Opus 4.6.
emitting thinking tokens even when the user explicitly disabled thinking
in the UI.
<img width="289" height="67" alt="image"
src="https://github.com/user-attachments/assets/090a99f8-9b07-4d25-9058-3706f9333396"
/>
In addition to the thinking tokens causing overhead, we were slowing
down file editing even more. because changing between
thinking/non-thinking between requests causes the cache to be
invalidated
([docs](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#what-invalidates-the-cache)).
This PR ensures that we inherit the setting for enabling or disabling
thinking from the thread from which the edit tool was called.
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 an issue where editing files was taking a long time when using
Opus 4.6
---------
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
This PR adds a button at the bottom of the commit details panel to
quickly open the commit view:
<img width="500" height="806" alt="Screenshot 2026-02-23 at 2 22@2x"
src="https://github.com/user-attachments/assets/770234b2-a46d-4595-9f9e-7af7eeac73be"
/>
---
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:
- N/A
- Made hover/active styles, as well as clicks, work for the entire row,
capture the graph element, too (needed to make some manual hover and
other states management to pull that off)
- Used the existing `Chip` component for the branch chip instead of a
local recreation
- Adjusted spacing and sizing of commit detail panel, including button
labels truncation and tooltip content
- Added diff stat numbers for the changed files, to match the commit
view
- Standardized the commit avatar component across the git graph, the
commit view, and the file history view
- Added scrollbar to the changed files uniform list
- Removed author name display redundancy (kept only email)
- Made the commit detail UI have a min-width
<img width="750" height="1964" alt="Screenshot 2026-02-23 at 11 31@2x"
src="https://github.com/user-attachments/assets/d1433bd8-5edb-4829-882b-52b1bffbd6db"
/>
---
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:
- N/A
---------
Co-authored-by: Anthony Eid <anthony@zed.dev>
This adds `./script/cargo` which is a transparent wrapper around `cargo`
intended for use by internal staff members at Zed.
It:
- adds `--timings` to `cargo build`/`cargo test`/`cargo run`
- saves the output to ZED_DATA_DIR/build-timings
When Zed starts (and you're logged in as a staff member) the
build-timings
directory is uploaded to our existing telemetry stack.
Co-authored-by: Marshall <git@maxdeviant.com>
Release Notes:
- N/A
The extension currently does not work, from my own testing. Since Zed
has native support for remote MCPs over HTTP now, Linear can be
configured like this:
```json
{
"linear-remote": {
"url": "https://mcp.linear.app/mcp",
"headers": {
"Authorization": "Bearer <YOUR LINEAR TOKEN>"
}
}
}
```
---
Release Notes:
- N/A
Allow the parent agent to handle cases where the subagent is running on
of context window. Also communicates if it has completely out of
context.
Release Notes:
- N/A
Remove both `git::LoadMoreHistory` and `git::ViewCommitFromHistory`
actions as although both actions were registered in the workspace, they
don't actually have effect when run.
This appears to have been leftover from
https://github.com/zed-industries/zed/pull/42441 , possibly the initial
implementation on how to open a commit and load more commits when the
file history view was open, which is now handled with `Button.on_click`
callbacks instead of relying on actions.
Closes#49288
Release Notes:
- Removed unused git actions – `git: load more history` and `git: view
commit from history`
Use title case everywhere.
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:
- Use title case for UI labels
---------
Signed-off-by: Sakthi Santhosh Anumand <mail@sakthisanthosh.in>
Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
For the last few days, the model has never picked a good timeout value.
It seems they are better at choosing timeouts for bash commands but not
agents. Given there are some rate limits involved, I think it is hard to
estimate and we already have an upper bound of execution which is the
context window to keep it from going indefinitely.
Release Notes:
- N/A
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:
- N/A
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Gives the compilation in a repository with a few more grammars some more
time to run. Also adds the Rust cache which might be utilized here
during Rust compilation.
Release Notes:
- N/A
More precisely, the name of the GitHub project board in question is
“Closed bugs with new comments”, and since GitHub seems to do the
closing and the commenting separately (and, crucially for this
automation, in that order) when the closer uses the “Close with comment”
functionality, we want to skip the comments added within 30 seconds
after the closing.
Release Notes:
- N/A
While testing the OpenAI compatible endpoint, it didn't work, so after a
bit of digging I found out it actually expects the completions endpoint
instead. So I changed the description accordingly.
Maybe this is a bug in the implementation instead and the description
should be correct.
Use `BackgroundExecutor::spawn_with_priority(Priority::RealtimeAudio,
fut)` to spawn the audio input thread with correct thread priority much
like we do for audio output. Under-the-hood, `spawn_with_priority +
Priority::RealtimeAudio` boils down to calling `std::thread::spawn` and
setting appropriate thread priority.
Release Notes:
- N/A
These functions had their names swapped accidentally
Follow up to https://github.com/zed-industries/zed/pull/49618
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Add a script that classifies open and closed issues that the duplicate
bot commented (or not commented) on and puts them into the appropriate
columns of the dedicated github project board. Add a workflow that calls
that script for every closed issue and also on a schedule (that's for
the open ones).
If you're reading this some time way later and there's no bot running
around the repository leaving comments like “This issue appears to be a
duplicate of...”, you can delete these files.
Release Notes:
- N/A
- Use git panel icons to show a changed file's state
- Centered avatar at top and move close button to top right
- Made changed file list scrollable
- clicking on a file open's it's historic commit view
- Note: The commit view doesn't fully populate the multibuffer, will fix
this in a different PR because it involves updating the commit view
interface to add more functionality
## Before
<img width="602" height="1704" alt="image"
src="https://github.com/user-attachments/assets/75a12fff-8a6a-4d0f-90dd-544adb0c2814"
/>
## After
<img width="227" height="856" alt="Screenshot 2026-02-23 at 1 23 45 PM"
src="https://github.com/user-attachments/assets/244cc9f3-e94d-4cc6-ac46-80fe70a619ff"
/>
Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
Should close#49566
Inside `on_request_frame`, it’s conceptually incorrect to update the
application directly. Instead, we should read the thermal state through
the window handle, just like in the rest of the callback. That path uses
`try_borrow_mut` internally, so if the application is already being
updated elsewhere, we can safely skip checking the thermal state for
that frame and retry on the next one.
Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
## Summary
Extends #46011 to make folds survive tab close and workspace cleanup.
- Adds `file_folds` table keyed by `(workspace_id, path)` instead of
`editor_id`
- Follows the `breakpoints` table pattern in
`workspace/src/persistence.rs`
- Includes backwards-compatible migration from `editor_folds` on first
read
cc @Veykril - you reviewed the original fold persistence PR, this
extends it to handle the tab-close case.
## Problem
Folds stored by `editor_id` get deleted when:
1. User closes a tab
2. Tab is removed from workspace serialization
3. On next Zed start, `cleanup()` deletes editor rows not in
`loaded_items`
4. `ON DELETE CASCADE` wipes associated folds
5. User manually reopens file → folds gone
This is especially painful for PKM/notes workflows where folds represent
permanent document structure (collapsed sections, reference blocks,
etc).
## Solution
Store folds by file path, not editor ID. The `breakpoints` table already
proves this pattern works in Zed - breakpoints persist across tab close
because they're keyed by path.
## Migration
The PR includes backwards-compatible migration: reads from `file_folds`
first, falls back to `get_editor_folds()`, and migrates old data on
first read. Happy to remove this if you'd prefer a clean break - I'd
delete `get_editor_folds()`, remove the fallback logic in
`read_metadata_from_db()`, and add a `DROP TABLE IF EXISTS editor_folds`
migration. Users would lose any folds saved before the update.
## Test Plan
- [x] Unit test for `file_folds` queries in `persistence.rs`
- [x] Manual test: Open file → fold → close tab → quit Zed → reopen →
manually open file → folds restored
Release Notes:
- N/A
Co-authored-by: Hector <hector@cyberneticwilderness.com>
Closes https://github.com/zed-industries/zed/issues/49363
When an existing remote workspace's connection is dead (e.g. the server
died and reconnect failed, leaving the client in `ServerNotRunning`
state), `remote_connection()` returns `None`. Previously this caused an
error dialog, blocking reconnection — the user had to manually switch to
another project and back to recover.
Now the code falls through to establish a fresh connection instead,
matching the previous behavior where clicking "Reconnect" would just
work.
Release Notes:
- Fixed remote reconnect failing with an error when the server is not
running, now establishes a fresh connection instead.
Duplicates are defined as cursor positions that have an approximate
Jaccard similarity greater than 0.5 (over token 5-grams).
From the resulting clusters of near-duplicates, we select up to N
examples that are maximally different from each other.
Release Notes:
- N/A
HTML character references like `·`, `'`, and `{` are
correctly parsed by tree-sitter as named nodes
(`html_character_reference` in TSX/JavaScript, `entity` in HTML), but no
highlight query captures them. This means they render as plain,
unhighlighted text in the editor.
This PR adds one-line highlight captures for each:
- **TSX** (`crates/languages/src/tsx/highlights.scm`):
`(html_character_reference) @string.special`
- **JavaScript** (`crates/languages/src/javascript/highlights.scm`):
`(html_character_reference) @string.special`
- **HTML** (`extensions/html/languages/html/highlights.scm`): `(entity)
@string.special`
`@string.special` is already styled by all built-in themes (One Dark,
Ayu, Gruvbox, etc.), so no theme changes are needed.
Release Notes:
- Added syntax highlighting for HTML character references (`·`,
`'`, `{`, etc.) in TSX, JavaScript, and HTML files.
This draft PR auto-applies queued documentation suggestions collected
from recently merged PRs.
34 documentation suggestions from merged PRs were processed. See the
commit message for the full list.
Release Notes:
- N/A
---------
Co-authored-by: Katie Geer <katie@zed.dev>
Reverts zed-industries/zed#49778
This seems to have made things much worse in some cases, so I'll have to
think of a different way to fix the original issue.
Release Notes:
- N/A
This PR Fixes a loading performance regresssion inside the git graph.
The main issue is that we always acted on the received repository
events, this is good in 9 out of 10 cases except for the initial loading
phase of the git graph. This is because we invalidate the graph data
every time we receive a `GitStoreEvent::ActiveRepositoryChanged`,
`RepositoryEvent::BranchChanged` or `RepositoryEvent::MergeHeadsChanged`
event this still sounds good, but the caveat is that we receive these 3
events on initial repository loading. This happens when you start up Zed
and is getting the active repository, branch ect. from your project.
When it detects a repository/branch etc. it checks if it has been
changed and emits an event for it. This is always the case for initial
repository loading, because the active repository/branch always start as
**None**. So receive an event for these non actual changes makes the git
graph cancel its initial loading and start fetching again on every
invalidated graph data call.
We fixed this by checking the **scan_id** of the repo to check if the
repo has been initialized, if its bigger then 1 we know we need to
invalidate the data because it was a actual user change instead of a
initial loading event.
**Before** (note you see the loading state twice):
https://github.com/user-attachments/assets/c25bfae1-0e2f-4c8b-a0d0-926acb33adff
**After** (almost instant):
https://github.com/user-attachments/assets/7e4ac116-65a2-4eb6-aa4c-37291d6acd0f
-----
**Before** (switching repositories shows empty commits pane)
https://github.com/user-attachments/assets/71b04285-49e7-47bb-9660-ad53bbf15c46
**After** (switching repositories shows correct graph from the cache)
https://github.com/user-attachments/assets/38c33d93-f592-4440-b63b-567fda0fbeb8
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:
- N/A
---------
Co-authored-by: Anthony <anthony@zed.dev>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Closes#49746
Previously, the `LinkFinder` looked at all of the lines, which sometimes
includes links unrelated to the pull request, like a post quantum
cryptography warning that links to
[this](https://www.openssh.org/pq.html) article.
Release Notes:
- When searching for pull request links in git output, only lines that
start with `remote:` are searched.
Closes #ISSUE
Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
Third attempt to land this improvement: (#45577, #44273)
The previous PR didn’t work on Intel MacBooks because I made a wrong
assumption about the unified memory check. `has_unified_memory` only
tells us that the CPU and GPU share memory. It does not mean we’re
running on an Apple GPU family.
Memoryless textures are only supported on Apple GPUs. Some Intel Macs
report unified memory, but they don’t support memoryless textures, which
is why the previous change failed there.
So instead of relying on unified memory, we now explicitly check that
we’re running on an Apple GPU family before enabling memoryless
textures.
Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [X] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- Reduced memory usage on macOS
---------
Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
The binary search insertion scheme in `highlight_text` works fine for
small numbers of elements but does not handle large amounts of ranges
well, as that will cause constant memcpying of the latter half of the
vec. Bracket colorization tends to have a huge amount of entries though,
so this can cause massive lags on the foreground thread. The better
approach here is to just collect all elements and re-sort them once.
Release Notes:
- Reduced mini-stutters occuring due to large amount of bracket
colorization in big buffers and agent diffs
Closes#49653
Before you mark this PR as ready for review, make sure that you have:
- [x] screen record added
- [x] Done a self-review taking into account security and performance
aspects
- [x] No UI change
The original `refresh_matching_bracket_highlights` method always
performed a clear --> highlight procedure, even when the bracket
positions hadn't changed, causing the highlights to flicker. Normally,
for single quotes or brackets, the flickering area is small and hard to
notice (though visible if you pay close attention), but for Python
docstrings, the three quotes create a larger highlighted area, making
this issue much more apparent.
After fix:
https://github.com/user-attachments/assets/bcd9b464-0def-438d-86b3-7e6b3779b5c6
Release Notes:
- Fixed bracket highlights flickering when editing inside brackets
After commit ee3f40f, the settings-related visual tests started
panicking. The settings UI code depends on MultiWorkspaces, so changing
these tests appropriately fixes the panics.
Closes#49659
Release Notes:
- N/A
This PR updates the Mistral AI provider icon to better align with
Mistral's branding. The current icon (from 2023) is not fully aligned
with Mistral's visual identity, and this change ensures consistency and
clarity for users.
### Changes Made
- Replaced the Mistral AI provider icon with an updated design to better
reflect Mistral's branding.
### Testing
- **Manual Testing:** Screenshots have been taken to verify the visual
changes. No visual regression testing was performed since this is a
minor icon update.
<img width="306" height="249" alt="Capture d’écran 2026-02-21 à 09 26
44"
src="https://github.com/user-attachments/assets/b6fa568b-66e5-4460-9bf8-88c0c6139c88"
/>
<img width="331" height="249" alt="Capture d’écran 2026-02-21 à 09 12
50"
src="https://github.com/user-attachments/assets/31ed4ffd-0b9a-47f3-92b8-e8eff6f0acb6"
/>
<img width="306" height="249" alt="Capture d’écran 2026-02-21 à 09 12
56"
src="https://github.com/user-attachments/assets/6339bb9e-5824-41e1-bdef-d809e5ac1cf3"
/>
- **Test Coverage:** No additional test coverage is required for this
change, as it is purely visual.
### Checklist
- [x] Added screenshots for manual testing.
- [x] Done a self-review taking into account security and performance
aspects (no impact).
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist).
### Release Notes
- Updated Mistral AI provider icon to align with Mistral's branding.
---
### Additional Notes
- The previous icon (from 2024) was not fully aligned with Mistral's
visual identity. This update ensures consistency.
- Screenshots of the new icon are attached for review.
- Don't enable heap tracing by default since it has a large performance
impact. A separate action that records with heap tracing is available.
- Use in-memory recording rather than file recording, since the latter
seems to cause a lot of dropped stack walks.
- Don't record stack walk data for GPU events to help reduce the trace
size.
Release Notes:
- N/A
https://github.com/zed-industries/zed/pull/48330 caused the title bar to
start eating input events below these controls. We should find a way to
make the title bar handling less busted, but this will do for now.
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
Release Notes:
- N/A
Previously, `didChangeWatchedFiles` registrations triggered a rebuild of
a single `GlobSet` containing all file watch patterns for the language
server. This means that, each time `didChangeWatchedFiles` is
registered, the work it takes to construct the `GlobSet` increases. This
quadratic blowup caused massive lag with language servers which register
thousands of watched files (like Roslyn).
Instead, create one `GlobSet` per registration and try matching them
one-by-one each time a file watcher event is raised.
---
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
Release Notes:
- Optimized performance for language servers which register many
file-watching notifications.