583a479
ep cli: Load captured examples from Snowflake (#46102)
Click to expand commit body
Release Notes: - N/A
Agus Zubiaga created
583a479
ep cli: Load captured examples from Snowflake (#46102)
Release Notes: - N/A
Agus Zubiaga created
216933f
Multibuffer breadcrumbs toolbar redesign (#45547)
Breadcrumb visual reorchestration which makes a couple of key changes: - Breadcrumbs are now displayed in file headers for multibuffer views. Singleton buffers are unchanged. - Multibuffer views now have collapse/expand all buttons available in the toolbar - Search in multibuffer views now takes up less space, by occupying the primary toolbar location erstwhile taken up by breadcrumbs <img width="1721" height="823" alt="Screenshot 2025-12-22 at 4 15 41 PM" src="https://github.com/user-attachments/assets/38e924f7-fe9e-4c83-84fb-2eee98137f43" /> <img width="1722" height="762" alt="Screenshot 2025-12-22 at 4 15 51 PM" src="https://github.com/user-attachments/assets/ccc98ca3-75ce-4aca-bceb-890817b0f04d" /> Release Notes: - Moved breadcrumbs to file headers in multibuffer views - Added collapse/expand all options for multibuffer views - Improved use of space for multibuffer search by taking the place of the former breadcrumb toolbar location --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com> Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
KyleBarton , Danilo Leal , and Zed Zippy created
9fcb36a
docs: Fix Vim documentation for `toggle_relative_line_numbers` (#46152)
As reported in https://github.com/zed-industries/zed/pull/44749#issuecomment-3712881279 Release Notes: - N/A
Finn Evers created
bbb3d51
settings_ui: Fix scrollbar breaking when UI font size changes (#45099)
When the UI font size changes, the settings window's scrollbar would break because list item measurements were cached and not invalidated. We're using `ListState.measure_all()` to pre-measure all items for an accurate scrollbar. When font size changes, these cached measurements become stale but weren't being refreshed. This commit fixes the issue by calling `ListState.measure_all()` when settings change, ensuring items are re-measured on the next layout without affecting scroll position. Closes #43683 Release Notes: - Fixed bug where changing the UI Font Size in the Settings UI would break the scrollbar for the "Appearance" page --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Dino and Zed Zippy created
d105331
project_panel: Fix file missing or duplicated when copying/moving multiple items using drag-n-drop (#45567)
Closes https://github.com/zed-industries/zed/issues/45555 Refer https://github.com/zed-industries/zed/pull/20859 for more. Release Notes: - Fixed a project panel drag-and-drop issue where selecting both a folder and its children could result in files being silently lost in some cases. --------- Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Rocky Shi and Smit Barmase created
b4fb8ff
recent_projects: Improve remote picker UX with long paths (#46151)
Closes #36503 Release Notes: - Improved readability of long paths in remote project picker
Lukas Wirth created
2c7bfec
project_panel: Fix right-click target for folded directories (#45876)
Closes #45635 Release Notes: - Fixed context menu in project panel targeting the wrong folder when right-clicking on folded directory paths. - Added hover feedback to folded path folders to indicate which folder will be targeted. Recording: https://github.com/user-attachments/assets/3209921a-b791-4eef-8eb7-1b5dc68374da --------- Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
André Eriksson and Smit Barmase created
fb06aa9
project: Properly set up the terminal env in remote shells (#46149)
Closes https://github.com/zed-industries/zed/issues/35698 Release Notes: - Fixed default zed terminal environment vars not being set in remote terminal shells
Lukas Wirth created
87fe1af
remote: Fix naming inconsistencies (#46146)
Renames a bunch of ssh things to remote when its actually about remotes in general Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
47d2694
Add support for subpixel text rendering (#45423)
Subpixel text rendering is now implemented on Windows and Linux. Comparison screenshots: |Before|After| | ------------- | ------------- | | <img width="400" src="https://github.com/user-attachments/assets/9d720d2c-2ec4-4adf-a83f-7c2d81d30025" /> | <img width="400" src="https://github.com/user-attachments/assets/8fd7dc2a-8ca0-4f71-86cd-55460f568f7a" /> | Release Notes: - Added support for subpixel (ClearType-style) text rendering. This improves the legibility of text on standard DPI displays. Subpixel rendering is enabled by default on Windows and Linux and can be configured using the `text_rendering_mode` setting. --------- Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
John Tur and Max Brunsfeld created
797276b
smol: Use `Unblock` instead of `Async` for stdin, stdout and stderr handles (#46141)
as per its documentation: `Async` supports all networking types, as well as some OS-specific file descriptors like timerfd and inotify. However, do not use `Async` with types like File, Stdin, Stdout, or Stderr because all operating systems have issues with them when put in non-blocking mode. Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
c7c0f56
languages: Capture escape sequences in C and C++ (#46116)
Before: <img width="901" height="247" alt="before" src="https://github.com/user-attachments/assets/95467f0a-e464-44ea-a8f3-bedccf57c6a9" /> After: <img width="967" height="256" alt="after" src="https://github.com/user-attachments/assets/5eb43918-4348-42d2-9174-3fafd82919d0" /> Release Notes: - Added highlighting for escape sequences for C and C++.
ozacod created
ec41d39
git: Add basic vim motions to git file history view (#45412)
Closes #ISSUE Related discussion #44629 Release Notes: - Added simple `g g`, `G`, `j` and `k` motions for the file history view on vim mode.
Alvaro Parker created
75dde03
Ensure language is set on diffs from `ActionLog` and `AcpThread` (#46129)
Release Notes: - N/A
Cole Miller created
f35e678
editor: Use less memory when replacing literal strings (#46092)
Found while profiling #38927 When the query is not a regex, the same replacement can be applied to all matches. Previously, `replacement_for` allocated a new String on every call, while `replacement` returns a reference. Release Notes: - N/A --------- Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Marco Mihai Condrache created
778609f
extension_host: Add error context to add_extension_to_index (#45913)
Missing required extension files or directories currently result in opaque "Directory not found" errors being logged during the update index phase. This can be frustrating to those developing extensions. Add some context so folks know where to start looking. Release Notes: - N/A --------- Co-authored-by: Kirill Bulatov <mail4score@gmail.com> Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Aru Sahni , Kirill Bulatov , and Kirill Bulatov created
8c0b088
Screenshot testing (#45259)
## Screenshot testing Adds visual testing infrastructure for GPUI that captures screenshots by rendering directly to Metal textures. The The screenshots end up in `target/visual_tests/` and look like this: <img width="2560" height="1600" alt="workspace_with_editor2" src="https://github.com/user-attachments/assets/54112343-4af1-4347-9bab-f099de97dd29" /> <img width="2560" height="1600" alt="project_panel2" src="https://github.com/user-attachments/assets/0cd54b61-dace-4398-a28e-0b4d7c2968f6" /> ### Key Features - **Direct texture capture**: Screenshots are captured by rendering the scene to a Metal texture and reading pixels directly from GPU memory, rather than using ScreenCaptureKit - **No visibility requirements**: Windows don't need to be visible on screen since we read directly from the render pipeline - **Deterministic output**: Captures exactly what GPUI renders, not what the OS compositor displays - **No permissions needed**: Doesn't require Screen Recording permission like ScreenCaptureKit would ### Running the Visual Tests ```bash # Run visual tests (compares against baselines) cargo run -p zed --bin visual_test_runner --features visual-tests # Update baseline images (when UI intentionally changes) UPDATE_BASELINE=1 cargo run -p zed --bin visual_test_runner --features visual-tests # View the captured screenshots open target/visual_tests/ ``` ### Implementation - `Window::render_to_image()` - Renders the current scene to a texture and returns an `RgbaImage` - `MetalRenderer::render_to_image()` - Core implementation that renders to a non-framebuffer-only texture - `VisualTestAppContext` - Test context that uses real macOS platform rendering - `VisualTestAppContext::capture_screenshot()` - Synchronous screenshot capture using direct texture rendering ### Usage ```rust let mut cx = VisualTestAppContext::new(); let window = cx.open_window(...)?; let screenshot: RgbaImage = cx.capture_screenshot(window.into())?; ``` Release Notes: - N/A --------- Co-authored-by: Amp <amp@ampcode.com>
Richard Feldman and Amp created
8ba030a
Delete pulled diagnostics when the source registration is unregistered (#46105)
Additionally, fix a race condition where we'd still insert diagnostics from a document or workspace pull even if the registration had been unregistered in the time since the request was issued. And, as a bonus: when a new pull diagnostics registration is added, issue document pulls immediately. This should fix regressions with basedpyright caused by https://github.com/zed-industries/zed/pull/43703. Release Notes: - N/A
John Tur created
6625997
languages: Include namespace in the outline for C++ (#45794)
Before: <img width="389" height="147" alt="image" src="https://github.com/user-attachments/assets/5412bde6-2f1b-4bb4-a06f-111724597372" /> After: <img width="404" height="139" alt="image" src="https://github.com/user-attachments/assets/8f906245-4c6e-4cf0-bb32-1b47048f46c0" /> Release Notes: - Include namespace symbol in the outline view for C++.
Haojian Wu created
0e5b6a5
outline: Fix nesting issue for variable declarations (#45797)
Before: <img width="665" height="116" alt="image" src="https://github.com/user-attachments/assets/3c0b6ea4-f030-4fef-a0eb-8251ce16a651" /> After: <img width="601" height="104" alt="image" src="https://github.com/user-attachments/assets/31659c75-6f73-40e7-9d3b-c4ae99357b12" /> The fix is similar to https://github.com/zed-industries/zed/pull/36076. Release Notes: - Fix outline nesting issue for variable declarations in C++
Haojian Wu created
e07a304
ci: Use `zed-zippy` identity for `bump_patch_version.yml` (#46099)
This PR updates the `bump_patch_version.yml` to also be generated by `cargo xtask workflows` and updates this to use the `zed-zippy` identity instead of the `ConradIrwin` identity. Release Notes: - N/A
Finn Evers created
72c7a31
Fix minidump upload request (#46091)
Release Notes: - N/A --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Julia Ryan and Zed Zippy created
93c447e
zeta2: Fix double lease panic in event capture (#46096)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
62ae7fb
Add global and HTTP context server timeout settings (#45378)
### Closes - Maybe https://github.com/zed-industries/zed/issues/38252 (there might be something going on with NPX too) - Also addresses https://github.com/zed-industries/zed/pull/39021#issuecomment-3644818347 ### Why Some more involved MCP servers timeout often, especially on first setup. I got tired of having to set timeouts manually per server. I also noticed a timeout could not be set for http context servers, which causes Context7 or GitHub's remote servers to timeout at 60s sometimes. ### Overview MCP Timeout Configuration Feature This PR adds additional configurable timeout settings for Model Context Protocol servers including a global timeout and the addition of timeouts for http servers, addressing issues where servers were timing out after a fixed 60 seconds regardless of user needs. **Key Features:** - **Global timeout setting** (`context_server_timeout`) - default timeout for all MCP servers (default: 60s, max: 10min) - **Per-server timeout overrides** - individual servers can specify custom timeouts via `timeout` field - **Precedence hierarchy** - per-server timeout > global timeout > default (60s) - **Automatic bounds checking** - enforces 10-minute maximum to prevent resource exhaustion - **Support for both transports** - works with stdio and HTTP-based context servers - **Comprehensive test coverage** - 3 new tests validating global, override, and stdio timeout behavior - **Full backward compatibility** - existing configurations work unchanged with sensible defaults ### Release Notes: - Added the ability to configure timeouts for context server tool calls. The new global `context_server_timeout` setting controls the default timeout (default is 60s, max: 10min). Additionally, per-server timeouts can be configured using the `timeout` field within servers defined in the `"context_servers" setting --------- Co-authored-by: Ben Kunkle <ben@zed.dev>
John D. Swanson and Ben Kunkle created
beece46
language: Remove embeds support (#46076)
Embeddings have neither been used nor maintained in over a year and there are currently no plans to use these again any time soon. Hence, remove support for these here to more clearly indicate that these are actually not used. Release Notes: - N/A
Finn Evers created
dd0d51b
Sync the winget repo before publishing (#46093)
This seemed to fix a bug where our winget release was not automatically published. Release Notes: - N/A
Conrad Irwin created
84017bc
Add OpenAI Responses API support with chat_completions capability flag (#39989)
Add support for OpenAI's /responses endpoint for models that don't support /chat/completions API. This enables compatibility with newer model variants (`gpt-5-codex`, `gpt-5-pro`, `o3-pro`, etc) while maintaining compatibility with existing configs Changes: - Add `supports_chat_completions` flag to model capabilities that defaults to true for existing behavior - Implement responses API client with streaming support as per [OpenAI documentation](https://app.stainless.com/api/spec/documented/openai/openapi.documented.yml). - Add `ResponseEventMapper` to convert responses events to completion events for maintainer simplicity - Update UI to allow toggling `chat_completions` capability - Add `gpt-5-codex` model Closes #38858 Release Notes: - Added support for `gpt-5-codex` model --------- Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
Matt Stallone and Bennet Bo Fenner created
e70d252
agent_ui: Fix agent UI stealing focus on start up (#46088)
Release Notes: - Fixed Zed stealing element focus away briefly after startup, interrupting user workflows
Lukas Wirth created
06a623e
git_ui: Add `CreatePullRequest` action (#42959)
Closes #42217 Release Notes: - Added/Fixed/Improved ... added "Create Pull Request" Command when searching on the command Palette For more details, please refer to the issue, thank you. --------- Co-authored-by: dino <dinojoaocosta@gmail.com>
Tommy Han and dino created
4dd54c6
vim: Fix word object count multiplier (2aw, 2iw) (#45686)
Closes #44251 ## Context Commands like `2daw` or `c2iw` were ignoring the count multiplier because the word text object functions (`in_word`, `around_word`) weren't using the `times` parameter. This fix propagates the count through these functions so all operators correctly handle multiple words. ## Before https://github.com/user-attachments/assets/d5effa8a-4c04-4d70-a6b5-389cba730ca9 ## After https://github.com/user-attachments/assets/c50e4c0c-ea5c-4673-9c98-3d924b448025 Release Notes: - Fixed vim mode count multiplier for word text objects (`2aw`, `2iw`, `2aW`, `2iW`)
Mateo Kruk created
32f71af
agent_ui: Fix hangs when accepting agent file deletions (#46086)
Closes https://github.com/zed-industries/zed/issues/44160 Release Notes: - Fixed a hang when accepting file deletions made by the agent while the deleted buffer was still open
Lukas Wirth created
075454f
settings_ui: Add proxy edit box (#45684)
Release Notes: - settings_ui: Added a field to configure the network proxy. Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu created
4e0e7cf
windows: Fix IME candidate window not appearing at cursor position (#46079)
Release Notes: - Fixed some IME popups and the emoji picker not appearing at the cursor position on windows
Lukas Wirth created
8813abe
Enable terminal activation for uv-managed environments (#45949)
Currently, the Python toolchain can identify `uv` and `uv-workspace` environments (showing the correct labels in the UI), but it fails to activate them when opening a new terminal. This is because the activation script resolution and command generation logic were missing for these environment kinds. This PR adds `uv` and `uv-workspace` to the standard virtual environment activation flow. Since `uv` creates environments with a standard `venv` structure, we can reuse the existing `resolve_venv_activation_scripts` logic to find and execute the appropriate `activate` scripts for different shells. Release Notes: - Fixed terminal activation for `uv` and `uv-workspace` Python environments.
Xin Zhao created
01b716c
terminal: Kill entire process group on Unix when stopping command (#45993)
## Problem When clicking Stop button on a terminal tool call (or using terminal kill bindings), only the shell process was killed. Child processes (like `sleep`, `npm run`, etc.) continued running as orphans. ## Solution On Unix, use `killpg()` instead of `sysinfo::Process::kill()` to terminate the entire foreground process group. `tcgetpgrp()` already returns the foreground process group ID, so `killpg()` is the correct syscall to use here. ## Testing 1. Run a long command in terminal tool (e.g. `sleep 30`) 2. Click Stop button 3. Verify with `ps aux | grep sleep` that the process is actually killed ## Notes - This fix is Unix-only (Linux, macOS) - Windows behavior unchanged — may need separate investigation with Job Objects ## Release Notes - Fixed terminal Stop button not killing child processes on Unix (Linux, macOS)
Serhii Melnychuk created
7e8310a
Add `luaurc` path suffix to JSONC (#46037)
Closes https://github.com/4teapo/zed-luau/issues/31 Luau `.luaurc` config files contain JSON but that allows comments and trailing commas, making them a perfect fit for JSONC. Release Notes: - N/A
teapo created
e97f7b5
proto: Remove deprecated active view fields from call.proto (#45979)
Release Notes: - N/A --------- Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu created
bf2151e
buffer_diff: Synchrously emit `DiffChanged` event from `recalculate_diff_sync` (#46077)
Release Notes: - N/A
Cole Miller created
ccce05d
language: Fix reparse timeout not actually working (#45347)
We use `block_with_timeout` to give the reparse task a millisecond to complete, and if it takes longer we put the work off to the background. The reason for this is that we want tree-sitter based features to feel snappy. The reparse task is non-cooperative though, it has no yield points, giving us no place to actually check for our timeout, meaning we will always drive it to completion and block for the entire duration. This kicks out the `block_with_timeout` in favor of using the treesitter progress callback to handle timeouts instead. Release Notes: - Improved responsiveness with very language language files on edits
Lukas Wirth created
da99237
settings_ui: Fix theme not being configurable in certain scenarios (#46069)
Closes https://github.com/zed-industries/zed/issues/44091 The issue here was that we were missing a proper default for `ThemeSelection`. This is a disadvantage of not having the defaults in code but actually in the `default.json`, so this here basically copies the default from the `default.json` into code for the settings UI to work properly. Release Notes: - Fixed an issue where the theme was not configurable from the settings UI if no theme was configured prior.
Finn Evers created
2a45dbf
Add `ep split-commit` command (#46067)
Generates a training or evaluation example from a chronologically-ordered commit. This is a port from the Python codebase (except for the reorder_patch.rs, which was originally written in Rust in). Release Notes: - N/A
Oleksiy Syvokon created
e7474ce
typescript: Use @type instead of @type.builtin in highlights (#46068)
Closes #45251 In https://github.com/zed-industries/zed/pull/44532 the syntax highlighting of JS/TS was improved, but we only used `type.builtin` for a specific case. This resulted in less consistent syntax highlighting. Not all themes have this specific token and we don't use `type.builtin` in other places either, so while this is a little less specific it is more consistent. Release Notes: - Improved syntax highlighting consistency for builtins in JavaScript and TypeScript
Gaauwe Rombouts created
794fa9d
Revert "Revert windows implementation of "Multiple priority scheduler (#44701)"" (#46066)
Reverts zed-industries/zed#44990 Release Notes: - N/A
Yara 🏳️⚧️ created
67fc92d
language: Add support for Tailwind CSS Mode (#45352)
Closes #44904 Adds the Tailwind CSS LSP as suggested here: https://github.com/zed-industries/zed/pull/39517#issuecomment-3368206678. This allows users to use the Tailwind CSS LSP for CSS files, to support Tailwind specific rules. Docs will be added in a separate PR after this is released Release Notes: - Add Tailwind CSS Mode support, for Tailwind specific CSS rules like `@apply`, `@layer`, and `@theme`.
Gaauwe Rombouts created
feb3ce3
User buffer column range when adding selection that skips soft wrap (#45594)
When adding selections above/below with `skip_soft_wrap: true`, use buffer column positions instead of pixel positions. This ensures selections are placed at the same column offset in the buffer rather than at the same visual position, which was incorrect for soft-wrapped lines. For example, selecting "how" in a wrapped line: ```` 1. Very long line to show [how] a wrapped line would look 2. Very long line to show how a wrapped line would look ```` Now correctly adds a selection at the same buffer column in the next line: ```` 1. Very long line to show [how] a wrapped line would look 2. Very long line to show [how] a wrapped line would look ```` Closes #42137 Release Notes: - Improved `editor: add selection above` and `editor: add selection below` to select at the same text column when skipping soft-wrapped lines, instead of the same visual position
Dino created
9cdb986
workspace: Fix read-only pane buttons being clickable even when a no-op (#46065)
The button was clickable for read-only panes even if the underlying item is not write-toggleable. Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
e57285f
gpui: Prepaint Div children with image cache (#46039)
Closes #39914 I was able to reproduce the issue on macOS using the same README. The root cause was that `markdown_preview_view` attaches the image cache to the root div, and while Div correctly applies that cache during request_layout and paint, the prepaint phase didn’t have the same context. Markdown is rendered through a List, and `List::prepaint` renders its items using `layout_as_root`. That meant images were getting loaded during prepaint without the image cache in place. When that happened, Img fell back to the global asset loader, which retains assets indefinitely unless explicitly cleaned up. So every image was loaded twice: - once during layout/paint via RetainAllImageCache (correctly released when the preview closed) - once during prepaint via the global asset system (never released) The result was doubled memory usage and a leak, since the globally loaded images stuck around after the preview was closed. Release Notes: - Fixed a memory leak when previewing markdown files with images Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Marco Mihai Condrache created
e8fbd5b
gpui: Cancel foreground tasks when the app is dropped (#45768)
This is in preparation for removing `Result<T>` from the `AsyncApp` methods Refactor machine goes brrrrrr Plan and tracker for this PR: https://gist.github.com/mikayla-maki/7dfc0d4907e76de119b5712e24665f02 This PR should be safe to merge, as I cannot observe any changes in behavior from adding this to our application. Release Notes: - N/A
Mikayla Maki created
88a153c
project_diff: Fix overly large edits being emitted when a diff is recomputed (#46056)
Release Notes: - N/A
Cole Miller created
88a0b31
buffer_diff: Ensure that base text has finished parsing before completing update (#46054)
Follow-up to #46001 That initial fix partly addressed the issue for diffs managed by the `GitStore`, but not for other diffs (e.g. those managed by the `ActionLog` or `CommitView`). The underlying issue is that we switched to using a `Buffer` to represent the diff base text, and when updating the diff we were calling `set_text` on this buffer and not waiting for reparsing to finish. When the base text was represented by a series of independent `BufferSnapshot`s, this wasn't an issue because we would parse the base text in the background as part of computing the diff update. This PR fixes the issue by waiting on reparsing to finish after each call to `set_text`. Release Notes: - N/A
Cole Miller created