b9b8503
Better handle project IDs in restrictions
Kirill Bulatov created
b9b8503
Better handle project IDs in restrictions
Kirill Bulatov created
ea5d0b2
zzz
Kirill Bulatov created
e7f32ce
Distinguish worktree trust hosts by project ids too
Kirill Bulatov 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
0ce484e
Do not trust Docker hosts by default (#45587)
It's still possible to leak secrets by spawning odd MCP/LSP servers from `.zed/settings.json` Release Notes: - N/A
Kirill Bulatov created
251033f
Fix the argument order when starting devcontainers (#45584)
Release Notes: - (Preview only) Fix devcontainers not starting when certain env variables were set Co-authored-by: KyleBarton <kjb@initialcapacity.io>
Kirill Bulatov and KyleBarton created
9f90c1a
git_ui: Show copy-SHA button on commit header hover (#45478)
Release Notes: - git: Added the ability to copy a commit's SHA in the commit view. --------- Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com> Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Xiaobo Liu and Danilo Leal created
d43cc46
agent_ui: Add more items in the right-click context menu (#45575)
Follow up to https://github.com/zed-industries/zed/pull/45440 adding an item for "Open Thread as Markdown" and another for scroll to top and scroll to bottom. <img width="500" height="646" alt="Screenshot 2025-12-23 at 1 12@2x" src="https://github.com/user-attachments/assets/c82e26bb-c255-4d73-b733-ef6ea269fabe" /> Release Notes: - N/A
Danilo Leal created
fdb8e71
docs: Remove reference to outdated curated issues board (#45568)
The documentation referenced a “Curated board of issues” GitHub Project that no longer exists. The linked project returns a 404, and only three public projects are currently available under zed-industries. This PR removes the outdated reference. Documentation-only change. Release Notes: - N/A
Daniel Byiringiro created
6bc433e
agent_ui: Add right-click context menu to the thread view (#45440)
Closes #23158 Release Notes: - Added a right-click context menu for the thread view in the agent panel. --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
zchira and Danilo Leal created
1281f46
markdown: Add support for right-click menu copy item (#45572)
In https://github.com/zed-industries/zed/pull/45440, we're implementing the ability to right-click in the agent panel and copy the rendered markdown. However, that presented itself as not as straightforward as just making the menu item fire the `CopyAsMarkdown` action because any selection in markdown is cleared after a new mouse click, and for the right-click copy menu item to work, we need to persist that selection even after the menu itself is opened and the "Copy" menu item is clicked. This all demanded a bit of work in the markdown file itself, and given we may want to use this functionality for other non-agent thread view markdown use cases in the future, I felt like it'd be better breaking it down into a separate PR that we can more easily track in the future. The context menu still needs to be built in the place where the markdown is created and rendered, though. This PR only adds the infrastructure needed so that this menu can simply fire the `CopyAsMarkdown` and make the copying work. Release Notes: - N/A
Danilo Leal created
ed705c0
Conditionally display debugger panel icon based on a setting (#45544)
Closes [#ISSUE](https://github.com/zed-industries/zed/issues/45506) Release Notes: - Conditionally display the debugger panel icon based on a setting to avoid too many error logs
Rocky Shi created
8980333
Add support for automatic Markdown task list continuation when using uppercase X (#45561)
Release Notes: - Added support for automatic Markdown task list continuation when using uppercase X
Joseph T. Lyons created
acee48b
git: Fix "Commit Tracked" being shown when files are partially staged (#45551)
Release Notes: - N/A
Cole Miller created
71298e6
extension_ci: Use larger runners for extension bundling (#45540)
`2x4` is not nearly enough for some of the grammars in use, hence change this to a larger runner. Also, reduce the size for the Rust runners a bit, as they don't need to be quite as large for the amount of Rust code we have in extensions. Release Notes: - N/A
Finn Evers created
07ada58
Improve edit prediction example capture (#45536)
This PR improves the `edit prediction: Capture Example` in several ways: * fixed bugs in how the uncommitted diff was calculated * added a `edit_predictions.examples_dir` setting that can be set in order to have the action automatically save examples into the given folder * moved the action into the `edit_predictions` crate, in preparation for collecting this data passively from end users, when they have opted in to data sharing, similar to what we did for Zeta 1 Release Notes: - N/A
Max Brunsfeld created
dd521a9
Bump proto extension to 0.3.1 (#45531)
Includes https://github.com/zed-industries/zed/pull/45413 Release Notes: - N/A
Kirill Bulatov created
f9d9721
agent_ui: Expand model favoriting feature to external agents (#45528)
This PR adds the ability to favorite models for external agents—writing to the settings in the `agent_servers` key—as well as a handful of other improvements: - Make the cycling keybinding `alt-enter` work for the inline assistant as well as previous user messages - Better organized the keybinding files removing some outdated agent-related keybinding definitions - Renamed the inline assistant key context to "InlineAssistant" as "PromptEditor" is old and confusing - Made the keybindings to rate an inline assistant response visible in the thumbs up/down button's tooltip - Created a unified component for the model selector tooltip given we had 3 different places creating the same element - Make the "Cycle Favorited Models" row in the tooltip visible only if there is more than one favorite models Release Notes: - agent: External agents also now support the favoriting model feature, which comes with a handy keybinding to cycle through the favorite list.
Danilo Leal created
cff3ac6
docs: Fix `download_file` documentation (#45517)
Fix a small error in the docs for the extension capabilities Release Notes: - N/A
Alejandro Fernández Gómez created
746b764
util: Keep default permissions when extracting Zip with unset permissions (#45515)
This ensures that we do not extract files with no permissions (`0o000`), because these would become unusable on the host Release Notes: - N/A
Finn Evers created
397fcf6
docs: Fix Edit Prediction docs for Codestral (#45509)
This PR fixes the Edit Prediction docs for Codestral after they got mangled in https://github.com/zed-industries/zed/pull/45503. Release Notes: - N/A
Marshall Bowers created
9adb3e1
docs: Testing automatic documentation updates locally (2025-12-21) (#45503)
## Documentation Update Summary
### Changes Made
| File | Change | Related Code |
| --- | --- | --- |
| `docs/src/ai/edit-prediction.md` | Updated Codestral setup
instructions to use Settings Editor path instead of outdated
`agent::OpenSettings` action reference | Settings Editor provider
configuration flow |
### Rationale
The primary documentation update addresses outdated instructions in the
Codestral setup section. The original text referenced an
`agent::OpenSettings` action that directed users to an "Agent Panel
settings view" which no longer reflects the current UI flow. The updated
instructions now guide users through the Settings Editor with
platform-specific keyboard shortcuts and provide an alternative status
bar path.
### Review Notes
- **Codestral instructions**: Reviewers should verify the Settings
Editor navigation path (`Cmd+,` → search "Edit Predictions" →
**Configure Providers**) matches the current Zed UI
- **Status bar alternative**: The alternative path via "edit prediction
icon in the status bar" should be confirmed as accurate
---
## Update from 2025-12-21 20:25
---
**Source**: [#44914](https://github.com/zed-industries/zed/pull/44914) -
settings_ui: Add Edit keybindings button
**Author**: @probably-neb
Now I have all the context needed to create a comprehensive
documentation update summary.
## Documentation Update Summary
### Changes Made
| File | Change | Related Code |
| --- | --- | --- |
| docs/src/ai/agent-panel.md | Added documentation for `agent::PasteRaw`
action, explaining automatic @mention formatting for pasted code and how
to bypass it | PR #45254 |
### Rationale
PR #45254 ("agent_ui: Improve UX when pasting code into message editor")
introduced the `agent::PasteRaw` action, which allows users to paste
clipboard content without automatic formatting. When users copy
multi-line code from an editor buffer and paste it into the Agent panel,
Zed now automatically formats it as an @mention with file context. The
`PasteRaw` action provides a way to bypass this behavior when raw text
is preferred.
This documentation update ensures users can discover both:
1. The new automatic @mention formatting behavior
2. The keybinding to bypass it when needed
### Review Notes
- The new paragraph was placed in the "Adding Context" section,
immediately after the existing note about image pasting support—this
maintains logical flow since both relate to pasting behavior
- Uses the standard `{#kb agent::PasteRaw}` syntax for keybinding
references, consistent with other keybinding documentation in the file
- The documentation passed Prettier formatting validation without
modifications
---
### Condensed Version (for commit message)
```
docs(agent-panel): Document PasteRaw action for bypassing auto @mention formatting
Added explanation that multi-line code pasted from editor buffers is
automatically formatted as @mentions, with keybinding to paste raw text.
Related: PR #45254
```
Release Notes:
- N/A
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
morgankrey , factory-droid[bot] , and Zed Zippy created
1469d94
Fix dock panel button tooltip not dismissed when state changes via keyboard shortcut (#44746)
Closes #44720 Release Notes: - Fixed dock panel button tooltips not being dismissed when toggling panels via keyboard shortcut **Problem:** When hovering over a dock panel button and using a keyboard shortcut to toggle the panel, the tooltip remains visible with stale content. This is inconsistent with mouse click behavior, where the tooltip is dismissed on mouse down. **Solution:** Include the panel's active state in the button's element ID. When the state changes, the element ID changes (e.g., `"DebugPanel"` → `"DebugPanel-active"`), which causes GPUI to discard the old element state including the cached tooltip. **Testing:** Manually verified: 1. Hover over a dock panel button, wait for tooltip 2. Press keyboard shortcut to toggle the panel 3. Tooltip is now dismissed (consistent with mouse click behavior) https://github.com/user-attachments/assets/ed92fb6c-6c22-44e2-87e3-5461d35f7106 --------- Co-authored-by: MrSubidubi <finn@zed.dev>
Daeksell and MrSubidubi created
3b626c8
Allow empty splits on panes (#40245)
Draft as a base for continuing the discussion in #8008 : adds a
`SplitOperation` enum to support bindings like `["pane::SplitLeft",
{"operation": "Clear"}]`
To be discussed @MrSubidubi and others:
- Naming: Generally not happy with names yet and specifically `Empty` is
unclear, e.g., what does this mean for terminal panes? Added placeholder
code to split without cloning, but unsure what users would expect in
this case.
- ~~I removed `SplitAndMoveXyz` actions but I guess we should keep them
for backwards compatibility?~~
- May have missed details in the move implementation. Will check the
code again for opportunities to refactor more code after we agree on the
approach.
- ~~Tests should go to `crates/collab/src/tests/integration_tests.rs`?~~
Closes #8008
Release Notes:
- Add `pane::Split` mode (`{ClonePane,EmptyPane,MovePane}`) to allow
creating an empty buffer.
---------
Co-authored-by: Finn Evers <finn.evers@outlook.de>
Co-authored-by: MrSubidubi <finn@zed.dev>
Yves Ineichen , Finn Evers , and MrSubidubi created
3dc0614
Small worktree trust fixes (#45500)
* Abs path trust should transitively trust all single file worktrees on the same host * Init worktree trust on the client side even when devcontainers are run: remote host unconditionally checks trust, hence the client has to keep track of it and respond with approves/declines. Do trust all devcontainers' remote worktrees, as containers are isolated and "safe". Release Notes: - N/A
Kirill Bulatov created
045e154
gpui: Fix hover state getting stuck when rapidly hovering over elements (#45437)
Closes #45436 Release Notes: - N/A --------- Co-authored-by: MrSubidubi <finn@zed.dev>
Mayank Verma and MrSubidubi created
dc72e1c
collab: Fix capitalization of copilot name alias (#45497)
This fixes copilot currently not passing the CLA check. Release Notes: - N/A
Finn Evers created
0884305
gpui(windows): Don't log incorrect errors on `SetActiveWindow` calls (#45493)
The function returns the previous focus handle, which may be null if there is no previous focus. Unfortunately that also overlaps with the error return value, so winapi will hand us a error 0 back in those cases which we log ... Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
8344929
Add autocomplete for initialization_options (#43104)
Closes #18287 Release Notes: - Added autocomplete for lsp initialization_options ## Description This MR adds the following code-changes: - `initialization_options_schema` to the `LspAdapter` to get JSON Schema's from the language server - Adds a post-processing step to inject schema request paths into the settings schema in `SettingsStore::json_schema` - Adds an implementation for fetching the schema for rust-analyzer which fetches it from the binary it is provided with - Similarly for ruff <img width="857" height="836" alt="image" src="https://github.com/user-attachments/assets/3cc10883-364f-4f04-b3b9-3c3881f64252" /> ## Open Questions(Would be nice to get some advice here) - Binary Fetching: - I'm pretty sure the binary fetching is suboptimal. The main problem here was getting access to the delegate but i figured that out eventually in a way that i _hope_ should be fine. - The toolchain and binary options can differ from what the user has configured potentially leading to mismatches in the autocomplete values returned(these are probably rarely changed though). I could not really find a way to fetch these in this context so the provided ones are for now just `default` values. - For the trait API it is just provided a binary, since i wanted to use the potentially cached binary from the CachedLspAdapter. Is that fine our should the arguments be passed to the LspAdapter such that it can potentially download the LSP? - As for those LSPs with JSON schema files in their repositories i can add the files to zed manually e.g. in languages/language/initialization_options_schema.json, which could cause mismatches with the actual binary. Is there a preferred approach for Zed here also with regards to updating them?
Nereuxofficial created
213cb30
gpui: Enable direct-to-display optimization for metal (#45434)
Continuing of #44334 I removed disabling of vsync which was causing jitter on some external displays cc: @maxbrunsfeld @Anthony-Eid Release Notes: - Mark metal layers opaque for non-transparent windows to allow direct-to-display when supported Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Marco Mihai Condrache created
4b56fec
acp_thread: Fix broken main build (#45461)
Release Notes: - N/A
Finn Evers created
32621dc
Fix race condition in `update_last_checkpoint` (#44801)
Release Notes: - Fixed spurious "no checkpoint" error in agent panel --- ## Summary `update_last_checkpoint` would call `last_user_message()` twice - once at the start to capture the checkpoint, and again in an async closure after the checkpoint comparison completed. If a new user message without a checkpoint was added between these two calls, the second call would find the new message and fail with "no checkpoint". ## Fix Capture the user message ID at the start and use `user_message_mut(&id)` in the async closure to find the specific message. cc @mikayla-maki
Nathan Sobo created
215ac50
agent_ui: Fix markdown block for tool call input and output content (#45454)
This PR fixes two issues with regards to markdown codeblocks rendered in tool call input and output content display: - the JSON code snippets weren't properly indented - codeblocks weren't being rendered in unique containers; e.g., if you hovered one scrollbar, all of them would also be hovered, even though horizontal scrolling itself worked properly Here's the end result: https://github.com/user-attachments/assets/3d6daf64-0f88-4a16-a5a0-94998c1ba7e2 Release Notes: - agent: Fix scrollbar and JSON indentation for tool call input/output content's markdown codeblocks.
Danilo Leal created
a5540a0
ui: Make the NumberField in edit mode work (#45447)
- Make the buttons capable of changing the editor's content (incrementing or decrementing the value) - Make arrow key up and down increment and decrement the editor value - Tried to apply a bit of DRY here by creating some functions that can be reused across the buttons and editor given they all essentially do the same thing (change the value) - Fixed an issue where the editor would not allow focus to move elsewhere, making it impossible to open a dropdown, for example, if your focus was on the number field's editor Release Notes: - N/A
Danilo Leal created
3e8c25f
Remove extra shortcut separator in default mode & model selection tooltips (#45439)
Closes #44118 Release Notes: - N/A
ᴀᴍᴛᴏᴀᴇʀ created
7f0842e
proto: Add `extend` keyword (#45413)
Closes #45385 Release Notes: - Add extend keyword to proto
Zachiah Sawyer created