Closes #44038
BM25 results were fully replacing fuzzy results, which caused some items
to disappear from search. For example, "Show Menus" wouldn’t show up
when searching for "menu". This happened due to limitations in the
Porter stemmer used by the library. Fuzzy search matched correctly, but
its results were getting overwritten. We now merge both result sets
instead.
Release Notes:
- Fixed an issue where settings search missed some results, like "Show
Menus" when searching for "menu".
Smit Barmase
created
28e7ee4
workspace: Unpreview active tab when closing other tabs (#46294)
Click to expand commit body
Un-preview the active tab when closing other tabs.
In my mind the intent when clicking `Close Others` is to keep the
current tab around, so it should no longer be treated as a preview.
This also matches the VSCode behavior.
Release Notes:
- Make preview tab permanent after closing all other tabs
Alex Miller
created
466c700
terminal: Skip SHLVL when loading login shell environment (#46273)
Click to expand commit body
Fixes #33958
## Problem
PR #44835 attempted to fix SHLVL starting at 2 by removing it from the
`env` HashMap passed to alacritty. However, that HashMap is only an
**overlay** — alacritty uses the parent process environment as a base
and applies the overlay on top. Since alacritty never calls
`env_remove("SHLVL")`, the terminal shell still inherits `SHLVL` from
Zed's process environment.
## Root Cause
The real issue is in `load_login_shell_environment()`:
1. `shell_env::capture()` spawns a login shell to capture environment
variables
2. That login shell increments `SHLVL` (from 0→1 or n→n+1)
3. The captured env (including the incremented `SHLVL`) is written to
Zed's **process environment** via `env::set_var`
4. When you open a terminal, the shell inherits Zed's `SHLVL` and
increments it again → starts at 2
5. On reload, `shell_env::capture()` runs again with the
already-elevated `SHLVL`, incrementing it further → +2 per reload
## Fix
Skip `SHLVL` when setting Zed's process environment in
`load_login_shell_environment()`. This prevents the login-shell capture
from polluting Zed's env, so terminals start fresh with the correct
`SHLVL`.
rari404
created
cfa478d
windows: Improve error message for credential write failures (#46221)
Click to expand commit body
Release Notes:
- Improved Display the actual Windows error message when writing
credentials to Credential Manager fails, instead of the generic "Failed
to write API key to keychain" message. This helps users diagnose issues
like permission problems.
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu
created
7e39e15
editor: Don't paint hunk controls when the text area is too narrow to contain them (#46331)
Click to expand commit body
Release Notes:
- N/A
Cole Miller
created
3835d40
git: Don't show binary files in past commit view (#46312)
Click to expand commit body
Also improves the commit view to use the same status-based buffer header
visual overrides as the project diff as a driveby.
Fixes https://github.com/zed-industries/zed/issues/45735
Release Notes:
- git: Binary files are no longer shown in garbled form when viewing an
old commit.
Cole Miller
created
74c3608
Update pulldown-cmark to v0.13.0 to fix crash (#46267)
Click to expand commit body
Hi Zed team thank you for the awesome editor!
I recently stumbled upon a markdown sequence that seems to cause a crash
```md
- [ ] -
\
-
```
*easier to read escape characters below
```rust
let crash_input = "-\t[\t] -\r\\\n-"
println!("{}", crash_input)
```
## how to reproduce
1. copy the markdown above
2. save the file
3. `[shift]` + `[cmd]` + `p` to open the command palette
4. select `markdown: open preview`
5. crash
I've confirmed that the issue is a bug in pulldown-cmark version 12, and
has been resolved in version
[v0.13.0](https://github.com/pulldown-cmark/pulldown-cmark/releases/tag/v0.13.0)
and specifically fixed in
https://github.com/pulldown-cmark/pulldown-cmark/pull/1017
this PR simply bumps the pulldown-cmark version in zed which resolves
the crash on my local machine.
## recording
https://github.com/user-attachments/assets/dc77132f-0d43-40f3-9841-0bf34fe714fb
Release Notes:
- Fixes crash due to markdown parsing via bumping pulldown-cmark
fc770b6
Create project entries for entry ancestors when scanning is disabled (#46300)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Agus Zubiaga
and
Max Brunsfeld
created
e2cd9ac
git: Fix base text in branch diff and text diff view not being highlighted (#46302)
Click to expand commit body
Release Notes:
- Fixed deleted portions of hunks in the branch diff and text diff views
not being syntax-highlighted.
Cole Miller
created
05efa59
Add variable row height mode to table UI element (#46190)
Click to expand commit body
## Add variable row height mode to data table infrastructure
This PR introduces support for variable row heights in the data table
component, laying the groundwork for more flexible tabular data
rendering in Zed.
**Context:**
This is the first in a series of infrastructure-focused PRs split out
from the [original CSV preview draft
PR](https://github.com/zed-industries/zed/pull/44344). The draft PR
remains open as a reference and will be incrementally decomposed into
smaller, reviewable pieces like this one.
**Details:**
- Adds a variable row height mode to the data table, enabling future
features that require rows of differing heights (such as CSV preview
and, eventually, database table views).
- No user-facing changes; this is an internal refactor to support
upcoming functionality.
**Thanks:**
Big thanks to @Anthony-Eid for pairing sessions and guidance on how to
best structure and land these changes incrementally.
---
Release Notes:
- N/A (internal infrastructure change, no user impact)
Now that https://github.com/zed-industries/zed/pull/45352 is in preview,
this updates the docs at https://zed.dev/docs/languages/tailwindcss with
instructions similar to
https://github.com/tailwindlabs/tailwindcss-intellisense?tab=readme-ov-file#filesassociations
Release Notes:
- N/A
Closes #ISSUE
Organizes the giant list of settings UI items in `page_data.rs` a bit so
that sections are split out in sub functions that (for the most part)
return constant size arrays. Page items is also converted to a
`Box<[...]>` instead of a Vec.
The goal here is to have working breadcrumbs when in the settings UI
file (e.g. `fn general_page() > fn general_section()`), and to escape
the `vec![]` macro so that `rust-analyzer` works more consistently.
This should help both humans and LLMs know where they are in the file
and use the outline to navigate it instead of having to read the whole
thing to have an idea of what is going on.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
97c35c0
gpui: Actually remove the Result from AsyncApp (#45809)
Click to expand commit body
Depends on: https://github.com/zed-industries/zed/pull/45768
Refactor plan:
https://gist.github.com/mikayla-maki/6c4bf263fd80050715ba01f45478796e
Overall plan:
https://gist.github.com/mikayla-maki/7bb5078e4385a2e683e1e1eb40d17d38
This is the big one.
Release Notes:
- N/A
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Mikayla Maki
and
Claude Opus 4.5
created
4831e5c
git: Fix project diff sorting not matching the git panel when tree view is in use (#46283)
Click to expand commit body
The tree view effectively always sorts by status, not by path.
Release Notes:
- Fixed incorrect ordering of paths in the project diff when using the
git panel's tree view.
Cole Miller
created
a3733b8
Use transparent clear color for opaque windows on Linux (#46281)
Click to expand commit body
https://github.com/zed-industries/zed/pull/45423 changed the Blade
renderer to use a white clear color for "opaque" windows. This interacts
poorly with our client-side decorations, causing the shadows around the
window to be drawn over a white background.
Release Notes:
- N/A
John Tur
created
19e7ee5
Remove BACKWARDS from buffer search settings
Click to expand commit body
This is only applicable to vim search.
Michael Benfield
created
76fed22
ep: Add file deletion support in unified diff parsing (#46279)
Click to expand commit body
- Replace `is_new_file: bool` with `FileStatus` enum
(Created/Modified/Deleted) in udiff.rs to properly track file status
through diff operations
- Handle deleted files in `apply_diff` by calling
`project.delete_file()`
- Fix diff serialization in reorder_patch.rs to output `+++ /dev/null`
for file deletions and parse both `--- /dev/null` and `+++ /dev/null`
correctly
- Add bounds check for edit ranges exceeding buffer length
Also includes edit_prediction_cli improvements:
- Track `context_range` and `editable_range` in ExampleBuffer for more
precise prompt formatting
- Export MAX_CONTEXT_TOKENS and MAX_REWRITE_TOKENS from zeta2
- Wait for buffer parsing before computing ranges
- Respect NO_COLOR env var and enable info-level logging
Release Notes:
- N/A
Co-authored-by: Agus Zubiaga <agus@zed.dev>
Oleksiy Syvokon
and
Agus Zubiaga
created
30dc8c5
ep cli: More substatus granularity (#46266)
Click to expand commit body
Helps narrow down steps that are taking too long
Release Notes:
- N/A
Agus Zubiaga
created
3e8d013
Polish the Closed Bugs GH workflow (#46271)
Click to expand commit body
Remove the attempts to have these issues land in the same 'inbox' (the
existing project board for triage). Since they're closed, the automated
workflow of the project board will move them to the 'Closed'
column/status even with the API call specifically moving them to
'Incoming' instead. It is what it is, we'll have a separate project
board for this.
Also:
- don't look at comments on PRs
- don't freak out if the issue has no type
- add a permissions block as a defensive measure (in case someone adds
secrets.GITHUB_TOKEN later)
- add a timeout to avoid hanging out for six hours or whatever the
default is
- add some logging.
Release Notes:
- N/A
Lena
created
49c4dcb
ep: Fix code block extraction to require closing fence at line start (#46270)
Click to expand commit body
`extract_last_codeblock` was using `find()` to locate closing fences,
which would match backticks anywhere in the text. This caused incorrect
parsing when the content contained inline backticks or nested code
blocks, resulting in wrong diffs.
Fix by requiring the closing fence to be preceded by a newline.
Release Notes:
- N/A
Oleksiy Syvokon
created
69acab7
Let agent see output of killed terminal tools (#46218)
Click to expand commit body
Previously, if you stopped the terminal prematurely, the agent would
assume the terminal process had timed out. Now it knows what happened
and can see the output:
<img width="718" height="885" alt="Screenshot 2026-01-07 at 12 40 23 AM"
src="https://github.com/user-attachments/assets/a5ea14b2-249c-4ada-9f20-d6b608f829e5"
/>
Release Notes:
- Stopping the terminal tool now allows the agent to see its output up
to that point.
Richard Feldman
created
1ac2b97
Make tasks inherit their callers priority (#46179)
Click to expand commit body
Additionally this extracts more functionality into the RunnableVariant which is renamed to GpuiRunnable.
Release Notes:
- N/A
---------
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: Cole Miller <cole@zed.dev>
Yara 🏳️⚧️
,
Lukas Wirth
, and
Cole Miller
created
a2c233b
Do not try to open PDF, zip and other binaries (#46262)
Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/44819
Stop doing this in more cases:
<img width="1728" height="2168" alt="image"
src="https://github.com/user-attachments/assets/a82f7217-3b7a-4ca9-bb12-c3098b3e9913"
/>
Release Notes:
- Do not try to open PDF, zip and other binaries as text
Kirill Bulatov
created
f119b97
ep cli: Make the udiff parsing more resilient (#46264)
Click to expand commit body
We will now properly handle `\ No newline at the end of file` after
context lines and repeated occurrences. Also, when line numbers are
present in hunk headers, we will use them to disambiguate the location
when the context is not unique enough.
Release Notes:
- N/A
Agus Zubiaga
created
7fa65ea
Add action tracking to enable token healing for Sweep (#46212)
b41eb6e
Add fallback message when preview changelog is empty (#46260)
Click to expand commit body
Avoid publishing preview releasing that say nothing in the release
notes:
<img width="947" height="258" alt="SCR-20260107-ioxx"
src="https://github.com/user-attachments/assets/97204551-8f55-43fb-8c9c-35491a4f1378"
/>
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Joseph T. Lyons
created
82826e7
ep: Fix revision resolution for tilde expressions (#46258)
Click to expand commit body
When a revision like `abcd~1` wasn't found locally, the function would
fetch and then return `FETCH_HEAD`, which points to the tip of the
fetched branch rather than the requested revision expression.
Now it re-resolves the original revision after fetching, correctly
handling tilde expressions and other git revision syntax.
Release Notes:
- N/A
Oleksiy Syvokon
created
0136e41
ep: Fix incorrect example count in failure summary (#46257)
Click to expand commit body
The 'X of Y examples failed' message was counting completed steps/tasks
instead of actual examples. For example, with 2 examples each going
through Load and Context steps, it would report '1 of 3' instead of '1
of 2'.
Release Notes:
- N/A
Sometimes git locks are left over from crashed runs. We now assume
there's only one process of the CLI running and clean them up. If we
want to run multiple processes at the same time, we should consider our
own file-based lock, but it seems fine for an internal tool.
Release Notes:
- N/A
Agus Zubiaga
created
134c5e6
ep cli: Handle opening buffers from files created by the edit history (#46254)
Click to expand commit body
Since we don't persist new files to disk, they don't have entries, so we
have to look them up in memory first.
Release Notes:
- N/A
Agus Zubiaga
created
1362582
Override project status in Closed Bugs workflow (#46253)
Click to expand commit body
Since the project board to which the closed bugs with new comments are
added might have an automated workflow for moving closed issues to the
"Done" status, we need to override the status to ensure the bugs are
actually surfaced to the team and not buried in "Done".
Release Notes:
- N/A
Lena
created
a354473
Fix the action version in Closed Bugs GH workflow (#46251)
Click to expand commit body
fix-up for https://github.com/zed-industries/zed/pull/46249 because
testing github workflows is fun and opus 4.5 thinks it's amusing.
Release Notes:
- N/A
Lena
created
754bfad
Add GH workflow to surface comments on closed bugs (#46249)
Click to expand commit body
Sometimes bugs come back or are not fixed all the way. We want to
preserve the context of the issue we've closed prematurely so instead of
always making people open a new github issue in this case we want to be
able to notice if someone* comments on a closed bug and decide what to
do about it.
Before:
Bug is closed → A user can again/still reproduce it on a new version and
leaves a comment → Maybe someone sees the notification about it, maybe
not; maybe they see it but forget to act on it right away and it's lost.
After:
Bug is closed → A user can again/still reproduce it on a new version and
leaves a comment → The issue is added to a project board where it's
visible until someone makes a call about it (maybe the comment was “oh
my glob i'm so happy this was fixed” and no action is needed, or maybe
the issue must be reopened as a regression).
*Someone in this case means (1) not a bot, (2) not a member of staff.
Release Notes:
- N/A
Lena
created
f845893
ui_input: Only render number field border on focus (#46165)
Click to expand commit body
The `NumberField.render` method was always rendering a `border_1` for
the number input, even when not focused. Even though it was using
`cx.theme().colors().border_transparent`, some themes don't have this
value set to a fully transparent color so it ends up looking a little
bit weird.
As such, this commit updates the way the border is rendered, to ensure
it's actually only rendered, i.e., the `border_1` method is only called,
when the field is actually focused.
Release Notes:
- Improved rendering of border on number field's input to ensure it's
only rendered when the field is focused
Dino
created
9e9269b
settings: Add Sapling directory to default `file_scan_exclusions` (#45837)
Click to expand commit body
[Sapling](https://sapling-scm.com/docs/git/git_support_modes/) is
similar to git / hg / jj in that it creates a /.sl directory when
initializing a repository. This can be added alongside the other source
control scan exclusions
includes a docs update for these defaults
Release Notes:
- Settings: Add Sapling directory to default `file_scan_exclusions`
Cory Wilhite
created
00becd8
docs: Add LGPL v3 and zlib as accepted extension licenses (#46242)
Click to expand commit body
Follow-up to https://github.com/zed-industries/extensions/pull/4397
Release Notes:
- N/A
Finn Evers
created
f90fe5c
language_models: Make wording for setting env vars consistent (#46240)
Click to expand commit body
Release Notes:
- N/A
Jakub Konka
created
692bf30
docs: Add documentation for `auto_update_extensions` (#46130)
Click to expand commit body
Add documentation for the existing `auto_update_extensions` setting that
allows users to toggle auto-updates per extension.
Release Notes:
- N/A
---------
Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
Adrian
and
Kunall Banerjee
created
49e4102
project: Fix organize imports action not working for Python (#45874)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/26819
Explained in
https://github.com/zed-industries/zed/issues/26819#issuecomment-3399175027
That action is now the default on format in
https://github.com/zed-industries/zed/pull/41103 since October, but
applying manually is still broken.
Release Notes:
- Fixed an issue where the `editor: organize imports` action didn’t work
for Python, even though imports were organized correctly during
formatting.
Abdelhakim Qbaich
created
a1bacce
agent: Remove extraneous character in `system_prompt` template (#46238)
## Context / Related PRs This PR is the third part of the encoding
support improvements, following:
- #44819: Introduced initial legacy encoding support (Shift-JIS, etc.).
- #45243: Fixed UTF-16 saving behavior and improved binary detection.
## Summary
This PR implements a status bar item that displays the character
encoding of the active buffer (e.g., `UTF-8`, `Shift_JIS`). It provides
visibility into the file's encoding and indicates the presence of a Byte
Order Mark (BOM).
## Features
- **Encoding Indicator**: Displays the encoding name in the status bar.
- **BOM Support**: Appends `(BOM)` to the encoding name if a BOM is
detected (e.g., `UTF-8 (BOM)`).
- **Configuration**: The active_encoding_button setting in status_bar
accepts "enabled", "disabled", or "non_utf8". The default is "non_utf8",
which displays the indicator for all encodings except standard UTF-8
(without BOM).
- **Settings UI**: Provides a dropdown menu in the Settings UI to
control this behavior.
- **Documentation**: Updated `configuring-zed.md` and
`visual-customization.md`.
## Implementation Details
- Created `ActiveBufferEncoding` component in
`crates/encoding_selector`.
- The click handler for the button is currently a **no-op**.
Implementing the functionality to reopen files with a specific encoding
has potential implications for real-time collaboration (e.g., syncing
buffer interpretation across peers). Therefore, this PR focuses strictly
on the visualization and configuration aspects to keep the scope simple
and focused.
- Updated schema and default settings to include
`active_encoding_button`.
## Screenshots
<img width="487" height="104" alt="image"
src="https://github.com/user-attachments/assets/041f096d-ac69-4bad-ac53-20cdcb41f733"
/>
<img width="454" height="99" alt="image"
src="https://github.com/user-attachments/assets/ed76daa2-2733-484f-bb1f-4688357c035a"
/>
## Configuration
To hide the button, add the following to `settings.json`:
```json
"status_bar": {
"active_encoding_button": "disabled"
}
```
- **enabled**: Always show the encoding.
- **disabled**: Never show the encoding.
- **non_utf8**: Shows for non-UTF-8 encodings and UTF-8 with BOM. Only
hides for standard UTF-8 (Default).
<img width="1347" height="415" alt="image"
src="https://github.com/user-attachments/assets/7f4f4938-3320-4d21-852c-53ee886d9a44"
/>
## Heuristic Limitations:
The underlying detection logic (implemented in #44819 and #45243)
prioritizes UTF-8 opening performance and does not guarantee perfect
detection for all encodings. We consider this margin of error
acceptable, similar to the behavior seen in VS Code. A future "Reopen
with Encoding" feature would serve as the primary fallback for any
misdetections.
Release Notes:
- Added a status bar item to display the active file's character encoding (e.g. `UTF-16`). This shows for non-utf8 files by default and can be configured with `{"status_bar":{"active_encoding_button":"disabled|enabled|non_utf8"}}`
Reverts zed-industries/zed#46088
This also made the new thread action no longer focus so this wasn't the
right way to address this
Lukas Wirth
created
f4aad4b
Improve visual test runner: consolidate setup, add constants, remove dead code (#46217)
Click to expand commit body
Just some code cleanup to improve the tests - make them better exemplars
for future use.
Release Notes:
- N/A
Richard Feldman
created
8f961a4
gpui: Make all foreground tasks drop when the app dies (#46219)
Click to expand commit body
This expands the liveness check to cover all foreground tasks that don't
take the app as a context (as some of their internal futures might.)
Release Notes:
- N/A
Mikayla Maki
created
67e2a23
Fix coalescing of multi-line edits (#46220)
Click to expand commit body
I was seeing some surprising un-coalesced edits in the edit history when
looking at captured examples. I realized that we were only coalescing
based on the *ends* of edit ranges, but I think we want to combine hunks
where there are 8 or less unchanged lines in between changes. This PR
implements that.
Release Notes:
- N/A