0a816cb
edit prediction: Exclude whole-module definitions from context (#44414)
Click to expand commit body
For qualified identifiers we end up requesting both the definition of
the module and the item within it, but we only want the latter. At the
moment, we can't skip the request altogether, because we can't tell them
apart from the highlights query. However, we can tell from the target
range length, because it should be small for individual definitions as
it only covers their name, not the whole body.
Release Notes:
- N/A
Agus Zubiaga
created
b1333b5
editor: Improve performance of `create_highlight_endpoints` (#44521)
Click to expand commit body
We reallocate quite a bunch in this codepath even though we don't need
to, we already roughly know what number of elements we are working with
so we can reduce the required allocations to some degree. This also
reduces the amount of anchor comparisons required.
Came up in profiling for
https://github.com/zed-industries/zed/issues/44503
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Lukas Wirth
created
30597a0
project_panel: Fix create entry with trailing dot duplicating on windows (#44524)
Click to expand commit body
Release Notes:
- Fixed an issue where creating a file through the project panel with a
trailing dot in its name would duplicate the entries with and without
the dot
Co-authored by: Smit Barmase <smit@zed.dev>
Previously this rendered `mistral-vibe` and not `Mistral Vibe`:
<img width="242" height="199" alt="Screenshot 2025-12-09 at 2 52 48 PM"
src="https://github.com/user-attachments/assets/f85cbf20-91d1-4c05-8b3a-fa5b544acb1c"
/>
Release Notes:
- Render agent display names from extension in menu
TODO:
- [x] Add inline prompt rating buttons
- [ ] Hook this into our other systems
Release Notes:
- N/A
Mikayla Maki
created
22f1655
Add history to the command palette (#44517)
Click to expand commit body
Co-Authored-By: Claude <ai+claude@zed.dev>
Closes #ISSUE
Release Notes:
- Added history to the command palette (`up` will now show recently
executed
commands). This is particularly helpful in vim mode when you may mistype
a
complicated command and want to re-run a slightly different version
thereof.
---------
Co-authored-by: Claude <ai+claude@zed.dev>
Conrad Irwin
and
Claude
created
7cbe25f
vim: Fix editor paste not using clipboard in visual mode (#44347)
Click to expand commit body
Closes #44178
Release Notes:
- Fixed editor paste not using clipboard when in Vim visual mode
Mayank Verma
created
728f09f
vim: Fix buffer navigation with non-Editor items (#44350)
Click to expand commit body
Closes #44348
Release Notes:
- Fixed buffer navigation in Vim mode with non-Editor items
Closes #40067
Release Notes:
- The `--user-data-dir` flag now works on Windows and Linux, as well as
macOS if you pass `--foreground`.
---------
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
Julia Ryan
and
Lukas Wirth
created
736a712
Handle response error for ashpd fixing login edgecases (#44502)
Click to expand commit body
Release Notes:
- Fixed login fallbacks on Linux
Co-authored-by: Julia Ryan <juliaryan3.14@gmail.com>
David Kleingeld
and
Julia Ryan
created
3180f44
lsp: Do not drop lsp buffer handle from editor when a language change leads to buffer having a legit language (#44469)
Click to expand commit body
Fixes a bug that led to us unnecessarily restarting a language server
when we were looking at a single file of a given language.
Release Notes:
- Fixed a bug that led to Zed sometimes starting an excessive amount of
language servers
Piotr Osiewicz
created
5dd8561
Fix DeepSeek Reasoner tool-call handling and add reasoning_content support (#44301)
Click to expand commit body
## Closes #43887
## Release Notes:
### Problem
DeepSeek's reasoning mode API requires `reasoning_content` to be
included in assistant messages that precede tool calls. Without it, the
API returns a 400 error:
```
Missing `reasoning_content` field in the assistant message at message index 2
```
### Added/Fixed/Improved
- Add `reasoning_content` field to `RequestMessage::Assistant` in
`crates/deepseek/src/deepseek.rs`
- Accumulate thinking content from `MessageContent::Thinking` and attach
it to the next assistant/tool-call message
- Wire reasoning content through the language model provider in
`crates/language_models/src/provider/deepseek.rs`
### Testing
- Verified with DeepSeek Reasoner model using tool calls
- Confirmed reasoning content is properly included in API requests
Fixes tool-call errors when using DeepSeek's reasoning mode.
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Peter König
and
Ben Brandt
created
bfab0b7
agent_ui: Fix panic in message editor (#44493)
Click to expand commit body
Release Notes:
- N/A
Bennet Bo Fenner
created
04d9200
Remove reqwest dependency from gpui (#44424)
Click to expand commit body
This was pulling in tokio which is pretty unfortunate. The solution is
to do the `reqwest::Form` to `http::Reqwest` conversion in the
reliability crate instead of our http client wrapper.
Release Notes:
- N/A
Julia Ryan
created
20fa998
Revert "gpui: Update link to Ownership and data flow section" (#44492)
Click to expand commit body
While this fixes the link in the Readme it breaks the one in the docs
which is the more important one (we should probably just duplicate the
readme and not include it into gpui.rs but that is annoying).
David Kleingeld
created
dd57d97
Revert "Improve TS/TSX/JS syntax highlighting for parameters, types, and punctuation" (#44490)
Click to expand commit body
Reverts zed-industries/zed#43437
Internally we noticed some regression related to removed query for
PascalCase identifiers. Reverting now to prevent this from going to
preview, still planning to land this with the necessary fixes later.
Gaauwe Rombouts
created
d5a437d
editor: Add rotation commands for selections and lines (#41236)
Click to expand commit body
Introduces RotateSelectionsForward and RotateSelectionsBackward actions
that rotate content in a circular fashion across multiple cursors.
Behavior based on context:
- With selections: rotates the selected text at each cursor position
(e.g., x=1, y=2, z=3 becomes x=3, y=1, z=2)
- With just cursors: rotates entire lines at cursor positions (e.g.,
three lines cycle to line3, line1, line2)
Selections are preserved after rotation, allowing repeated cycling.
Useful for quickly rearranging values, lines, or arguments.
For more examples and use cases, please refer to #5315.
I'm eager to read your thoughts and make any adjustments or improvements
to any aspect of this change.
Closes #5315
Release Notes:
- Added `RotateSelectionsForward` and `RotateSelectionsBackward` actions
that rotate content in a circular fashion across multiple cursors
Pablo Aguiar
created
a524071
gpui: Try to notify when GPU init fails (#44487)
Click to expand commit body
Hopefully addresses #43575. cc @cole-miller
Release Notes:
- GPU initialization errors are more reliably reported
---------
Co-authored-by: Cole Miller <cole@zed.dev>
Nia
and
Cole Miller
created
1471105
edit_prediction: Remove duplicate definition of interpolate_edits (#44485)
ba807a3
languages: Initialize Tailwind's options with `includeLanguages` (#43978)
Click to expand commit body
Since [this
PR](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1014),
the `tailwindCSS.userLanguages` option has been deprecated, and it is
recommended to use `tailwindCSS.includeLanguages` instead. Using
`tailwindCSS.userLanguages` triggers the warning shown below in the
`tailwindcss-language-server` logs.
<img width="634" height="259" alt="tailwindcss-language-server (kron)
Server Logs v"
src="https://github.com/user-attachments/assets/763551ad-f41a-4756-9d7d-dfb7df45cc5c"
/>
Release Notes:
- Fixed a warning indicating the deprecation of
`tailwindCSS.userLanguages` by initializing the options with
`tailwindCSS.includeLanguages`.
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Afief Abdurrahman
and
Smit Barmase
created
45829b3
Avoid the cost of creating an anyhow error in RelPath::strip_prefix (#44444)
Click to expand commit body
Release Notes:
- Fixed a performance bottleneck that could delay Zed's processing FS
events for a long time in some cases.
Max Brunsfeld
created
631e3dd
collab: Remove unused `Signup` model (#44438)
Click to expand commit body
This PR removes the `Signup` database model, as it was not being used.
Release Notes:
- N/A
This PR removes the database schema migrations from the repo, as these
are now managed by Cloud.
There's a new `20251208000000_test_schema.sql` "migration" that we use
to create the database schema for the tests, similar to what we use for
SQLite.
Release Notes:
- N/A
Marshall Bowers
created
1888106
Fix telemetry for `collab::ToggleMute` and remove unregistered actions (#44432)
Click to expand commit body
This PR removes the actions `collab::ToggleScreenSharing`,
`collab::ToggleMute`, and `collab::ToggleDeafen`. They weren't actually
registered to any behavior, so while it was possible to create a keybind
bound to them, they never actually trigger. I spent ~30 minutes trying
to figure out why I was getting this result for my `"f13":
"collab::ToggleMute"` keybind in the keybind context menu:
<img width="485" height="174" alt="image"
src="https://github.com/user-attachments/assets/23064c8f-fe8d-42e5-b94f-bd4b8a0cb3b5"
/>
(This really threw me for a loop because I was trying to use this as a
known good case to compare against a _different_ action that wasn't
working because I forgot to register it.)
As a side benefit, this enables telemetry for toggling mic mute via
keybind.
Release Notes:
- Fixed telemetry for `collab::Mute`
- Removed unregistered actions `collab::ToggleMute`,
`collab::ToggleDeafen`, and `collab::ToggleScreenshare`
- The correctly-functioning actions `collab::Mute`, `collab::Deafen`,
and `collab::ScreenShare` are recommended instead
Andrew Farkas
created
c005adb
collab: Don't run migrations on startup (#44430)
Click to expand commit body
This PR removes the step that applies migrations when Collab starts up,
as migrations are now done as part of Cloud deployments.
Release Notes:
- N/A
22e1bcc
languages: Check whether to update `typescript-language-server` (#44343)
Click to expand commit body
Closes #43155
Adds a missing check to also update packages when the
`typescript-language-server` package is outdated.
I created a new `SERVER_PACKAGE_NAME ` constant so that the package name
isn't coupled to the language server name inside of Zed.
Release Notes:
- Fixed the typescript language server falling out of date
tidely
created
bb591f1
extension_cli: Properly populate manifest with snippet location (#44425)
Click to expand commit body
This fixes an issue where the snippet file location would not be the
proper one for compiled extensions because it would be populated with an
absolute path instead of a relative one in relation to the extension
output directory. This caused the copy operation downstream to not do
anything, because it copied the file to the location it already was
(which was not the output directory for that extension).
Also adds some tests and pulls in the `Fs` so we do not have such issues
with snippets a third time hopefully.
Release Notes:
- N/A
Finn Evers
created
3d6cc3d
terminal: Fix performance issues with hyperlink regex matching (#44407)
Click to expand commit body
Problem statement: When given a line that contained a lot of matches of
your hyperlink regex of choice (thanks to #40305), we would look for
matches
that intersected with currently hovered point. This is *hella*
expensive, because we would re-walk the whole alacritty grid for each
match. With the repro that Joseph shared, we had to go through 4000 such
matches on each frame render.
Problem solution: We now convert the hovered point into a range within
the line (byte-wise) in order to throw away matches that do not
intersect the
hovered range. This lets us avoid performing the unnecessary conversion
when we know it's never going to yield a match range that intersects the
hovered point.
Release Notes:
- terminal: Fixed performance regression when handling long lines.
---------
Co-authored-by: Dave Waggoner <waggoner.dave@gmail.com>
Piotr Osiewicz
and
Dave Waggoner
created
464d4f7
git: Use branch names for resolve conflict buttons (#44421)
Click to expand commit body
This makes merge conflict resolution clearer because we're now parsing
the branch names from the conflict region instead of hardcoding HEAD and
ORIGIN.
### Before
<img width="1157" height="1308" alt="image"
src="https://github.com/user-attachments/assets/1fd72823-4650-48dd-b26a-77c66d21614d"
/>
### After
<img width="1440" height="1249" alt="Screenshot 2025-12-08 at 2 17
12 PM"
src="https://github.com/user-attachments/assets/d23c219a-6128-4e2d-a8bc-3f128aa55272"
/>
Release Notes:
- git: Use branch names for git conflict buttons instead of HEAD and
ORIGIN
Anthony Eid
created
f489255
codex: Fallback to locally installed version if update fails (#44419)
Click to expand commit body
Closes #43900
Release Notes:
- Fallback to locally installed codex version if update fails
Bennet Bo Fenner
created
387059c
language: Add `LanguageName::new_static` to reduce allocations (#44380)
Click to expand commit body
Implements a specialized constructor `LanguageName::new_static` for
`&'static str` which reduces allocations.
`LanguageName::new` always backs the underlying `SharedString` with an
owned `Arc<str>` even when a `&'static str` is passed. This makes us
allocate each time we create a new `LanguageName` no matter what.
Creating a specialized constructor for `&'static str` allows us to
essentially construct them for free.
Additional change:
Encourages using explicit constructors to avoid needless allocations.
Currently there were no instances of this trait being called where the
lifetime was not `'static` saving another 48 locations of allocation.
```rust
impl<'a> From<&'a str> for LanguageName {
fn from(str: &'a str) -> Self {
Self(SharedString::new(str))
}
}
// to
impl From<&'static str> for LanguageName {
fn from(str: &'static str) -> Self {
Self(SharedString::new_static(str))
}
}
```
Release Notes:
- N/A
tidely
created
4a382b2
fuzzy: Use lowercase representations for matrix size calculation (#44338)
Click to expand commit body
Closes #44324
Release Notes:
- Uses the lowercase representation of the query for the matrix length
calculation to match the bounds size expected in `recursive_score_match`
Nereuxofficial
created
b948d8b
git: Improve self-hosted provider support and Bitbucket integration (#42343)
Click to expand commit body
This PR includes several minor modifications and improvements related to
Git hosting providers, covering the following areas:
1. Bitbucket Owner Parsing Fix: Remove the common `scm` prefix from the
remote URL of self-hosted Bitbucket instances to prevent incorrect owner
parsing.
[Reference](https://github.com/gitkraken/vscode-gitlens/blob/a6e3c6fbb255116507eaabaa9940c192ed7bb0e1/src/git/remotes/bitbucket-server.ts#L72-L74)
2. Bitbucket Avatars in Blame: Add support for displaying Bitbucket
avatars in the Git blame view.
<img width="2750" height="1994" alt="CleanShot 2025-11-10 at 20 34
40@2x"
src="https://github.com/user-attachments/assets/9e26abdf-7880-4085-b636-a1f99ebeeb97"
/>
3. Self-hosted SourceHut Support: Add support for self-hosted SourceHut
instances.
4. Configuration: Add recently introduced self-hosted Git providers
(Gitea, Forgejo, and SourceHut) to the `git_hosting_providers` setting
option.
<img width="2750" height="1994" alt="CleanShot 2025-11-10 at 20 33
48@2x"
src="https://github.com/user-attachments/assets/44ffc799-182d-4145-9b89-e509bbc08843"
/>
Closes #11043
Release Notes:
- Improved self-hosted git provider support and Bitbucket integration
ᴀᴍᴛᴏᴀᴇʀ
created
bc17491
gpui: Revert grid template columns default behavior to align with Tailwind (#44368)
Click to expand commit body
When using the latest version of `GPUI`, I found some grid layout
issues. I discovered #43555 modified the default behavior of grid
template columns. I checked the implementation at
https://tailwindcss.com/docs/grid-template-columns, and it seems our
previous implementation was correct.
If a grid layout is placed inside a flexbox, the layout becomes
unpredictable.
```rust
impl Render for HelloWorld {
fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
div()
.flex()
.size(px(500.0))
.bg(rgb(0x505050))
.text_xl()
.text_color(rgb(0xffffff))
.child(
div()
.size_full()
.gap_1()
.grid()
.grid_cols(2)
.border_1()
.border_color(gpui::red())
.children((0..10).map(|ix| {
div()
.w_full()
.border_1()
.border_color(gpui::green())
.child(ix.to_string())
})),
)
}
}
```
| Before | After |
| - | - |
| <img width="612" height="644" alt="After1"
src="https://github.com/user-attachments/assets/64eaf949-0f38-4f0b-aae7-6637f8f40038"
/> | <img width="612" height="644" alt="Before1"
src="https://github.com/user-attachments/assets/561a508d-29ea-4fd2-bd1e-909ad14b9ee3"
/> |
I also placed the grid layout example inside a flexbox too.
| Before | After |
| - | - |
| <img width="612" height="644" alt="After"
src="https://github.com/user-attachments/assets/fa6f4a2d-21d8-413e-8b66-7bd073e05f87"
/> | <img width="612" height="644" alt="Before"
src="https://github.com/user-attachments/assets/9e0783d1-18e9-470d-b913-0dbe4ba88835"
/> |
I tested the changes from the previous PR, and it seems that setting the
table's parent to `v_flex` is sufficient to achieve a non-full table
width without modifying the grid layout. This was already done in the
previous PR.
I reverted the grid changes, the blue border represents the table width.
cc @RemcoSmitsDev
<img width="1107" height="1000" alt="table"
src="https://github.com/user-attachments/assets/4b7ba2a2-a66a-444d-ad42-d80bc9057cce"
/>
So, I believe we should revert to this implementation to align with
tailwindcss behavior and avoid potential future problems, especially
since the cause of this issue is difficult to pinpoint.
Release Notes:
- N/A
Floyd Wang
created
f6a6630
agent_ui: Auto-capture file context on paste (#42982)
Click to expand commit body
Closes #42972
https://github.com/user-attachments/assets/98f2d3dc-5682-4670-b636-fa8ea2495c69
Release Notes:
- Added automatic file context detection when pasting code into the AI
agent panel. Pasted code now displays as collapsible badges showing the
file path and line numbers (e.g., "app/layout.tsx (18-25)").
---------
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
ozzy
and
Bennet Bo Fenner
created
1842184
nix: Fix nix build failure due to missing `protoc` (#44412)
Cameron Mcloughlin
created
2143942
Add support for Grok 4.1 Fast models in xAI provider (#43419)
Click to expand commit body
Release Notes:
- Added support for Grok 4.1 Fast (reasoning and non-reasoning) models
in the xAI provider, with 2M token context windows and full vision
capabilities.
- Extended 2M token context to existing Grok 4 Fast variants (from 128K)
for consistency with xAI updates.
- Enabled image/vision support for all Grok 4 family models.
Doc:
https://docs.x.ai/docs/models/grok-4-1-fast-reasoning
https://docs.x.ai/docs/models/grok-4-1-fast-non-reasoning
Martin Bergo
created
044f7b5
editor: Fix buffer fold focuses first buffer in multi-buffer instead of the toggled one (#44394)
Click to expand commit body
Closes #43870
Regressed in https://github.com/zed-industries/zed/pull/37953
Release Notes:
- Fixed issue where toggling buffer fold focuses first buffer in
multi-buffer instead of the toggled one.