557fbe5
Hack extensions language servers to record their IDs
Lukas Wirth created
557fbe5
Hack extensions language servers to record their IDs
Lukas Wirth created
4292d88
Use language server ids for lsp tool
Lukas Wirth created
70575d1
Remove redundant Cargo diagnostics settings (#36795)
Removes `diagnostics.cargo.fetch_cargo_diagnostics` settings as those are not needed for the flycheck diagnostics to run. This setting disabled `checkOnSave` in rust-analyzer and allowed to update diagnostics via flycheck in the project diagnostics editor with the "refresh" button. Instead, `"checkOnSave": false,` can be set manually as https://zed.dev/docs/languages/rust#more-server-configuration example shows and flycheck commands can be called manually from anywhere, including the diagnostics panel, to refresh the diagnostics. Release Notes: - Removed redundant `diagnostics.cargo.fetch_cargo_diagnostics` settings
Kirill Bulatov created
ea42013
acp: Eagerly load all kinds of mentions (#36741)
This PR makes it so that all kinds of @-mentions start loading their context as soon as they are confirmed. Previously, we were waiting to load the context for file, symbol, selection, and rule mentions until the user's message was sent. By kicking off loading immediately for these kinds of context, we can support adding selections from unsaved buffers, and we make the semantics of @-mentions more consistent. Loading all kinds of context eagerly also makes it possible to simplify the structure of the MentionSet and the code around it. Now MentionSet is just a single hash map, all the management of creases happens in a uniform way in `MessageEditor::confirm_completion`, and the helper methods for loading different kinds of context are much more focused and orthogonal. Release Notes: - N/A --------- Co-authored-by: Conrad <conrad@zed.dev>
Cole Miller and Conrad created
5da31fd
acp: Remove ACP v0 (#36785)
We had a few people confused about why some features weren't working due to the fallback logic. It's gone. Release Notes: - N/A
Conrad Irwin created
f48a8f2
thread view: Simplify tool call & improve required auth state UIs (#36783)
Release Notes: - N/A
Danilo Leal created
d24cad3
Be more lenient when dealing with rust-analyzer's flycheck commands (#36782)
Flycheck commands are global and makes sense to fall back to looking up project's rust-analyzer even if the commands are run on a non-rust buffer. If multiple rust-analyzers are found in the project, avoid ambiguous commands and bail (as before). Closes #ISSUE Release Notes: - Made it possible to run rust-analyzer's flycheck actions from anywhere in the project
Kirill Bulatov created
153724a
Clean up handling of serialized ssh connection ids (#36781)
Small follow-up to #36714 Release Notes: - N/A
Max Brunsfeld created
bc566fe
agent2: Tweak usage callout border (#36777)
Release Notes: - N/A
Bennet Bo Fenner created
91b2a84
Add a few more testing features (#36778)
Release Notes: - N/A --------- Co-authored-by: Marshall <marshall@zed.dev>
Mikayla Maki and Marshall created
e6267c4
Ensure `pane: swap item right` does not panic (#36765)
This fixes a panic I randomly ran into whilst mistyping in the command palette: I accidentally ran `pane: swap item right`in a state where no items were opened in my active pane. We were checking for `index + 1 == self.items.len()` there when it really should be `>=`, as otherwise in the case of no items this panics. This PR fixes the bug, adds a test for both the panic as well as the actions themselves (they were untested previously). Lastly (and mostly), this also cleans up a bit around existing actions to update them with how we generally handle actions now. Release Notes: - Fixed a panic that could occur with the `pane: swap item right` action.
Finn Evers created
f649c31
Restructure persistence of remote workspaces to make room for WSL and other non-ssh remote projects (#36714)
This is another pure refactor, to prepare for adding direct WSL support.
### Todo
* [x] Represent `paths` in the same way for all workspaces, instead of
having a completely separate SSH representation
* [x] Adjust sqlite tables
* [x] `ssh_projects` -> `ssh_connections` (drop paths)
* [x] `workspaces.local_paths` -> `paths`
* [x] remove duplicate path columns on `workspaces`
* [x] Add migrations for backward-compatibility
Release Notes:
- N/A
---------
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Max Brunsfeld and Mikayla Maki created
639417c
thread_view: Adjust empty state and error displays (#36774)
Also changes the message editor placeholder depending on the agent. Release Notes: - N/A --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Danilo Leal and Conrad Irwin created
896a35f
Capture `shorthand_field_initializer` and modules in Rust highlights (#35842)
Currently shorthand field initializers are not captured the same way as the full initializers, leading to awkward and mismatching highlighting. This PR addresses this fact, in addition to capturing new highlights: - Tags the `!` as part of a macro invocation. - Tags the identifier part of a lifetime as `@lifetime`. - Tag module definitions as a new capture group, `@module`. - Shorthand initializers are now properly tagged as `@property`. Here's what the current version of Zed looks like: <img width="596" height="683" alt="image" src="https://github.com/user-attachments/assets/c9e52d8e-03dc-426b-8545-4fe872b803e0" /> With the new highlighting applied: <img width="596" height="683" alt="image" src="https://github.com/user-attachments/assets/b7bd9391-9910-456b-8198-6871174d0f4f" /> Release Notes: - Improved highlighting of Rust files, including new highlight groups for modules and shorthand initializers.
Jonathan Andersson created
4560d1e
Use a better message for the InvalidBufferView (#36770)
Follow-up of https://github.com/zed-industries/zed/pull/36764 Release Notes: - N/A
Kirill Bulatov created
18ac4ac
ACP debug tools pane (#36768)
Adds a new "acp: open debug tools" action that opens a new workspace item with a log of ACP messages for the active connection. Release Notes: - N/A
Agus Zubiaga created
72bd248
editor: Fix multi buffer header context menu not handling absolute paths (#36769)
Release Notes: - N/A
Lukas Wirth created
42ae330
Show file open error view instead of the modal (#36764)
Closes https://github.com/zed-industries/zed/issues/36672 Before: either <img width="966" height="642" alt="image" src="https://github.com/user-attachments/assets/7263ea3c-3d48-4f4d-be9e-16b24ca6f60b" /> (when opening from the project panel) or <img width="959" height="1019" alt="image" src="https://github.com/user-attachments/assets/834041d4-f4d6-46db-b333-803169ec4803" /> (for the rest of the cases) After: <img width="2032" height="1167" alt="Screenshot 2025-08-22 at 19 34 10" src="https://github.com/user-attachments/assets/1aa4530b-69f6-4c3a-8ea1-d4035dbb28da" /> (the unified error view) Release Notes: - Improved unsupported file opening in Zed --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Kirill Bulatov and Conrad Irwin created
eb0f9dd
themes: Implement Bright Black and Bright White colors (#36761)
Before: <img width="356" height="50" alt="image" src="https://github.com/user-attachments/assets/c4f4ae53-8820-4f22-b306-2e5062cfe552" /> After: <img width="340" height="41" alt="image" src="https://github.com/user-attachments/assets/8e69d9dc-5640-4e41-845d-f299fc5954e3" /> Release Notes: - Fixed ANSI Bright Black and Bright White colors
Oleksiy Syvokon created
ac9fdaa
onboarding: Improve Windows/Linux keyboard shortcuts; example ligature (#36712)
Small fixes to onboarding. Correct ligature example. Replace`ctrl-escape` and `alt-tab` since they are reserved on windows (and often on linux) and so are caught by the OS. Release Notes: - N/A
Peter Tripp created
8204ef1
onboarding: Remove accept AI ToS from within Zed (#36612)
Users now accept ToS from Zed's website when they sign in to Zed the first time. So it's no longer possible that a signed in account could not have accepted the ToS. Release Notes: - N/A --------- Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Anthony Eid and Mikayla Maki created
3d2fa72
Make word completions less intrusive (#36745)
Introduce `min_words_query_len` threshold for automatic word completion display, and set it to 3 by default. Re-enable word completions in Markdown and Plaintext. Release Notes: - Introduced `min_words_query_len` threshold for automatic word completion display, and set it to 3 by default to make them less intrusive
Kirill Bulatov created
92bbcde
workspace: Do not prompt for hanging up current call when replacing last visible project (#36697)
This fixes a bug where in order to open a new project in a call (even if it's not shared), you need to hang up. Release Notes: - N/A
Piotr Osiewicz created
54df43e
Fix cursor movement in protected files on backspace/delete (#36753)
## Summary Fixes cursor movement behavior in protected files (like Default Settings) when pressing backspace or delete keys. Previously, these keys would cause unwanted cursor movement instead of being ignored as expected in read-only files. ## Changes - Added read-only checks to `backspace()` and `delete()` methods in the editor - Consistent with existing pattern used by other editing methods (`indent()`, `outdent()`, `undo()`, etc.) ## Test Plan 1. Open Default Settings in Zed 2. Place cursor at arbitrary position (not at start/end of file) 3. Press backspace - cursor should remain in place (no movement) 4. Press delete - cursor should remain in place (no movement) Fixes #36302 Release Notes: - Fixed backspace and delete keys moving caret in protected files Co-authored-by: Claude <noreply@anthropic.com>
Sarah Price and Claude created
4f0fad6
acp: Support calling tools provided by MCP servers (#36752)
Release Notes: - N/A
Antonio Scandurra created
3b7c174
thread view: Add more UI improvements (#36750)
Release Notes: - N/A
Danilo Leal created
27a26d5
thread view: Inform when editing previous messages is unavailable (#36727)
Release Notes: - N/A
Danilo Leal created
d88fd00
acp: Fix panic with edit file tool (#36732)
We had a frequent panic when the agent was using our edit file tool. The root cause was that we were constructing a `BufferDiff` with `BufferDiff::new`, then calling `set_base_text`, but not waiting for that asynchronous operation to finish. This means there was a window of time where the diff's base text was set to the initial value of `""`--that's not a problem in itself, but it was possible for us to call `PendingDiff::update` during that window, which calls `BufferDiff::update_diff`, which calls `BufferDiffSnapshot::new_with_base_buffer`, which takes two arguments `base_text` and `base_text_snapshot` that are supposed to represent the same text. We were getting the first of those arguments from the `base_text` field of `PendingDiff`, which is set immediately to the target base text without waiting for `BufferDiff::set_base_text` to run to completion; and the second from the `BufferDiff` itself, which still has the empty base text during that window. As a result of that mismatch, we could end up adding `DeletedHunk` diff transforms to the multibuffer for the diff card even though the multibuffer's base text was empty, ultimately leading to a panic very far away in rendering code. I've fixed this by adding a new `BufferDiff` constructor for the case where the buffer contents and the base text are (initially) the same, like for the diff cards, and so we don't need an async diff calculation. I also added a debug assertion to catch the basic issue here earlier, when `BufferDiffSnapshot::new_with_base_buffer` is called with two base texts that don't match. Release Notes: - N/A --------- Co-authored-by: Conrad <conrad@zed.dev>
Cole Miller and Conrad created
f4ba799
acp: Fix history search (#36734)
Release Notes: - N/A
Conrad Irwin created
e360691
telemetry: Add panel button clicked event (#36735)
The event has two fields 1. name: The name of the panel being clicked 2. toggle_state: true if clicking to open, otherwise false cc @katie-z-geer Release Notes: - N/A
Anthony Eid created
b349a8f
ai: Auto select user model when there's no default (#36722)
This PR identifies automatic configuration options that users can select from the agent panel. If no default provider is set in their settings, the PR defaults to the first recommended option. Additionally, it updates the selected provider for a thread when a user changes the default provider through the settings file, if the thread hasn't had any queries yet. Release Notes: - agent: automatically select a language model provider if there's no user set provider. --------- Co-authored-by: Michael Sloan <michael@zed.dev>
Anthony Eid and Michael Sloan created
e15856a
Move APCA contrast from terminal_view to ui utils (#36731)
In prep for using this in the editor search/select highlighting. Release Notes: - N/A
Smit Barmase created
8524394
vim: Fix cursor jumping past empty lines with inlay hints in visual mode (#35757)
**Summary** Fixes #29134 - Visual mode cursor incorrectly jumps past empty lines that contain inlay hints (type hints). **Problem** When in VIM visual mode, pressing j to move down from a longer line to an empty line that contains an inlay hint would cause the cursor to skip the empty line entirely and jump to the next line. This only occurred when moving down (not up) and only in visual mode. **Root Cause** The issue was introduced by commit f9ee28db5e which added bias-based navigation for handling multi-line inlay hints. When using Bias::Right while moving down, the clipping logic would place the cursor past the inlay hint, causing it to jump to the next line. **Solution** Added logic in up_down_buffer_rows to detect when clipping would place the cursor within an inlay hint position. When detected, it uses the buffer column position instead of the display column to avoid jumping past the hint. **Testing** - Added comprehensive test case test_visual_mode_with_inlay_hints_on_empty_line that reproduces the exact scenario - Manually verified the fix with the reproduction case from the issue - All 356 tests pass with `cargo test -p vim` **Release Notes:** - Fixed VIM visual mode cursor jumping past empty lines with type hints when navigating down
Adam Mulvany created
f5fd4ac
vim: Implement partial increment/decrement for visual selection (#36553)
This change adds the ability to increment / decrement numbers that are part of a visual selection. Previously Zed would resolve to the entire number under visual selection for increment as oppposed to only incrementing the part of the number that is selected Release Notes: - vim: Fixed increment/decrement in visual mode
Kaem created
e1a96b6
acp: Tool name prep (#36726)
Prep work for deduping tool names Release Notes: - N/A
Ben Brandt created
ca139b7
keymap_ui: Improve conflict resolution for semantically equal contexts (#36204)
Closes #ISSUE Creates a function named `normalized_ctx_eq` that compares `gpui::KeybindContextPredicate`'s while taking into account the associativity of the binary operators. This function is now used to compare context predicates in the keymap editor, greatly improving the number of cases caught by our overloading and conflict detection Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
eeaadc0
Add GPU info to Sentry crashes (#36624)
Closes #ISSUE Adds system GPU collection to crash reporting. Currently this is Linux only. The system GPUs are determined by reading the `/sys/class/drm` directory structure, rather than using the exisiting `gpui::Window::gpu_specs()` method in order to gather more information, and so that the GPU context is not dependent on Vulkan context initialization (i.e. we still get GPU info when Zed fails to start because Vulkan failed to initialize). Unfortunately, the `blade` APIs do not support querying which GPU _will_ be used, so we do not know which GPU was attempted to be used when Vulkan context initialization fails, however, when Vulkan initialization succeeds, we send a message to the crash handler containing the result of `gpui::Window::gpu_specs()` to include the "Active" gpu in any crash report that may occur Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
18fe68d
thread view: Add small refinements to tool call UI (#36723)
Release Notes: - N/A
Danilo Leal created
a977fbc
Document project_panel.sticky_scroll (#36721)
Hat tip to: @watercubz in https://github.com/zed-industries/zed/issues/22869#issuecomment-3183850576 Release Notes: - N/A
Peter Tripp created
06c0e59
Make tab switcher show preview of selected tab (#36718)
Similar to nvim's telescope this makes it easier to find the right tab in the list. The preview takes place in the pane where the tab resides. - on dismiss: We restore all panes. - on confirm: We restore all panes except the one where the selected tab resides. For this reason we collect the active item for each pane before the tabswither starts. Release Notes: - Improved tab switcher, it now shows a preview of the selected tab Co-authored-by: Julia Ryan <juliaryan3.14@gmail.com>
David Kleingeld and Julia Ryan created
0beb919
acp: Fix `MessageEditor::set_message` for sent messages (#36715)
The `PromptCapabilities` introduced in previous PRs were only getting set on the main message editor and not for the editors in user messages. This caused a bug where mentions would disappear after resending the message, and for the completion provider to be limited to files. Release Notes: - N/A
Agus Zubiaga created
20a0c3e
Disable minidump generation on dev builds (again) (#36716)
We accidentally deleted this in #36267 Release Notes: - N/A
Julia Ryan created
731b5d0
acp: Allow editing of thread titles in agent2 (#36706)
Release Notes: - N/A --------- Co-authored-by: Richard Feldman <oss@rtfeldman.com>
Antonio Scandurra and Richard Feldman created
555692f
thread view: Add improvements to the UI (#36680)
Release Notes: - N/A
Danilo Leal created
2234f91
acp: Remove invalid creases on edit (#36708)
Release Notes: - N/A Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Agus Zubiaga and Bennet Bo Fenner created
725ed5d
acp: Hide loading diff animation for external agents and update in place (#36699)
The loading diff animation can be jarring for external agents because they stream the diff at the same time the tool call is pushed, so it's only displayed while we're asynchronously calculating the diff. We'll now only show it for the native agent. Also, we'll now only update the diff when it changes, which avoids unnecessarily hiding it for a few frames. Release Notes: - N/A Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Agus Zubiaga and Bennet Bo Fenner created
d0583ed
acp: Move ignored integration tests behind e2e flag (#36711)
Release Notes: - N/A
Ben Brandt created
33e05f1
collab_ui: Fix channel text bleeding through buttons on hover (#36710)
Release Notes: - N/A
Lukas Wirth created
c1e7499
Add terminal view path like target tests (#35422)
Part of - #28238 This PR refactors `Event::NewNavigationTarget` and `Event::Open` handling of `PathLikeTarget` and associated code in `terminal_view.rs` into its own file, `terminal_path_like_target.rs` for improved testability, and adds tests which cover cases from: - #28339 - #28407 - #33498 - #34027 - #34078 Release Notes: - N/A
Dave Waggoner created
81cb248
ruby: Improve Ruby test and debug task configurations (#36691)
Hi! This pull request adds missing `cwd` field to all Ruby test tasks otherwise `rdbg` will be broken when the user tries to debug a test. Thanks! Release Notes: - N/A
Vitaly Slobodin created