1bc052d
docs: Gemini thinking budget configuration (#32002)
Click to expand commit body
Release Notes: - N/A
Oleksiy Syvokon 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
17cf865
Avoid re-querying language server completions when possible (#31872)
Also adds reuse of the markdown documentation cache even when completions are re-queried, so that markdown documentation doesn't flicker when `is_incomplete: true` (completions provided by rust analyzer always set this) Release Notes: - Added support for filtering language server completions instead of re-querying.
Michael Sloan created
b7ec437
Simplify debug launcher UI (#31928)
This PR updates the name of the `NewSessionModal` to `NewProcessModal` (to reflect it's new purpose), changes the tabs in the modal to read `Run | Debug | Attach | Launch` and changes the associated types in code to match the tabs. In addition, this PR adds a few labels to the text fields in the `Launch` tab, and adds a link to open the associated settings file. In both debug.json files, added links to the zed.dev debugger docs. Release Notes: - Debugger Beta: Improve the new process modal
Mikayla Maki created
f1aab11
terminal: Persist pinned tabs in terminal (#31921)
Closes #31098 Release Notes: - Fixed terminal pinned tab state not persisting across restarts.
Piotr Osiewicz created
3f90bc8
gpui: Filter out NoAction bindings from pending input (#30260)
This prevents the 1 second delay happening on input when all of the pending bindings are NoAction Closes #30259 Release Notes: - Fixed unnecessary delay when typing a multi-stroke binding that doesn't match any non-null bindings --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Joe Polny and Conrad Irwin created
9d5fb3c
Add `:delm[arks] {marks}` command to delete vim marks (#31140)
Release Notes:
- Implements `:delm[arks] {marks}` specified
[here](https://vimhelp.org/motion.txt.html#%3Adelmarks)
- Adds `ArgumentRequired` action for vim commands that require arguments
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
AidanV and Conrad Irwin created
864767a
agent: Support vim-mode in the agent panel's editor (#31915)
Closes #30081 Release Notes: - Added vim-mode support in the agent panel's editor --------- Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com> Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Oleksiy Syvokon , Ben Kunkle , and Conrad Irwin created
ec69b68
indent guides: Fix issue with entirely-whitespace lines (#31916)
Closes #26957 Release Notes: - Fix an edge case where indent guides would be rendered incorrectly if lines consisted of entirely whitespace Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Bennet Bo Fenner and Ben Brandt created
9dd18e5
python: Re-land usage of source file path in toolchain picker (#31893)
This reverts commit 1e55e88c1822402566bdec8a893ec0429d8ee5e6. Closes #ISSUE Release Notes: - Python toolchain selector now uses path to the closest pyproject.toml as a basis for picking a toolchain. All files under the same pyproject.toml (in filesystem hierarchy) will share a single virtual environment. It is possible to have multiple Python virtual environments selected for disjoint parts of the same project.
Piotr Osiewicz created
2ebe16a
workspace: Fix empty pane becomes unresponsive to keybindings after commit via terminal (#31905)
Closes #27579 This PR fixes issue where keybinding wouldn’t work in a pane after focusing it from dock using the `ActivatePaneInDirection` action in certain cases. https://github.com/user-attachments/assets/9ceca580-a63f-4807-acff-29b61819f424 Release Notes: - Fixed the issue where keybinding wouldn’t work in a pane after focusing it from dock using the `ActivatePaneInDirection` action in certain cases.
Smit Barmase created