5ae8c4c
Fix word completions clobbering the text after the cursor (#32010)
Click to expand commit body
Release Notes: - N/A
Michael Sloan created
5ae8c4c
Fix word completions clobbering the text after the cursor (#32010)
Release Notes: - N/A
Michael Sloan created
d8195a8
project_panel: Highlight containing folder which would be the target of the drop operation (#31976)
Part of https://github.com/zed-industries/zed/issues/14496 This PR adds highlighting on the containing folder which would be the target of the drop operation. It only highlights those directories where actual drop is possible, i.e. same directory where drag started is not highlighted. - [x] Tests https://github.com/user-attachments/assets/46528467-e07a-4574-a8d5-beab25e70162 Release Notes: - Improved project panel to show a highlight on the containing folder which would be the target of the drop operation.
Smit Barmase created
2645591
agent: Allow to accept and reject all via the panel (#31971)
This PR introduces the "Reject All" and "Accept All" buttons in the panel's edit bar, which appears as soon as the agent starts editing a file. I'm also adding here a new method to the thread called `has_pending_edit_tool_uses`, which is a more specific way of knowing, in comparison to the `is_generating` method, whether or not the reject/accept all actions can be triggered. Previously, without this new method, you'd be waiting for the whole generation to end (e.g., the agent would be generating markdown with things like change summary) to be able to click those buttons, when the edit was already there, ready for you. It always felt like waiting for the whole thing was unnecessary when you really wanted to just wait for the _edits_ to be done, as so to avoid any potential conflicting state. <img src="https://github.com/user-attachments/assets/0927f3a6-c9ee-46ae-8f7b-97157d39a7b5" width="500"/> --- Release Notes: - agent: Added ability to reject and accept all changes from the agent panel. --------- Co-authored-by: Agus Zubiaga <hi@aguz.me>
Danilo Leal and Agus Zubiaga created
526a7c0
agent: Support `AGENT.md` and `AGENTS.md` as rules file names (#31998)
These started to be used more recently, so we should also support them. Release Notes: - agent: Added support for `AGENT.md` and `AGENTS.md` as rules file names.
Danilo Leal created
e793740
agent: Refine rules library window design (#31994)
Just polishing up a bit the Rules Library design. I think the most confusing part here was the icon that was being used to tag a rule as default; I've heard feedback more than once saying that was confusing, so I'm now switching to a rather standard star icon, which I'd assume is well-understood as a "favoriting" affordance. Release Notes: - N/A
Danilo Leal created
dea0a58
docs: Update mentions to GitHub to use correct capitalization (#31996)
That type of thing... 😅 "Github" is the incorrect formatting; "GitHub" is the correct. Release Notes: - N/A
Danilo Leal created
b7abc9d
agent: Display full terminal output without scrolling (#31922)
The terminal tool card used a fixed height and scrolling, but this meant that it was too tall for commands that only outputted a few lines, and the nested scrolling was undesirable. This PR makes the card be as too as needed to fit the entire output (no scrolling), and allows the user to collapse it to fewer lines when applicable. Making it work the same way as the edit tool card. In fact, both tools now use a shared UI component. https://github.com/user-attachments/assets/1127e21d-1d41-4a4b-a99f-7cd70fccbb56 Release Notes: - Agent: Display full terminal output - Agent: Allow collapsing terminal output
Agus Zubiaga created
01a77bb
Add sql language docs (#32003)
Closes: https://github.com/zed-industries/zed/issues/9537 Pairs with removing `prettier-plugin-sql` from the sql extension: - https://github.com/zed-extensions/sql/pull/19 Release Notes: - N/A
Peter Tripp created
de225fd
file_finder: Add option to create new file (#31567)
https://github.com/user-attachments/assets/7c8a05a1-8d59-4371-a1d6-a8cb82aa13b9 While implementing this, I noticed that currently when the search panel displays only one result, the box oscillates a bit up and down like so: https://github.com/user-attachments/assets/dd1520e2-fa0b-4307-b27a-984e69b0a644 Not sure how to fix this at the moment, maybe that could be another PR? Release Notes: - Add option to create new file in project search panel.
Daniel Zhu created
1bc052d
docs: Gemini thinking budget configuration (#32002)
Release Notes: - N/A
Oleksiy Syvokon created
29cb95a
Remove support for changing magnification of active pane (#31981)
Closes #4265 Closes #24600 This setting causes many visual defects, and introduces unnecessary (maintenance) complexity. as seen by #4265 and #24600 CC: @iamnbutler - How do you feel about this? I recommend looking at https://github.com/zed-industries/zed/pull/24150#issuecomment-2866706506 for more context Release Notes: - Removed support --------- Co-authored-by: Peter <peter@zed.dev>
Ben Kunkle and Peter created
1307b81
Allow configuring custom git hosting providers in project settings (#31929)
Closes #29229 Release Notes: - Extended the support for configuring custom git hosting providers to cover project settings in addition to global settings. --------- Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Cole Miller and Anthony Eid created
203754d
docs: Demote rdbg support in docs (#31993)
Closes #ISSUE Release Notes: - N/A
Piotr Osiewicz created
c9c603b
Add support for OpenRouter as a language model provider (#29496)
This pull request adds full integration with OpenRouter, allowing users
to access a wide variety of language models through a single API key.
**Implementation Details:**
* **Provider Registration:** Registers OpenRouter as a new language
model provider within the application's model registry. This includes UI
for API key authentication, token counting, streaming completions, and
tool-call handling.
* **Dedicated Crate:** Adds a new `open_router` crate to manage
interactions with the OpenRouter HTTP API, including model discovery and
streaming helpers.
* **UI & Configuration:** Extends workspace manifests, the settings
schema, icons, and default configurations to surface the OpenRouter
provider and its settings within the UI.
* **Readability:** Reformats JSON arrays within the settings files for
improved readability.
**Design Decisions & Discussion Points:**
* **Code Reuse:** I leveraged much of the existing logic from the
`openai` provider integration due to the significant similarities
between the OpenAI and OpenRouter API specifications.
* **Default Model:** I set the default model to `openrouter/auto`. This
model automatically routes user prompts to the most suitable underlying
model on OpenRouter, providing a convenient starting point.
* **Model Population Strategy:**
* <strike>I've implemented dynamic population of available models by
querying the OpenRouter API upon initialization.
* Currently, this involves three separate API calls: one for all models,
one for tool-use models, and one for models good at programming.
* The data from the tool-use API call sets a `tool_use` flag for
relevant models.
* The data from the programming models API call is used to sort the
list, prioritizing coding-focused models in the dropdown.</strike>
* <strike>**Feedback Welcome:** I acknowledge this multi-call approach
is API-intensive. I am open to feedback and alternative implementation
suggestions if the team believes this can be optimized.</strike>
* **Update: Now this has been simplified to one api call.**
* **UI/UX Considerations:**
* <strike>Authentication Method: Currently, I've implemented the
standard API key input in settings, similar to other providers like
OpenAI/Anthropic. However, OpenRouter also supports OAuth 2.0 with PKCE.
This could offer a potentially smoother, more integrated setup
experience for users (e.g., clicking a button to authorize instead of
copy-pasting a key). Should we prioritize implementing OAuth PKCE now,
or perhaps add it as an alternative option later?</strike>(PKCE is not
straight forward and complicated so skipping this for now. So that we
can add the support and work on this later.)
* <strike>To visually distinguish models better suited for programming,
I've considered adding a marker (e.g., `</>` or `🧠`) next to their
names. Thoughts on this proposal?</strike>. (This will require a changes
and discussion across model provider. This doesn't fall under the scope
of current PR).
* OpenRouter offers 300+ models. The current implementation loads all of
them. **Feedback Needed:** Should we refine this list or implement more
sophisticated filtering/categorization for better usability?
**Motivation:**
This integration directly addresses one of the most highly upvoted
feature requests/discussions within the Zed community. Adding OpenRouter
support significantly expands the range of AI models accessible to
users.
I welcome feedback from the Zed team on this implementation and the
design choices made. I am eager to refine this feature and make it
available to users.
ISSUES: https://github.com/zed-industries/zed/discussions/16576
Release Notes:
- Added support for OpenRouter as a language model provider.
---------
Signed-off-by: Umesh Yadav <umesh4257@gmail.com>
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Umesh Yadav and Marshall Bowers created
e13b494
bedrock: Fix cross-region inference (#30659)
Closes #30535 Release Notes: - AWS Bedrock: Add support for Meta Llama 4 Scout and Maverick models. - AWS Bedrock: Fixed cross-region inference for all regions. - AWS Bedrock: Updated all models available through Cross Region inference. --------- Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Shardul Vaidya and Marshall Bowers created
c039772
language_models: Sort Ollama models by name (#31620)
Hello, This is my first contribution so apologies if I'm not following the proper process (I haven't seen anything special in https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md). Also, I have tested my changes manually, but I could not figure out an easy we to instantiate a `LanguageModelSelector` in the unit tests, so I didn't write a test. If you can provide some guidance I'd be happy to write a test. --- If the user configured the models with custom names via `display_name`, we want the ollama models to be sorted based on the name that is actually displayed. ~~The original issue is only about ollama but this change will also affect the other providers.~~ Closes #30854 Release Notes: - Ollama: Changed models to be sorted by name.
little-dude created
9c2b90f
collab: Return subscription period from `GET /billing/subscriptions` (#31987)
This PR updates the `GET /billing/subscriptions` endpoint to return the subscription period on them. Release Notes: - N/A
Marshall Bowers created
d108e5f
collab: Fix deserialization of create meter event response (#31982)
This PR fixes the deserialization of the create meter event response from the Stripe API. Release Notes: - N/A
Marshall Bowers created
2551bde
collab: Increase number of returned extensions to 1,000 (#31983)
This PR increases the number of returned extensions from the extension API to 1,000 (up from 500). We'll need a better solution at some point, but for now we can keep bumping this number. Closes https://github.com/zed-industries/zed/issues/31067. Release Notes: - N/A
Marshall Bowers created
e7de80c
ci: Improve Danger and ci.yml explicitness (#31979)
Allow colons after issue links and for them to in ul. Change ci references from [self-hosted, test] to more explicit [self-hosted, macOS] Release Notes: - N/A --------- Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com> Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Peter Tripp , Ben Kunkle , and Smit Barmase created
ae210ec
Fix aggressive indent in shell scripts (#31973)
Closes: https://github.com/zed-industries/zed/issues/31774 Release Notes: - N/A Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
Peter Tripp and Ben Kunkle created
a9d99d8
docs: Improve docs for debugger (around breakpoints and doc structure) (#31962)
Closes #ISSUE Release Notes: - N/A
Piotr Osiewicz created
3e6435e
Fix Python virtual environment detection (#31934)
# Fix Python Virtual Environment Detection in Zed ## Problem Zed was not properly detecting Python virtual environments when a project didn't contain a `pyrightconfig.json` file. This caused Pyright (the Python language server) to report `reportMissingImports` errors for packages installed in virtual environments, even though the virtual environment was correctly set up and worked fine in other editors. The issue was that while Zed's `PythonToolchainProvider` correctly detected virtual environments, this information wasn't being communicated to Pyright in a format it could understand. ## Root Cause The main issue was in how Zed communicated virtual environment configuration to Pyright through the Language Server Protocol (LSP). When Pyright requests workspace configuration, it expects virtual environment settings (`venvPath` and `venv`) at the root level of the configuration object - the same format used in `pyrightconfig.json` files. However, Zed was attempting to place these settings in various nested locations that Pyright wasn't checking. ## Solution The fix involves several coordinated changes to ensure Pyright receives virtual environment configuration in all the ways it might expect: ### 1. Enhanced Workspace Configuration (`workspace_configuration` method) - When a virtual environment is detected, Zed now sets `venvPath` and `venv` at the root level of the configuration object, matching the exact format of a `pyrightconfig.json` file - Uses relative path `"."` when the virtual environment is located in the workspace root - Also sets `python.pythonPath` and `python.defaultInterpreterPath` for compatibility with different Pyright versions ### 2. Environment Variables for All Language Server Binaries - Updated `check_if_user_installed`, `fetch_server_binary`, `check_if_version_installed`, and `cached_server_binary` methods to include shell environment variables - This ensures environment variables like `VIRTUAL_ENV` are available to Pyright, helping with automatic virtual environment detection ### 3. Initialization Options - Added minimal initialization options to enable Pyright's automatic path searching and import completion features - Sets `autoSearchPaths: true` and `useLibraryCodeForTypes: true` to improve Pyright's ability to find packages ## Key Changes The workspace configuration now properly formats virtual environment configuration: - Root level: `venvPath` and `venv` (matches pyrightconfig.json format) - Python section: `pythonPath` and `defaultInterpreterPath` for interpreter paths ## Impact - Users no longer need to create a `pyrightconfig.json` file for virtual environment detection - Python projects with virtual environments in standard locations (`.venv`, `venv`, etc.) will work out of the box - Import resolution for packages installed in virtual environments now works correctly - Maintains compatibility with manual `pyrightconfig.json` configuration for complex setups ## Testing The changes were tested with Python projects using virtual environments without `pyrightconfig.json` files. Pyright now correctly resolves imports from packages installed in the virtual environment, eliminating the `reportMissingImports` errors. ## Release Notes - Fixed Python virtual environment detection when no `pyrightconfig.json` is present - Pyright now correctly resolves imports from packages installed in virtual environments (`.venv`, `venv`, etc.) - Python projects with virtual environments no longer show false `reportMissingImports` errors - Improved Python development experience with automatic virtual environment configuration --------- Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Thiago Pacheco and Piotr Osiewicz created
9e75871
agent: Make the sound notification play only if Zed is in the background (#31975)
Users were giving feedback about the sound notification being annoying/unnecessary if Zed is in the foreground, which I agree! So, this PR changes it so that it only plays if that is not the case. Release Notes: - agent: Improved sound notification behavior by making it play only if Zed is in the background.
Danilo Leal created
707a4c7
Remove unused editor_model configuration option (#31492)
It seems that this configuration option is no longer used and can be removed. Release Notes: - Removed unused `agent.editor_model` setting
Ben Brandt created
854076f
agent: Lower "no thread found" logging level to debug (#31972)
This code path is not really an error, as it can happen due to normal, albeit uncommon, actions. Like, for example, this scenario: 1. Create a thread X in Zed instance A 2. Open Zed instance B 3. Delete the thread X in instance A 4. Close instance B. This will write non-existing thread id X to `agent-navigation-history.json` 5. Open Zed instance C. It won't be able to load the thread X. Another way to get into this state is by running Zed with LMDB and SQLite thread storages side-by-side. In any case, this is not severe enough for an error. Closes #ISSUE Release Notes: - N/A
Oleksiy Syvokon created
cf93124
Add thinking budget for Gemini custom models (#31251)
Closes #31243 As described in my issue, the [thinking budget](https://ai.google.dev/gemini-api/docs/thinking) gets automatically chosen by Gemini unless it is specifically set to something. In order to have fast responses (inline assistant) I prefer to set it to 0. Release Notes: - ai: Added `thinking` mode for custom Google models with configurable token budget --------- Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
90aca and Ben Brandt created
b74477d
Option to auto-close deleted files with no unsaved edits (#31920)
Closes #27982 Release Notes: - Added `close_on_file_delete` setting (off by default) to allow closing open files after they have been deleted on disk --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Ben Brandt and Bennet Bo Fenner created
3077abf
google_ai: Parse thought parts in Gemini responses (#31925)
Fixes thinking Gemini models. Closes #31902 Release Notes: - Updated Google Gemini client to match the latest API
Fernando Freire created
07dab4e
multi_buffer: Merge adjacent matches into a single excerpt when separated by only one line (#31708)
Closes #31252 Release Notes: - Improved displaying of project search matches or diagnostics when the excerpts are adjacent. --------- Co-authored-by: Antonio Scandurra <me@as-cii.com>
Kiran_Peraka and Antonio Scandurra created
59686f1
language_models: Add images support for Ollama vision models (#31883)
Ollama supports vision to process input images. This PR adds support for same. I have tested this with gemma3:4b and have attached the screenshot of it working. <img width="435" alt="image" src="https://github.com/user-attachments/assets/5f17d742-0a37-4e6c-b4d8-05b750a0a158" /> Release Notes: - Add image support for [Ollama vision models](https://ollama.com/search?c=vision)
Umesh Yadav created
a60bea8
collab: Reconnect to channel notes (#31950)
Closes #31758 Release Notes: - Fixed channel notes not getting re-connected when a connection to Zed servers is restored. --------- Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
Piotr Osiewicz and Kirill Bulatov created
b820aa1
Add tool support for DeepSeek (#30223)
[deepseek function call api](https://api-docs.deepseek.com/guides/function_calling) has been released and it is same as openai. Release Notes: - Added tool calling support for Deepseek Models --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
THELOSTSOUL and Bennet Bo Fenner created
55d91bc
debugger: Add tooltips to the new process modal (#31953)
Closes #ISSUE Release Notes: - N/A
Piotr Osiewicz created
b798392
Expand tilde paths in edit prediction settings (#31235)
Release Notes: - edit_prediction: Handle `~` in paths in `disabled_globs` setting
clauses3 created
657c8b1
project_panel: Improve behavior for cut-pasting entries (#31931)
Previously, we would move entries each time they were pasted. Thus, if you were to cut some files and pasted them in folder `a` and then `b`, they would only occur in folder `b` and not in folder `a`. This is unintuitive - e.g. the same does not apply to text and does not happen in other editors. This PR improves this behavior - after the first paste of a cut clipboard, we change the clipboard to a copy clipboard, ensuring that for all folloing pastes, the entries are not moved again. In the above example, the files would then also be found in folder `a`. This is also reflected in the added test. Release Notes: - Ensured that cut project panel entries are cut-pasted only on the first use, and copy-pasted on all subsequent pastes.
Finn Evers created
2bb8aa2
go_to_line: Show position relative to current excerpt in a multi-buffer (#31947)
Closes #31515 This PR explicitly leaves the behavior of go to line unspecified with multi-buffer. Release Notes: - Fixed wrong line number being shown in the status bar when in multi-buffer.
Piotr Osiewicz created
beeb42d
snippets: Show completions on first range in tabstop instead of last (#31939)
Release Notes: - N/A
Michael Sloan created
6d66ff1
Add Helix implementation for `Motion::FindForward` and `Motion::FindBackward` (#31547)
Closes #30462 Release Notes: - Added text selection for "vim::PushFindForward" and "vim::PushFindBackward" keybinds in helix mode
thebasilisk created
e0b818a
Fix duplicate prefixes when repeating completions in Vim mode (#31818)
When text is completed, new_text contains the entire new completion
which replaces the old_text. In Vim mode, pressing . repeats the
completion; if InputHandled records the full text and no range to
replace, the entire completion gets appended; this happens after the
completion prefix typing repeats, and we get a duplicate prefix.
Using range to replace has some downsides when the completion is
repeated as a standalone action; in a common case, it should be
sufficient to record the new suffix. This is actually what used to
happen before #28586, which removed this code in a larger attempt to fix
completions at multiple cursors:
```rust
let text = &new_text[common_prefix_len..];
let utf16_range_to_replace = ...
cx.emit(EditorEvent::InputHandled {
utf16_range_to_replace,
text: text.into(),
});
```
Fixes #30758
Fixes #31759
Fixes #31779
Release Notes:
- Vim: Fix duplicate prefixes when repeating completions via `.`
Arseny Kapoulkine created
58a400b
keymap: Fix subword navigation and selection on Sublime Text keymap (#31840)
On Linux, the correct modifier key for this action is `alt`, not `ctrl`.
I mistakenly set it to `ctrl` on #30268.
From Sublime's keymap:
```json
{ "keys": ["ctrl+left"], "command": "move", "args": {"by": "words", "forward": false} },
{ "keys": ["ctrl+right"], "command": "move", "args": {"by": "word_ends", "forward": true} },
{ "keys": ["ctrl+shift+left"], "command": "move", "args": {"by": "words", "forward": false, "extend": true} },
{ "keys": ["ctrl+shift+right"], "command": "move", "args": {"by": "word_ends", "forward": true, "extend": true} },
{ "keys": ["alt+left"], "command": "move", "args": {"by": "subwords", "forward": false} },
{ "keys": ["alt+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} },
{ "keys": ["alt+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} },
{ "keys": ["alt+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} },
```
Release Notes:
- N/A
Fernando Carletti created
8ab7d44
terminal: Match trait bounds with terminal input (#31441)
The core change here is the following: ```rust fn write_to_pty(&self, input: impl Into<Vec<u8>>); // into fn write_to_pty(&self, input: impl Into<Cow<'static, [u8]>>); ``` This matches the trait bounds that's used by the Alacritty crate. We are now allowed to effectively pass `&'static str` instead of always needing a `String`. The main benefit comes from making the `to_esc_str` function return a `Cow<'static, str>` instead of `String`. We save an allocation in the following instances: - When the user presses any special key that isn't alphanumerical (in the terminal) - When the uses presses any key while a modifier is active (in the terminal) - When focusing/un-focusing the terminal - When completing or undoing a terminal transaction - When starting a terminal assist This basically saves us an allocation on **every key** press in the terminal. NOTE: This same optimization can be done for **nearly all** keypresses in the entirety of Zed by changing the signature of the `Keystroke` struct in gpui. If the Zed team is interested in a PR for it, let me know. Release Notes: - N/A
tidely created
56d4c0a
snippets: Preserve leading whitespace (#31933)
Closes #18481 Release Notes: - Snippet insertions now preserve leading whitespace instead of using language-specific auto-indentation.
Michael Sloan created
feeda7f
Add newlines between messages in LSP RPC logs for more navigability (#31863)
Release Notes: - N/A
Michael Sloan created
4a5c55a
debugger: Use new icons for quick debug/spawn button (#31932)
This PR wires up the new icons that were added in #31784. Release Notes: - N/A
Cole Miller created
7c1ae9b
debugger: Go back to loading task contexts asynchronously for new session modal (#31908)
Release Notes: - N/A
Cole Miller created
6f97da3
debugger: Align zoom behavior with other panels (#31901)
Release Notes: - Debugger Beta: `shift-escape` (`workspace::ToggleZoom`) now zooms the entire debug panel; `alt-shift-escape` (`debugger::ToggleExpandItem`) triggers the old behavior of zooming a specific item.
Cole Miller created
63c1033
agent: Generate a notification when reaching tool use limit (#31894)
When reaching the consecutive tool call limit, the agent gets blocked and without a notification, you wouldn't know that. This PR adds the ability to be notified when that happens, and you can use either sound _and_ toast, or just one of them. Release Notes: - agent: Added support for getting notified (via toast and/or sound) when reaching the consecutive tool call limit.
Danilo Leal created
b16911e
debugger: Extend `f5` binding to contextually rerun the last session (#31753)
Release Notes: - Debugger Beta: if there is no stopped or running session, `f5` now reruns the last session, or opens the new session modal if there is no previously-run session.
Cole Miller created
b14401f
Remove agent_diff key context when agent review ends for an editor (#31930)
Release Notes: - Fixed an issue that prevented `git::Restore` keybindings from working in editors for buffers that had previously been modified by the agent. Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Cole Miller and Anthony Eid created