Commit graph

35208 commits

Author SHA1 Message Date
Marshall Bowers
958798d20e
ci: Generate the Collab deployment workflow (#49306)
This PR updates the Collab deployment workflow to be generated with
`cargo xtask workflows`.

Release Notes:

- N/A
2026-02-16 22:40:10 +00:00
Marshall Bowers
0594076d49
xtask: Fix naming of WorkflowType::ExtensionCi variant (#49302)
This PR fixes the naming of the `WorkflowType::ExtensionCi` variant to
match Rust naming conventions.

Release Notes:

- N/A
2026-02-16 22:13:19 +00:00
Marshall Bowers
613f73b898
ci: Move all Collab deployment steps to Namespace runners (#49300)
This PR removes the two remaining steps in the Collab deployment
workflow to Namespace runners.

The previous `runs-on` labels were no longer functional.

Release Notes:

- N/A
2026-02-16 21:57:49 +00:00
Danilo Leal
671c3e723e
git_ui: Add button for the branch diff action (#49298)
This PR adds a button in the Git Panel to open the `git: branch diff`
view. The button only shows if the staging area is clean/no changes and
if the branch is not main/master. I've been using this action so much
these days and we should expose it on the UI so it's more discoverable.

<img width="500" height="1736" alt="Screenshot 2026-02-16 at 6  30@2x"
src="https://github.com/user-attachments/assets/0b037811-2167-419f-b63f-9bdb12e4352e"
/>

Release Notes:

- N/A
2026-02-16 18:51:35 -03:00
Lukas Wirth
f21d51cf00
editor: Fix sticky headers not accounting for deleted diff hunks (#49296)
Release Notes:

- Fixed sticky headers sometimes disappearing when dealing with expanded
deleted diff hunks
2026-02-16 21:22:27 +00:00
Lukas Wirth
e9a8ef1c9e
workspace: Fix read-only button tooltip for non-toggleable buffers (#48998)
Release Notes:

- Fixed an incorrect hover label for read-only file lock buttons
2026-02-16 20:11:37 +00:00
Lukas Wirth
248a3c6c95
multi_buffer: Fix update_path_excerpts inserting excerpts out of order (#49290)
Second attempt at fixing
https://github.com/zed-industries/zed/pull/49047, this also removes some
of the sorting hacks as they should ideally not be necessary anymore
after this fix

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-16 20:07:14 +00:00
Jakub Konka
9c889c163d
editor: Batch calls to fold_buffer in ProjectDiff::refresh (#49278)
This change improves performance of project diff in that:
* scrolling in split view for very large diffs (think chromium repo with
`git reset HEAD~1000`) is now very smooth on macOS and fairly smooth on
Linux
* switching from split to unified is very smooth on macOS, and fairly
smooth on Linux

There still remains the case of (severe) hangs when switching from
unified to split however, but it will be addressed in a follow-up PR.

Anyhow, here's the screenshot of the Instruments.app capture of opening
chromium repo in Zed in split view, scrolling a little, moving to
unified, scrolling some more, and moving back to split. Prior to this
change, split -> unified would cause a severe hang, whereas now it's a
hang and thus feels much smoother already (without Instruments profiling
is barely visible). Unified -> split severe hangs are still there but
don't last as long.

<img width="2301" height="374" alt="Screenshot 2026-02-16 at 5 46 23 PM"
src="https://github.com/user-attachments/assets/f687f8d4-cffd-47f1-ada1-f6c4d3ac3cd4"
/>

Release Notes:

- Improved project diff performance when opening very large
diffs/repositories.
2026-02-16 20:58:30 +01:00
ozacod
3335a9b993
languages: Fix C++ indentation for multi-line declarations and assignments (#47447)
Before:
<img width="726" height="86" alt="indentation-problem"
src="https://github.com/user-attachments/assets/50330c66-26ac-4cb0-9f26-8ee73ec6c64d"
/>

After:
<img width="811" height="102" alt="after"
src="https://github.com/user-attachments/assets/8704bd83-b626-4b6d-8ff9-50edd6f065db"
/>

Release Notes:

- Fixed indentation problem with multi-line declarations and assignments
in C++

---------

Co-authored-by: ozacod <ozacod@users.noreply.github.com>
2026-02-17 00:48:59 +05:30
morgankrey
dcc69c053f
docs: Fix theme publishing link in themes guide (#49276)
Fix broken links in themes docs

Release Notes:

- N/A
2026-02-16 13:16:01 -06:00
Sathiyaraman M
6e33d838c9
copilot: Display cost multiplier for Github Copilot models (#44800)
### Description

Related Discussions: #44499, #35742, #31851

Display cost multiplier for GitHub Copilot models in the model selectors
(Both in Chat Panel and Inline Assistant)

<img width="436" height="800" alt="image"
src="https://github.com/user-attachments/assets/c9ebd8fa-4d55-4be8-b3e1-f46dbf1f0145"
/>


### Some technical notes

Although this PR's primary intent is to show the cost multiplier for
GitHub Copilot models alone, I have included some necessary plumbing to
allow specifying costs for other providers in future. I have introduced
an enum called `LanguageModelCostInfo` for showing cost in different
ways for different models. Now, this enum is used in `LanguageModel`
trait to get the cost info.

For now to begin with, in `LanguageModelCostInfo`, I have specified two
ways of pricing: Request-based (1 Agent request - GitHub Copilot uses
this) and Token-based (1M Input tokens / 1M Output tokens). I had
initially thought about adding a `Free` type, especially for Ollama but
didn't do it after realizing that Ollama has paid plans. Right now, only
the Request-based pricing is implemented and used for Copilot models.

Feel free to suggest changes on how to improve this design better.

Release Notes:

- Show cost multiplier for GitHub Copilot models

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
2026-02-16 15:24:59 -03:00
Marshall Bowers
0e7d63348b
agent_ui: Ship thinking effort selection for Zed provider (#49274)
This PR removes the `cloud-thinking-effort` feature flag to ship the
thinking effort UI for the Zed provider.

Release Notes:

- Added support for controlling thinking effort levels with supported
models using the Zed provider.
2026-02-16 11:58:35 -05:00
Ben Brandt
c5bfa93bfb
acp: Allow permissions on existing terminal tool calls (#49270)
It is possible, when the agent is streaming the tool call, that we will
get a permission request on an existing terminal and we need to render
that.

When Zed controls the terminal this won't happen, but when we are just
rendering the output, it can happen and we need to show it.

Release Notes:

- agent: Fix permission options not rendering on terminal commands
2026-02-16 16:03:22 +00:00
David Turnbull
323b579578
bedrock: Add placeholder tool when summarising threads with tool history (#48863)
Bedrock Converse API requires toolConfig whenever messages have tool use
or result blocks. PR #33174 handled the case where tools are defined but
tool_choice is None. This change addresses another case: the tools array
is empty (e.g. thread summarisation) but messages still have tool blocks
from conversation history. A placeholder tool satisfies the requirement.

Testing:

Tested manually by:
1. Starting a conversation with Bedrock that uses tools
2. Triggering thread summarisation
3. Confirming summarisation now succeeds instead of failing with an API
error

Release Notes:

- Fixed Bedrock thread summarization failing when conversation had tools
2026-02-16 14:45:19 +00:00
Om Chillure
cf09993ab5
Enable 'Add to Agent Thread' in worktree-less windows (#49084)
Fixes #49062

Updates `crates/agent_ui/src/inline_assistant.rs` to ensure the
TerminalPanel correctly syncs the assistant_enabled
state on initialization. This fixes the issue where "Add to Agent
Thread" was missing in worktree-less windows.

## Video: 
[Screencast from 2026-02-13
10-31-43.webm](https://github.com/user-attachments/assets/bee0df67-0ecf-460c-8123-a72c4790c719)
 
## Release Notes
- Fixed an issue where "Add to Agent Thread" was missing from the
terminal context menu in windows without open folders.
2026-02-16 14:42:51 +00:00
chenwuji2000-cyber
cbf03f5b38
acp_thread: Await Tree-sitter parsing before building agent panel diffs (#49101)
## Summary

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

- Await `parsing_idle()` after `set_language()` in both
`Diff::finalized()` and `PendingDiff::finalize()` so that tree-sitter
parsing completes before buffer snapshots are taken for excerpts
- Without this, the 1ms sync parse timeout almost always expires for
non-trivial files, causing excerpts to be created with empty syntax
trees and missing syntax highlighting

## Root Cause

When the agent panel creates or finalizes a diff, it creates a new
`Buffer`, calls `set_language()` (which triggers async tree-sitter
parsing), then immediately proceeds to take buffer snapshots and create
excerpts **without waiting for parsing to complete**. The sync parse
timeout is only 1ms in production (`buffer.rs:1138`), so large files
almost always fail the sync parse and fall back to async parsing — but
no one awaits the async parse before building the diff.

## Fix

Add `buffer.update(cx, |buffer, _| buffer.parsing_idle()).await` after
`set_language()` in both code paths (`Diff::finalized()` and
`PendingDiff::finalize()`). This is the same pattern already used in
`buffer_diff.rs:1728-1731`.

## Test plan

- [x] `cargo test -p acp_thread` — all relevant tests pass
- [x] `./script/clippy` — no warnings
- [x] Manual test: open agent panel, ask it to generate a Python file
with multiline strings (`"""`), verify syntax highlighting is correct
after diff is finalized

Release Notes:

- Fixed missing syntax highlighting for multiline strings in agent panel
diffs
2026-02-16 14:41:05 +00:00
Tom Houlé
93ead966c2
cloud_llm_client: Add StreamEnded and Unknown variants to CompletionRequestStatus (#49121)
Add StreamEnded variant so the client can distinguish between a stream
that the cloud ran to completion versus one that was interrupted (see
CLO-258). **That logic is to be added in a follow up PR**.

Add an Unknown fallback with #[serde(other)] for forward-compatible
deserialization of future variants.

The client advertises support via a new
x-zed-client-supports-stream-ended-request-completion-status header. The
server will only send the new variant if that header is passed. Both
StreamEnded and Unknown are silently ignored at the event mapping layer
(from_completion_request_status returns Ok(None)).

Part of CLO-264 and CLO-266; cloud-side changes to follow.

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>
2026-02-16 15:39:47 +01:00
Xiaobo Liu
52a9b6c864
ollama: Remove backwards compatibility for Ollama tool call IDs (#49246)
Release Notes:

- N/A

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-02-16 14:33:29 +00:00
Ben Brandt
b725beb327
acp: Refresh history less often (#49263)
Changes the AcpThreadHistory behavior to only load the full paginated
list if we are in the history view, and only reloads the first page
otherwise. And it also updates the first page in way fewer cases to
reduce load on the agents.

Release Notes:

- N/A
2026-02-16 14:19:10 +00:00
Michael Johnson
2c5a3c0693
Tone down color for invisible characters in One themes (#46247)
Related: https://github.com/zed-industries/zed/issues/5592

Coming from vscode, the first thing I noticed (after the amazing speed
that zed started) was the boldness of the whitespace characters.

This mutes the whitespace "invisible" character color in the one theme
so that they are less aggressive. This more closely (but not perfectly)
aligns with the one theme for vscode. In order to avoid adding a new
color to the theme, I reused the `editor.line_number` value in both
cases which worked well.

# Dark
## original:
<img width="858" height="506" alt="before_dark"
src="https://github.com/user-attachments/assets/fe5f1d11-90a5-4fa1-acf6-0d1a25c137f2"
/>

## editor.line_number `#4e5a5f`
<img width="867" height="466" alt="after_dark"
src="https://github.com/user-attachments/assets/5f95f602-43c6-4a1a-9c7d-74b0ea8cf1c9"
/>

## border.variant (alternative) `#363c46ff`
<img width="818" height="489" alt="dark_border_variant"
src="https://github.com/user-attachments/assets/7d44d2f6-e2a4-437e-99d1-ebdf58aab94c"
/>

# Light
## original
<img width="838" height="488" alt="before_light"
src="https://github.com/user-attachments/assets/61e48ba6-487c-468b-b099-4ab0f9ffbc9b"
/>

## editor.line_number `#b4b4bb`
<img width="868" height="493" alt="after_light"
src="https://github.com/user-attachments/assets/d88b74dc-debe-4105-a217-7ca6c4b6ff20"
/>



# Release Notes:

- Improved: Muted the invisible character color in the one themes.

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
2026-02-16 14:12:11 +00:00
Yaroslav Yenkala
d0c0c33abf
Fix missing right border on pinned tabs in two-row layout (#46952)
Closes https://github.com/zed-industries/zed/issues/46926

## Description:

- Fixes the missing right border on pinned tabs when
`show_pinned_tabs_in_separate_row` is enabled.

The two-row tab bar layout was missing the border element that visually
separates the pinned tabs row. This border was present in the single-row
layout but was not added when implementing the two-row layout.

  ## Steps to reproduce

1. Enable `"tab_bar": { "show_pinned_tabs_in_separate_row": true }` in
settings
  2. Open multiple files
  3. Pin at least one tab (right-click → Pin Tab)
  4. Notice pinned tabs are missing right-hand side border

  **Before (bug):**
  
<img width="1060" height="186" alt="image"
src="https://github.com/user-attachments/assets/7d18f24d-a51b-4f13-8410-a15fa92e1bb3"
/>

  **After (fixed):**

<img width="863" height="69" alt="image"
src="https://github.com/user-attachments/assets/3354e809-b298-49a1-b16a-871caef67176"
/>

  ## Test plan

- [x] Follow reproduction steps above and verify the border now appears
  - [x] Verify border appears immediately (not just after drag-and-drop)
- [x] Verify single-row layout still works correctly when setting is
disabled
  - [x] Added automated test `test_separate_pinned_row_has_right_border`
  
   ### Additional fix: Drag-and-drop to pinned tabs bar

During implementation, discovered that we couldn't drag tabs to the end
of the pinned tabs bar. This PR also adds:

  - A drop target at the end of the pinned tabs row
- Proper pinning behavior when dropping unpinned tabs to the pinned area
  - Keeps the dragged tab active after drop
  
Release Notes:

- Fixed the missing right border on pinned tabs when
`show_pinned_tabs_in_separate_row` is enabled.
- Fixed drop target at the end of the pinned tabs row
- Fixed pinning behavior when dropping unpinned tabs to the pinned area
- Fixed case when the dragged tab was not active after drop (when enable
`"tab_bar": { "show_pinned_tabs_in_separate_row": true }` in settings)

---------

Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
2026-02-16 14:11:54 +00:00
Luis
27ab898e65
project_panel: Fix mixed sort with incorrect ordering when same file and dir name (#47863)
Closes #47678

When using mixed sort mode in the project panel, a folder and file with
the same name but different case (e.g., `hello` folder and `Hello.txt`
file) would sort incorrectly. The file could appear between an expanded
folder and its contents.

The issue was in `compare_rel_paths_mixed`: the tie-breaker logic used
case-sensitive comparison (`a == b`) to decide directory-before-file
ordering, but `natural_sort_no_tiebreak` already considers entries equal
case-insensitively. Changed to use `eq_ignore_ascii_case` to match.

Release Notes:

- Fixed project panel mixed sort mode ordering incorrectly when a file
and folder share the same name with different casing.
2026-02-16 19:08:13 +05:30
Xiaobo Liu
909c147b4b
git_ui: Add git init button to empty repository state (#49203)
Release Notes:

- Git: Added `git init` button that quickly allows to turn an empty
repository into a Git repository.


https://github.com/user-attachments/assets/58b0d49f-b813-4d1c-a086-4bd21d226916

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-02-16 13:36:15 +00:00
Remco Smits
506570a73a
git_graph: Add resizable commit view support (#49171)
This PR add support for resizable commit view, so you can increase the
commit view width by hand.


https://github.com/user-attachments/assets/47b3d165-1d5b-4c5c-b36d-dc007d62fd43

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 (no release notes since it's behind a feature flag)
2026-02-16 13:34:16 +00:00
Nicolas Le Cam
c9dafd2674
Streamline Markdown notification rendering (#48162)
Brought the Markdown notification rendering up to date with how Markdown
is used in the Agent panel and REPL.
Removed async parsing overhead and simplified the code by using the
markdown crate API directly.

This is preparatory work, my ultimate goal is to make markdown_preview
use markdown to parse and render md to [fix not being able to select and
copy content](https://github.com/zed-industries/zed/issues/16727)

|Current|Now|
|-|-|
|<img width="469" height="258" alt="Capture d’écran du 2026-02-01
22-39-39"
src="https://github.com/user-attachments/assets/6e416b9d-aef8-4202-b3ce-8c22602d0fbd"
/>|<img width="458" height="200" alt="Capture d’écran du 2026-02-01
22-37-16"
src="https://github.com/user-attachments/assets/bd590f17-0448-4cbc-a6df-9aecfa0754e8"
/>|

Release Notes:

- N/A
2026-02-16 10:31:44 -03:00
Matt Riggott
2c097ef09e
Add automatic syntax highlighting for GeoJSON files (#49261)
GeoJSON is a popular geospatial data interchange format, standardised as
[RFC 7946](https://datatracker.ietf.org/doc/html/rfc7946). Because all
GeoJSON files are valid JSON files, they can be highlighted using Zed's
existing JSON language support.

This change adds `geojson` as a recognised path suffix, so GeoJSON files
automatically open as JSON and get the standard JSON syntax
highlighting.

Before and after screenshots:

<img width="1748" height="755" alt="geojson"
src="https://github.com/user-attachments/assets/40199248-1ce5-451e-9200-5b2f012b865f"
/>

Release notes:

- Added automatic syntax highlighting for GeoJSON files
2026-02-16 13:30:22 +00:00
Riccardo Strina
01ac5a8c05
workspace: Use FolderOpen icon for active workspace project (#49180)
Differentiate the active workspace in the sidebar project list by using
IconName::FolderOpen instead of IconName::Folder

Before:
<img width="1761" height="1196" alt="Image"
src="https://github.com/user-attachments/assets/1a6d3708-9e3b-4ebc-b8e5-7b68194e55b7"
/>

After:
<img width="1717" height="1152" alt="image"
src="https://github.com/user-attachments/assets/1784dc83-b38a-4f6a-8984-ccd3b877b100"
/>

Closes #49179

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:

- Improved active project in the workspace by changing the icon from
Folder to FolderOpen
2026-02-16 13:23:27 +00:00
Lukas Wirth
01b1d7dc55
editor: Sticky diff hunk controls (#49260)
Release Notes:

- Diff hunk controls now stick to the top of the editor viewport if the
top part of the hunk is outside the viewport
2026-02-16 13:17:05 +00:00
Coenen Benjamin
b6c48b60ab
search: Fix collapse/expand all button sync (#48773)
Derive collapsed state from `Editor.has_any_buffer_folded` instead of
tracking it separately, removing redundant `ResultsCollapsedChanged` event
and stale `is_collapsed`/`results_collapsed` fields.

Closes #48734 

Release Notes:

- Fixed collapse/expand all button in buffer search and project search
not syncing correctly when toggling individual file sections

---------

Signed-off-by: Benjamin <5719034+bnjjj@users.noreply.github.com>
Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-02-16 12:55:16 +00:00
Ben Brandt
24dbd216d7
agent: Prompt for permission for symlinks outside the project (#49255)
It's possible that a given project/workspace has symlinks that go
outside the current directories. In order to alert the user of some
potential files the agent is accessing they may not be expecting, we ask
for permission first.

Release Notes:

- agent: Prompt for permission if the agent tries to access files whose
symlinks resolve outside the current workspace
2026-02-16 10:39:40 +01:00
Lena
2f439e5f1d
Stop notifying first responders for closed bugs (#49253)
Release Notes:

- N/A
2026-02-16 09:16:13 +00:00
Daniel Strobusch
d83d9d3e8c
Fix API errors where tool_result blocks are sent without their corresponding tool_use blocks in the assistant message (#48002)
When a tool's JSON response fails to parse, the system would:
1. Create a `LanguageModelToolResult` with the error
2. Add it to `pending_message.tool_results`
3. **Never add the corresponding `ToolUse` to
`pending_message.content`**

This left an orphaned `tool_result` that would be sent to the LLM API
without a matching `tool_use` block, causing the provider to reject the
entire request with an error like:

```
messages: Assistant message must contain at least one content block, if
immediately followed by a user message with tool_result
```

The issue was in `handle_tool_use_json_parse_error_event()`. It created
and returned a `LanguageModelToolResult` (which gets added to
`tool_results`), but **failed to add the corresponding `ToolUse` to the
message `content`**.

This asymmetry meant:
- `pending_message.content`: [] (empty - no ToolUse!)
- `pending_message.tool_results`: {id: result}

When `AgentMessage::to_request()` converted this to API messages, it
would create:
- Assistant message: no tool_use blocks 
- User message: tool_result block 

APIs require tool_use and tool_result to be paired, so this would fail.

**Without this fix, the conversation becomes permanently broken** -
every subsequent message in the thread fails with the same API error
because the orphaned tool_result remains in the message history. The
only recovery is to start a completely new conversation, making this a
particularly annoying bug for users.

Modified `handle_tool_use_json_parse_error_event()` to:
1. **Add the `ToolUse` to `pending_message.content`** before returning
the result
2. Parse the raw_input JSON (falling back to `{}` if invalid, as the API
requires an object)
3. Send the `tool_call` event to update the UI
4. Check for duplicates to avoid adding the same `tool_use` twice

This ensures `tool_use` and `tool_result` are always properly paired.

Added comprehensive test coverage for
`handle_tool_use_json_parse_error_event()`:
-  Verifies tool_use is added to message content
-  Confirms tool_use has correct metadata and JSON fallback
-  Tests deduplication logic to prevent duplicates
-  Validates JSON parsing for valid input

## Manual Testing

To reproduce and test the fix:

1. Install the test MCP server:
    ```bash
   cargo install --git https://github.com/dastrobu/mcp-fail-server
   ```
3. Add to Zed settings to enable the server: 
   ```json
   {
     "context_servers": {
       "mcp-fail-server": {
         "command": "mcp-fail-server",
         "args":[]
       }
     }
   }
   ```

4. Open the assistant panel and ask it to use the `fail` tool
5. Without the fix: The conversation breaks permanently - every
subsequent message fails with the same API error, forcing you to start a
new thread

<img width="399" height="531" alt="image"
src="https://github.com/user-attachments/assets/533bdf40-80d3-4726-a9d9-dbabbe7379e5"
/>


7. With the fix: The error is handled gracefully, displayed in the UI,
and the conversation remains usable

<img width="391" height="512" alt="image"
src="https://github.com/user-attachments/assets/73aa6767-eeac-4d5d-bf6f-1beccca1d5cb"
/>


The mcp-fail-server always returns an error, triggering the JSON parse
error path that previously caused orphaned tool_result blocks.

Release Notes:

- Fixed an issue where errors could occur in the agent panel if an LLM
emitted a tool call with an invalid JSON payload

---------

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
2026-02-16 09:14:24 +00:00
Marco Mihai Condrache
c4f98689a1
Revert "gpui: Defer thermal/keyboard state updates when app is borrowed" (#49251)
Reverts #49189
Reverts #49187

#49189 introduces a panic
(https://github.com/zed-industries/zed/pull/49189#issuecomment-3904914597,
https://github.com/zed-industries/zed/issues/49181#issuecomment-3906639392)
#49187 It's wrong since it leads to missing updates

The original crash should be fixed with #49086

cc: @bennetbo 

Release Notes:

- N/A
2026-02-16 08:44:58 +00:00
John Tur
7f982cae8f
Simplify calculation of Windows client area size (#49249)
Delete all the hacks and do things properly instead.

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

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
2026-02-16 03:40:38 -05:00
Smit Barmase
9d59aa038e
svg_preview: Fix SVG preview opening duplicate tabs (#49250)
Release Notes:

- Fixed SVG preview always opening a new tab instead of reusing an
existing one for the same file.
2026-02-16 13:46:28 +05:30
Marco Mihai Condrache
2c59293b69
gpui: Fix thermal state notifications on intel macOS (#49086)
Fixes
https://github.com/zed-industries/zed/pull/45638#issuecomment-3893732034
Closes #49005

The issue was similar to the one we already had with the quit method
8249ef5618/crates/gpui/src/platform/mac/platform.rs (L491)

@notpeter Could you please test this branch to confirm it resolves the
issue?

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

Release Notes:

- Fixed an issue where Zed would randomly crash on macOS intel
2026-02-16 08:34:47 +01:00
chenwuji2000-cyber
f3c6dcfa19
extensions_ui: Apply category filter to dev extensions (#48954)
Following up on #49183 which fixed the category filter for remote
extensions.

This PR applies the same category filter logic to **dev extensions**.
Previously, dev extensions were always shown regardless of the selected
category filter (e.g., "Themes", "Languages").

Changes:
- Add `filtered_dev_extension_indices` to track which dev extensions
match the active `provides_filter`
- Add `dev_extension_matches_provides()` helper to map
`ExtensionManifest` fields to `ExtensionProvides` variants
- Update `render_extensions()` and list count to use filtered dev
extension indices

Release Notes:

- Fixed extension category filter not applying to dev extensions in the
extensions panel.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
2026-02-15 21:51:23 -05:00
Marshall Bowers
e2f3d5ed8e
collab: Update test database schema (#49242)
This PR updates the database schema for Collab tests.

Release Notes:

- N/A
2026-02-15 22:59:16 +00:00
João Soares
982e71624d
docs: Simplify Deno test task example (#49235)
Closes #48537 

**Explanation:**
The Deno test task example wasn't appearing because the undefined
ZED_CUSTOM_DENO_TEST_NAME variable made the filter invalid. Instead of
adding a default value, simplify the example to run all tests in the
file, which is the most common use case and works out of the box.


Before you mark this PR as ready for review, make sure that you have:
Screenshots:
Before:
<img width="3434" height="1349" alt="image"
src="https://github.com/user-attachments/assets/bc514103-9b33-489f-a69e-84257ea82acf"
/>

After:
<img width="3438" height="1376" alt="image"
src="https://github.com/user-attachments/assets/47674dde-ede8-4a9d-b365-d2df8e128e18"
/>


Release Notes:

- N/A
2026-02-15 22:22:59 +02:00
Marshall Bowers
667b43083c
Revert "multi_buffer: Fix "cannot seek backward" crash in summaries_for_anchors (#49047)" (#49238)
This reverts commit 0f84a366d9.

We're reverting #49047, as it has led to different kinds of panics.

Release Notes:

- Reverted #49047.
2026-02-15 19:46:46 +00:00
Ben Kunkle
ae5abf0b26
Remove dependency on bm25. Use exact prefix match in settings UI search instead (#49231)
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
- [ ] 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 *or* Added/Fixed/Improved ...

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-02-15 13:24:33 -05:00
Marshall Bowers
2ccbed0a5e
extension: Make provides a method on ExtensionManifest (#49234)
This PR takes the `extension_provides` method from the `extension_cli`
and makes it a method on `ExtensionManifest`.

Release Notes:

- N/A
2026-02-15 12:12:09 -05:00
Danilo Leal
28c82ecad6
docs: Add content about the theme builder (#49229)
Release Notes:

- N/A
2026-02-15 14:52:26 +00:00
Danilo Leal
9dd3f3a6c5
docs: Add some adjustments to the AI pages (#49227)
Updating content with more detailed information, cross-linking pages
when useful (primarily the new docs for tool permissions), rearranging
information architecture a bit (e.g., putting examples last and
guidelines first, putting text threads vs. threads disclaimer above
everything, etc.), removing outdated images, etc.

Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-02-15 11:46:01 -03:00
Danilo Leal
81f4cdbc64
docs: Adjust some styles (#49221)
Just some styling house-keeping in the docs; simple stuff.

Release Notes:

- N/A
2026-02-15 11:45:54 -03:00
ozacod
87ff3eb625
editor: Fix to remove non-functional folding creases from the gutter (#49200)
Lsp-based folding disables indentation-based folding. Even though
indentation-based folding is non-functional, the crease icon is still
displayed in the gutter. This PR fixes this mismatch.

Before:
<img width="651" height="199" alt="before"
src="https://github.com/user-attachments/assets/ebd202e8-9eda-43c9-adbd-767e9802e590"
/>

After:
<img width="666" height="197" alt="after"
src="https://github.com/user-attachments/assets/b498e325-cd06-4c51-afdb-fcda4f1a25e6"
/>


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:

- Removed non-functional folding creases from the gutter.

Co-authored-by: ozacod <ozacod@users.noreply.github.com>
2026-02-15 09:33:03 +00:00
morgankrey
99a558f368
gpui: Defer thermal/keyboard state updates when app is borrowed (#49189)
Follow-up to #49187.

Instead of silently skipping updates when `try_borrow_mut` fails, this
PR defers the update by spawning it on the foreground executor. This
ensures the state change is eventually processed after the current
borrow completes.

Release Notes:

- N/A
2026-02-14 14:54:19 -06:00
morgankrey
dd836fc8b2
docs: Add documentation conventions, brand voice guidelines, and gold standards (#49176)
## Summary

This PR establishes the foundation for documentation quality and
automation.

## Documentation Conventions (`docs/.conventions/`)

**CONVENTIONS.md** - Structural guidelines covering:
- What needs documentation vs what to skip
- Page vs section decisions (with examples)
- Document structure and section ordering
- Formatting conventions (code, JSON, tables, callouts)
- Anchor ID patterns for stable deep-linking
- Settings documentation pattern (UI first, then JSON)
- Terminology standards (aligned with docs/AGENTS.md)
- Prettier formatting requirements

**brand-voice/** - Zed's writing style:
- `SKILL.md` - Core voice principles
- `rubric.md` - 8-point scoring criteria (must score 4+ on all)
- `taboo-phrases.md` - Patterns to avoid (exclamation points, hype
words)
- `voice-examples.md` - Before/after transformations

## Gold Standard Examples (`docs/.doc-examples/`)

Four templates demonstrating best practices:
- `simple-feature.md` - Overview/navigation docs
- `complex-feature.md` - Comprehensive feature docs
- `configuration.md` - Settings documentation
- `reference.md` - API/tool reference

## Related

Follow-up PR #49177 applies these conventions to existing documentation.

Release Notes:

- N/A
2026-02-14 14:20:03 -06:00
morgankrey
9eb6fc098a
gpui: Fix RefCell panic in thermal/keyboard state callbacks (#49187)
The `on_thermal_state_change` and `on_keyboard_layout_change` callbacks
in `App::new_app()` called `borrow_mut()` unconditionally. These
callbacks are invoked asynchronously by macOS via dispatch queues when
the system's thermal or keyboard state changes, which can happen while
the app's RefCell is already borrowed during an update cycle, causing a
panic.

This change uses `try_borrow_mut()` instead. If the borrow fails
(because the app is already borrowed), the callback silently skips the
update - the state can be queried on the next frame.

Fixes [ZED-4WM](https://zed-dev.sentry.io/issues/ZED-4WM)
Closes #49181

Release Notes:

- Fixed a crash on macOS caused by thermal or keyboard layout state
changes occurring during UI updates.
2026-02-14 13:55:13 -06:00
Marshall Bowers
d89ee32a7b
extensions_ui: Respect category filter for installed extensions when searching (#49183)
This PR updates the extensions UI to respect the category filter for
already-installed extensions when searching for extensions.

Closes #48628.

Release Notes:

- The extension search will now properly respect the category filter for
extensions that are already installed
([#48628](https://github.com/zed-industries/zed/issues/48628)).
2026-02-14 16:07:25 +00:00