0862a0b
git: Add uncommit action (#37031)
Click to expand commit body
Closes #36767 Release Notes: - Add uncommit action for git
Alvaro Parker created
0862a0b
git: Add uncommit action (#37031)
Closes #36767 Release Notes: - Add uncommit action for git
Alvaro Parker created
2e36e97
language_models: Make Copilot Chat resilient to new model vendors and add tokenizer-based token counting (#37118)
While working on fixing this: #37116. I reliased the current implementation of github copilot is not truly resilient to upstream changes. This PR enhances GitHub Copilot Chat to be forward-compatible with new AI model vendors and improves token counting accuracy by using vendor-specific tokenizers from the GitHub Copilot API. The system previously failed when GitHub added new model vendors like xAI with deserialization errors, and token counting wasn't utilizing the vendor-specific tokenizer information provided by the API. The solution adds an Unknown variant to the ModelVendor enum with serde other attribute to gracefully handle any new vendors GitHub introduces, implements tokenizer-aware token counting that uses the model's specified tokenizer mapping o200k_base to gpt-4o with fallback, adds explicit support for xAI models with proper tool input format handling, and includes comprehensive test coverage for unknown vendor scenarios. Key changes include adding the tokenizer field to model capabilities, implementing the tokenizer method on models, updating tool input format logic to handle unknown vendors, and simplifying token counting to use the vendor's specified tokenizer or fall back to gpt-4o. This ensures Zed's Copilot Chat integration remains robust and accurate as GitHub continues expanding their AI model provider ecosystem. Release Notes: - Enhanced model vendor compatibility to automatically support future AI providers and improved token counting accuracy using vendor-specific tokenizers from the GitHub Copilot --------- Signed-off-by: Umesh Yadav <git@umesh.dev>
Umesh Yadav created
1751bf4
Allow outline modal toggling (#37575)
Closes #37511 The outline modal seems to have a bug where if it's open and the `outline::Toggle` is triggered, it would not close if there was another command with the same keybind. So instead, if the outline modal is open and an `outline::Toggle` is triggered, we dismiss the modal. Release Notes: - Fixed a bug where `outline::Toggle` would sometimes not close outline modal
Mitch (a.k.a Voz) created
2fae4c7
vim: Make indenting selected lines with `>` and `<` in Helix mode no longer deselect them (#37665)
Improves Helix compatibility by making the Indent keybinds `<` and `>` no longer deselect lines if they're selected. Post Indent action current Zed release: <img width="485" height="271" alt="image" src="https://github.com/user-attachments/assets/41fd3d94-9c89-49dd-adc5-f696dbd79827" /> (Cursor is on the beginning of the first line) Post Indent action in Helix: <img width="376" height="144" alt="image" src="https://github.com/user-attachments/assets/fdd1a489-cf3a-4638-9199-3adffa63ef61" /> Post Indent action in this PR: <img width="463" height="300" alt="image" src="https://github.com/user-attachments/assets/8edd3b81-e446-4b55-bc90-61cac3661ed7" /> Release Notes: - Fixed selected lines indented with `<` and `>` deselecting in Helix mode
Jonathan Hart created
1ae3d25
Improve Markdown highlighting (#37669)
Release Notes:
- Improved Markdown syntax highlighting
PR #25330 raised concerns about breaking changes, so I split it into two
PRs:
- This PR improves highlighting without deprecating existing selectors.
- PR #37670 is based on this PR and introduces new Markdown selectors.
| Zed 0.202.7 | With this PR |
| --- | --- |
| <img width="800" height="1080" alt="md-0 202 7"
src="https://github.com/user-attachments/assets/0b0b5920-32ed-454f-bc3b-bf5cd0a9086a"
/> | <img width="800" height="1080" alt="md-pr"
src="https://github.com/user-attachments/assets/a5923a2e-391e-4e09-a60b-1a142f9378f3"
/> |
Changes to include the `markup` selector, conforming to
[Neovim](https://github.com/nvim-treesitter/nvim-treesitter/blob/38e46a6d7ade5c8718f77b2b9fd98a0f7ab32c1e/queries/markdown/highlights.scm#L59),
[VS
Code](https://github.com/microsoft/vscode/blob/dfad570d15959a6ce7210a313a1190e76e8fe2e2/extensions/markdown-basics/syntaxes/markdown.tmLanguage.json#L60),
[Atom](https://github.com/atom/language-gfm/blob/6686ac6ccca2632af24d5c200f85bcd80b9fa752/grammars/gfm.json#L147),
and [Zed
itself](https://github.com/zed-industries/zed/blob/1e255e41ccfdb88e2266469f1ccfe0d41533280b/crates/languages/src/gitcommit/highlights.scm#L1).
- `paragraph`, `indented_code_block`, `pipe_table`: `text`
- `# Heading`: `title` -> `title.markup`
- `-`, `1.`, `>`, `|`: `punctuation.markup`
- ```` ``` ````: `punctuation.embedded.markup`
- `[1]: url.com`, `[link](url.com)`: `link_text.markup`
- `url.com`: `link_uri` -> `link_uri.markup`
- `*italic*`: `emphasis` -> `emphasis.markup`
- `**bold**`: `emphasis.strong` -> `emphasis.strong.markup`
- ``` `raw` ```: `text.literal` -> `text.literal.markup`
- `~~strikethrough~~`: `strikethrough.markup`
````md
# Heading
Some stylized text:
- `raw`
- *italic*
- ~strike~
- **strong**
> quoted
```python
print("some code")
```
1. Here is an 
2. A [link](https://github.com/zed-industries)
3. And even a [referenced link][1]
[1]: https://zed.dev
| tables | are |
| --- | --- |
| properly | scoped |
````
chbk created
5e58f44
Fix auth in edit_agent evals (#37869)
Somehow we have a regression where the auth wasn't being called, so the model didn't exist. Looking at the code, it is likely this was relying on some other part of the code doing the auth, since the order wouldn't have worked before without that happening. This new order of doing auth before checking for available models should fix it going forward. Release Notes: - N/A
Ben Brandt created
d8085d3
zed: Hide Install CLI menu button on Windows (#37843)
The "Install CLI" menu button and `install_cli::Install` action are effectively no-op on Windows since the CLI is directly available in Windows Terminal (CMD prompt, PowerShell, etc.) after the user runs Zed installer package. Release Notes: - N/A Co-authored-by: Peter Tripp <peter@zed.dev>
Jakub Konka and Peter Tripp created
707d0e6
settings ui: Add text field support to ui layer (#37868)
This is an initial implementation that isn't used for any settings yet, but will be used once `Vec<String>` is implemented. I also updated the window.with_state api to grant access to a `Context<S>` app reference instead of just an App. ## Example <img width="603" height="83" alt="Screenshot 2025-09-09 at 2 15 56 PM" src="https://github.com/user-attachments/assets/7b3fc350-a157-431f-a4bc-80a1806a3147" /> Release Notes: - N/A
Anthony Eid created
46fb521
git_ui: Show author name on commits in branch picker (#36812)
See related discussion https://github.com/zed-industries/zed/discussions/36511. <img alt="zed" src="https://github.com/user-attachments/assets/da7fc30d-2504-48f4-a392-7c8d5cd8acb1" /> Release Notes: - Added option to show the author name in a branch picker commit information --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Lev Zakharov and Conrad Irwin created
9529cd1
project_panel: Add action to open file in split pane (#36973)
Closes #18605 Related: - https://github.com/zed-industries/zed/discussions/16901 - https://github.com/zed-industries/zed/issues/10549 Adds an action to open file in split pane. Also updates vim keybindings for better compatibility with netrw: [“v”](https://github.com/vim/vim/blob/bc461f952d854ffbde83eb74044efc3b329ea10e/runtime/pack/dist/opt/netrw/doc/netrw.txt#L1091) and [“o”](https://github.com/vim/vim/blob/bc461f952d854ffbde83eb74044efc3b329ea10e/runtime/pack/dist/opt/netrw/doc/netrw.txt#L1075) keys should open file in splits. <table> <tr> <td><video src="https://github.com/user-attachments/assets/e24c6fd4-4eb0-407a-bdd1-5300908ea2a1"> <td><video src="https://github.com/user-attachments/assets/fa0b8105-41a9-4421-a3cc-89244a90d67a"> </table> Release Notes: - Added `project_panel::OpenSplitVertical` and `project_panel::OpenSplitHorizontal` actions for opening file in a splits.
Ivan Trubach created
14ffd7b
editor: Implement Go to next/prev Document Highlight (#35994)
Closes #21193 Closes #14703 Having the ability to navigate directly to the next symbolHighlight/reference lets you follow the data flow of a variable. If you highlight the function itself (depending on the LSP), you can also navigate to all returns. Note that this is a different feature from navigating to the next match, as that is not language-context aware. For example, if you have a var named foo it would also navigate to an unrelated variable fooBar. Here's how this patch works: - The editor struct has a background_highlights. - Collect all highlights with the keys [DocumentHighlightRead, DocumentHighlightWrite] - Depending on the direction, move the cursor to the next or previous highlight relative to the current position. Release Notes: - Added `editor::GoToNextDocumentHighlight` and `editor::GoToPreviousDocumentHighlight` to navigate to the next LSP document highlight. Useful for navigating to the next usage of a certain symbol.
Marco Munizaga created
9431c65
git: Improve error messages (#35946)
Release Notes: - Improved git error messages Includes stderr in the error message for git commands, provides better output for things like errors when switching branches. Before: <img width="702" height="330" alt="image" src="https://github.com/user-attachments/assets/f32402ae-b85c-4b0b-aae8-789607e8ec9e" /> After: <img width="650" height="575" alt="image" src="https://github.com/user-attachments/assets/308dbe3c-1ff9-40b9-a187-1e12d2488c80" /> --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Jacob and Conrad Irwin created
b2d7e34
Update Editor::select_larger_syntax_node (#36971)
When the cursor was sitting on a syntactically insignificant character,
like a `{` or `,`, this function was selecting only that character, when
what the user likely wanted was to select the next larger syntax node.
Those punctuation characters all seemed to be not "named", in
tree-sitter terminology, so I updated the function to walk up the node
tree until it found a node where `is_named()` is true.
Closes #4555
Also, while writing the tests, the output of a failing test with the
wrong thing selected was harder to read than it needed to be.
It used to output a diff of ranges, like this:
<img width="217" height="111" alt="image"
src="https://github.com/user-attachments/assets/00de53a8-8776-47aa-8101-5a5b5bc3fa5e"
/>
I leveraged the existing `generate_marked_text` helper function and
updated the assertion to output a diff of the text with the selection
markers:
<img width="211" height="116" alt="image"
src="https://github.com/user-attachments/assets/53b2b882-2676-4c70-8718-e2e2ba6f254e"
/>
Happy to make that a separate PR, if needed.
Release Notes:
- Fixed Editor select_larger_syntax_node to be smart about punctuation.
Paul Sadauskas created
61d4718
Make it possible to support GPUI in the scheduler crate (#37849)
Added features that weren't needed in our cloud code. Release Notes: - N/A --------- Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra and Nathan created
9e903c9
Add path/status sorting toggle to git panel menu (#35704)
Adds a new menu option to toggle between sorting git entries by path or status, with settings integration Release Notes: - Git Panel: Added toggle to switch between sorting git panel entries by path or by status (available in git panel ellipsis menu) --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
nick-kilian and Conrad Irwin created
d81479e
Allow user-defined worktree names in title bar and platform windows (#36713)
Closes #36637 Release Notes: - Adds the ability to specify a human-readable project name for each worktree. https://github.com/user-attachments/assets/ce980fa6-65cf-46d7-9343-d08c800914fd
Warpten created
a2edd56
python: Add import paths to Pyright/BasedPyright completion items (#37865)
Release Notes: - python: Added package origin to completions from Pyright/BasedPyright
Piotr Osiewicz created
d7a9be0
acp: Ensure connection subprocess gets killed on drop (#37858)
It appears that in macOS, the `AcpConnection._wait_task` doesn't always get dropped when quitting the app. In these cases, the subprocess would be kept alive because we move the `child` into it. Instead, we will now explicitly kill it when `AcpConnection` is dropped. It's ok to do this because when the connection is dropped, the thread is also dropped, so there's no need to report the exit status to it. Closes #37741 Release Notes: - Claude Code: Fix subprocess leak on app quit
Agus Zubiaga created
cdbddc2
Allow unauthenticated commit models to show (#37857)
Closes #37462 Closes #37814 Release Notes: - Fixed a bug where the commit generation message would not always show
Conrad Irwin created
f397294
Fix git staging in a subfolder (#37860)
Closes #37418 Ideal fix for this would be #37855 but that is a large refactor so implementing this as a workaround. Release Notes: - N/A
localcc created
8527dcf
git_ui: Better handle commit message amend (#35268)
Follow up to this: #35114 * Previously we were still showing the commit message even after cancelling amend which was the old commit message. * This PR fixes that by restoring the commit message to the old state before the amend begin so that in case user typed a commit message it's shown if not then it's not. Before: https://github.com/user-attachments/assets/e0edcfff-863d-4367-a7c4-8a2998e702ca After: https://github.com/user-attachments/assets/9daf9be0-8a3d-4914-91a4-567693711b6b Release Notes: - Resolved an issue where cancelling an amend commit would incorrectly leave the old commit message in the input field. The commit message box now properly reverts to its pre-amend state.
Umesh Yadav created
7f607a9
git_ui: Show current branch first in branch picker (#35138)
Closes #ISSUE Release Notes: - Put current branch first in branch picker
Guillaume Launay created
5e397e8
acp: Support session modes (e.g. CC plan mode) (#37632)
Adds support for [ACP session modes](https://github.com/zed-industries/agent-client-protocol/pull/67) enabling plan and other permission modes in CC: https://github.com/user-attachments/assets/dea18d82-4da6-465e-983b-02b77c6dcf15 Release Notes: - Claude Code: Add support for plan mode, and all other permission modes --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: Richard Feldman <oss@rtfeldman.com> Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Agus Zubiaga , Bennet Bo Fenner , Richard Feldman , and Danilo Leal created
ad02f6b
cloud_llm_client: Add another `Plan` variant (#37852)
This PR adds a corresponding `FreeV2` variant to the `Plan`. Release Notes: - N/A
Marshall Bowers created
2e7607c
python: Fix instability of Pyright/BasedPyright code completions (#37850)
Pyright sets different `sortText` based on whether a given completion item was recently resolved. This probably lines up with VSCode's way of resolving items, but it's a no-no for us, as it makes completions unstable. Closes #9983 Release Notes: - python: Fixed code completions having arbitrary order when using Pyright/basedpyright
Piotr Osiewicz created
0ac1752
terminal: Sanitize trailing periods in URL detection (#37684)
Fixes #12338, related to #37616 This change improves URL detection in the terminal by removing trailing periods that appear to be sentence punctuation rather than part of the URL structure. It builds upon the parentheses sanitization work from #37076 by consolidating both approaches into a unified `sanitize_url_punctuation` function. ## Changes - Combines parentheses and period sanitization into a single `sanitize_url_punctuation` function - Uses optimized single traversal with `fold()` for parentheses counting (addressing code review feedback) - Removes trailing periods using heuristics to distinguish sentence punctuation from legitimate URL components - Removes multiple trailing periods (always considered punctuation) - Removes single trailing periods when they appear after alphanumeric characters or slashes - Preserves periods that are part of legitimate URL structure (e.g., version numbers, IP addresses, subdomains) - Maintains existing parentheses balancing logic from #37076 ## Implementation Details - **Parentheses handling**: Counts opening and closing parentheses, removes trailing `)` when unbalanced - **Period handling**: Uses `take_while()` iterator for efficient period counting - **Performance**: Single pass counting with optimized loop to avoid redundant work - **Code clarity**: Uses let-else pattern for readable conditional logic ## Testing - Added comprehensive test coverage for both parentheses and period sanitization - Tests cover balanced vs unbalanced parentheses cases - Tests cover various period scenarios including legitimate URL periods vs sentence punctuation - All existing tests continue to pass ## Release Notes - Improved terminal URL detection by further trimming trailing punctuation. URLs ending with periods (like `https://example.com.`) and unbalanced parentheses (like `https://example.com/path)`) are now properly detected without including the trailing punctuation.
Joseph Mearman created
af1875f
terminal_view: Improve path hyperlink navigation by considering the terminal working directory (#36962)
Closes #34027 Release Notes: - Improved terminal path hyperlink navigation by considering the terminal working directory
Dave Waggoner created
734f94b
agent_ui: Fix crash when typing multibyte character after mention (#37847)
Closes #36333 Release Notes: - Fixed a crash that occurred when typing an IME character right after a mention in the Agent Panel.
Smit Barmase created
136468a
keymap editor: Add some adjustments to the UI (#37819)
- Makes the keymap editor search container more consistent with the project & file search corresponding elements - Changes the keymap editor menu item in the user menu be called "Keymap Editor", as opposed to "Key Binding", to match with the tab and action name Design note: Still a bit unsure about the extra space on the right for the keymap editor. This makes it way more consistent with the other search views, but it also just feels like space that could be used. On the other hand, though, it's very unlikely anyone will ever use more than 30% of the search bar width as search queries here are likely pretty short; definitely much shorter than project search queries. <img width="600" height="552" alt="Screenshot 2025-09-09 at 1 02@2x" src="https://github.com/user-attachments/assets/9825a129-2c5a-4852-9837-c586b88e9332" /> Release Notes: - N/A
Danilo Leal created
adf43d6
project: Remove non searchable buffer entries on buffer close (#37841)
Release Notes: - N/A
Lukas Wirth created
466a2e2
Improve font rendering on macOS (#37622)
Part of https://github.com/zed-industries/zed/issues/7992 Release Notes: - N/A
localcc created
365c5ab
editor: Remove unnecessary clone (#37833)
The style is taken by reference everywhere, so no need to clone it at the start of every `prepaint`. Release Notes: - N/A
Finn Evers created
11d81b9
Revert "git: Use self.git_binary_path instead raw git string" (#37828)
Reverts zed-industries/zed#37757
Jakub Konka created
4b3b2ac
Fix hot reload of builtin TreeSitter queries on Linux (#37825)
`fs.watch` is recursive on mac and non-recursive on Linux. Release Notes: - N/A
Michael Sloan created
8494247
Fix code action menu items font size in toolbar (#37824)
Closes https://github.com/zed-industries/zed/issues/36478 Release Notes: - N/A
Danilo Leal created
3e605c2
docs: Fix casing on mentions to some brand names (#37822)
- MacOS → macOS - VSCode → VS Code - SublimeText → Sublime Text - Javascript/Typescript → JavaScript/TypeScript Release Notes: - N/A
Danilo Leal created
82b11bf
docs: Include Cursor in the list of supported base keymaps (#37821)
We were missing that in the /key-bindings page. Also took advantage of the opportunity to add a bunch of small writing tweaks. Release Notes: - N/A
Danilo Leal created
3a437fd
Remove Chat (#37789)
At RustConf we were demo'ing zed, and it continually popped open the chat panel. We're usually inured to this because the Chat panel doesn't open unless a Guest is in the channel, but it made me sad that we were showing a long stream of vacuous comments and unresponded to questions on every demo screen. We may bring chat back in the future, but we need more thought on the UX, and we need to rebuild the backend to not use the existing collab server that we're trying to move off of. Release Notes: - Removed the chat feature from Zed (Sorry to the 5 of you who use this on the regular!)
Conrad Irwin created
96c429d
Only reject agent actions, don't restore checkpoint on revert (#37801)
Updates #37623 Release Notes: - Changed the behaviour when editing an old message in a native agent thread. Prior to this, it would automatically restore the checkpoint (which could lead to a surprising amount of work being discarded). Now it will just reject any unaccepted agent edits, and you can use the "restore checkpoint" button for the original behavior.
Conrad Irwin created
ea4073e
cloud_llm_client: Add new `Plan` variants (#37810)
This PR adds new variants to the `Plan` enum. Release Notes: - N/A
Marshall Bowers created
8c93112
settings_ui: Add Basic Implementation of Language Settings (#37803)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ... --------- Co-authored-by: Anthony <anthony@zed.dev>
Ben Kunkle and Anthony created
1feffad
Remove `zed-pro` feature flag (#37807)
This PR removes the `zed-pro` feature flag, as it was not being used. Release Notes: - N/A
Marshall Bowers created
ae54a4e
Add commands to select next/previous siblings in the syntax tree (#35053)
Closes #5133 and discussion https://github.com/zed-industries/zed/discussions/33493 This PR adds two new commands to select next/previous siblings in the syntax tree. These commands were modelled after the existing ones about expand/shrink selection. With this PR I've added new key bindings inspired by `helix` for previous / next / expand / shrink selections. https://github.com/user-attachments/assets/4ef7fadb-0b82-4897-95c7-1737827bf4ac Release Notes: - Add commands to select next/previous siblings in the syntax tree --------- Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
Ivan Danov and Joseph T. Lyons created
4a0a7d1
Add item for the debugger panel in the app view menu (#37805)
Release Notes: - Enabled the debugger panel to be opened via the app's "View" menu option
Danilo Leal created
5934d37
python: Improve Basedpyright banner styles (#37802)
Just tidying this up a bit. Release Notes: - N/A
Danilo Leal created
acde79d
agent: Improve popover trigger styles (#37800)
This PR mostly adds some style treatment to popover button triggers in the agent panel, either making them better aligned with their trigger or adjusting the color to better clarify which button is triggering the currently opened menu. Moving forward, I think the selected styles at least should probably be tackled at the component level, whether that's a context menu or a popover, so we don't have to ever do this manually (and running the risk of forgetting to do it). Release Notes: - N/A
Danilo Leal created
246c644
agent_servers: Fix proxy configuration for Gemini (#37790)
Closes #37487 Proxy settings are now taken from the Zed configuration and passed to Gemini via the "--proxy" flag. Release Notes: - acp: Gemini ACP server now uses proxy settings from Zed configuration.
Patsakula Nikita created
e4de26e
cloud_llm_client: Remove unused code (#37799)
This PR removes some unused code from the `cloud_llm_client`. This was only used on the server, so we can move it there. Release Notes: - N/A
Marshall Bowers created
7091c70
open_ai: Trim newline before "data:" prefix and account for the possibility of no space after ":" (#37644)
I'am using an openai compatible model, but got nothing in agent thread
panel, and Zed log has "Model generated an empty summary" line.
I add one log to open_ai.rs:
<img width="2454" height="626" alt="图片"
src="https://github.com/user-attachments/assets/85354c7d-a0cc-4bba-86fd-2a640038a13e"
/>
and got:
<img width="3456" height="278" alt="图片"
src="https://github.com/user-attachments/assets/7746aedd-5d76-44b5-90f2-e129a1507178"
/>
It appear that `let line = line.strip_prefix("data: ")?;` can not handle
correctly.
Release Notes:
- N/A
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
ZhangJun and Ben Brandt created
fa0df6d
python: Replace pyright with basedpyright (#35362)
Follow-up to #35250. Let's experiment with having this by default on
nightly.
Release Notes:
- Added built-in support for the basedpyright language server for Python
code. basedpyright is now enabled by default, and pyright (previously
the primary Python language server) remains available but is disabled by
default. This supersedes the basedpyright extension, which can be
uninstalled. Advantages of basedpyright over pyright include support for
inlay hints, semantic highlighting, auto-import code actions, and
stricter type checking. To switch back to pyright, add the following
configuration to settings.json:
```json
{
"languages": {
"Python": {
"language_servers": ["pyright", "pylsp", "!basedpyright"]
}
}
}
```
---------
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Cole Miller , Piotr Osiewicz , and Lukas Wirth created