e092aed
Split external agent flags (#36499)
Click to expand commit body
Release Notes: - N/A
Agus Zubiaga created
e092aed
Split external agent flags (#36499)
Release Notes: - N/A
Agus Zubiaga created
d1cabef
editor: Fix inline diagnostics min column inaccuracy (#36501)
Closes https://github.com/zed-industries/zed/issues/33346 Release Notes: - Fixed `diagnostic.inline.min_column` being inaccurate
Lukas Wirth created
013eaae
editor: Render dirty and conflict markers in multibuffer headers (#36489)
Release Notes: - Added rendering of status indicators for multi buffer headers
Lukas Wirth created
43b4363
lsp: Enable dynamic registration for TextDocumentSyncClientCapabilities post revert (#36494)
Follow up: https://github.com/zed-industries/zed/pull/36485 Release Notes: - N/A
Smit Barmase created
1444cd9
Fix Windows test failures not being detected in CI (#36446)
Bug introduced in #35926 Release Notes: - N/A
Cole Miller created
6c255c1
Lay the groundwork to support history in agent2 (#36483)
This pull request introduces title generation and history replaying. We still need to wire up the rest of the history but this gets us very close. I extracted a lot of this code from `agent2-history` because that branch was starting to get long-lived and there were lots of changes since we started. Release Notes: - N/A
Antonio Scandurra created
c4083b9
Fix unnecessary-mut-passed lint (#36490)
Release Notes: - N/A
Piotr Osiewicz created
e3b593e
project: Take 2 on Handle textDocument/didSave and textDocument/didChange (un)registration and usage correctly (#36485)
Relands https://github.com/zed-industries/zed/pull/36441 with a
deserialization fix.
Previously, deserializing `"includeText"` into
`lsp::TextDocumentSyncSaveOptions` resulted in a `Supported(false)` type
instead of `SaveOptions(SaveOptions { include_text: Option<bool> })`.
```rs
impl From<bool> for TextDocumentSyncSaveOptions {
fn from(from: bool) -> Self {
Self::Supported(from)
}
}
```
Looks like, while dynamic registartion we only get `SaveOptions` type
and never `Supported` type.
(https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentSaveRegistrationOptions)
Release Notes:
- N/A
---------
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Smit Barmase and Lukas Wirth created
8f56738
Auto-fix clippy::collapsible_if violations (#36428)
Release Notes: - N/A
Piotr Osiewicz created
9e8ec72
Revert "project: Handle `textDocument/didSave` and `textDocument/didChange` (un)registration and usage correctly (#36441)" (#36480)
This reverts commit c5991e74bb6f305c299684dc7ac3f6ee9055efcd. This PR broke rust-analyzer's check on save function, so reverting for now Release Notes: - N/A
Lukas Wirth created
2fb89c9
chore: Default settings: Comments: dock option (#36476)
Minor tweak in the wording of the comments for the default settings regarding the `dock` option of the panels, in order to make them congruent across all panels. Release Notes: - N/A
Vincent Durewski created
e6d5a6a
agent: Remove `thread-auto-capture` feature (#36474)
We never ended up using this in practice (the feature flag is not enabled for anyone, not even staff) Release Notes: - N/A
Bennet Bo Fenner created
790a2a0
agent2: Support `preferred_completion_mode` setting (#36473)
Release Notes: - N/A
Bennet Bo Fenner created
97a31c5
agent2: Fix agent location still being present after thread stopped (#36471)
Release Notes: - N/A
Bennet Bo Fenner created
5df9c7c
search: Fix project search query flickering (#36470)
Release Notes: - N/A Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Lukas Wirth and Smit Barmase created
0ea0d46
agent2: Port retry logic (#36421)
Release Notes: - N/A
Bennet Bo Fenner created
47e1d45
editor: Fix `edit_predictions_disabled_in` not disabling predictions (#36469)
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.
Smit Barmase created
b8ddb01
agent2: Port rules UI (#36429)
Release Notes: - N/A
Bennet Bo Fenner created
ed14ab8
gpui: Introduce stacker to address stack overflows with deep layout trees (#35813)
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)
Release Notes: - N/A
tidely created
176c445
Avoid symlink conflicts when re-extracting `eslint-xx.tar.gz` (#36068)
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)
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)
Release Notes: - N/A
Cole Miller created
821e97a
agent2: Add hover preview for image creases (#36427)
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
Cole Miller created
1b6fd99
Fix `InlineCompletion` -> `EditPrediction` keymap migration (#36457)
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)
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)
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)
Release Notes: - N/A
Danilo Leal created
b7edc89
agent: Improve error and warnings display (#36425)
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
Danilo Leal created
b578031
claude: Respect always allow setting (#36450)
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)
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
Marshall Bowers created
567ceff
Remove an unused struct (#36448)
Release Notes: - N/A
Kirill Bulatov created
3648dbe
terminal: Temporarily disable `test_basic_terminal` test (#36447)
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)
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)
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
Gregor created
9e0e233
Fix clippy::needless_borrow lint violations (#36444)
Release Notes: - N/A
Piotr Osiewicz created
eecf142
Explicitly allow `clippy::new_without_default` style lint (#36434)
Discussed in #36432 Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <git@maxdeviant.com>
tidely and Marshall Bowers created
97f784d
Fix early dispatch crash on windows (#36445)
Closes #36384 Release Notes: - N/A
localcc created
c5991e7
project: Handle `textDocument/didSave` and `textDocument/didChange` (un)registration and usage correctly (#36441)
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
Smit Barmase created
8b89ea1
Handle auth for claude (#36442)
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
Agus Zubiaga created
50819a9
client: Parse auth callback query parameters before showing sign-in success page (#36440)
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)
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)
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)
Release Notes: - N/A
Lukas Wirth created
e1d8e3b
language: Clean up allocations (#36418)
- 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)
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)
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)
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)
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)
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