4cd7f9b
clippy
Julia Ryan created
4cd7f9b
clippy
Julia Ryan created
e461d55
Fix shared ownership
Julia Ryan created
e3ed4ac
Restart crash handler on disconnect
Julia Ryan created
0ee6ca1
project: Fix inability to open file after save as (#41012)
Update `project::buffer_store::BufferStore.save_buffer_as` in order to correctly update the `path_to_buffer_id` hash map, ensuring that the currently open file's path is dissociated from the buffer's id, to prevent the new buffer from being open when trying to open the original file. Closes #29783 Release Notes: - Fixed issue where using `workspace: save as` would prevent users from opening the original file from which the new file was created --------- Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Dino and Piotr Osiewicz created
762082b
ui_input: Donβt focus previous on decrement in `NumberField` (#41095)
This PR removes the behavior that the number_field changes focus to the previous element when using the decrement button. I mainly noticed this while decreasing the tab-size of a language, since it there closes the page... Please note that I am unsure what if any purpose this code has. I was unable to find a use case and since it is not present in the `increment_handler` I guess it should never have been here --- Release Notes: * Fixed wrongly focus previous element on number_field decrement
ToBinio created
fcd690d
Enable `source.organizeImports.ruff` by default for Python (#41103)
Release Notes:
- Enabled automatic import organization, via
[ruff](https://github.com/astral-sh/ruff), when saving Python files. To
disable this, use:
```json
"Python": {
"code_actions_on_format": { "source.organizeImports.ruff": false }
}
```
Joseph T. Lyons created
8de4b36
ACP Extensions (#40663)
Adds the ability to install ACP agents via extensions Release Notes: - N/A *or* Added/Fixed/Improved ...
Richard Feldman created
7644e79
agent: Fix edit_agent evals (#40921)
Release Notes: - N/A
Bennet Fenner created
4fb9113
ui: Use `focus_visible` method for some components (#41077)
Using the cool, [recently added](https://github.com/zed-industries/zed/pull/40940) `focus-visible` support in some components. This will be particularly nice in the settings UI, as it will not display the focus styles if you're navigating it with a pointer device as opposed to the keyboard. Release Notes: - N/A
Danilo Leal created
f45a9b3
git: Branch diff (#40188)
Release Notes: - git: Adds the ability to view the diff of the current branch since main --------- Co-authored-by: Cole Miller <cole@zed.dev>
Conrad Irwin and Cole Miller created
f11a3dc
settings_ui: Add small UI adjustments (#41065)
Super tiny changes that impact mostly Windows/Linux. Release Notes: - N/A
Danilo Leal created
5aa8288
rules library: Improve empty state & fix quirks on Windows (#41064)
Just got a new Windows machine and realized that the rules library empty state was completly busted. Ended up also adding some little UI tweaks to make it better for both Windows and Linux. Release Notes: - N/A
Danilo Leal created
fe730e9
Fix typo in Font Features description, s/b "OpenType" (#41058)
Fix typo (regression?), "Opentype" should be "OpenType" Closes #ISSUE Release Notes: - N/A
warrenjokinen created
59a98ba
Add attribution for code sourced from Windows Terminal (#41061)
Release Notes: - N/A
John Tur created
1cf765e
Revert: Spawn terminal process on background executor (#41060)
Reverts https://github.com/zed-industries/zed/pull/40774 and https://github.com/zed-industries/zed/pull/40824 since they introduce a bug where Nushell processes are leaked and Ctrl+C doesn't kill the current process. Release Notes: - Fix a bug where nushell processes wouldn't get killed after closing a terminal tab
Agus Zubiaga created
79eff1f
Make cursor move to duplicated line when duplicating line up (#41004)
 Closes #40919 Follow-up of #39610 Release Notes: - When duplicating line up, fixed cursor to move to the duplicated line
Tom Planche created
af0d2ad
docs: Fix small grammatical typo in JSX section (#41055)
Happened to notice this typo while going through the docs. Release Notes: - N/A --- π
Kunall Banerjee created
f0ac54e
settings_ui: Fix memory leak (#41036)
Closes #40351 The leak mainly showed up in the appearance page because it had a lot of dropdown menus. The problem occurred because the drop-down menus were creating a new entity on each frame instead of using the `window.use_state...` API. Release Notes: - settings ui: Fixed memory leak in UI --------- Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Anthony Eid and Mikayla Maki created
68707ff
crashes: Avoid crash handler on detached threads (#40883)
Set a TLS bit to skip invoking the crash handler when a detached thread panics. cc @P1n3appl3 - is this at odds with what we need the crash handler to do? May close #39289, cannot repro without a nightly build Release Notes: - Fixed extension panics crashing Zed on Linux Co-authored-by: dino <dinojoaocosta@gmail.com>
Nia and dino created
1ce9a85
git: Only save dirty files during staging (#41047)
Closes #40581 Release Notes: - git: No longer save clean files when staging (to avoid triggering unnecessary rebuilds in external file watchers like vite)
Conrad Irwin 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