47e1d45
editor: Fix `edit_predictions_disabled_in` not disabling predictions (#36469)
Click to expand commit body
Closes #25744
Only setting changes and editor init determined whether to show
predictions, so glob patterns and toggles correctly disabled them. On
cursor changes we call `update_visible_edit_prediction`, but we weren’t
discarding predictions when the scope changed. This PR fixes that.
Release Notes:
- Fixed an issue where the `edit_predictions_disabled_in` setting was
ignored in some cases.
ed14ab8
gpui: Introduce stacker to address stack overflows with deep layout trees (#35813)
Click to expand commit body
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: Ben Kunkle <ben@zed.dev>
Release Notes:
- N/A
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: Ben Kunkle <ben@zed.dev>
Piotr Osiewicz
,
Anthony Eid
,
Lukas Wirth
, and
Ben Kunkle
created
1fbb318
Fix iterator related clippy style lint violations (#36437)
Click to expand commit body
Release Notes:
- N/A
tidely
created
176c445
Avoid symlink conflicts when re-extracting `eslint-xx.tar.gz` (#36068)
Click to expand commit body
Closes #34325
**Background**
When upgrading/reinstalling the ESLint language server, extracting the
archive over an existing version directory that contains symlinks can
fail and interrupt the installation.
```
failed to unpack .../vscode-eslint-2.4.4/.../client/src/shared
File exists (os error 17) when symlinking ../../$shared/ to .../client/src/shared
```
**Root cause**
Extracting into a non-empty directory conflicts with leftover
files/symlinks (e.g., `client/src/shared -> ../../$shared`), causing
“File exists (os error 17)”.
When `fs::metadata(&server_path).await.is_err()` is true, the code falls
back to cached_server_binary, but that still targets the same
(potentially corrupted/half-installed) directory and does not run `npm
install` or `npm run compile`, so the system cannot recover and remains
broken.
**Change**
Before downloading and extracting, delete the target version directory
(vscode-eslint-<version>) to ensure an empty extraction destination and
avoid conflicts.
**Alternative approaches**
temp directory + rename: extract into a clean temp directory and rename
into place to avoid half-installed states
[async-tar](https://github.com/dignifiedquire/async-tar) enhancement:
tolerate already-existing symlinks (or add a “replace-existing” option).
Release Notes:
- Fixed eslint installation not clearing files after previous attempts'
0x5457
created
d30b017
Prevent sending slash commands in CC threads (#36453)
Click to expand commit body
Highlight them as errors in the editor, and add a leading space when
sending them so users don't hit the odd behavior when sending these
commands to the SDK.
Release Notes:
- N/A
Cole Miller
created
7bcea7d
agent2: Support directories in @file mentions (#36416)
Click to expand commit body
Release Notes:
- N/A
Cole Miller
created
821e97a
agent2: Add hover preview for image creases (#36427)
Click to expand commit body
Note that (at least for now) this only works for creases in the "new
message" editor, not when editing past messages. That's because we don't
have the original image available when putting together the creases for
past messages, only the base64-encoded language model content.
Release Notes:
- N/A
Accidentally regressed this in #35512, causing this migration to not
work and an error log to appear when one of these actions is in the user
keymap
Release Notes:
- N/A
Michael Sloan
created
5004cb6
collab: Add `orb_subscription_id` to `billing_subscriptions` (#36455)
Click to expand commit body
This PR adds an `orb_subscription_id` column to the
`billing_subscriptions` table.
Release Notes:
- N/A
Marshall Bowers
created
4abfcba
git: Suggest merge commit message in remote (#36430)
Click to expand commit body
Closes #ISSUE
Adds `merge_message` field to the `UpdateRepository` proto message so
that suggested merge messages are displayed in remote projects.
Release Notes:
- git: Fixed an issue where suggested merge commit messages would not
appear for remote projects
Ben Kunkle
created
6ee06bf
ai onboarding: Adjust the Zed Pro banner (#36452)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
b7edc89
agent: Improve error and warnings display (#36425)
Click to expand commit body
This PR refactors the callout component and improves how we display
errors and warnings in the agent panel, along with improvements for
specific cases (e.g., you have `zed.dev` as your LLM provider and is
signed out).
Still a work in progress, though, wrapping up some details.
Release Notes:
- N/A
Claude will now respect the `agent.always_allow_tool_actions` setting
and will set it when "Always Allow" is clicked.
Release Notes:
- N/A
Agus Zubiaga
created
33fbe53
client: Make `Client::sign_in_with_optional_connect` a no-op when already connected to Collab (#36449)
Click to expand commit body
This PR makes it so `Client::sign_in_with_optional_connect` does nothing
when the user is already connected to Collab.
This fixes the issue where clicking on a channel link would temporarily
disconnect you from Collab.
Release Notes:
- N/A
3648dbe
terminal: Temporarily disable `test_basic_terminal` test (#36447)
Click to expand commit body
This PR temporarily disables the `test_basic_terminal` test, as it
flakes on macOS.
Release Notes:
- N/A
Marshall Bowers
created
e7b7c20
terminal: Fix python venv path when spawning tasks on windows (#35909)
Click to expand commit body
I haven't found any issues related to this, but it seems like currently
the wrong directory is added to the path when spawning tasks on windows
with a python virtual environment. I also deduplicated the logic at a
few places. The same constant exists in the languages crate, but we
don't want to pull an additional dependency just for this.
-1 papercut
Release Notes:
- Fix python venv path when spawning tasks on windows
tidely
created
bb640c6
Add multi selection support to UnwrapSyntaxNode (#35991)
Click to expand commit body
Closes #35932
Closes #35933
I only intended to fix multi select in this, I accidentally drive-by
fixed the VIM issue as well. `replace_text_in_range` which I was using
before has two, to me unexpected, side-effects:
- it no-ops when input is disabled, which is the case in VIM's
Insert/Visual modes
- it takes the current selection into account, and does not just operate
on the given range (which I erroneously assumed before)
Now the code is using `buffer.edit` instead, which seems more lower
level, and does not have those side-effects. I was enthused to see that
it accepts a vec of edits, so I didn't have to calculate offsets for
following edits... until I also wanted to set selections, where I do
need to do it by hand. I'm still wondering if there is a simpler way to
do it, but for now it at least passes my muster
Release Notes:
- Added multiple selection support to UnwrapSyntaxNode action
- Fixed UnwrapSyntaxNode not working in VIM Insert/Visual modes
97f784d
Fix early dispatch crash on windows (#36445)
Click to expand commit body
Closes #36384
Release Notes:
- N/A
localcc
created
c5991e7
project: Handle `textDocument/didSave` and `textDocument/didChange` (un)registration and usage correctly (#36441)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/35306
This PR contains two changes:
Both changes are inspired from:
https://github.com/microsoft/vscode-languageserver-node/blob/d90a87f9557a0df9142cfb33e251cfa6fe27d970/client/src/common/textSynchronization.ts
1. Handling `textDocument/didSave` and `textDocument/didChange`
registration and unregistration correctly:
```rs
#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
#[serde(untagged)]
pub enum TextDocumentSyncCapability {
Kind(TextDocumentSyncKind),
Options(TextDocumentSyncOptions),
}
```
- `textDocument/didSave` dynamic registration contains "includeText"
- `textDocument/didChange` dynamic registration contains "syncKind"
While storing this to Language Server, we use
`TextDocumentSyncCapability::Options` instead of
`TextDocumentSyncCapability::Kind` since it also include
[change](https://github.com/gluon-lang/lsp-types/blob/be7336e92a6ad23f214df19bcdceab17f39531a9/src/lib.rs#L1714-L1717)
field as `TextDocumentSyncCapability::Kind` as well as
[save](https://github.com/gluon-lang/lsp-types/blob/be7336e92a6ad23f214df19bcdceab17f39531a9/src/lib.rs#L1727-L1729)
field as `TextDocumentSyncSaveOptions`. This way while registering or
unregistering both of them, we don't accidentaly mess with other data.
So, if at intialization we end up getting
`TextDocumentSyncCapability::Kind` and we receive any above kind of
dynamic registration, we change `TextDocumentSyncCapability::Kind` to
`TextDocumentSyncCapability::Options` so we can store more data anyway.
2. Modify `include_text` method to only depend on
`TextDocumentSyncSaveOptions`, instead of depending on
`TextDocumentSyncKind`. Idea behind this is,
`TextDocumentSyncSaveOptions` should be responsible for
"textDocument/didSave" notification, and `TextDocumentSyncKind` should
be responsible for "textDocument/didChange", which it already is:
https://github.com/zed-industries/zed/blob/4b79eade1da2f5f7dfa18208cf882c8e6ca8a97f/crates/project/src/lsp_store.rs#L7324-L7331
Release Notes:
- N/A
We'll now use the anthropic provider to get credentials for `claude` and
embed its configuration view in the panel when they are not present.
Release Notes:
- N/A
This PR fixes an issue where we would redirect the user's browser to the
sign-in success page even if the OAuth callback was malformed.
We now parse the OAuth callback parameters from the query string and
only redirect to the sign-in success page when they are valid.
Release Notes:
- Updated the sign-in flow to not show the sign-in success page
prematurely.
Marshall Bowers
created
3a3df5c
gpui: Add support for custom prompt text in PathPromptOptions (#36410)
Click to expand commit body
This will be used to improve the clarity of the git clone UI
### MacOS
<img width="1322" height="128" alt="image"
src="https://github.com/user-attachments/assets/3e511143-12c1-4440-89dd-841b21b2e98e"
/>
### Windows
<img width="338" height="80" alt="image"
src="https://github.com/user-attachments/assets/766d08d6-0c72-4175-ad24-59dc6188d5f1"
/>
### Linux
<img width="387" height="72" alt="Screenshot From 2025-08-18 15-32-06"
src="https://github.com/user-attachments/assets/3125a7c4-3975-462a-a547-d5d4fac48f22"
/>
Release Notes:
- N/A
Anthony Eid
created
fa61c3e
gpui: Fix typo in `handle_gpui_events` (#36431)
Click to expand commit body
This PR fixes a typo I noticed in the `handle_gpui_events` method name.
Release Notes:
- N/A
Marshall Bowers
created
ed155ce
title_bar: Fix screensharing errors not being shown to the user (#36424)
- Correctly pre-allocate `Vec` when deserializing regexes
- Simplify manual `Vec::with_capacity` calls by using `Iterator::unzip`
- Collect directly into `Arc<[T]>` (uses `Vec` internally anyway, but
simplifies code)
- Remove unnecessary `LazyLock` around Atomics by not using const
incompatible `Default` for initialization.
Release Notes:
- N/A
tidely
created
768b2de
vim: Fix `ap` text object selection when there is line wrapping (#35485)
Click to expand commit body
In Vim mode, `ap` text object (used in `vap`, `dap`, `cap`) was
selecting multiple paragraphs when soft wrap was enabled. The bug was
caused by using DisplayRow coordinates for arithmetic instead of buffer
row coordinates in the paragraph boundary calculation.
Fix by converting to buffer coordinates before arithmetic, then back to
display coordinates for the final result.
Closes #35085
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Lucas Vieira
and
Conrad Irwin
created
e1d31cf
vim: Display invisibles in mode indicator (#35760)
Click to expand commit body
Release Notes:
- Fixes bug where `ctrl-k enter` while in `INSERT` mode would put a
newline in the Vim mode indicator
#### Old
<img width="729" height="486" alt="OldVimModeIndicator"
src="https://github.com/user-attachments/assets/58742745-5a58-4e7b-a1ef-29aa3ff1c4f7"
/>
#### New
<img width="729" height="486" alt="NewVimModeIndicator"
src="https://github.com/user-attachments/assets/e636359a-06b6-4cdd-9e62-5dc52c6f068f"
/>
AidanV
created
48fed86
acp: Have `AcpThread` handle all interrupting (#36417)
Click to expand commit body
The view was cancelling the generation, but `AcpThread` already handles
that, so we removed that extra code and fixed a bug where an update from
the first user message would appear after the second one.
Release Notes:
- N/A
Co-authored-by: Danilo <danilo@zed.dev>
Agus Zubiaga
and
Danilo
created
9b78c46
python: Use pip provided by our 'base' venv (#36414)
Click to expand commit body
Closes #36218
Release Notes:
- Debugger: Python debugger installation no longer assumes that pip is
available in global Python installation
Piotr Osiewicz
created
db31fa6
acp: Stay in edit mode when current completion ends (#36413)
Click to expand commit body
When a turn ends and the checkpoint is updated, `AcpThread` emits
`EntryUpdated` with the index of the user message. This was causing the
message editor to be recreated and, therefore, lose focus.
Release Notes:
- N/A
Agus Zubiaga
created
6bf6669
agent2: Allow to interrupt and send a new message (#36185)
As this was merged in upstream:
https://github.com/infinitefield/yawc/pull/16. It's safe to point yawc
to upstream instead of fork. cc @maxdeviant
Release Notes:
- N/A
Prevents layout shift when focusing the editor
Release Notes:
- N/A
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Agus Zubiaga
and
Danilo Leal
created
58f7006
editor: Add tests to ensure no horizontal scrolling is possible in soft wrap mode (#36411)
Click to expand commit body
Prior to https://github.com/zed-industries/zed/pull/34564 as well as
https://github.com/zed-industries/zed/pull/26893, we would have cases
where editors would be scrollable even if `soft_wrap` was set to
`editor_width`. This has regressed and improved quite a few times back
and forth. The issue was only within the editor code, the code for the
wrap map was functioning and tested properly.
Hence, this PR adds two tests to the editor rendering code in an effort
to ensure that we maintain the current correct behavior.
Release Notes:
- N/A
Finn Evers
created
1add1d0
Add option to disable auto indentation (#36259)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/11780
While auto indentation is generally nice to have, there are cases where
it is currently just not good enough for some languages (e.g. Haskell)
or users just straight up do not want their editor to auto indent for
them. Hence, this PR adds the possibilty to disable auto indentation for
either all language or on a per-language basis. Manual invocation via
the `editor: auto indent` action will continue to work.
Also takes a similar approach as
https://github.com/zed-industries/zed/pull/31569 to ensure performance
is fine for larger multicursor edits.
Release Notes:
- Added the possibility to configure auto indentation for all languages
and per language. Add `"auto_indent": false"` to your settings or
desired language to disable the feature.
d5711d4
editor: Fix panic in inlay hint while padding (#36405)
Click to expand commit body
Closes #36247
Fix a panic when padding inlay hints if the last character is a
multi-byte character. Regressed in
https://github.com/zed-industries/zed/pull/35786.
Release Notes:
- Fixed a crash that could occur when an inlay hint ended with `...`.
Smit Barmase
created
8433369
keymap_ui: Ensure keybind with empty arguments can be saved (#36393)
Click to expand commit body
Follow up to #36278 to ensure this bug is actually fixed. Also fixes
this on two layers and adds a test for the lower layer, as we cannot
properly test it in the UI.
Furthermore, this improves the error message to show some more context
and ensures the status toast is actually only shown when the keybind was
successfully updated: Before, we would show the success toast whilst
also showing an error in the editor.
Lastly, this also fixes some issues with the status toast (and
animations) where no status toast or no animation would show in certain
scenarios.
Release Notes:
- N/A
Finn Evers
created
d83f341
Silence "minidump endpoint not set" errors' backtraces in the logs (#36404)
472f1a8
editor: Add right click context menu to buffer headers (#36398)
Click to expand commit body
This adds a context menu to buffer headers mimicking that of pane tabs,
notably being able to copy the relative and absolute paths of the buffer
as well as opening a terminal in the parent.
Confusingly prior to this right clicking a buffer header used to open
the context menu of the underlying editor.
Release Notes:
- Added context menu for buffer titles