257d10f
This commit is locking up diagnostics on Zed eccdfed32b6cfd3d7bb687e32f2c1de7665afb31
Nathan Sobo created
257d10f
This commit is locking up diagnostics on Zed eccdfed32b6cfd3d7bb687e32f2c1de7665afb31
Nathan Sobo created
eccdfed
gpui: Convert macOS clipboard file URLs to paths for paste (#36848)
- On macOS, pasting now inserts the actual file path when the clipboard contains a file URL (public.file-url/public.url) - Terminal paste remains text-only; no temp files or data URLs are created. If only raw image bytes exist on the clipboard, paste is a no-op. - Scope: macOS only; no dependency changes. - Added a test (test_file_url_converts_to_path) that verifies URL→path conversion using a unique pasteboard. Release Notes: - Improved pasting on macOS: now inserts the actual file path when the clipboard contains a file URL (enables image paste support for Claude Code)
Sean Timm created
2664596
gpui: Fix incorrect handling of Function key modifier on macOS (#38518)
On macOS, the Function key is reserved for system use and should not be used in application code. This commit updated keystroke matching and key event handling to ignore the Function key modifier while users are typing or pressing keybindings. For some keyboards with compact layout (like my 65% keyboard), there is no separated backtick key. Esc and it shares the same physical key. To input backtick, users may press `Fn-Esc`. However, macOS will still deliver events with Fn key modifier to applications. Cocoa framework can handle this correctly, which typically ignore the Fn directly. GPUI should also follow the same rule, otherwise, the backtick key on those keyboards won't work. Release Notes: - Fixed a bug where typing fn-\` on macOS would not insert a `.
Cyandev created
23f2fb6
Run ACP login from same cwd as agent server (#42038)
This makes it possible to do login via things like `cmd: "node", args: ["my-node-file.js", "login"]` Also, that command will now use Zed's managed `node` instance. Release Notes: - ACP extensions can now run terminal login commands using relative paths
Richard Feldman created
fb2c2c5
Fix windows crash handler (#42039)
Closes #41471 We were killing the crash handler when it received a second copy of any of the messages, but this GPU specs one is sent on each new window rather than once at startup. We could gate the sending to only happen once, but it's simpler to just allow multiple gpu specs messages. Release Notes: - N/A
Julia Ryan created
8315fde
Fix LSP spawning by resetting exception ports in child processes (#40716)
## Summary Fixes #36754 This PR fixes an issue where LSPs fail to spawn after the crash handler is initialized. ## Problem After PR #35263 added minidump crash reporting, some users experienced LSP spawn failures. The issue manifests as: - LSPs fail to spawn with no clear error messages - The problem only occurs after crash handler initialization - LSPs work when a debugger is attached, revealing a timing issue ### Root Cause The crash handler installs Mach exception ports for minidump generation. Due to a timing issue, child processes inherit these exception ports before they're fully stabilized, which can block child process spawning. ## Solution Reset exception ports in child processes using the `pre_exec()` hook, which runs after `fork()` but before `exec()`. This prevents children from inheriting the parent's crash handler exception ports. ### Implementation - Adds macOS-specific implementation of `new_smol_command()` that resets exception ports before exec - Calls `task_set_exception_ports` to reset all exception ports to `MACH_PORT_NULL` - Graceful error handling: logs warnings but doesn't fail process spawning if port reset fails Release Notes: - Fixed LSPs failing to spawn on some macOS systems --------- Co-authored-by: Julia Ryan <juliaryan3.14@gmail.com>
Rémi Kalbe and Julia Ryan created
fc87440
Update Windows docs (#41423)
- Document Arm64 support - Document minimum Windows version requirements Release Notes: - N/A
John Tur created
c996ead
Update editor data only after real scroll reports (#42035)
Release Notes: - N/A
Kirill Bulatov created
e8c6c1b
agent_ui: Fix how icons from external agents are displayed (#42034)
Release Notes: - N/A
Danilo Leal created
b8364d7
node: Move managed runtime to v24 LTS (#41956)
Release Notes: - Moved managed Node runtime to v24 LTS
versecafe created
7c23ef8
Fix corrupted characters being inserted when Alt is pressed (#42033)
The Alt+Numpad buffer that's maintained by the input stack is getting corrupted, leading to garbage characters being inserted on keystrokes like Alt+Up. Disable the automatic handling of Alt+Numpad for now until the cause of this corruption is understood. The Alt+Numpad input did not work anyway, so this does not regress anything. Release Notes: - windows: Fixed corrupted characters being inserted when Alt is pressed (preview only)
John Tur created
2f46337
Refactor buffer headers to collapse on click (#42021)
Release Notes: Updated how clicking on multi-buffer headers works to provide better control and prevent unexpected navigation: Clicking the header now collapses/expands the file section instead of opening the file. Opening files can be done by clicking the filename or the "Open file" button on the right side of the header. Existing shortcuts continue to work: use the left chevron to collapse or your keyboard shortcut to jump to the file **Demo:** https://github.com/user-attachments/assets/dca9ccc5-bd98-416c-97af-43b4e4b2f903
Matt Miller created
feed34c
gpui: Add support for rendering SVG from external files (#42024)
Release Notes: - N/A --------- Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Danilo Leal and Mikayla Maki created
4724aa5
Bump Zed to v0.213 (#42018)
Release Notes: - N/A
Joseph T. Lyons created
366a5db
collab_ui: Show parents when searching channels (#42005)
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Cameron Mcloughlin and Danilo Leal created
81e87c4
settings ui: Fix divider in items that doesn't have subfields (#42016)
Release Notes: - N/A Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Danilo Leal and cameron created
b8ba663
Revert "Refactor completions" (#42014)
Reverts zed-industries/zed#41939
Andrew Farkas created
27fb109
Revert "editor: Add action to move between snippet tabstop positions" (#42008)
Reverts zed-industries/zed#41466 This PR would add "in_snippet" context when there wasn't a completion menu visible, causing some actions to not be hit. Release Note: - N/A
Anthony Eid created
0f5a63a
agent_ui: Make "waiting confirmation" state more apparent (#41998)
This PR changes the loading/generating indicator when in the "waiting for tool call confirmation" state so that's a bit more visible and discernible as needing your attention, as opposed to a regular generating state. <img width="400" alt="Screenshot 2025-11-05 at 10 46@2x" src="https://github.com/user-attachments/assets/88adbf97-20fb-49c4-9c77-b0a3a22aa14e" /> Release Notes: - agent: Improved the "waiting for confirmation" state visibility so that you more rapidly know the agent is waiting for you to act.
Danilo Leal created
c8ada5b
agent_ui: Reduce label repetitiveness on new thread menu (#42001)
Mostly just removing "thread" from all external agent menu items; I think we can do without it and it already becomes much better/cleaner. Release Notes: - N/A
Danilo Leal created
27a1884
open_ai: Make the deltas optional (#39142)
I am using an Azure OpenAI instance since that is what is provided at work and with how they have it setup not all responses contain a delta, which lead to errors and truncated responses. This is related to how they are filtering potentially offensive requests and responses. I don't believe this filter was made in-house, instead I believe it is provided by Microsoft/Azure, so I suspect this fix may help other users. Release Notes: - N/A Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Techy and Bennet Bo Fenner created
2bc1d60
remote: Fix open terminal fails when $SHELL is not set (#41990)
Closes #41644 Release Notes: - Fixed issue where it failed to spawn terminal on systems such as Alpine.
Smit Barmase created
17933f1
Update documentation on Java support (#41758)
This brings the documentation on Java in line with the much changed reality of the Java extension. Note that the correctness of this is contingent on https://github.com/zed-industries/extensions/pull/3745 being merged. Release Notes: - N/A
Karl-Erik Enkelmann created
cd87307
language: Fix language detection for injected syntax layers (#41111)
Closes #40632
**TL;DR:** The `wrap selections in tag` action was unavailable in ERB
files, even when the cursor was positioned in HTML content (outside of
Ruby code blocks). This happened because `syntax_layer_at()` incorrectly
returned the Ruby language for positions that were actually in HTML.
**NOTE:** I am not familiar with that part of Zed so it could be that
the fix here is completely incorrect.
Previously, `syntax_layer_at` incorrectly reported injected languages
(e.g., Ruby in ERB files) even when the cursor was in the base language
content (HTML). This broke actions like `wrap selections in tag` that
depend on language-specific configuration.
The issue had two parts:
1. Missing start boundary check: The filter only checked if a layer's
end was after the cursor (`end_byte() > offset`), not if it started
before, causing layers outside the cursor position to be included. See
the `BEFORE` video: when I click on the HTML part it reports `Ruby`
language instead of `HTML`.
2. Wrong boundary reference for injections: For injected layers with
`included_sub_ranges` (like Ruby code blocks in ERB), checking the root
node boundaries returned the entire file range instead of the actual
injection ranges.
This fix:
- Adds the containment check using half-open range semantics [start,
end) for root node boundaries. That ensures proper reporting of the
detected language when a cursor (`|`) is located right after the
injection:
```
<body>
<%= yield %>|
</body>
```
- Checks `included_sub_ranges` for injected layers to determine if the
cursor is actually within an injection
- Falls back to root node boundaries for base layers without sub-ranges.
This is the original behavior.
Fixes ERB language support where actions should be available based on
the cursor's actual language context. I think that also applies to some
other template languages like HEEX (Phoenix) and `*.pug`. On short
videos below you can see how I navigate through the ERB template and the
terminal on the right outputs the detected language if you apply the
following patch:
```diff
diff --git i/crates/editor/src/editor.rs w/crates/editor/src/editor.rs
index 15af61f5d2..54a8e0ae37 100644
--- i/crates/editor/src/editor.rs
+++ w/crates/editor/src/editor.rs
@@ -10671,6 +10671,7 @@ impl Editor {
for selection in self.selections.disjoint_anchors_arc().iter() {
if snapshot
.language_at(selection.start)
+ .inspect(|language| println!("Detected language: {:?}", language))
.and_then(|lang| lang.config().wrap_characters.as_ref())
.is_some()
{
```
**Before:**
https://github.com/user-attachments/assets/3f8358f4-d343-462e-b6b1-3f1f2e8c533d
**After:**
https://github.com/user-attachments/assets/c1b9f065-1b44-45a2-8a24-76b7d812130d
Here is the ERB template:
```
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
/* Email styles need to be inline */
</style>
</head>
<body>
<%= yield %>
</body>
</html>
```
Release Notes:
- N/A
Vitaly Slobodin created
11b29d6
ruby: Add note about enabling Ruby LSP for ERB files (#41851)
Hi, this is a follow-up change for https://github.com/zed-industries/zed/pull/41754 I think it important to keep existing things working. So add notes to the Ruby extension doc about enabling Ruby LSP for ERB files as well. Thanks! Release Notes: - N/A
Vitaly Slobodin created
c061698
project: Fetch latest lsp data in `deduplicate_range_based_lsp_requests` (#41971)
Fixes ZED-2MK Release Notes: - Fixed a panic in inlay hints
Lukas Wirth created
b4f7af0
Work around codegen bug with GetKeyboardState (#41970)
Works around an issue, which can be reproduced in the following program:
```rs
use windows::Win32::UI::Input::KeyboardAndMouse::{GetKeyboardState, VK_CONTROL};
fn main() {
let mut keyboard_state = [0u8; 256];
unsafe {
GetKeyboardState(&mut keyboard_state).unwrap();
}
let ctrl_down = (keyboard_state[VK_CONTROL.0 as usize] & 0x80) != 0;
println!("Is Ctrl down: {ctrl_down}");
}
```
In debug mode, this program prints the correct answer. In release mode,
it always prints false. The optimizer appears to think that
`keyboard_state` isn't mutated and remains zeroed, and folds the
`modifier_down` comparisons to `false`.
Release Notes:
- N/A
John Tur created
c83621f
editor: Fix setting multi_cursor_modifier opens implementation in new pane instead of new tab (#41963)
Closes #41014 Release Notes: - Fixed an issue where `multi_cursor_modifier` set to `cmd_or_ctrl` opens implementation in new pane instead of new tab.
Smit Barmase created
0da52d6
Add ACP terminal-login via _meta field (#41954)
As discussed with @benbrandt and @mikayla-maki: * We now tell ACP clients we support the nonstandard `terminal-auth` `_meta` field for terminal-based authentication * In the future, we anticipate ACP itself supporting *some* form of terminal-based authentication, but that hasn't been designed yet or gone through the RFD process * For now, this unblocks terminal-based auth Release Notes: - Added experimental terminal-based authentication to ACP support
Richard Feldman created
60ee0dd
Use our `node` runtime for ACP extensions (#41955)
Release Notes: - Now ACP extensions use Zed's managed Node.js runtime --------- Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Richard Feldman and Mikayla Maki created
9fc4abd
Re-enable preview auto-release (#41952)
Patch releases to preview will now automatically release Release Notes: - N/A
Conrad Irwin created
2ead8c4
Improve Windows text input for international keyboard layouts and IMEs (#41259)
- Custom handling of dead keys has been removed. UX for dead keys is now the same as other applications on Windows. - We could bring back some kind of custom UI, but only if UX is fully compatible with expected Windows behavior (e.g. ability to move the cursor after typing a dead key). - Fixes https://github.com/zed-industries/zed/issues/38838 - Character input via AltGr shift state now always has priority over keybindings. This applies regardless of whether the keystroke used the AltGr key or Ctrl+Alt to enter the shift state. - In particular, we use the following heuristic to determine whether a keystroke should trigger character input first or trigger keybindings first: - If the keystroke does not have any of Ctrl/Alt/Win down, trigger keybindings first. - Otherwise, determine the character that would be entered by the keystroke. If it is a control character, or no character at all, trigger keybindings first. - Otherwise, the keystroke has _any_ of Ctrl/Alt/Win down and generates a printable character. Compare this character against the character that would be generated if the keystroke had _none_ of Ctrl/Alt/Win down: - If the character is the same, the modifiers are not significant; trigger keybindings first. - If there is no active input handler, or the active input handler indicates that it isn't accepting text input (e.g. when an operator is pending in Vim mode), character entry is not useful; trigger keybindings first. - Otherwise, assume the modifiers enable access to an otherwise difficult-to-enter key; trigger character entry first. - Fixes https://github.com/zed-industries/zed/issues/35862 - Fixes https://github.com/zed-industries/zed/issues/40054#issuecomment-3447833349 - Fixes https://github.com/zed-industries/zed/issues/41486 - TranslateMessage calls are no longer skipped for unhandled keystrokes. This fixes language input keys on Japanese and Korean keyboards (and surely other cases as well). - To avoid any other missing-TranslateMessage headaches in the future, the message loop has been rewritten in a "traditional" Win32 style, where accelerators are handled in the message loop and TranslateMessage is called in the intended manner. - Fixes https://github.com/zed-industries/zed/issues/39971 - Fixes https://github.com/zed-industries/zed/issues/40300 - Fixes https://github.com/zed-industries/zed/issues/40321 - Fixes https://github.com/zed-industries/zed/issues/40335 - Fixes https://github.com/zed-industries/zed/issues/40592 - Fixes https://github.com/zed-industries/zed/issues/40638 - As a bonus, Alt+Space now opens the system menu, since it is triggered by the WM_SYSCHAR generated by TranslateMessage. - VK_PROCESSKEYs are now ignored rather than being unwrapped and matched against keybindings. This ensures that IMEs will reliably receieve keystrokes that they express interest in. This matches the behavior of native Windows applications. - Fixes https://github.com/zed-industries/zed/issues/36736 - Fixes https://github.com/zed-industries/zed/issues/39608 - Fixes https://github.com/zed-industries/zed/issues/39991 - Fixes https://github.com/zed-industries/zed/issues/41223 - Fixes https://github.com/zed-industries/zed/issues/41656 - Fixes https://github.com/zed-industries/zed/issues/34180 - Fixes https://github.com/zed-industries/zed/issues/41766 Release Notes: - windows: Improved keyboard input handling for international keyboard layouts and IMEs
John Tur created
0a4b1ac
inline assistant: Mention ability to add context with @ in the placeholder (#41950)
This has been possible in the inline assistant for ages now and maybe you didn't know because we didn't say anything about it! This PR fixes that by including that you can @-mention context on it the same you can in the agent panel. Release Notes: - N/A
Danilo Leal created
f9fb855
Fetch (just) enough refs in script/cherry-pick (#41949)
Before this change we'd download all the tagged commits, but none of their ancestors, this was slow and made cherry-picking fail. Release Notes: - N/A
Conrad Irwin created
b587a62
No-op commit to test cherry-picking (#41948)
Closes #ISSUE Release Notes: - N/A
Conrad Irwin created
1b2e38b
More tweaks to CI pipeline (#41941)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
Conrad Irwin created
4339c77
Tidy up `Edit in json` footer entries (#41890)
Before: <img width="350" height="109" alt="before" src="https://github.com/user-attachments/assets/d5d3e6bd-3a65-4d7d-8585-1e4d8f72997f" /> After: <img width="310" height="103" alt="after" src="https://github.com/user-attachments/assets/40137084-7323-4a79-b95b-a020c418646b" /> * All items got a keybinding label * All items were made of a non-small size, to match the text size in the right button * Keybindings are rendered as disabled for disabled buttons Release Notes: - N/A Co-authored-by: Lukas Wirth <lukas@zed.dev>
Kirill Bulatov and Lukas Wirth created
ba7ea71
node_runtime: Improve proxy mapping (#41807)
Closes #ISSUE More accurately map localhost to `127.0.0.1`. Previously we would lowercase and simply replace all instances of localhost inside of the URL string, meaning query parameters, username, password etc. could not contain the string `localhost` or contain uppercase letters without getting modified. Added a test ensuring the mapping logic works. The previous implementation would fail this new test. Release Notes: - Improved the behavior of mapping `localhost` to `127.0.0.1` when passing configured proxy urls to `node`
tidely created
cd04450
Refactor completions (#41939)
This is progress toward multi-word snippets (including snippets with prefixes containing symbols) Release Notes: - Removed `trigger` argument in `ShowCompletions` command --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Andrew Farkas and Conrad Irwin created
769a8a6
windows: Automatically find Windows SDK when building gpui (#38711)
### Summary This PR changes `gpui/build.rs` to look up the Windows SDK directory in the registry instead of falling back to a hard-coded path. --- ### Problem Currently, building `gpui` on Windows requires `fxc.exe` to be in `PATH` or at a predefined location (unless `GPUI_FXC_PATH` is set). This requires to maintain a certain build environment with proper paths/vars or to install the specific SDK version. It is possible to find the SDK automatically using the registry keys it creates upon installation. Specifically in `SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0` branch there are: * `InstallationFolder` telling the SDK installation location; * `ProductVersion` telling the SDK version in use. These keys provide enough information to locate the SDK binaries, with added robustness: * handles non-standard SDK installation path; * deterministically selects the latest SDK when multiple versions are present. --- ### Changes Made * **Updated `crates/gpui/build.rs`**: * added dependency on `winreg` * introduced `find_latest_windows_sdk_binary()` helper * updated fallback logic to use registry lookup This PR only changes the fallback location, and does not touch the established environment-based workflow. Release Notes: - N/A --- ### Impact Reduces manual configuration needed to build GPUI on Windows. --------- Co-authored-by: John Tur <john-tur@outlook.com>
Sergey Cherepanoff and John Tur created
94ff4aa
AI: Fix Github Copilot edit predictions failing to start (#41934)
Closes #41457 #41806 #41801 Copilot started using `node:sqlite` module which is an experimental feature between node v22-v23 (stable in v24). The fix was passing in the experimental flag when Zed starts the copilot LSP. I tested this with v20.19.5 and v24.11.0. The fix got v20.19 working and didn't affect v24.11 which was already working. Release Notes: - AI: Fix Github Copilot edit predictions failing to start
Anthony Eid created
1e14804
Fix integer underflow in autosave mode after delay in the settings (#41898)
Closes #41774 Release Notes: - settings_ui: Fixed an integer underflow panic when attempting to hit the `-` sign on settings item that take delays in milliseconds
Ignasius created
cdd7d4b
windows: Skip `AppendCategory` call when there are no shell links (#37926)
`ICustomDestinationList::AppendCategory` rejects an empty `IObjectArray` and returns an `E_INVALIDARG` error. Error propagated and caused an early-return from `update_jump_list()`. <img width="1628" height="540" alt="image" src="https://github.com/user-attachments/assets/f8143297-c71e-42a1-a505-66cd77dfa599" /> Release Notes: - N/A
scuzqy created
4fd2b3f
editor: Jumping to diagnostics unfolds target locations (#41932)
Release Notes: - Jumping to diagnostics no longer skips over folded regions. The folded region that contains a target diagnostic is now unfolded.
Piotr Osiewicz created
43a7f96
Improve compare_perf.yml, cherry_pick.yml (#41606)
Release Notes: - N/A --------- Co-authored-by: Nia Espera <nia@zed.dev>
Conrad Irwin and Nia Espera created
2a2e04b
Add docs for settings profiles (#41931)
Release Notes: - N/A
Joseph T. Lyons created
9bf212b
lsp: Fix dynamic registration of document diagnostics (#41929)
- lsp: Fix dynamic registration of diagnostic capabilities not taking effect when an initial capability is not specified Gist of the issue lies within use of .get_mut instead of .entry. If we had not created any dynamic capability beforehand, we'd miss a registration, essentially - **Determine whether to update remote caps in a smarter manner** Release Notes: - Fixed document diagnostics with Ty language server.
Piotr Osiewicz created
38cd16a
Fix save_last_workspace (#41907)
Closes #37348 Release Notes: - Fixed last workspace window restoration on linux/windows
localcc created
d8655f0
settings_ui: Fix dropdowns after #41036 (#41920)
Closes #41533 Both of the issues in the release notes that are fixed in this PR, were caused by incorrect usage of the `window.use_state` API. The first issue was caused by calling `window.use_state` in a render helper, resulting in the element ID used to share state being the same across different pages, resulting in the state being re-used when it should have been re-created. The fix for this was to move the `window.state` (and rendering logic) into a `impl RenderOnce` component, so that the IDs are resolved during the render, avoiding the state conflicts. The second issue is caused by using a `move` closure in the `window.use_state` call, resulting in stale closure values when the window state is re-used. Release Notes: - settings_ui: Fixed an issue where some dropdown menus would show options from a different dropdown when clicked - settings_ui: Fixed an issue where attempting to change a setting in a dropdown back to it's original value after changing it would do nothing
Ben Kunkle created
91d631c
Evaluate zeta2 context retrieval and edit predictions (#41921)
This PR implements the `zeta-cli eval` command. It will: - Run the edit prediction model if there are no cached results - Compute precision/recall/F1 for context retrieval at the line level: every retrieved line of context is counted as a true positive (correct retrieval), false positive (retrieved something that was not expected), or false negative (didn't retrieve an expected line) - Compute similar metrics for edit predictions - Pretty-print results, highlighting the difference between actual and expected when printing to tty Other changes: - `zeta-cli predict` accepts a `--format` argument with options `md`, `json`, `diff` - Code restructure Release Notes: - N/A --------- Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Co-authored-by: Agus Zubiaga <agus@zed.dev>
Oleksiy Syvokon , Piotr Osiewicz , and Agus Zubiaga created