e8b6787
workspace: Remove excess clone (#30226)
Click to expand commit body
Remove excess clone when invoking callback in workspace Release Notes: - N/A
tidely created
e8b6787
workspace: Remove excess clone (#30226)
Remove excess clone when invoking callback in workspace Release Notes: - N/A
tidely created
fcf066a
fs: Fall back from atomic write to regular fs write when file handle is in use on Windows (#30222)
Closes #30054 For reference, another way to work around this is to drop the file handle which we can't do in this case, as it would require reopening the settings.json worktree, which is a rather unpleasant fix. Another approach might be to open the file handle with some special flags, but I couldn't get that to work at the time of writing. Release Notes: - Fixed "Backup and Update" in settings migration not working on Windows.
Smit Barmase created
b4109a2
Prevent keybindings from triggering requests that should be disabled (#30221)
Extracts authorization logic to a single method and add early returns in message handlers to prevent sending requests when the model configuration is invalid or terms haven't been accepted. This was allowing for the TOS popup to show up even for logged out users because they could bypass the disabled button with the keybinding. Now the behavior should be the same either way, that the request isn't made unless they can send it. The text thread already has a banner to tell the user to configure a model provider, so I don't think we need to pop up a separate modal, since the button is disabled anyway. Release Notes: - N/A
Ben Brandt created
6565c09
agent: Improve Gemini tool schema compatibility (#30216)
Closes #30056 Apparently the API supports the "default" field now, so we can remove that transformation. However, optional is not supported See https://ai.google.dev/api/caching#Schema Release Notes: - agent: Improve tool schema compatibility for Gemini models
Bennet Bo Fenner created
d39c220
Add rdbg for Ruby (#30126)
Release Notes: - N/A
Conrad Irwin created
1ec466b
editor: Ensure scrollbar thumb is not layouted when content size is smaller than viewport (#30189)
As discussed and explained in https://github.com/zed-industries/zed/pull/26893#discussion_r2074102719 This PR fixes an issue where we would have zero-divisions during scrollbar layouting for small files. This happened due to the fact that for small files, https://github.com/zed-industries/zed/blob/9c1b2afa492755a1e8cb0a77f929845941c97cdc/crates/editor/src/element.rs#L8562-L8563 would be `NaN`, since `(total_text_units - text_units_per_page).max(0.)` would return `0.`, which we would divide by. However, this was neccessary to be in place, as this prevented the scroll thumb from being rendered for small files: Due to this being `NaN`, the thumb origin would be `Pixels(NaN)`, which prevented the rendering of the scrollbar thumb. This PR fixes this behavior by accounting for this scenario and changing the thumb bounds to be an `Option<Bounds<Pixels>>` instead. This furthermore has the advantage that we have to compute the thumb only once and storing it in the layout, which was previously not possible. Most notably, this enables scrollbar markers to show for smaller files: https://github.com/user-attachments/assets/9fa5d240-8795-4fae-9933-aed144df4f5e Currently, no markers are shown due to the fact that `Pixels(NaN)` is set as the origin point. Also, I changed that the cursor style will only be changed on the scrollbar hitbox when we will actually show a thumb. This way, for small files (where viewport > content size) the cursor will not change when a user hovers with their mouse over the scrollbars hitbox. Theoretically, I could also include the change mentioned in https://github.com/zed-industries/zed/pull/26893#discussion_r2076316956 here. Given the introduction of the minimap as well as #29316 and the cursor style taken care of here, removing the guard would not change anything and creates the possibility to soon introduce scrollbars for auto height editors. Please let me know whether we want to have this in this PR or whether I shall create a seperate one. Release Notes: - Enabled scrollbar marker rendering for small files.
Finn Evers created
a127ff4
search: Do not consider filters if they are toggled off (#30162)
Closes #30134 This PR ensures that path filters are only applied to searches when the filters are actually enabled (and visible). Release Notes: - Fixed the project search considering included and excluded filters after toggling them off.
Finn Evers created
f16f430
debugger: Fix `spawn straight away` behavior when there's a single non-debug task on the line (#30154)
Closes #ISSUE Release Notes: - N/A Co-authored-by: Conrad Irwin <conrad@zed.dev>
Piotr Osiewicz and Conrad Irwin created
3615d6d
Load Profile state from Thread and tie visibility to the thread's model (#30090)
When deciding if a model supports tools or not, we weren't reading from the configured model in a given thread. This also stores the profile on the thread, which matches the behavior of the Model and Max Mode, which we also already store per thread. Hopefully this helps alleviate some confusion. Release Notes: - agent: Save profile selection per-Agent thread
Ben Brandt created
02ed4ae
mistral: Add new Mistral medium model (#30171)
Release Notes: - Added `mistral-medium` to the Mistral provider.
versecafe created
6cc6e4d
agent: Rename a number of constructs from Assistant to Agent (#30196)
This PR renames a number of constructs in the `agent` crate from the "Assistant" terminology to "Agent". Not comprehensive, but it's a start. Release Notes: - N/A
Marshall Bowers created
d6c7cdd
Add :h[elp] vim command (#30179)
@jyn514 mentioned that this would be nice to have while trying out zed, and it seemed simple enough so I added it. Release Notes: - Added `OpenDocs` action to open Zed's docs in a browser, aliased to `:h[elp]` in vim.
Julia Ryan created
37010aa
Allow opening the FS root dir as a remote project (#30190)
### Todo * [x] Allow opening `ssh://username@host:/` from the CLI * [x] Allow selecting `/` in the `open path` picker * [x] Allow selecting the home directory in the `open path` picker Release Notes: - Changed the initial state of the SSH project picker to show the full path to your home directory on the remote machine, instead of `~`. - Added the ability to open `/` as a project folder over SSH --------- Co-authored-by: Agus Zubiaga <hi@aguz.me>
Max Brunsfeld and Agus Zubiaga created
6ac2f4e
Remove `assistant` crate (#30168)
This PR removes the `assistant` crate, as it is no longer used. Release Notes: - N/A
Marshall Bowers created
011aa71
Fix workspace update notifications not being suppressed (#30180)
Follow-up of https://github.com/zed-industries/zed/pull/30015 Release Notes: - N/A
Kirill Bulatov created
3339c84
ruby: Update documentation about new LS activation sequence (#30160)
Hi, this pull request updates the Ruby extension documentation to reflect new language server activation sequence and autoinstallation shipped in [v0.7.0](https://github.com/zed-extensions/ruby/releases/tag/v0.7.0). Release Notes: - N/A
Vitaly Slobodin created
9c1b2af
theme: Add `scrollbar_thumb_active_background` color (#30177)
Follow-up to #28064 This PR adds the `scrollbar_thumb_active_background` to themes and uses it for the editor scrollbars to color these whilst they are being dragged. This way, we provide the best customizabiliy for the scrollbars and enable theme authors to add good contrasts between all the three states `ScrollbarThumbState::Idle`, `ScrollbarThumbState::Hovered` and ScrollbarThumbState::Dragging`. It also adds this to the VsCode theme importer so any future imported themes will have this set as well. Whenever the property is not set, I decided it is best to fall back to the normal `thumb_background` for the time being, as this way the distinction and contrast between hovered and active state is better than having the same color for hovering and dragging the scrollbar. Example with active color set via `experimental.theme_overrides` in the settings: https://github.com/user-attachments/assets/9934e75b-6e0a-4a41-90ba-bfffb89865e7 Release Notes: - Added the `scrollbar.thumb.active_background` color to themes. Theme authors can use this property in combination with `scrollbar.thumb.hover_background` to customize the color of the editor scrollbar thumbs while these are hovered or being dragged.
Finn Evers created
607a944
editor: Add minimap (#26893)
## Overview This PR adds the minimap feature to the Zed editor, closely following the [design from Visual Studio Code](https://code.visualstudio.com/docs/getstarted/userinterface#_minimap). When configured, a second instance of the editor will appear to the left of the scrollbar. This instance is not interactive and it has a slimmed down set of annotations, but it is otherwise just a zoomed-out version of the main editor instance. A thumb shows the line boundaries of the main viewport, as well as the progress through the document. Clicking on a section of code in the minimap will jump the editor to that code. Dragging the thumb will act like the scrollbar, moving sequentially through the document.  ## New settings This adds a `minimap` section to the editor settings with the following keys: ### `show` When to show the minimap in the editor. This setting can take three values: 1. Show the minimap if the editor's scrollbar is visible: `"auto"` 2. Always show the minimap: `"always"` 3. Never show the minimap: `"never"` (default) ### `thumb` When to show the minimap thumb. This setting can take two values: 1. Show the minimap thumb if the mouse is over the minimap: `"hover"` 2. Always show the minimap thumb: `"always"` (default) ### `width` The width of the minimap in pixels. Default: `100` ### `font_size` The font size of the minimap in pixels. Default: `2` ## Providing feedback In order to keep the PR focused on development updates, please use the discussion thread for feature suggestions and usability feedback: #26894 ## Features left to add - [x] fix scrolling performance - [x] user settings for enable/disable, width, text size, etc. - [x] show overview of visible lines in minimap - [x] clicking on minimap should navigate to the corresponding section of code - ~[ ] more prominent highlighting in the minimap editor~ - ~[ ] override scrollbar auto setting to always when minimap is set to always show~ Release Notes: - Added minimap for high-level overview and quick navigation of editor contents. --------- Co-authored-by: MrSubidubi <dev@bahn.sh> Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Evan Simkowitz , MrSubidubi , and Kirill Bulatov created
902931f
git_ui: Only register conflict addon for full mode editors (#30049)
Noticed this whilst working on #26893 This PR prevents that single line and auto height editors have a conflict addon attached (and are observed for any excerpt changes). From how I understand it, it does not really make sense to register the conflict addon for single line or auto height editors. These editors will never show a conflict nor will they be used to resolve one. Furthermore, neither of these ever have a project attached upon creation: https://github.com/zed-industries/zed/blob/00c5f57575b5de69a5007ba724b4a8fb10db91ac/crates/editor/src/editor.rs#L1385 https://github.com/zed-industries/zed/blob/00c5f57575b5de69a5007ba724b4a8fb10db91ac/crates/editor/src/editor.rs#L1403 https://github.com/zed-industries/zed/blob/00c5f57575b5de69a5007ba724b4a8fb10db91ac/crates/editor/src/editor.rs#L1415 so their buffers will never be added here: https://github.com/zed-industries/zed/blob/00c5f57575b5de69a5007ba724b4a8fb10db91ac/crates/git_ui/src/conflict_view.rs#L116-L120 Thus, we could potentially even extend the check with an additional `|| editor.project.is_none()`. Yet, as I am not entirely sure how all of this exactly works, I left this out for now, but I can definitely add this if wanted. Release Notes: - N/A
Finn Evers created
3c128ef
Avoid empty schema in copilot dummy tool (#30178)
Copilot chat still returns a 400 if the dummy tool uses the `{}` schema.
This is a follow-up to https://github.com/zed-industries/zed/pull/30007.
Release Notes:
- Fixed a bug where agent edits would fail when using GitHub Copilot
Chat.
Co-authored-by: Agus Zubiaga <hi@aguz.me>
Max Brunsfeld and Agus Zubiaga created
0d72660
editor: Fix punctuation in JSX tags breaks the linked edit to the closing tag (#30167)
Closes #29983 While we only care about `.`, just enabling punctuation in case of linked edits shouldn't hurt. Release Notes: - Fixed JSX component names with periods (e.g., <Animated.View>) now maintain linked edits between opening and closing tags.
Smit Barmase created
466a53b
title_bar: Add link indicator to current plan entry in user menu (#30153)
This PR adds a link indicator to the `Current Plan: ...` entry in the user menu <img width="232" alt="link_indicator" src="https://github.com/user-attachments/assets/89c6247c-08cb-4cac-b136-5c5b71f1a975" /> to indicate this opens an external link and not something within Zed. Release Notes: - N/A
Finn Evers created
358c324
editor: Use default gutter margin instead of `horizontal_padding` for horizontal content padding (#30138)
This PR changes the way a horizontal margin is added in editors. It removes the possibility to set a custom `horizontal_padding` for an editor and utilizes the default `gutter_dimension` instead. This change is made to ensure that no issues with soft-wrapping occurs for any editor that has a `horizontal_margin` set (see #26893 for more context on the implications here`. Furthermore, it ensures that the text actually renders properly when scrolling horizontally and is not cut-off. ### Horizontal padding: | `main` | This PR | | --- | --- | |  |  | ### Editor horizontally scrolled: | `main` | This PR | | --- | --- | |  |  | Notice the difference at the horizontal borders. The margin added for the `edit_file_tool` was 4 pixels. The `descent`, whilst not exactly, is roughly the same here and also scales with the font size nicely. Furthermore, it seems that the `gutter_dimensions.margin` should be present anyway, given the following comment https://github.com/zed-industries/zed/blob/0b00256f5884fd17b4f834730b31f365613f3683/crates/editor/src/element.rs#L6887-L6889 so ensuring this property is actually set and not 0 seems to be reasonable given the circumstances. Please note though that this will apply to all editors in the app. Again, this seems like it should be the case anyway, just wanted to mention this again. Should the fix like this not be wanted, I can change this here so that the `horizontal_margin` is better accounted for when soft-wrapping in an editor. Feel free to let me know in this case. Release Notes: - N/A
Finn Evers created
6e19c9b
Add a way to clear activity indicator (#30156)
Follow-up of https://github.com/zed-industries/zed/pull/30015 * Restyles the dismiss and close buttons a bit: change the dismiss icon and add tooltips with the bindings to both * Allows ESC to clear any status that's in the activity indicator now, if all notifications are cleared: this won't suppress any further status additions though, so statuses may resurface later Release Notes: - Added a way to clear activity indicator
Kirill Bulatov created
77ac825
agent: Improve consecutive tool use callout spacing (#30145)
Release Notes: - agent: Fix "consecutive tool use limit" callout spacing
Agus Zubiaga created
7c76cee
language: Fix indent suggestions for significant indented languages like Python (#29625)
Closes #26157 This fixes multiple cases where Python indentation breaks: - [x] Adding a new line after `if`, `try`, etc. correctly indents in that scope - [x] Multi-cursor tabs correctly preserve relative indents - [x] Adding a new line after `else`, `finally`, etc. correctly outdents them - [x] Existing Tests Future Todo: I need to add new tests for all the above cases. Before/After: 1. Multi-cursor tabs correctly preserve relative indents https://github.com/user-attachments/assets/08a46ddf-5371-4e26-ae7d-f8aa0b31c4a2 2. Adding a new line after `if`, `try`, etc. correctly indents in that scope https://github.com/user-attachments/assets/9affae97-1a50-43c9-9e9f-c1ea3a747813 Release Notes: - Fixes indentation-related issues involving tab, newline, etc for Python.
Smit Barmase created
22ad207
agent: Fix profile menu hover flicker after settings update (#30109)
Closes #30091 Follow-up to #29958 This PR fixes the profile menu flickering due to the documentation aside after updating the agent dock position over the settings file. The problem arose because the `documentation_side` could get out of sync with the actual agent panel dock position. The `documentation_side` was only updated whenever the user changed the agent panel position using the UI, but not when updating the position in the settings file. You can reproduce this easily by changing the `agent.dock` position to the opposite site in your settings, which will make the profile menu flicker again in some scenarios due to the de-sync. This PR fixes this behavior by computing the position during render, thus the actual set panel position and the documentation position can never get out of sync Release Notes: - Fixed the agent profile menu flickering after updating the assistant panel dock position in the settings.
Finn Evers created
4469b73
language_models: Update copy for Zed Pro subscription (#30152)
This PR updates the copy around the Zed Pro description to be more accurate. Release Notes: - agent: Updated some copy about Zed Pro in the configuration view.
Marshall Bowers created
ea76945
Legal Terms: May 6th 2025 update (#30151)
Updated terms for Agent panel launch. Release Notes: - N/A
Peter Tripp created
89430a0
Fix agent reading and editing files over SSH (#30144)
Release Notes: - Fixed a bug that would prevent the agent from working over SSH. --------- Co-authored-by: Nathan Sobo <nathan@zed.dev> Co-authored-by: Richard Feldman <oss@rtfeldman.com> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com> Co-authored-by: Cole Miller <m@cole-miller.net>
Antonio Scandurra , Nathan Sobo , Richard Feldman , Max Brunsfeld , and Cole Miller created
582ad84
collab: Return `trial_started_at` alongside billing preferences (#30143)
This PR updates the `GET /billing/preferences` endpoint to return the user's `trial_started_at` timestamp alongside the billing preferences. Release Notes: - N/A
Marshall Bowers created
1b3140d
Delete code actions indicator (#30140)
This conflicts for space with breakpoints, and seems borderline in terms of utility. We could consider bringing it back in a way that is closer to the cursor, or be content with our right-click menu discovery. Release Notes: - Remove the code actions indicator from the gutter. It is still available from the right click menu, or with the keyboard shortcut.
Conrad Irwin created
625e45b
agent: Improve onboarding modal background illustration (#30137)
Tone down the grid background a bit more so text is more legible. Release Notes: - N/A
Danilo Leal created
d50562e
collab: Remove code for syncing token-based billing events (#30130)
This PR removes the code related to syncing token-based billing events to Stripe. We don't need this anymore with the new billing. Release Notes: - N/A
Marshall Bowers created
a34fb6f
Send up Zed version with edit prediction and completion requests (#30136)
This PR makes it so we send up an `x-zed-version` header with the client's version when making a request to llm.zed.dev for edit predictions and completions. Release Notes: - N/A
Marshall Bowers created
5ca114b
agent: Make feedback buttons more minimal (#30133)
Also swapped out the svgs for `ThumbsDown` and `ThumbsUp`, and added `DocumentText`. Release Notes: - N/A
Danilo Leal created
fcb9706
Improve Ollama tool use (#30120)
<img width="458" alt="Screenshot 2025-05-07 at 9 37 39 AM" src="https://github.com/user-attachments/assets/80f8a9b8-6a13-4e84-b91d-140e11475638" /> <img width="603" alt="Screenshot 2025-05-07 at 9 37 33 AM" src="https://github.com/user-attachments/assets/7fe67a68-3885-4a0e-a282-aad37e92068b" /> Release Notes: - Ollama models no longer require the supports_tools field in settings (defaults to false) --------- Co-authored-by: Antonio Scandurra <me@as-cii.com>
Richard Feldman and Antonio Scandurra created
0a44048
Lowercase settings.json for vscode settings importer (#30131)
Closes: https://github.com/zed-industries/zed/issues/30117 Release Notes: - N/A
Peter Tripp created
a4aa446
Better match path-like strings in terminal (#30087)
Start to capture `foo/bar:20:in`-like strings as valid pointers to line 20 in a file Closes https://github.com/zed-industries/zed/issues/28194 Release Notes: - Fixed terminal cmd-click not registering `foo/bar:20:in`-like paths
Kirill Bulatov created
a4e26e0
debugger: Reduce indent level and step size in variable list (#30122)
This improves the look of the variable list when it's the debug panel is docked on a side ### Before  ### After  Release Notes: - N/A
Anthony Eid created
542c4a3
docs: Add section about agent notification (#30121)
Release Notes: - N/A
Danilo Leal created
e44d167
docs: Add section about following the agent (#30119)
Release Notes: - N/A
Danilo Leal created
c1d4f08
docs: Fix links in ai section (#30116)
There were a number of broken links in the new agent panel docs. This fixes them by replacing `(/ai/` with `(./` Release Notes: - N/A
James Roberts created
48dfdc4
docs: Fix links in ai section (#30116)
There were a number of broken links in the new agent panel docs. This fixes them by replacing `(/ai/` with `(./` Release Notes: - N/A
James Roberts created
2618191
Add TypeScript support to ESLint flat config (#30044)
Sync ESLint flat config names with [the latest docs](https://eslint.org/docs/latest/use/configure/configuration-files#configuration-file). New ESLint has native support for `eslint.config.ts` Release Notes: - N/A --------- Co-authored-by: Peter Tripp <peter@zed.dev>
Andrey Sitnik and Peter Tripp created
1a52099
debugger: Add inline value tests (#29815)
## Context This PR improves the accuracy of our inline values for Rust/Python. It does this by only adding inline value hints to the last valid use of a variable and checking whether variables are valid within a given scope or not. We also added tests for Rust/Python inline values and inline values refreshing when stepping in a debug session. ### Future tasks 1. Handle functions that have inner functions defined within them. 2. Add inline values to variables that were used in inner scopes but not defined in them. 3. Move the inline value provider trait and impls to the language trait (or somewhere else). 4. Use Semantic tokens as the first inline value provider and fall back to tree sitter 5. add let some variable statement, for loops, and function inline value hints to Rust. 6. Make writing tests more streamlined. 6.1 We should be able to write a test by only passing in variables, language, source file, expected result, and stop position to a function. 7. Write a test that has coverage for selecting different stack frames. co-authored-by: Remco Smits \<djsmits12@gmail.com\> Release Notes: - N/A --------- Co-authored-by: Remco Smits <djsmits12@gmail.com>
Anthony Eid and Remco Smits created
7bc3f74
Fix panel button context menu overlap with tooltip hint (#30108)
This fix works by disabling the tooltip whenever the menu is being rendered. ### Before  ### After  Release Notes: - Fix panel button tooltip overlapping with the panel button's right click menu
Anthony Eid created
0276594
Use the console for errors too (#29992)
Release Notes: - N/A
Conrad Irwin created
f7e7712
Do not flicker when switching cmd-hovered words in terminal (#30098)
Closes https://github.com/zed-industries/zed/issues/25110 https://github.com/user-attachments/assets/4624c256-8dfb-48eb-a726-6cf130d946da Terminal may update its hovered word way before reporting it to the terminal view, and that processing the file check later. Hence, store the terminal hover data in the terminal view and avoid highlights when it's different from what the terminal has (as the source of truth here). In addition, now only does hover refreshes when the terminal hover actually changes, not on every event report. Release Notes: - Fixed underline flicker when switching cmd-hovered words in terminal
Kirill Bulatov created
c19a5c2
Revert "Stop generating in the Agent panel when the user edits a previous message (#29915)" (#30092)
This reverts commit ce053c9bff0699c922e62c0b3618249e0b9801b9. Closes #ISSUE Release Notes: - N/A
Ben Brandt created