1966d4c
Add an issue template for Git bugs (#41048)
Click to expand commit body
Release Notes: - N/A
Joseph T. Lyons created
1966d4c
Add an issue template for Git bugs (#41048)
Release Notes: - N/A
Joseph T. Lyons created
b6a1867
settings_ui: Fix settings window doesn't inherit Zed icon (#41031)
Closes #40946 Release Notes: - N/A
Smit Barmase created
c0ff8ef
remote: Do not compress remote by default when building from source (#40994)
Release Notes: - N/A
Jakub Konka created
66ec0fc
Revert zero-width non-joiner insertion in text shaping (#41043)
Reverts parts of https://github.com/zed-industries/zed/pull/39928 Closes https://github.com/zed-industries/zed/issues/40987 Release Notes: - Fixed some fonts rendering with absurd spacing on MacOS
Lukas Wirth created
435eab6
Fix ESLint linebreak-style errors by preserving line endings in LSP communication (#38773)
Closes https://github.com/zed-industries/zed/issues/38453 Current `Buffer` API only allows getting buffer text with `\n` line breaks — even if the `\r\n` was used in the original file's text. This it not correct in certain cases like LSP formatting, where language servers need to have original document context for e.g. formatting purposes. Added new `Buffer` API, replaced all buffer LSP registration places with the new one and added more tests. Release Notes: - Fixed ESLint linebreak-style errors by preserving line endings in LSP communication --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Devdatta Talele , Claude , and Kirill Bulatov created
55bc679
docs: Ensure macOS and Linux keybindings are escaped in HTML (#39802)
Closes #39654 Release Notes: - Fixed the formatting of macOS and Linux keybindings in the Zed docs to escape the backslash character when templating.
Sean Hagstrom created
6aaf19f
multi_buffer: Split multi_buffer into more modules (#41033)
There are a of separate APIs in this, partially interleaved making it difficult to grasp. Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
d83ed4e
docs: Update docs for `theme_overrides` setting (#41038)
This PR updates the docs to reference the `theme_overrides` setting instead of the old `experimental.theme_overrides` setting. Release Notes: - N/A
Marshall Bowers created
11eba64
Rename `assistant_context` crate to `assistant_text_thread` (#41024)
Previously we had `Context` and `ContextStore` in both `agent_ui` (used to store context for the inline assistant) and `assistant_context` (used for text threads) which is confusing. This PR makes it so that the `assistant_context` concepts are now called `TextThread*`, the crate was renamed to `assistant_text_thread` Release Notes: - N/A
Bennet Fenner created
63fe1ea
Fix overly noisy direnv error notification (#41029)
Updates #40531, restoring the previous behavior which didn't surface an error when no direnv binary was found. Release Notes: - N/A
Cole Miller created
8b6f3ec
Fix the project diff sometimes missing updates (#40662)
This PR does two related things: - First, it gets rid of the undifferentiated `RepositoryEvent::Updated` in favor of three new events that have clearer definitions: `BranchChanged`, `StashEntriesChanged`, and `StatusesChanged`. An implication of this is that we no longer emit a `RepositoryEvent` unless some git state changed; previously we would emit `RepositoryUpdated` after doing a git status scan even if no statuses changed. - Second, it changes the subscription strategy of the project diff to make it update more robustly. Previously, the project diff only subscribed to the `GitStore`, so it relied on getting a `GitStoreEvent` when some buffer's diff hunks changed, even if the git status of the buffer's file didn't change (e.g. a second hunk in a file that was already modified). After this PR, it also subscribes to the individual `BufferDiff` entities for buffers that have a git status, so the `GitStore` is freed from that responsibility. This also fixes some real cases where the previous strategy was not effective in keeping the project diff up to date (captured in a test). Release Notes: - Fixed some cases where the project diff would fail to update in response to git events.
Cole Miller created
a66098b
gpui: Revert `reuse_prepaint` change of #40767 (#41025)
https://github.com/zed-industries/zed/pull/40767/files/c95ae84d919462393455d858836f479dd24bd620#r2455674159 Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
b519ab2
rope: Improve chunk slicing panic messages (#41023)
We still see a bunch of panics here but the default slicing panic doesn't tell which side of the range is bad Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
023ac1b
Revert "Use ShellKind::try_quote whenever we need to quote shell args" (#41022)
Reverts zed-industries/zed#40912 Closes https://github.com/zed-industries/zed/issues/41010
Jakub Konka created
738e248
gpui: Small perf optimizations (#40767)
Some random findings based on profiling Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
4f0a448
Fix anchor-related panic when gathering applicable inlay chunks (#41002)
Before, inlay chunks were retrieved from the cache based on actualized anchor ranges, but using an old buffer snapshot. Now, update all chunks and snapshot to the actual before returning the applicable ones. Follow-up of https://github.com/zed-industries/zed/pull/40183 Release Notes: - N/A
Kirill Bulatov created
9a6397f
Add keybindings for menu navigation in vim.json (#40877)
- Added "ctrl-p" for selecting the previous menu item - Added "ctrl-n" for selecting the next menu item Closes #40619 Release Notes: - Ctrl+P now moves to the previous result; Ctrl+N moves to the next.
Viraj Bhartiya created
93ef194
vim: Fix cursor movement after entering Helix normal mode (#40528)
Closes #40009 Release Notes: - `vim::NormalBefore` now enters `helix_normal` correctly.
paneutral created
8c1b4cb
Re-order Helix keymaps and add alt-o/i/p/n (#40527)
Release Notes:
- helix: Re-ordered `helix_normal || helix_select` keybindings to follow the
same order as the keymap on the helix-editor
[documentation](https://docs.helix-editor.com/keymap.html).
- helix: Added `alt-o` & `alt-i` to Select larger and smaller syntax node
respectively
- helix: Added `alt-p` & `alt-n` to Select Next Syntax Node and Previous Syntax
Node respectively
---
The new main helix normal & select context looks like follows
```jsonc
{
"context": "(vim_mode == helix_normal || vim_mode == helix_select) && !menu",
"bindings": {
// Movement
"h": "vim::WrappingLeft",
"left": "vim::WrappingLeft",
"l": "vim::WrappingRight",
"right": "vim::WrappingRight",
"t": ["vim::PushFindForward", { "before": true, "multiline": true }],
"f": ["vim::PushFindForward", { "before": false, "multiline": true }],
"shift-t": ["vim::PushFindBackward", { "after": true, "multiline": true }],
"shift-f": ["vim::PushFindBackward", { "after": false, "multiline": true }],
"alt-.": "vim::RepeatFind",
// Changes
"shift-r": "editor::Paste",
"`": "vim::ConvertToLowerCase",
"alt-`": "vim::ConvertToUpperCase",
"insert": "vim::InsertBefore",
"shift-u": "editor::Redo",
"ctrl-r": "vim::Redo",
"y": "vim::HelixYank",
"p": "vim::HelixPaste",
"shift-p": ["vim::HelixPaste", { "before": true }],
">": "vim::Indent",
"<": "vim::Outdent",
"=": "vim::AutoIndent",
"d": "vim::HelixDelete",
"c": "vim::HelixSubstitute",
"alt-c": "vim::HelixSubstituteNoYank",
// Selection manipulation
"s": "vim::HelixSelectRegex",
"alt-s": ["editor::SplitSelectionIntoLines", { "keep_selections": true }],
";": "vim::HelixCollapseSelection",
"alt-;": "vim::OtherEnd",
",": "vim::HelixKeepNewestSelection",
"shift-c": "vim::HelixDuplicateBelow",
"alt-shift-c": "vim::HelixDuplicateAbove",
"%": "editor::SelectAll",
"x": "vim::HelixSelectLine",
"shift-x": "editor::SelectLine",
"ctrl-c": "editor::ToggleComments",
"alt-o": "editor::SelectLargerSyntaxNode",
"alt-i": "editor::SelectSmallerSyntaxNode",
"alt-p": "editor::SelectPreviousSyntaxNode",
"alt-n": "editor::SelectNextSyntaxNode",
// Goto mode
"g e": "vim::EndOfDocument",
"g h": "vim::StartOfLine",
"g l": "vim::EndOfLine",
"g s": "vim::FirstNonWhitespace", // "g s" default behavior is "space s"
"g t": "vim::WindowTop",
"g c": "vim::WindowMiddle",
"g b": "vim::WindowBottom",
"g r": "editor::FindAllReferences", // zed specific
"g n": "pane::ActivateNextItem",
"shift-l": "pane::ActivateNextItem",
"g p": "pane::ActivatePreviousItem",
"shift-h": "pane::ActivatePreviousItem",
"g .": "vim::HelixGotoLastModification", // go to last modification
// Window mode
"space w h": "workspace::ActivatePaneLeft",
"space w l": "workspace::ActivatePaneRight",
"space w k": "workspace::ActivatePaneUp",
"space w j": "workspace::ActivatePaneDown",
"space w q": "pane::CloseActiveItem",
"space w s": "pane::SplitRight",
"space w r": "pane::SplitRight",
"space w v": "pane::SplitDown",
"space w d": "pane::SplitDown",
// Space mode
"space f": "file_finder::Toggle",
"space k": "editor::Hover",
"space s": "outline::Toggle",
"space shift-s": "project_symbols::Toggle",
"space d": "editor::GoToDiagnostic",
"space r": "editor::Rename",
"space a": "editor::ToggleCodeActions",
"space h": "editor::SelectAllMatches",
"space c": "editor::ToggleComments",
"space p": "editor::Paste",
"space y": "editor::Copy",
// Other
":": "command_palette::Toggle",
"m": "vim::PushHelixMatch",
"]": ["vim::PushHelixNext", { "around": true }],
"[": ["vim::PushHelixPrevious", { "around": true }],
"g q": "vim::PushRewrap",
"g w": "vim::PushRewrap",
// "tab": "pane::ActivateNextItem",
// "shift-tab": "pane::ActivatePrevItem",
}
}
```
Abderrahmane TAHRI JOUTI created
3bb4c94
Revert "Round the scroll offset in editor to fix jumping text (#40401)" (#40982)
This reverts commit 3da4cddce205d71dcad760c6af66a8985b16ffbe. The scrolling is ~30% less for the same gesture, and I'm not using anything lodpi: https://github.com/user-attachments/assets/b19521fc-9e29-4bfd-9660-dc1e4c8ae846 Release Notes: - N/A
Kirill Bulatov created
16f7bd0
editor: Translate utf16 to utf8 offsets in `copy_highlight_json` (#40981)
Fixes ZED-2FM Release Notes: - Fixed panic in copy highlight json action
Lukas Wirth created
c529a06
gpui: Arc `GlobalElementId` (#40979)
This shrinks it from roughly a ~kilobyte to 8 byte, removing a bunch of memmoves emitted by the compiler. Also `Arc`'s it instead of boxing as we do clone it a couple times here and there, making that also a fair bit cheaper Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
278032c
extension_host: Run extensions on the tokio threadpool (#40936)
Fixes ZED-12D `wasmtime_wasi` might call into tokio futures (to sleep for example) which requires access to the tokio runtime. So we are required to run these extensions in the tokio thread pool Release Notes: - Fixed extensions causing zed to occasionally panic
Lukas Wirth created
5a05986
debugger: Fix debug scenario picker not showing language subtitles (#40977)
### Before <img width="544" height="403" alt="Screenshot 2025-10-23 at 2 58 44 AM" src="https://github.com/user-attachments/assets/f5a69d27-e54a-4c1e-80f7-5cfff5b0bd47" /> ### After <img width="550" height="372" alt="Screenshot 2025-10-23 at 3 08 59 AM" src="https://github.com/user-attachments/assets/33dd9c5e-054e-4ed1-ba1e-16746a5a697a" /> I also changed the debug picker to use a material list to cover the edge case where there isn't a subtitle for an entry Release Notes: - debugger: Fix debug scenario picker not showing language subtitles
Anthony Eid created
05c2cc0
settings_ui: Enable editing project settings for worktrees without setting file (#40971)
I made three significant changes in this PR. 1. `SettingsWindow::fetch_files` now creates `SettingsUiFile::Project(..)` for any worktree that contains no project settings. 2. `update_settings_file` now creates an empty settings file if a worktree doesn't contain one. 3. `open_current_settings_file` also creates a settings file if the current one doesn't exist. Release Notes: - settings ui: Enable editing project settings for worktrees that don't have a project setting file.
Anthony Eid created
1edb1b3
settings ui: Update file headers when adding or removing projects (#40968)
This PR gets the `SettingsWindow` struct to subscribe to all `Entity<Project>` events and any future project entities that are created. When a project emits an event that signals a worktree has been added or removed, the settings window refetches all settings files it can find. This fixes a bug where the settings ui would notice some project settings that were created or opened after the `SettingsWindow` has been initialized. I also renamed `LOCAL` file mask to `PROJECT` to be inline with the `SettingsFile` naming convention. Release Notes: - settings ui: Fix bug where project setting files wouldn't be detected if they were created or opened after while an active settings window is open
Anthony Eid created
8f4646d
Use ShellKind::try_quote whenever we need to quote shell args (#40912)
Using `shlex` unconditionally is dangerous as it assumes the underlying shell is POSIX which is not the case for PowerShell, CMD, or Nushell. Therefore, whenever we want to quote the args we should utilise our helper `util::shell::ShellKind::try_quote` which takes into account which shell is being used to actually exec/spawn the invocation. Release Notes: - N/A --------- Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
Jakub Konka and Lukas Wirth created
18daa9a
Simplify environment loading code (#40531)
This is a refactoring PR to simplify our environment loading code by: - Getting rid of `EnvironmentErrorMessage` in favor of using `anyhow::Result` everywhere, with a separate `mpsc` channel to communicate statuses that will be shown in the activity indicator - Inlining some functions that were only called once to reduce indirection - Removing the separate `direnv` module Release Notes: - N/A
Cole Miller created
bf63ff2
Fix path for vscode-html-language-server when found on PATH (#40832)
Don't prepend the worktree root when using an absolute path from `Worktree::which`, since that does the wrong thing when running in wasmtime given two Windows absolute paths. Also don't pass this path to `node`, since when npm installed it's a sh/cmd wrapper not a JS file. Part of #39153, also needs a fix on the vscode-langservers-extracted side (missing shebang for the vscode-html-language-server script). Release Notes: - Fixed Zed failing to run the HTML language server in some cases.
Cole Miller created
f9e0642
settings_ui: Adjust warning banner design (#40952)
Just tidying this up a bit. Really have to fix this Banner component at some point 😅 Having to add some spacing hacks to make it perfect here that are not ideal and should be baked into the component. Release Notes: - N/A
Danilo Leal created
bada88c
Make the rules library window more consistent with the settings UI (#40948)
Now that we have two surface areas that open as separate windows, it's important they're consistent with one another. This PR make the settings UI and rules library windows more similar by having them use the same minimum window size and similar styles for their navbar given they have fundamentally the same design (nav on the left and content on the right). Release Notes: - N/A
Danilo Leal created
6b8f859
agent_ui: Remove ellipses from some menu entries (#40858)
<img width="335" height="236" alt="image" src="https://github.com/user-attachments/assets/5e09e9ed-f0f3-48df-ac22-032edfc6c114" /> Release Notes: This PR fixes inconsistent use of trailing ellipsis (…) in the MCP Server menu. Previously, some menu items (like Add Custom Server…) used hardcoded ellipses even though they didn’t trigger additional dialogs or steps. This change removes unnecessary ellipses to align with standard UI/UX conventions used across Zed’s menus. --------- Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Moo, Kachon and Danilo Leal created
4fd4cbb
gpui: Add focus-visible selector support (#40940)
Release Notes: - N/A --------- Co-authored-by: Claude <noreply@anthropic.com>
Mikayla Maki and Claude created
044701e
rope: Implement `Rope::is_char_boundary` via chars bitmap (#40945)
Slightly more efficient. No new tests as we already have tests verifiying this. Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
a96bf50
theme: Fix entry could appear transparent on hover with certain themes (#40944)
Follow-up: https://github.com/zed-industries/zed/pull/34655 We should use an opaque fallback color for `panel.overlay_hover`. This helps when a custom theme doesn’t provide it, nor `element.hover`. For example, VSCode’s default modern dark theme doesn’t include an `element.hover` color after import. Release Notes: - Fixed an issue where the project panel’s sticky entry could appear transparent on hover with certain themes.
Smit Barmase created
c16f2a1
project: Normalize `Path` env var to `PATH` in shell env on windows (#40720)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
ca41032
settings_ui: Fix file header from showing duplicate display names (#40943)
After clicking on the file drop-down and selecting a file, both the selected file and the first drop-down entry would be the same file name instead of overwriting a file name. Release Notes: - settings ui: Fix bug where duplicate file names showed in the header files
Anthony Eid created
7312372
agent_ui: Focus the message editor after regenerating a user message (#40938)
Release Notes: - agent: Improved the editing previous messages UX by focusing in the agent panel's message editor after regenerating a prompt, instead of moving focus to the nearest regular buffer.
Danilo Leal created
2096f25
editor: Reduce selection opacity when editor is not focused (#40925)
Focus: <img width="420" alt="image" src="https://github.com/user-attachments/assets/97b0c7ed-8ad4-400c-9f36-01d8bd9b362d" /> Unfocus: <img width="420" alt="image" src="https://github.com/user-attachments/assets/19805293-b419-4669-8a93-e9cf41900403" /> Release Notes: - Reduced selection opacity when the editor is out of focus to make inactive states clearer.
Smit Barmase created
7880e2b
docs: Clarify providers in edit-prediction.md (#39655)
Release Notes: - N/A --------- Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Ted Robertson , Danilo Leal , and Danilo Leal created
ab22478
Update extension docs to mention BSD 3-Clause is a valid license (#40934)
Release Notes: - N/A
Joseph T. Lyons created
6ed9c02
Don't migrate empty formatter array (#40932)
Follow up for #40409 Fix for https://github.com/zed-industries/zed/issues/40874#issuecomment-3433759849 Release Notes: - Fixed an issue where having an empty formatter array in your settings `"formatter": []` would result in an erroneous prompt to migrate settings
Ben Kunkle created
93136a9
Update extension docs to mention GNU GPLv3 is a valid license (#40933)
Merge after: - https://github.com/zed-industries/extensions/pull/3641 Release Notes: - N/A
Joseph T. Lyons created
f393138
Fix keybind hints flickering in certain scenarios (#40927)
Closes #39172 This refactors when we resolve UI keybindings in an effort to reduce flickering whilst painting these: Previously, we would always resolve these upon creating the binding. This could lead to cases where the corresponding context was not yet available and no binding could be resolved, even if the binding was then available on the next presented frame. Following that, on the next rerender of whatever requested this keybinding, the keybind for that context would then be found, we would render that and then also win a layout shift in that process, as we went from nothing rendered to something rendered between these frames. With these changes, this now happens less often, because we only look for the keybinding once the context can actually be resolved in the window. | Before | After | | --- | --- | | https://github.com/user-attachments/assets/adebf8ac-217d-4c7f-ae5a-bab3aa0b0ee8 | https://github.com/user-attachments/assets/70a82b4b-488f-4a9f-94d7-b6d0a49aada9 | Also reduced cloning in the keymap editor in this process, since that requiered changing due to this anyway. Release Notes: - Fixed some cases where keybinds would appear with a slight delay, causing a flicker in the process
Finn Evers created
ed5b9a4
Rework inlay hints system (#40183)
Closes https://github.com/zed-industries/zed/issues/40047 Closes https://github.com/zed-industries/zed/issues/24798 Closes https://github.com/zed-industries/zed/issues/24788 Before, each editor, even if it's the same buffer split in 2, was querying for inlay hints separately, and storing the whole inlay hint twice, in `Editor`'s `display_map` and its `inlay_hint_cache` fields. Now, instead of `inlay_hint_cache`, each editor maintains a minimal set of metadata (which area was queried by what task) instead, and all LSP inlay hint data had been moved into `LspStore`, both local and remote flavors store the data. This allows Zed, as long as a buffer is open, to reuse the inlay hint data similar to how document colors and code lens are now stored and reused. Unlike other reused LSP data, inlay hints data is the first one that's possible to query by document ranges and previous version had issue with caching and invalidating such ranges already queried for. The new version re-approaches this by chunking the file into row ranges, which are queried based on the editors' visible area. Among the corresponding refactoring, one notable difference in inlays display are multi buffers: buffers in them are not [registered](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_didOpen) in the language server until a caret/selection is placed inside their excerpts inside the multi buffer. New inlays code does not query language servers for unregistered buffers, as servers usually respond with empty responses or errors in such cases. Release Notes: - Reworked inlay hints to be less error-prone --------- Co-authored-by: Lukas Wirth <lukas@zed.dev> Co-authored-by: dino <dinojoaocosta@gmail.com> Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
Kirill Bulatov , Lukas Wirth , dino , and Lukas Wirth created
5738bde
gpui: Make `Empty` request layout with `Display::None` by default (#40900)
Release Notes: - N/A
Finn Evers created
6622902
agent: Only show compatible tools in profile selector (#40917)
In practice this just hides the web search tool when not using the Zed provider Release Notes: - Fixed an issue where the web search tool would show up in the profile selector even when not using a model via Zed Pro
Bennet Fenner created
cb7881e
Fix migration from #40409 for users who haven't been migrated yet (#40916)
Closes #40874 Release Notes: - Fixed an issue where migrating settings after v0.208.5+ would spuriously enable prettier. This fix only affects those who have not updated or migrated yet. For those who have already updated to version v0.208.5 or later, placing `"formatter": []` in your settings in the affected languages will fix the issue. --------- Co-authored-by: Mikayla <mikayla@zed.dev>
Ben Kunkle and Mikayla created
c60343a
eval: Port to agent2 (#40704)
Release Notes: - N/A
Bennet Fenner created
4a93719
Upgrade `async-tar` to v0.5.1 (#40911)
This PR switches us back to the upstream version of `async-tar` and upgrades to v0.5.1. This version has the patch we need: https://github.com/dignifiedquire/async-tar/commit/0c181956395fa28a9ae45786a57c9cf58c413e84. Release Notes: - N/A
Marshall Bowers created