Commit Graph
35208 Commits
Author SHA1 Message Date
cui e4f2492099 debugger: Fix panic at non-UTF-8 character in paths on Linux (#49103)
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:

- N/A
2026-02-14 10:38:04 +00:00
Nicolas Le Cam 180d32023d auto_update_ui: Set a title when viewing release notes locally (#49153)
| before | after |
| - | - |
| <img width="447" height="177" alt="image"
src="https://github.com/user-attachments/assets/bf030e11-5c03-43c6-8a7b-ff7057bada5f"
/> | <img width="463" height="176" alt="image"
src="https://github.com/user-attachments/assets/e6f6a3d5-e454-469f-adb4-62a38181cb6f"
/> |

Title for markdown preview is still the same:
<img width="463" height="176" alt="image"
src="https://github.com/user-attachments/assets/b83fdf54-804f-4f98-8d3b-0c7b93f44b83"
/>

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

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
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Fixed title of the release notes local preview
2026-02-14 10:34:51 +00:00
Kirill Bulatov ae12c80dca Revert proejct search on type (#49163)
Reverts the whole "project search on type" set of PRs until we figure
out better ways to deal with flickering between search results
appearing.

Release Notes:

- N/A
2026-02-14 08:31:30 +00:00
Eric Holk 0f84a366d9 multi_buffer: Fix "cannot seek backward" crash in summaries_for_anchors (#49047)
## Bug

**Sentry:**
[ZED-3W3](https://sentry.io/organizations/zed-dev/issues/7085300207/)
(13 events, first seen 2025-12-03)

`summaries_for_anchors` panics with "cannot seek backward" when
iterating selection anchors whose excerpt locators are no longer in
ascending order after an `update_path_excerpts` call.

### Root cause

`update_path_excerpts` merges new excerpt ranges with existing ones.
When an existing excerpt has no overlap with any new range (e.g.
`existing_range.end < new.context.start`), it is removed from the
excerpts tree but is **not** recorded in `replaced_excerpts`. Its stale
locator persists in the `excerpt_ids` tree.

Later, when a new excerpt is inserted for a different path whose locator
falls between the stale locator and another surviving excerpt,
`summaries_for_anchors` can encounter anchors in an order where it needs
to seek the cursor *backward* — violating the forward-only cursor
invariant.

Concretely, the scenario requires:
1. A path with ≥3 excerpts (E_B1, E_B2, E_B3) with anchors in E_B2 and
E_B3.
2. An `update_path_excerpts` call that keeps E_B1, **removes E_B2** (no
overlap → no `replaced_excerpts` entry), and replaces E_B3 with a new
excerpt N.
3. A new path D inserted between paths B and C, whose excerpt E_D gets a
locator between N and E_B2's stale locator.
4. Resolving the old anchors: E_B2's stale locator seeks past E_D, then
E_B3→N tries to seek backward to N — **panic**.

## Fix

In the two branches of `update_path_excerpts` where existing excerpts
are removed without being absorbed into a new range, map the removed
excerpt to the nearest surviving neighbor (the last kept or inserted
excerpt) in `replaced_excerpts`. This ensures stale anchors always remap
to a valid, correctly-ordered locator.

The two branches are:
- `existing_range.end < new.context.start` — existing excerpt falls
entirely before the next new range
- `(None, Some(...))` — no more new ranges for remaining existing
excerpts

## Verification

- A reproduction test
(`test_cannot_seek_backward_after_excerpt_replacement`) that constructs
the exact crash scenario now passes.
- Full `multi_buffer` test suite (48 tests) passes with no regressions.
- Clippy is clean.

Release Notes:
- Fixed a possible crash when updating excerpts in multibuffers
2026-02-14 09:19:35 +01:00
holoflash 3023cf3e28 chore: remove no-longer needed search_on_input=false toggle before tests (#49161)
Just cleaning up after myself.

When search_on_input was toggled default [in this
PR](https://github.com/zed-industries/zed/pull/42889/changes/1f831e028d4de9e872a78b0af8b9d24e33f7d3c7)
I toggled it to false before a few tests that weren't expecting it.

Then [this PR changed](https://github.com/zed-industries/zed/pull/49150)
it to be false by default and the extra toggle before the tests slipped
through.

Think it's a good idea to remove this to avoid any confusion in the
future.
@SomeoneToIgnore 


Release Notes:

- N/A
2026-02-14 08:18:48 +00:00
Кузнецов Максим c932dd1935 recent_projects: Check for WSL paths in OpenFolderInWsl (#49156)
Closes #42842

Previously, OpenFolderInWsl action assumed a valid path is on the host
and failed to open paths inside the WSL filesystem (accessed through
UNC)

Now the action checks for a WSL path and opens it with the appropriate
distro (skipping the choice modal)

This was manually confirmed to not regress as well as work with WSL
paths.

Code was written by hand, with extra checking by OpenAI Codex.

Release Notes:

- Fixed paths inside the WSL filesystem failing to open when using "open
folder in wsl"
2026-02-14 08:17:29 +00:00
Xiaobo Liu 144dd9302b python: Prevent shell command injection in conda environment activation (#49160)
Release Notes:

- Fixed prevent shell command injection in conda environment activation

The conda environment name was directly interpolated into the shell
command without proper escaping, which could allow command injection
if the environment name contained malicious shell metacharacters.

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-02-14 08:08:38 +00:00
Enzo GAZZOLIandKunall Banerjee b90a370c86 docs: Add Tailwind LSP configuration sections (#48096)
Document how to configure the Tailwind CSS language server for the
following languages:

- Astro
- Elixir
- HTML
- PHP
- Svelte
- Vue

Refs: #43969

Release Notes:

- N/A

---------

Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
2026-02-14 00:38:30 +00:00
Kirill Bulatov 21bc4f13b8 Fix exotic fold range kinds (#49151)
Follow-up of https://github.com/zed-industries/zed/pull/48611

Despite Zed not declaring such support in its capabilities,


https://github.com/zed-industries/zed/blob/a0eb63d1affb6e7b7991e477c7e05824d0250255/crates/lsp/src/lsp.rs#L1010-L1016

`json-language-server` returns `object` as a folding range kind:

<img width="1728" height="720" alt="bad"
src="https://github.com/user-attachments/assets/ee574879-8657-41c8-ab12-562f3882f057"
/>

The spec, even 3.18, does not really seem to allow it explicitly:
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#foldingRangeKind

but mentions that the real type

> The type is a string since the value set is extensible

The PR adds a capture enum variant for such cases, to get the folds in
instead of failing on deserialization.

See also: https://github.com/zed-industries/lsp-types/pull/10

Release Notes:

- Fixed `json-language-server` document folds not being parsed correctly
2026-02-13 23:51:10 +00:00
Kirill Bulatov a0eb63d1af Fix search on input behavior (#49150)
Follow-up of https://github.com/zed-industries/zed/pull/42889

* disable by default
* add a configurable debounce, 200ms default

Release Notes:

- N/A
2026-02-13 23:20:13 +00:00
morgankreyandfactory-droid[bot] 63ea24259a docs: Add rules hygiene guidance for AI agents (#49143)
## Summary
- Adds a "Rules Hygiene" section to `.rules` after the existing Build
Guidelines section
- Establishes clear guidelines for when/how AI agents should propose
`.rules` changes
- Adds a "Crash Investigation" section with reference to
`script/crash-to-prompt` and other crash tooling

## What's in the Rules Hygiene section

**After any agentic session:** Agents should include a "Suggested .rules
additions" heading in their PR description if they discover non-obvious
patterns. Reviewers decide what gets merged.

**High bar for new rules:** Editing existing rules is always welcome.
New rules must be (1) non-obvious, (2) repeatedly encountered, and (3)
specific enough to act on. Single-crate rules go in that crate's
`.rules`.

**No drive-by additions:** Rules emerge from validated patterns through
a 3-step workflow: agent notes pattern → team validates → dedicated
commit.

## Context
Part of the Background Agent Pipeline initiative (BIZOPS-801). As we
scale automated crash investigation, we need guardrails to prevent
`.rules` bloat from agent sessions.

## Test plan
- [ ] Open a test agent session and confirm it sees the Rules Hygiene
guidance
- [ ] Verify the guidance is clear enough to follow without additional
context

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-02-13 16:59:00 -06:00
JaryandJohn Tur 6db4a25b37 Don’t foreground minimized windows when changing displays (#48902)
on windows 10, When a laptop is plugged into or unplugged from a
monitor, Zed and my using GPUI app will restore from minimized state to
the foreground.



Closes #ISSUE

- [ ] Tests or screenshots needed?
- [ ] Code Reviewed
- [ ] Manual QA

Release Notes:

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

---------

Co-authored-by: John Tur <john-tur@outlook.com>
2026-02-13 16:56:31 -05:00
Danilo Leal 39063ab3b1 agent_ui: Use circular progress component for displaying context window use (#49138)
This PR uses the recently introduced `CircularProgress` component to
display context window use information. It creates more space for the
message editor controls as well as simplifies the UI a little bit.
Through a tooltip, we communicate the same things we communicated before
(and more, actually, because rules use will be displayed there, too).
Note that this doesn't touch the display of split token use (for models
like GPT and whatnot).

<img width="500" height="484" alt="Screenshot 2026-02-13 at 6  16@2x"
src="https://github.com/user-attachments/assets/831cdfbf-fddd-4a11-8ac6-e9a25609aae9"
/>

Release Notes:

- Agent: Simplified context window use display by using a circular
progress component.
2026-02-13 18:33:04 -03:00
Katie GeerandClaude Opus 4.6 ed9150f6c9 docs: SEO content improvements for AI section (#49128)
## Summary

- **Add category-claiming keywords** to 4 key AI doc intros (overview,
agent panel, edit prediction, configuration) so Google associates these
pages with "AI code editor" search terms
- **Expand AI overview into a pillar page** with substantive feature
summaries and a "How Zed approaches AI" differentiation section (open
source, native performance, multi-model, external agents, privacy)
- **Improve internal linking** across 11 files to strengthen the AI
topic cluster

## Internal linking changes

**Inbound links (non-AI docs → AI section):**
- `editing-code.md` → AI overview
- `terminal.md` → Inline Assistant + Agent Panel
- `configuring-zed.md` → AI Configuration
- `remote-development.md` → AI overview

**Fix orphans within AI section:**
- `billing.md` linked to subscription + plans (was orphaned with zero
internal links)
- `tools.md`, `rules.md`, `llm-providers.md`, `tool-permissions.md`,
`models.md` all now cross-link to related AI pages

**Outbound:**
- `overview.md` → `zed.dev/ai` and `getting-started.md`

## Test plan

- [ ] `mdbook build docs` succeeds
- [ ] Spot-check links resolve correctly in built output
- [ ] Review overview.md content for docs voice fit

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 13:05:57 -08:00
Kunall Banerjee b77fb2941a Fix feature request guidelines link in discussion template (#49129)
Seems like a small oversight, or rather, we didn’t have this discussion
at that point? Either way @JosephTLyons feel free to merge once you
confirm this is the intended URL.

Closes #49119.

Release Notes:

- N/A
2026-02-13 20:27:01 +00:00
Jakub KonkaandCole Miller 16dfc60ad2 util: Always use posix_spawn on macOS even with pre_exec hooks (#49090)
Here's some backstory:
* on macOS, @cole-miller and I noticed that since roughly Oct 2025, due
to some changes to latest macOS Tahoe, for any spawned child process we
needed to reset Mach exception ports
(https://github.com/zed-industries/zed/issues/36754 +
https://github.com/RemiKalbe/zed/commit/6e8f2d2ebe5a93753625a3026aeb996de8cb436b)
* the changes in that PR achieve that via `pre_exec` hook on
`std::process::Command` which then abandons `posix_spawn` syscall for
`fork` + `execve` dance on macOS (we tracked it down in Rust's std
implementation)
* as it turns out, `fork` + `execve` is pretty expensive on macOS
(apparently way more so than on other OSes like Linux) and `fork` takes
a process-wide lock on the allocator which is bad
* however, since we wanna reset exception ports on the child, the only
official way supported by Rust's std is to use `pre_exec` hook
* posix_spawn on macOS exposes this tho via a macOS specific extension
to that syscall `posix_spawnattr_setexceptionports_np` but there is no
way to use that via any standard interfaces in `std::process::Command`
* thus, it seemed like a good idea to instead create our own custom
Command wrapper that on non-macOS hosts is a zero-cost wrapper of
`smol::process::Command`, while on macOS we reimplement the minimum to
achieve `smol::process::Command`  with `posix_spawn` under-the-hood

Notably, this changeset improves git-blame in very large repos
significantly.

Release Notes:

- Fixed performance spawning child processes on macOS by always forcing
`posix_spawn` no matter what.

---------

Co-authored-by: Cole Miller <cole@zed.dev>
2026-02-13 20:16:11 +01:00
Jakub Konka 4f54c3e07c settings: Get available audio devices lazily when first required (#49115)
Release Notes:

- Get available audio devices lazily when first required.
2026-02-13 20:10:47 +01:00
Bennet Bo Fenner 630aadbc05 Fix thinking models when using non-zed providers (#49117)
This PR #47407 broke thinking models for non-zed providers (Nightly
only) because we set `thinking_allowed` to `thinking_enabled`
(previously `true`)
[here](https://github.com/zed-industries/zed/blob/b671c8cdc5a73d49d158a84f386f8fecbfbae65a/crates/agent/src/thread.rs#L2400).
The value of `thinking_enabled` eventually comes from the
`LanguageModel::supports_thinking` function, which returns `false` for
all models except the ones coming from Zed.
This PR implements `thinking_enabled` for other providers.

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
2026-02-13 19:16:02 +01:00
Oliver Azevedo BarnesandBen Kunkle 692a137782 agent: Add project-level disable_ai setting (#47902)
Closes #47854

Move `disable_ai` from root settings to `ProjectSettingsContent` to
enable per-project AI configuration via `.zed/settings.json`.

- Update settings UI to allow viewing/editing at both user and project
level
- Update editor to check project-level settings for edit predictions and
context menus
- Prevent MCP servers from starting when AI is disabled at project level

Note: SaturatingBool ensures that if user globally disables AI, projects
cannot re-enable it. Projects can only further restrict AI, not grant
it.

Release Notes:

- added support for disabling AI in project settings 

---------

Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
2026-02-13 11:57:43 -06:00
Shuhei KadowakiandClaude Opus 4.6 88e3954857 lsp: Sanitize newlines in document and workspace symbol names (#49092)
LSP servers may return symbol names containing newlines. Since outline
panel, breadcrumbs, and project search modal all expect single-line
items, collapse newlines before display.

- Document symbols: collapse newlines to spaces in name
- Workspace symbols: collapse newlines with `↵ ` separator for name and
container_name, preserving visual hint of original structure

Closes #ISSUE

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: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:47:38 +00:00
Yao Xiao fc6f8d5706 terminal: Fix hyperlinks not being detected correctly when preceded by box-drawing chars (#48447)
Closes #46795

This PR aims to correctly detect the hyperlinks in cases like the
following, where box-drawing characters immediately precede the path
(without spaces in between).

```
╭─[Cargo.toml:55:1]
...
╰────
```

The only false negative with the fix in this PR would be that a file
path really contains leading box drawing characters which I think is
very unlikely.

---

Release Notes:

- Fixed an issue where the hyperlinks would not be properly detected in
the terminal if they were preceded by box-drawing characters (like ─, │,
┌, ┐)

Signed-off-by: Charlie-XIAO <yx2436@nyu.edu>
2026-02-13 10:19:43 -06:00
Giorgi MerebashviliandKirill Bulatov abaabce3b7 file_finder: Remove project's root name from the file finder history (#46957)
Closes #45135

Since neither the project search nor file finder search was showing
project's root name, including it in the history was unnecessary,
especially when the user had `project_panel.hide_root` set to `true`.

Release Notes:

- Made file finder to respect `project_panel.hide_root` settings

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
2026-02-13 16:05:40 +00:00
holoflash fee42e1d89 Add search_on_input setting to Project Search (#42889)
I was really missing the ability to instantly see search results while
typing in the Project Search and decided to try and implement it.
As this may not be a feature that _everyone_ wants, I made it
toggle-able via the settings (or the settings.json)
### Settings
Set to false by default
<img width="911" height="618" alt="Screenshot 2025-11-17 at 16 17 09"
src="https://github.com/user-attachments/assets/8eaaab65-684e-4c5f-9a3c-9cb62cff0925"
/>
### settings.json
Set to false by default
<img width="396" height="193" alt="Screenshot 2025-11-17 at 16 18 21"
src="https://github.com/user-attachments/assets/90ebda95-c454-4bc5-8423-5da593832fd2"
/>

### Video demo:

https://github.com/user-attachments/assets/715d6b77-3a61-45f8-8e1a-9bd880c697c3

- Search input is debounced with 250ms in this mode (cool?)


The desire for this feature has been expressed here too:
https://github.com/zed-industries/zed/discussions/30843

Release Notes:

- Enabled project search on input. Can be turned off with
`search.search_on_input` settings toggle.
2026-02-13 17:54:17 +02:00
73853be484 git: Remove unnecessary block map recomputation when splitting SplittableEditor (#49075)
We had a call to `BlockMap::unfold_intersecting` that ended up
recomputing the entire block map for the RHS _without_ spacers, only to
throw it away in favor of the version with spacers a few lines down. Now
we only sync each block map once in `set_companion`.

Release Notes:

- Improved performance when toggling from the unified diff to the split
diff.

Co-authored-by: Jakub <jakub@zed.dev>
Co-authored-by: Cameron McLoughlin <cameron.studdstreet@gmail.com>
2026-02-13 15:52:04 +00:00
Thanh NguyenandBen Kunkle 3cd051ac7c terminal: Normalize path-like targets with leading .. (#47289)
Fixes #28339

## What
- Normalize cwd-relative path-like targets that include leading `..`
before worktree lookup.
- Update issue #28339 tests to expect `WorktreeExact` for local and
remote resolution.

## Why
- Prevent terminal links like `../foo/bar.txt` from creating invalid
entries; resolve to the correct worktree file instead.

## How to test
- `cargo test -p terminal_view issue_28339 -- --nocapture`
- Manual: open a workspace, run `echo ../foo/bar.txt` from a subdir in
the terminal, then cmd/ctrl-click and confirm the correct file opens.

## Risk
- Low: only changes terminal path-like resolution for `..` paths;
expected to match normalized behavior.



## Checklist
- [x] Tests run (`cargo test -p terminal_view issue_28339 --
--nocapture`)
- [x] Docs updated (not needed)
- [x] Backwards compatibility considered

Release Notes:
- Fixed an issue where relative paths starting with `..` would not resolve correctly when clicking the link in the terminal

---------

Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
2026-02-13 09:46:18 -06:00
Smit Barmase b50de99870 linux: Fix desktop entry pointing to wrong binary in manual install docs (#49109)
Follow-up to #21137

The manual install instructions in `linux.md` set `Exec=` to
`libexec/zed-editor` (main binary) instead of `bin/zed` (cli).

Using `zed-editor` directly throws "zed is already running" error and
files won't open from the file explorer. The "Open a new workspace"
right-click option on the desktop entry also doesn't work correctly.

Release Notes:

- N/A
2026-02-13 21:15:46 +05:30
Richard Feldman 46b986c5c6 Fix 'no thread found' error when restoring agent thread on workspace open (#49045)
When the multi-workspace thread restoration feature serializes the
active thread's session ID, it includes empty threads that were never
persisted to the database (because `NativeAgent::save_thread` skips
empty threads). On restart, `AgentPanel::load()` tries to restore this
thread by calling `load_agent_thread()`, which queries the SQLite DB.
Since the empty thread was never saved, the query returns `None`, which
becomes the error: "no thread found with ID: SessionId(...)". This shows
as "Error Loading Zed Agent" / "Failed to Launch" in the UI.

**Fix:**
Before attempting to restore a serialized thread on panel load, query
the DB to verify the thread actually exists. If it doesn't, log an error
and skip restoration (the panel falls back to creating a new thread as
normal).

Closes AI-19

Release Notes:

- Fixed an "Error Loading Zed Agent" error that could appear when
opening a workspace where the previous agent thread was empty.
2026-02-13 10:32:40 -05:00
Cole Miller b17ffdbec1 git: Fix misalignment in the split diff when inlays fall at the end of an excerpt (#49078)
- [x] Tests or screenshots needed?
- [ ] Code Reviewed
- [x] Manual QA

Release Notes:

- Fixed misalignment of lines in the split diff when using inlay hints.
2026-02-13 10:31:06 -05:00
Alex Miller c586bb37cf settings_ui: Fix project settings selecting wrong project (#47338)
Opening project settings now selects active project instead of any open
one by using worktree id matching the behavior of opening project
settings file.

<details>
<summary>Before</summary>


https://github.com/user-attachments/assets/8bf9a6cb-06e4-48fc-bf47-429e51ef9d27
</details>

<details>
<summary>After</summary>


https://github.com/user-attachments/assets/d8f5c69d-796c-4eb6-90c7-4ecb8951a1d1

</details>

Release Notes: 
- Fixed an issue where the active project would not be opened in the
settings UI with `zed: open project settings`
2026-02-13 15:12:05 +00:00
Danilo Leal 50f7ba753e Turn subagents flag to false (#49104)
Accidentally committed the feature flag change in
https://github.com/zed-industries/zed/pull/49100 as I had it turned to
true for local testing. This PR makes it turned off to staff again,
sorry!

Release Notes:

- N/A
2026-02-13 14:51:49 +00:00
炳andSmit Barmase 337311bdc8 linux: Name desktop file correctly during bundle (#45508)
Closes #45507

There have been 5+ PRs attempting to fix Linux desktop icon association
by adding `StartupWMClass` back to the `.desktop.in` template (#15763,
#20644, #23459, #33019, #37962), all closed because `StartupWMClass` is
an X11-specific key that GNOME happens to misuse on Wayland, and the
correct fix per the FreeDesktop spec is to name the `.desktop` file to
match the app's Wayland `app_id` / X11 `WM_CLASS`. Refer:
https://github.com/zed-industries/zed/issues/12707#issuecomment-2168742761

The root cause is that `bundle-linux` was never updated to produce the
correct filename in the tarball. The only consumers of the tarball's
desktop file are `install.sh` and manual extractors. So this fix is for
people who download the tarball and extract it without `install.sh`. The
docs already tell them to rename, but as @wcbing points out, not
everyone reads that carefully.

We are now making `bundle-linux` produce the correctly named desktop
file from the start.

Release Notes:

- N/A

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
2026-02-13 20:21:07 +05:30
Danilo Leal ab3987eae3 ui: Add circular progress component (#49100)
This PR adds a `CircularProgress` component, soon to be used in the
agent panel!

<img width="500" height="434" alt="Screenshot 2026-02-13 at 10  59@2x"
src="https://github.com/user-attachments/assets/3e64aa93-f63e-4abc-bf88-063e10a02389"
/>

Release Notes:

- N/A
2026-02-13 11:24:16 -03:00
Xin Zhao 81ec5b79ed workspace: Fix remote project buttons sharing same element ID on welcome page (#49096)
Closes #49083

This issue was caused by remote projects on the welcome page sharing the
same ID, as they all used the "Remote Project" label. Additionally, the
tab size was hardcoded to 10, which caused the tab navigation to break.
This PR assigns unique IDs and removes the hardcoded limitation.


- [x] locally checked the click behavior
- [x] self-review done

Release Notes:

- Fixed Welcome page remote projects not responding correctly when
clicked.
2026-02-13 14:17:58 +00:00
Danilo Leal 8afc67345f git_ui: Fix graph icon button design in the panel (#49099)
Adding the Git Graph icon and adjusting button sizing, spacing, and
positioning within the Git panel.

Release Notes:

- N/A
2026-02-13 10:39:30 -03:00
Bennet Bo Fenner 51d34a5b47 agent_ui: Fix max tokens error not being shown (#49098)
Closes #ISSUE

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 no error was shown when an LLM request exceeded
the maximum tokens supported by the model
2026-02-13 13:32:31 +00:00
Oleksiy Syvokon c093590f2e ep: Fix panic when merging events from different buffers (#49097)
Release Notes:

- N/A
2026-02-13 13:26:03 +00:00
Danilo Leal 771457f17b workspace: Enable adding a recent project to current workspace from modal (#49094)
This PR adds the ability to, within the Recent Projects modal/popover,
quickly add a project in the recent projects section to the current
workspace. Note that this is currently limited to local projects only.


https://github.com/user-attachments/assets/6b72af11-9c94-45d3-a7df-76869b942727

Release Notes:

- Workspace: Enabled quickly adding a recent project to the current
workspace.
2026-02-13 10:02:23 -03:00
Vianney le Clément de Saint-Marcq 7b569de35c mistral: Add x-affinity header (#48584)
Mistral Vibe, the official coding agent from Mistral, sets the
x-affinity header to the session ID to enable prompt caching. This patch
implements the same mechanism, resulting in a faster agent loop.

Release Notes:

- Added prompt caching for Mistral AI.
2026-02-13 12:03:05 +00:00
Xiaobo Liu 7687e1f390 settings: Await config worktree before opening settings.json (#47199)
Closes #47007

Release Notes:

- Fixed await config worktree before opening settings.json


ensures that the worktree creation is awaited before attempting to open
the settings file.

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-02-13 11:54:10 +00:00
Ian Chamberlain 49dee40073 agent: Skip empty assistant messages for Mistral provider (#47579)
This small change *may* help with #39211, #35025 or #39031 although I'm
not positive it will fix it entirely. At a minimum, it should prevent
sending invalid requests to the Mistral API, which return a 400 error
and can prevent the thread from progressing if it gets stuck in a retry
loop.

This should prevent sending a message like `{ "role": "assistant",
"content": "" }` if for some reason the thread contains a message with
an empty text content and no tool calls.

Some users (including myself) have encountered this with the Devstral 2
models, although it doesn't seem trivial to reproduce:
https://github.com/zed-industries/zed/issues/37021#issuecomment-3728902562

When it occurs, error logs look something like this:
```
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
```

Release Notes:

- Fixed agent sometimes sending invalid messages to Mistral API
2026-02-13 11:49:56 +00:00
Oleksiy Syvokon c981245a72 ep: Don't run predictions for excerpts with special tokens (#49040)
Release Notes:

- N/A
2026-02-13 13:47:28 +02:00
gitarth 13a9386a29 language_models: Add image support for Bedrock (#47673)
Closes #N/A (no existing issue - implemented to enable image input for
Bedrock models)

This PR enables the "@" image mention feature for Bedrock models that
support vision capabilities.

**Changes:**
- Added `supports_images()` method to Bedrock `Model` enum
- Wired up image support in the Bedrock language model provider
- Added `MessageContent::Image` handling to convert base64 images to
Bedrock's expected format
- Added tool result image support

**Supported models:** Claude 3/3.5/4 family, Amazon Nova Pro/Lite, Meta
Llama 3.2 Vision, Mistral Pixtral

Release Notes:

- Added image input support for Amazon Bedrock models with vision
capabilities
2026-02-13 12:41:14 +01:00
feeiyu c131713901 Fix Conda activation error appearing during task execution (#48736)
Closes #48732

- [X] Tests or screenshots needed? 
- [X] Code Reviewed
- [X] Manual QA
The fix enables interactive mode during task execution, resolving the
Conda activation error. However, enabling this mode adds some overhead.
In my environment, the task startup time increased by approximately 1
seconds due to the loading of ~/.zshrc.


[录屏 2026-02-08
23-49-53.webm](https://github.com/user-attachments/assets/4064e366-b0d2-4a8c-9599-c4108e76af9f)

Release Notes:

- Fixed conda activation error appears during task execution.
2026-02-13 11:13:18 +00:00
Vitaly Slobodin a6653f0d95 language: Respect combined injection sub-ranges for language queries (#48522)
Follow-up to https://github.com/zed-industries/zed/pull/41111.

PR #41111 introduced combined injection handling, but cursor language
queries still relied on layer range selection alone. For combined
injections this can surface a language from the outer combined layer
even when the cursor is outside that language's actual included
sub-range. So, we just need to add sub-range filtering based on
anchor-aware boundary checks in the same way we did in the previous PR.
That means: apply it in `Buffer::language_at`,
`Buffer::languages_at`, and `BufferSnapshot::language_scope_at`. All
places that rely on the described behavior.

I also added some additional test cases for the `HTML+ERB` lang to
verify language resolution for HTML and Ruby positions.
Thank you!

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

Release Notes:

- Respect combined injection sub-ranges for language queries
2026-02-13 12:06:34 +01:00
Mayank VermaandLukas Wirth 0c29a0933f editor: Fix soft wrap premature wrapping with certain fonts (#45206)
Closes #45107

Release Notes:

- Fixed soft wrap prematurely wrapping with certain fonts

---------

Co-authored-by: Lukas Wirth <lukas@zed.dev>
2026-02-13 10:49:50 +00:00
856ba20261 markdown_preview: Add Mermaid Diagram Support (#49064)
Closes https://github.com/zed-industries/zed/issues/10696

Adds support for rendering Mermaid diagrams in the markdown preview
using
[mermaid-rs-renderer](https://github.com/1jehuang/mermaid-rs-renderer)
(with [a
patch](https://github.com/1jehuang/mermaid-rs-renderer/pull/35)).

- Renders mermaid diagrams on background task
- Shows the previously cached image while re-computing
- Supports a scale parameter i.e. default 100
- Falls back to raw mermaid source code when render fails

<img width="1512" height="897" alt="image"
src="https://github.com/user-attachments/assets/9157625d-bb62-402f-8a8b-517f28d43f95"
/>

Release Notes:

- Added mermaid diagram rendering support to the markdown preview panel.

---------

Co-authored-by: oscarvarto <contact@oscarvarto.mx>
Co-authored-by: oscarvarto <oscarvarto@users.noreply.github.com>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
2026-02-13 15:25:40 +05:30
Mikayla MakiandLena bd2333d573 Update pull_request_template.md (#48805)
Release Notes:

- N/A

---------

Co-authored-by: Lena <241371603+zelenenka@users.noreply.github.com>
2026-02-13 09:23:51 +00:00
CJ PokowitzandKunall Banerjee e4ea8ae3b9 docs: Add note about escaping $ in snippets (#48710)
In writing PHP snippets, I ran into this issue and only discovered this
has to be done through reviewing examples of other PHP snippets.

I think it would be useful to include some mention of this behavior in
the documentation - although I'm not great at writing docs and not sure
if this is the best place or way to write this out.

Open to any feedback on this or perfectly okay if maintainers find this
unnecessary.

Release Notes:

- N/A

---------

Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
2026-02-13 08:54:44 +00:00
Lena 9081af8dd1 Tweak stalebot (words, number of days) (#48603)
While the 60 days of inactivity works for a lot of the issues, with
other (more stubborn and popular) bugs it's too noisy to nag people
every eight weeks.

Also changing days-before-close after seeing a few cases of people
getting back to us after more than two weeks since the bot's question.

Release Notes:

- N/A
2026-02-13 08:53:31 +00:00
Leonard SeiboldandJohn Tur af8ea0d6c2 gpui: Remove blade, reimplement linux renderer with wgpu (#46758)
The blade graphics library is a mess and causes several issues for both
Zed users as well as other 3rd party apps using GPUI. This PR removes
blade and implements the linux platform using `wgpu` which is the
de-facto standard in the rust UI and graphics ecosystem. This will not
just fix [issues that Zed users have
today](https://github.com/YaLTeR/niri/issues/2335), but also profit from
wgpu improvements in the futures, from other projects contributing (such
as the bevy game engine, Iced, or pretty much every other relevant
project).

This will close several related issues on the zed repo as well. See
https://github.com/zed-industries/zed/issues?q=frozen%20nvidia%20linux
(probably not all of them, have only tested the freeze on nvidia and
Smithay-based wayland compositors).

Some related issues:
https://github.com/zed-industries/zed/issues/44814
https://github.com/zed-industries/zed/issues/40481
https://github.com/YaLTeR/niri/issues/2335
https://github.com/zortax/zlaunch/issues/15

Would appreciate feedback if this is something the zed maintainers would
be interested in.

Release Notes:

- N/A

---------

Co-authored-by: John Tur <john-tur@outlook.com>
2026-02-13 02:55:42 -05:00