392c78e
docs: Point to the right docs for Tree-sitter queries (#45795)
Click to expand commit body
Release Notes: - N/A
Haojian Wu created
392c78e
docs: Point to the right docs for Tree-sitter queries (#45795)
Release Notes: - N/A
Haojian Wu created
665ee3e
docs: Add missing option for `show_whitespaces` setting (#45667)
The value for the `trailing` option in the `show_whitespaces` setting was not documented, so I have added it. Related Issue: https://github.com/zed-industries/zed/pull/32329#issuecomment-3581576128 Release Notes: - N/A
Koutaro Miura created
8e82503
docs: Update casing of `Ty` to `ty` (#45622)
### Why? Small nit I noticed when configuring `ty` from Zed docs, ty should always be stylized as lowercase. See: https://github.com/astral-sh/ty?tab=readme-ov-file#how-should-i-stylize-ty Release Notes: - N/A
Rob Hand created
872b2b3
language: Change signature of `initialization_options_schema` (#45937)
This makes this take the LSP adapter delegate instead of the binary itself. Despite us passing `LanguageServerBinaryOptions` with `allow_download: false`, extensions would still try to download the binary because it was never implemented for these to respect that. This would cause us to try to download all langauge servers provided by extensions when opening a settings file and/or requesting the JSON schema for that. This PR fixes this by passing the LSP adapter delegate instead, so the few language servers which actually want to have the binary for resolving the initialization options can decide on this by themselves. With that, we no longer download all language servers for the schema request Release Notes: - N/A
Finn Evers created
8396611
Update community champions list (#45935)
Updates the community champions list to the latest state, adding some of our active extension contributors, and sorts the list/removes duplicates. Release Notes: - N/A
Finn Evers created
554382a
git: Rework side-by-side diff to use distinct buffers for the left-hand side (#44838)
This PR reworks the (still feature-gated) side-by-side diff view to use a different approach to representing the multibuffers on the left- and right-hand sides. Previously, these two multibuffers used identical sets of buffers and excerpts, and were made to behave differently by adding a new knob to the multibuffer controlling how diffs are displayed. Specifically, the left-hand side multibuffer would filter out the added range of each hunk from the excerpts using a new `FilteredInsertedHunk` diff transform, and the right-hand side would simply not show the deleted sides of expanded hunks. This approach has some problems: - Line numbers, and actions that navigate by line number, behaved incorrectly for the left-hand side. - Syntax highlighting and other features that use the buffer syntax tree also behaved incorrectly for the left-hand side. In this PR, we've switched to using independent buffers to build the left-hand side. These buffers are constructed using the base texts for the corresponding diffs, and their lifecycle is managed by `BufferDiff`. The red "deleted" regions on the left-hand side are represented by `BufferContent` diff transforms, not `DeletedHunk` transforms. This means each excerpt on the left represents a contiguous slice of a single buffer, which fixes the above issues by construction. The tradeoff with this new approach is that we now have to manually synchronize excerpt ranges from the right side to the left, which we do using `BufferDiffSnapshot::row_to_base_text_row`. Release Notes: - N/A --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com> Co-authored-by: HactarCE <6060305+HactarCE@users.noreply.github.com> Co-authored-by: Miguel Raz Guzmán Macedo <miguel@zed.dev> Co-authored-by: Anthony <anthony@zed.dev> Co-authored-by: Cameron <cameron@zed.dev>
Cole Miller , cameron , HactarCE , Miguel Raz Guzmán Macedo , Anthony , and Cameron created
9677da9
docs: Remove reference to non-existing binding for `tab switcher: toggle all` (#45919)
There is no default binding for `{#kb tab_switcher::ToggleAll}`, so the
doc is rendered as:
<img width="1330" height="227" alt="image"
src="https://github.com/user-attachments/assets/a5ce2efd-69c4-4eb4-a28b-3fdb7825ce34"
/>
Release Notes:
- N/A
Haojian Wu created
9e5546e
docs: Use inline code in `debugger.md` (#45920)
Release Notes: - N/A
Haojian Wu created
c7203f7
docs: Fix an incorrect code-snippet in multibuffers.md (#45918)
Release Notes: - N/A
Haojian Wu created
c87f12e
docs: Update workspace symbol search command in `configuring-languages.md` (#45906)
Release Notes: - N/A --------- Co-authored-by: Finn Evers <finn.evers@outlook.de>
Haojian Wu and Finn Evers created
084d01b
docs: Fix project-wide diagnostic command in `configuring-languages.md` (#45905)
Release Notes: - N/A --------- Co-authored-by: Finn Evers <finn.evers@outlook.de>
Haojian Wu and Finn Evers created
ed73602
debugger: Fix breakpoint store RPC handlers not being registered correctly on SSH remotes (#44908)
Closes #36789 Release Notes: - Fixed setting breakpoints on remotes --------- Co-authored-by: Zed AI <ai@zed.dev>
Piotr Osiewicz and Zed AI created
9f59946
agent_servers: Fix process leaks after terminating ACP server (#45902)
Closes #45211 This ensures that all sub-processes that were launched by the ACP server are terminated. One scenario where this is easily reproducible: - Start a new Claude Code ACP session - Submit a prompt - While Claude-code is still responding, start a new session - The `claude-code` subprocess is leaked from the previous session (The Claude-code SDK runs the Claude-code binary in a sub process) This PR fixes this by using process groups on Unix. It does not fix the process leaks on Windows yet (will follow up with another PR) Release Notes: - Fixed an issue where subprocesses of ACP servers could be leaked after starting a new session
Bennet Bo Fenner created
dffda91
Fixes a doc link to the license detection code (#45894)
The existing link was 404-ing as the crate was renamed. Not attached to any issue. Release Notes: - N/A
Nick Cho created
6b34122
python: Add support for `uv run` as the shebang line (#45881)
`uv run` can be used to specify a shebang for a Python script. See: https://docs.astral.sh/uv/guides/scripts/#using-a-shebang-to-create-an-executable-file Release Notes: - Added support for `uv run` in the shebang line to be interpreted as a Python script
flou created
963cb2c
settings_ui: Make font size settings use editable number fields (#45875)
Now that the edit mode in number fields is finally working well, we can make the UX of editing font sizes much nicer because you can now type inside the number field :) https://github.com/user-attachments/assets/8df7c6ee-e82b-4e10-a175-e0ca5f1bab1f Release Notes: - settings UI: Improved the UX of editing font size fields as you can now type the desired value as opposed to just using the decrement/increment buttons.
Danilo Leal created
0c7d639
ui: Add fixes to the `NumberField` edit mode (#45871)
Follow up to https://github.com/zed-industries/zed/pull/45447 and in preparation to enable the edit mode in number field instances within the settings UI. This PR fixes the editor in the number field capturing focus automatically (unnecessary), tab index in the buttons and editor, and other things. Release Notes: - N/A
Danilo Leal created
189b5ff
ui: Make docs aside in pickers and context menu render centered to its trigger (#45868)
This has been something we've wanted to do for a long time since docs aside thus far have been hard-anchored either at the top or bottom of the container that their trigger is sitting in. This PR introduces the change so that they're centered with their trigger, regardless of whether it's on a context menu or picker, by including a canvas element in both the container and the trigger to calculate where the docs aside should precisely sit on. Here's the result: https://github.com/user-attachments/assets/8147ad05-1927-4353-991d-405631de67d0 Note that at the moment, docs aside are only visible through _hovering_, and ideally, they should be available on both hover and selection (keyboard nav). But I'll leave that for later. Release Notes: - N/A
Danilo Leal created
a3bf58d
extension_ci: Improve title formatting (#45870)
Just some minor formatting touchups I noticed after the first rollout Release Notes: - N/A
Finn Evers created
d844f5d
extension_ci: Fix version bump not working (#45869)
I changed the runner sizes to a smaller but more recent image yesterday and broke the version bumping in the process. This PR fixes this by force installing the needed package. Release Notes: - N/A
Finn Evers created
fc45f6e
title_bar: Fix close button hover color on Windows (#45867)
Release Notes: - Fix close button hover text color on Windows | Before | After | | --- | --- | | <img width="166" height="137" alt="before" src="https://github.com/user-attachments/assets/fcd225c4-c73f-4e21-8e8d-459395df27ec" /> |<img width="188" height="156" alt="after" src="https://github.com/user-attachments/assets/89f5dcba-d677-4eb9-a9b4-170eb9792cb2" /> | https://github.com/user-attachments/assets/27e88bf1-eddd-4ec8-a360-6a68eef484e0 And I also improved this file's implementation to merge the `WindowsCaptionButtonIcon` into `WindowsCaptionButton`.
Jason Lee created
843be76
project search: Make cancellation smoother (#45406)
- **search: Make search cancellation more responsive (again)** - **Fix project benchmarks build** - **Less scoping and lifetimes for workers** Related to #45300 Release Notes: - Project search will consume less resources immediately after cancellation. --------- Co-authored-by: Max Brunsfeld <max@zed.dev>
Piotr Osiewicz and Max Brunsfeld created
469ad07
ui: Add submenus to `ContextMenu` (#45743)
This PR introduces submenu functionality for Zed's dropdown/context
menus.
<img width="600" height="830" alt="Screenshot 2025-12-27 at 2 03@2x"
src="https://github.com/user-attachments/assets/eadfcd74-07fe-4a1f-be76-11b547c16dc8"
/>
```rs
.submenu("Trigger", |menu, _, _| {
menu.entry("Item…", None, |_, _| {})
.entry("Item…", None, |_, _| {})
})
```
Release Notes:
- N/A
---------
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Danilo Leal and Zed Zippy created
392b618
Fix worktree trust handling of multiple projects on the same remote host (#45834)
Closes https://github.com/zed-industries/zed/issues/45630 Remote host location alone is not enough to distinguish between remote worktrees: different remote projects open in different windows will have the same remote host location and _will_ have the same `WorktreeId`. Thus, require an associated `WorktreeStore` with all `WorktreeId`-related trust questions, and store those IDs based on the store key. Release Notes: - Fixed worktree trust handling of multiple projects on the same remote host
Kirill Bulatov created
fc89e19
extension_ci: Move shared workflows into nested folder (#45828)
This makes the rollout as well as distinguishing this in the future easier. Release Notes: - N/A
Finn Evers created
f53b01d
ci: Grant GitHub token more granular permissions (#45825)
Release Notes: - N/A
Finn Evers created
bf1c881
ci: Properly request token for extension repositories (#45824)
Release Notes: - N/A
Finn Evers created
3247264
ui: Remove stray blank lines in ButtonStyle methods (#45822)
Release Notes: - N/A
Xiaobo Liu created
6d947b7
ui: Add a `CopyButton` component (#45821)
There were several places adding a copy icon button, so thought of encapsulating the logic to copy a given string into the clipboard (and other small details like swapping the icon and tooltip if copied) into a component, making it easier to introduce this sort of functionality in the future, with fewer lines of code. All it takes (for the simplest case) is: ```rs CopyButton::new(your_message) ``` <img width="600" height="714" alt="Screenshot 2025-12-29 at 10 50@2x" src="https://github.com/user-attachments/assets/e6949863-a056-4855-82d8-e4ffb5d62c90" /> Release Notes: - N/A
Danilo Leal created
db221ca
Add workflow to rollout changes to the extension organization (#45579)
This PR adds a workflow that we can utilize to rollout changes to the CI workflows for the `zed-extensions` organization. Release Notes: - N/A
Finn Evers created
1d006a8
extension_ci: Specify needed permissions for jobs (#45542)
GitHub flags these as security vulnerabilities. Hence, this PR specifies the needed permissions for the workflows used in the `zed-extensions` organization. Release Notes: - N/A
Finn Evers created
aaab9f6
Add a button to copy diagnostic messages from the hover popover to the clipboard (#45625)
Closes https://github.com/zed-industries/zed/issues/45346 Release Notes: - Added a button to copy diagnostic messages from the hove popover Screenshot: <img width="842" height="360" alt="image" src="https://github.com/user-attachments/assets/9c00fba5-82aa-4179-95b1-afd5c1173889" /> --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Rocky Shi and Danilo Leal created
209cf0a
ui: Make long Callout descriptions scrollable (#45792)
Fixes #43306 Long error messages from LLM providers in the Agent Panel were not scrollable, making it impossible to read the full error content. Changes: - Add max_h_48() and overflow_y_scroll() to description containers - Add element IDs required for scroll functionality - Add min_h_0() and overflow_hidden() to parent flex container - Add component preview example demonstrating scrollable content Release Notes: - Fixed long error messages in Agent Panel being unreadable by making them scrollable ([#43306](https://github.com/zed-industries/zed/issues/43306)). --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Ahmed Hesham Abdelkader and Danilo Leal created
260691c
docs: Specify that dev containers are currently previeiw-only (#45816)
Thanks for the cool project and making it open source! Started using Zed recently and I really enjoy it. Made a tiny addition to devcontainer docs to specify the version. Wasn't able to get it to work as shown in the [docs](https://zed.dev/docs/dev-containers) (should "just work"). The feature was introduced recently on [PR 44442](https://github.com/zed-industries/zed/pull/44442) and is only available as of v0.218 (currently still in preview), while I was still on the latest stable version. So I thought of opening a small PR 😊 Thanks again for the awesome project! Release Notes: - N/A --------- Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Murilo Cunha and Danilo Leal created
9e88f3f
agent_ui: Fix issues with mention crease (#45683)
This PR introduces the `MentionCrease` component, aimed at solving two issues with mention creases in the agent panel: - Previously, the mention crease was using a button with a regular size, which is bigger than the default buffer font line height. That made the crease look clipped and also overlapping with one another when in a multiple line scenario where the creases would be on top of each other. `MentionCrease` uses the window line height value to set the button height, with a small one pixel vertical padding just for a bit of spacing. - Previously, given the crease used a `Label`, its font size wouldn't scale if you changed the `agent_buffer_font_size` setting. Now, `MentionCrease` uses that font size value, which makes regular text and its text grow together as you'd expect. Release Notes: - agent: Fix a bug where mention creases didn't scale with `agent_buffer_font_size` and got clipped/jumbled when rendered one above the other.
Danilo Leal created
2cad6c8
svg_preview: Detect SVG in single-file mode by checking file name (#45747)
Release Notes: - Use the files name for "is svg" checks so SVG previews and the toolbar button work in single-file mode.
Gabe Shahbazian created
bc24ffe
acp: Beta support for Session Config Options (#45751)
Adds beta support for the ACP draft feature of Session Config Options: https://agentclientprotocol.com/rfds/session-config-options Release Notes: - N/A
Ben Brandt created
1e4a970
Bump glsl to 0.2.0 (#45744)
Includes https://github.com/zed-industries/zed/pull/45727 Release Notes: - N/A
Kirill Bulatov created
3e656a0
Add colorized brackets support for GLSL (#45727)
Closes #45674 before: <img width="482" height="271" alt="Screenshot 2025-12-26 at 21 05 50" src="https://github.com/user-attachments/assets/d1bba3e1-04f3-4b8d-a187-8da80cee7e22" /> after <img width="481" height="244" alt="Screenshot 2025-12-26 at 21 06 23" src="https://github.com/user-attachments/assets/4778c779-7082-4701-821e-b825b05b4097" /> Release Notes: - Fixes colorized brackets for the GLSL extension --------- Co-authored-by: Finn Evers <finn.evers@outlook.de>
Thinkseal and Finn Evers created
57ea23d
editor: Fix active line number regressions with relative counting (#45741)
Follow-up to https://github.com/zed-industries/zed/pull/45164 which caused the active line number to always be `0` instead of the actual current line number. No release notes since its only on nightly Release Notes: - N/A
Finn Evers created
a50c5b2
Fix Zed OOM-ing when macOS file descriptors become invalid (#45669)
Closes https://github.com/zed-industries/zed/issues/42845 Repro steps: https://github.com/zed-industries/zed/issues/42845#issuecomment-3687413958 Initial investigation and Zed memory trace: https://github.com/zed-industries/zed/issues/42845#issuecomment-3687877977 The PR consists of 2 commits: * [first](https://github.com/zed-industries/zed/pull/45669/changes/732d308c8d7e9af3649ac71ea65a9c029af820fc) adds cosmetic fixes to remove backtraces from logs yet again and print paths in quotes, as file descriptors may return empty paths. It also stubs the cause if OOM in project panel: that one traversed all worktrees in `for worktree_snapshot in visible_worktrees` and "accepted" the one with empty paths + never called `entry_iter.advance();` in "no file name found for the worktree" case, thus looping endlessly and bloating the memory quite fast. * [second](https://github.com/zed-industries/zed/pull/45669/changes/7ebfe5da2fc6d32f3fa2d71c761f8b2ec26d945b) adds something that resembles a fix: `fn current_path` on macOS used the file handler to re-fetch the worktree root file path on worktree root canonicalization failure. What's odd, is that `libc::fcntl` returns `0` in the case when external volume is not mounted, thus resulting in the `""` path string that is propagated all the way up. * [third](https://github.com/zed-industries/zed/pull/45669/changes/1a7560cef3e9fac604124c19f46b1f9c7b91815f) moves the fix down to the platform-related FS implementations The "fix" now checks the only usage of this method inside `async fn process_events` for an empty path and bails if that is the case. I am not sure what is a better fix, but this stops any memory leaks and given how bad the situation now, seems ok to merge for now with the `TODO` comment for more clever people to fix properly later. ---------------- Now, when I disconnect the SMB share and reconnect it again, Zed stops displaying any files in the project tree but the ones opened as editors. As before, at first, when the share is unmounted, Zed fails to save any changes because of the timeouts. Later, when the share is re-connected, macOS Finder hangs still but Zed starts to react on saves yet still only shows the files that are open as editors. The files can be edited and saved from now on. Later, when Finder finally stops hanging and indicates that the share is mounted fully, the rest of the file structure reappear in the project panel, and all file saves are propagated, hence can be observed in the share in Finder. It feels that one good improvement to add on top is some "disconnected" indicator that clearly shows that the file is not properly handles in the OS. This requires much more changes and thinking as nothing like that exists in Zed yet, hence not done. Release Notes: - Fixed Zed OOM-ing when macOS file descriptors become invalid
Kirill Bulatov created
f1b7239
mac: Delay initial find pasteboard search until ⌘G or ⌘F (#45605)
Follow up to https://github.com/zed-industries/zed/pull/45311. Instead
of searching for the string in the find pasteboard as soon as the pane
is focused, we will now wait until the search bar is either deployed or
`Select{Next|Prev}Match` is triggered.
Release Notes:
- N/A
Agus Zubiaga created
a7ce677
Optimize terminal rendering when clipped by parent containers (#45537)
This brings the terminal element's viewport culling in line with the editor optimization in PR #44995 and the fix in PR #45077. ## Problem When a terminal is inside a scrollable container (e.g., the Agent Panel thread view), it would render ALL cells during prepaint, even when the terminal was entirely outside the viewport. This caused unnecessary CPU usage when multiple terminal tool outputs existed in the Agent Panel. ## Solution Calculate the intersection of the terminal's bounds with the current content_mask (the visible viewport after all parent clipping). If the intersection has zero area, skip all cell processing entirely. ### Three code paths 1. **Offscreen** (`intersection.size <= 0`): Early exit, process 0 cells 2. **Fully visible** (`intersection == bounds`): Fast path, stream cells directly (no allocation) 3. **Partially clipped**: Group cells by line, skip/take visible rows only ### Key insight: filter by screen position, not buffer coordinates The previous approach tried to filter cells by `cell.point.line` (terminal buffer coordinates), which breaks in Scrollable mode where cells can have negative line numbers for scrollback history. The new approach filters by **screen position** using `chunk_by(line).skip(N).take(M)`, which works regardless of the actual line numbers because we're filtering on enumerated line group index. ## Testing Added comprehensive unit tests for: - Screen-position filtering with positive lines (Inline mode) - Screen-position filtering with negative lines (Scrollable mode with scrollback) - Edge cases (skip all, positioning math) - Unified filtering works for both modes Manually verified: - Terminal fully visible (no clipping) ✓ - Terminal clipped from top/bottom ✓ - Terminal completely outside viewport ✓ - Scrollable terminals with scrollback history ✓ - Selection/interaction still works ✓ Release Notes: - Improved Agent Panel performance when terminals are scrolled offscreen. /cc @as-cii
Nathan Sobo created
ed67f24
Fix formatting in `json_schema_store.rs` (#45698)
There are some too long lines which make `rustfmt` unable to format the file, which in turn makes editing and working with this file rather hard. This PR fixes this. Release Notes: - N/A
Finn Evers created
93f2932
docs: Update link to Tree-sitter Query extension (#45697)
Release Notes: - N/A
Marshall Bowers created
85f4681
docs: Link to Tree-sitter query extension (#45682)
Release Notes: - N/A
Haojian Wu created
741c5d5
Revive "good first issue" notifier (#45679)
We adjusted the labels some time ago, but never took care of the `good first issue` notifier that posts the good first issues to discord. Adjusting the label accordingly so that it notifies people again. Release Notes: - N/A
Finn Evers created
f03987f
search: Remove intermediate allocation (#45633)
Release Notes: - N/A --------- Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Marco Mihai Condrache created
ca47822
Associate devcontainer.json with JSONC language (#45593)
Release Notes: - N/A
Teoh Han Hui created
a34fe06
agent_ui: Allow "token reached" callout to be dismissed (#45595)
It was previously impossible to dismiss the "token usage reaching/reached the limit" callout. <img width="500" height="392" alt="Screenshot 2025-12-23 at 5 49@2x" src="https://github.com/user-attachments/assets/7fd8b126-dd3f-430b-9fea-ca05c73e5643" /> Release Notes: - N/A
Danilo Leal created