80b9c3a
ep: Add --cache-only option to avoid sending requests (#48011)
Click to expand commit body
Release Notes: - N/A
Oleksiy Syvokon created
80b9c3a
ep: Add --cache-only option to avoid sending requests (#48011)
Release Notes: - N/A
Oleksiy Syvokon created
5eeff49
agent_ui: Subagent permissions (#48005)
Release Notes: - N/A *or* Added/Fixed/Improved ... --------- Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Cameron Mcloughlin and Ben Brandt created
bf829a6
ep: Handle input data errors (#48004)
Release Notes: - N/A
Oleksiy Syvokon created
3e5d1ee
terminal: Update title changed info on the background (#48000)
This can take several milliseconds on windows blocking the main thread noticably Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
185a80a
cli: Teach `--diff` to recurse into directories and add a `MultiDiffView` (#45131)
This branch: 1. teaches `--diff `command line option to to recurse into folders if provided. 2. Adds a `MultiDiffView` that shows _all_ changed files in a single, scrollable view. This is necessary to provide a smooth user experience for `jj` and Zed users who wish to use Zed as their jj difftool. I'm not fully sure how this change interacts with https://github.com/zed-industries/zed/pull/44936, or what plans y'all have in mind. Here's a screenshot of the resulting behavior: <img width="1090" height="950" alt="Screenshot 2025-12-17 at 9 10 52โฏAM" src="https://github.com/user-attachments/assets/8efd09b4-974f-4059-9f94-539c484c6d4a" /> I setup zed to handle jj diffs by adding the following to my jj config: ```toml [aliases] zdiff = ["diff", "--tool", "zed"] [merge-tools.zed] program = "/Users/dbarsky/Developer/zed/target/debug/cli" # omit diff-invocation-mode to keep the default (JJ passes two dirs) diff-args = [ "--zed", "/Users/dbarsky/Developer/zed/target/debug/zed", "--wait", "--new", "--diff", "$left", "$right", ] ``` Release Notes: - `--diff`, if provided with folders instead of files, will recurse into those directories. - Added a `MultiDiffView`, which will show all changed files within a single, scrollable view. **AI Disclosure**: Pretty much all of this code was written using Codex with GPT-5.1-Codex. I edited by hand and tested this. --------- Co-authored-by: Lukas Wirth <lukas@zed.dev>
David Barsky and Lukas Wirth created
7053561
docs: Document default for include_warnings (#47838)
## Summary Add documentation for the default value of `include_warnings` in diagnostics settings. This makes it consistent with other settings that document their default values. ## Test plan - Documentation-only change, no functional changes Release Notes: - N/A
Fernando Pรฉrez created
b9c0f75
fs: Cache filesystem case sensitivity (#47995)
We query this on the main thread on every file system access otherwise Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
19765cd
gpui(windows): Move jumplist creation to background thread (#47956)
This can block the main thread too much otherwise Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
28f0461
workspace: Do not attempt to unnecessarily update jump list on invisible worktree updates (#47990)
Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
9aa71dd
Python: Improved the `Add Virtual Environment` path browser to start at the workspace root (#47988)
Previously, the 'Add Virtual Environment' path browser started at the filesystem root (`/`). Since virtual environments are almost always located within the project directory, starting at the worktree root provides feels a bit nicer to me. Release Notes: - Python: Improved the `Add Virtual Environment` path browser to start at the workspace root.
Joseph T. Lyons created
0ede074
Fix missing directories in path prompt when show_hidden is enabled (#47983)
The `Select Toolchain Path` picker would skip directories that exist on my system and display `open this directory` multiple times. `Personal` is missing: <img width="569" height="225" alt="SCR-20260129-tvcc" src="https://github.com/user-attachments/assets/a78db373-fdfb-439d-a688-a4c81763c745" /> ``` ~/Projects> ls โญโโโโฌโโโโโโโโโโโฌโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโโโโฎ โ # โ name โ type โ size โ modified โ โโโโโผโโโโโโโโโโโผโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโโโค โ 0 โ Personal โ dir โ 1.5 kB โ 2 weeks ago โ โ 1 โ Work โ dir โ 1.0 kB โ 2 hours ago โ โฐโโโโดโโโโโโโโโโโดโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโฏ ~/Projects> ``` Release Notes: - Fixed a bug where directories could be missing from the `Select Toolchain Path` path picker
Joseph T. Lyons created
0c8a753
ci: Fix release failure notification (#47977)
Release Notes: - N/A
Finn Evers created
fed8b93
Revert "gpui: Take advantage of unified memory on Apple silicon" (#47974)
Reverts zed-industries/zed#45577 This still causes gpui to be unusable for Intel Macs and by extension Zed. Release Notes: - N/A
Anthony Eid created
f1554f8
Remove label field from Feature Request template (#47970)
Release Notes: - N/A
Joseph T. Lyons created
b1fd95b
copilot: Fix references to uninitialized CopilotAuth global (#47954)
Closes: #46593 #32635 #47924 Co-authored-by: Anthony Eid <hello@anthonyeid.me> Co-authored-by: Cole Miller <cole@zed.dev> Release Notes: - Fixed issues with signing into Copilot via the Settings UI --------- Co-authored-by: Anthony Eid <hello@anthonyeid.me> Co-authored-by: Cole Miller <cole@zed.dev> Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com> Co-authored-by: Anthony Eid <anthony@zed.dev>
Piotr Osiewicz , Anthony Eid , Cole Miller , Zed Zippy , and Anthony Eid created
22e2c7a
collab: Improve project and call notification UI (#47964)
This PR moves the `CollabNotification` component from the collab_ui crate to the UI crate, so that we can add a component preview to it. It also fixes problems with text truncation and other little details. <img width="700" height="1674" alt="Screenshot 2026-01-29 at 4โฏ 07@2x" src="https://github.com/user-attachments/assets/6aca6cff-564a-4729-b505-c02d8c3af97f" /> Release Notes: - Collab: Fixed overflowing text in project sharing and call notifications.
Danilo Leal created
ad69357
agent: Support initial prompt via zed://agent URL schema (#47959)
Adds `zed://agent?prompt=<url_encoded_text>` URL support to open the Agent Panel with a pre-filled prompt. Release Notes: - Added support for opening the Agent Panel with an initial prompt via `zed://agent?prompt=<url_encoded_text>` URL.
Smit Barmase created
b9e9b85
Add security warnings to issue templates (#47957)
Warn users to review and remove secrets from logs and settings before posting them in bug reports and crash reports. Release Notes: - N/A --------- Co-authored-by: John D. Swanson <swannysec@users.noreply.github.com>
Kunall Banerjee and John D. Swanson created
e713879
Add feature request discussion template (#47962)
Release Notes: - N/A
Joseph T. Lyons created
ba41499
gpui: Take advantage of unified memory on Apple silicon (#45577)
Reapplies #44273 I included metal-rs upgrade so we can get this working on Intel-based Macs cc: @JosephTLyons @notpeter @rtfeldman @Anthony-Eid Release Notes: - Reduced memory usage on Apple-silicon Macs by using shared memory where appropriate --------- Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Marco Mihai Condrache created
04d878e
typescript: Fix type import highlighting when alias is not present (#47190)
## Problem
The existing tree-sitter queries for type imports required both name and
alias fields to match. This caused `import type { Foo }` and `import {
type Foo }` to fall back to the generic identifier/variable highlighting
instead of being colored as types.
- `import type { Foo }` โ **NOT matched** (no alias)
- `import { type Foo }` โ **NOT matched** (no alias)
- `import type { Foo as Bar }` โ Matched โ
- `import { type Foo as Bar }` โ Matched โ
## Solution
Split the patterns to handle name and alias captures independently.
~## Disclaimer~
~DEBUGGING AND IMPLEMENTATION WAS DONE WITH **AI ASSISTANCE**.~
~**THE FIX HAS NOT BEEN TESTED** - I HAVE NOT COMPILED FROM SOURCE~
- @KyleBarton built from source and verified
Release Notes:
- Fixed typescript type import highlighting
Delyan Haralanov created
a09f0bb
git: Use LHS/RHS terminology consistently for side-by-side diff (#47949)
We were using primary/secondary in some places which is just unnecessarily confusing. Release Notes: - N/A Co-authored-by: cameron <cameron.studdstreet@gmail.com> Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Cole Miller , cameron , and Jakub Konka created
cd8a7b4
Add back "fs: Replace MacWatcher with notify::FsEventWatcher"" (#47952)
Reverts zed-industries/zed#47799 Now that we have a week to let this be tested in Nightly we can merge it again Release Notes: - Fix to many file descriptors error in MacOS
Anthony Eid created
263e000
agent_ui: Add adjustments to terminal selection as context (#47950)
Follow up to https://github.com/zed-industries/zed/pull/47637 - Removes the requirement for the terminal to be focused to use the `cmd->` keybinding. This way, we match the behavior of buffer selections and you can always add what's selected in the terminal inside the agent panel - Add number of lines selected in the mention button as well - Make the "Selection" menu item inside the "Add Context" menu also observe terminal selections <img width="420" height="254" alt="Screenshot 2026-01-29 at 1โฏ 36@2x" src="https://github.com/user-attachments/assets/25d2eb00-096f-44d9-8882-273932ca43e4" /> Release Notes: - Agent: Add number of liners selected in the terminal context mention
Danilo Leal created
ad24b3f
git: Fix missing hunk controls on side-by-side diff RHS (#47815)
Release Notes: - N/A
Cole Miller created
949972b
project: Always allocate WorktreeIDs on the remote client (#47936)
Closes https://github.com/zed-industries/zed/issues/40342 Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
52182e4
agent_ui: Add ability to add terminal output to agent context (#47637)
Summary This PR adds the ability to quote terminal selections into Agent threads, similar to how editor selections can be quoted. Users can now select text in the terminal and add it as context to their agent conversation. ### Features - **Context menu**: Added "Add to Agent Thread" option to the terminal's right-click menu (only shows when text is selected) - **Keyboard shortcut**: The existing `cmd->` / `ctrl->` shortcut now works in the terminal - **Collapsed display**: Terminal output appears as a collapsed "Terminal" crease in the chat, just like code references - **Works with both thread types**: Supports both ACP-style threads (Claude Code) and text threads ### Implementation - Extended `quote_selection` handler to check for terminal panel focus after checking for editor selections - Terminal content is formatted as ` ```terminal` code blocks via new `insert_terminal_crease` method - Refactored crease insertion into `insert_crease_impl` helper to support both code snippets (with `TextSnippet` icon) and terminal output (with `Terminal` icon) - Added automatic detection and folding of ` ```terminal` blocks in `set_message` so terminal content stays collapsed in sent message history - Terminal creases use a trailing space instead of newline so cursor behavior matches user expectations ### Demo 1. Select text in terminal 2. Right-click โ "Add to Agent Thread" (or press `cmd->`) 3. Terminal content appears as collapsed "Terminal" block in chat 4. Send message - AI receives full terminal output, but chat history shows it collapsed ### General note I'm new to open source and the codebase in general so let me know if anything should be different! I tried to stay in line with other patterns I saw. I didn't see a way to setup an end to end test with a real terminal so I just added a unit test for the adding of the text to the chat, if it exists and I missed it then I think the test coverage could be improved with a test that uses a real terminal + running the command <img width="431" height="148" alt="image" src="https://github.com/user-attachments/assets/854732f9-2a7f-4f31-867e-d54af068c97c" /> Release Notes: - agent: Added the ability to send selections from terminals into the Agent thread --------- Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Rutger Cappendijk and Ben Brandt created
d18d4b1
thread view: Improve thinking mode toggle UI (#47945)
Add the icon to the left side of the message editor, add a new icon for when the thinking mode is toggled on, and add a keybinding for the action. Currently available under a feature flag-only but should be out soon. <img width="400" height="318" alt="Screenshot 2026-01-29 at 11โฏ 57@2x" src="https://github.com/user-attachments/assets/e033ec83-746b-4fed-beb7-ed26e96cb60a" /> Release Notes: - N/A
Danilo Leal created
7161bf5
thread view: Improve load errors UI (#47943)
Just using the existing `Callout` component and standardizing styles with other errors. <img width="520" height="478" alt="Screenshot 2026-01-29 at 11โฏ 07@2x" src="https://github.com/user-attachments/assets/1f6f638c-326e-42c4-9972-293804aeae4d" /> Release Notes: - N/A
Danilo Leal created
2c4a823
project: Increase search detect yield threshold to 20KB (#47824)
Release Notes: - Improved CPU switching frequency for project search Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu created
723a58e
docs: Update content in the External Agents page (#47935)
Release Notes: - N/A
Danilo Leal created
4c8b699
agent_ui: Refactor in preparation for subagent permission work (#47874)
Release Notes: - N/A *or* Added/Fixed/Improved ... --------- Co-authored-by: MrSubidubi <dev@bahn.sh> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Cameron Mcloughlin , MrSubidubi , and Ben Brandt created
b7e11b3
Allow always_allow patterns for Nushell, Elvish, and Rc shells (#47908)
## Summary This PR extends the `always_allow` tool permission patterns to work with Nushell, Elvish, and Rc shells. Previously, these shells were incorrectly excluded because they don't use `&&`/`||` operators for command chaining. However, brush-parser can safely parse their command syntax since they all use `;` for sequential execution. ## Changes - Add `ShellKind::Nushell`, `ShellKind::Elvish`, and `ShellKind::Rc` to `supports_posix_chaining()` - Split `ShellKind::Unknown` into `ShellKind::UnknownWindows` and `ShellKind::UnknownUnix` to preserve platform-specific fallback behavior while still denying `always_allow` patterns for unrecognized shells - Add comprehensive tests for the new shell support - Clarify documentation about shell compatibility ## Shell Notes - **Nushell**: Uses `;` for sequential execution. The `and`/`or` keywords are boolean operators on values, not command chaining. - **Elvish**: Uses `;` to separate pipelines. Does not have `&&` or `||` operators. Its `and`/`or` are special commands operating on values. - **Rc (Plan 9)**: Uses `;` for sequential execution and `|` for piping. Does not have `&&`/`||` operators. ## Security Unknown shells still return `false` from `supports_posix_chaining()`, so `always_allow` patterns are denied for safety when we can't verify the shell's syntax. (No release notes because granular tool permissions are still feature-flagged.) Release Notes: - N/A --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Richard Feldman and Zed Zippy created
8bdfbfe
git: Fix a couple of bugs with buffer headers in the side-by-side diff UI (#47809)
- Fix sticky buffer header being painted on top of the toolbar - Fix buffer header click handlers and tooltips sometimes not working (element ID collision issue) - Deduplicate buffer header rendering code between split and normal editors Release Notes: - N/A
Cole Miller created
1870425
ep_cli: `rated-after:` query (#47906)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
05a021c
docs: Correct action descriptions to reflect actual purpose (#46931)
Thanks @injust for pointing this out. It seems a few other action docs were also copied from elsewhere and weren't updated to reflect their actual purpose. This PR fixes those, though I may not have covered all of them. Closes #46832 Release Notes: - N/A --------- Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
Xin Zhao and Kunall Banerjee created
483e64a
image_viewer: Compute better initial zoom level (#47886)
Closes Josephs note about that. Release Notes: - Preview only: Fixed an issue where images in the image viewer would not fit the viewer initially.
Finn Evers created
9437e84
Add student plan (#47866)
Release Notes: - N/A
Neel created
3e7f0ce
languages: Add highlighting for Go directives (#47621)
Closes #4381 Before: <img width="394" height="176" alt="before" src="https://github.com/user-attachments/assets/7b34b448-9fbc-4a69-abaf-8b621d22ef1e" /> After: <img width="394" height="176" alt="after" src="https://github.com/user-attachments/assets/388f997c-ca02-4fb4-b8db-4d6f7e9cd302" /> Release Notes: - Added highlighting for Go directives
ozacod created
97f0ab7
ci: Define default shell for all workflows (#47883)
GitHub allows defining a default shell for all jobs on the workflow level, which we did not use before, yet practically did when it comes down to our usage of `named::bash`. Since this makes stuff quite verbose, I decided on using the defaults instead so the workflows become somewhat easier to audit when reading the generated files. Powershell steps continue to use Powershell, only the default for bash scripts was modified. Release Notes: - N/A
Finn Evers created
dbeb0af
Fix shell injection vulnerability in terminal tool permissions (#47807)
<img width="1110" height="280" alt="Screenshot 2026-01-28 at 3 35 52โฏPM" src="https://github.com/user-attachments/assets/4d467e2c-2e7b-4ec7-bc87-6f0df8e667f0" /> <img width="1094" height="411" alt="Screenshot 2026-01-28 at 3 40 54โฏPM" src="https://github.com/user-attachments/assets/f559df93-e72e-4457-ba1b-f7d6239f3285" /> Previously, if a user configured `^ls` as an always-allow pattern, an attacker could craft a command like `ls && rm -rf /` which would be auto-approved because the regex only matched the beginning of the command string. Now the command is parsed into individual sub-commands (`ls`, `rm -rf /`) and EACH sub-command must match an allow pattern for auto-approval. This prevents shell injection attacks using operators like: - `&&` and `||` (boolean operators) - `;` and `&` (sequential/background execution) - `|` (pipes) - Newlines - Command substitution (`$()` and backticks) - Process substitution (`<()` and `>()`) ## Matching Logic - **always_deny**: if ANY sub-command matches, deny the entire command - **always_confirm**: if ANY sub-command matches, require confirmation (unless always_deny matched, in which case deny) - **always_allow**: ALL sub-commands must match for auto-approval (unless always_confirm or always_deny matched, in which case defer to those) - If parsing fails, or if the shell is unsupported, then always_allow is disabled for this command As usual, `always_allow_tool_actions` supercedes all of these. If it is `true`, then we always allow all tool calls, no questions asked. ## Shell Compatibility The shell parser only supports POSIX-like command chaining syntax (`&&`, `||`, `;`, `|`). **Supported shells:** Posix (sh, bash, dash, zsh), Fish 3.0+, PowerShell 7+/Pwsh, Cmd, Xonsh, Csh, Tcsh **Unsupported shells:** Nushell (uses `and`/`or` keywords), Elvish (uses `and`/`or` keywords), Rc (Plan 9 shell - no `&&`/`||` operators) For unsupported shells: - The "Always allow" UI options are hidden for the terminal tool - If the user has `always_allow` patterns configured in settings, they will see a `Deny` with an explanatory error message (No release notes because granular tool permissions are behind a feature flag.) Release Notes: - N/A --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Richard Feldman and Zed Zippy created
e181622
ep_cli: Further improvements to reversal tracking (#47897)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
7e065ae
docs: Update AI docs with new features that went out (#47898)
Release Notes: - N/A
Danilo Leal created
2cd8b42
Improve EP teacher prompt, add some CLI features (#47814)
Release Notes: - N/A --------- Co-authored-by: Oleksiy Syvokon <oleksiy.syvokon@gmail.com> Co-authored-by: Ben Kunkle <ben@zed.dev> Co-authored-by: Oleksiy <oleksiy@zed.dev>
Max Brunsfeld , Oleksiy Syvokon , Ben Kunkle , and Oleksiy created
081bb23
Improve Zed agent thread history to update across all open windows (#47803)
Previously, each Agent panel created its own `ThreadStore` instance, so thread history updates wouldn't sync between open windows. Users had to close and reopen windows to see threads created in other windows. Now `ThreadStore` is initialized once as a global and shared across all windows. When any window saves a thread, ThreadStore::reload() calls cx.notify(), which notifies all NativeAgentSessionList observers, causing all windows' history views to refresh. Note: This only works for the native Zed agent. It also is only improving the history view (thread titles)โthis PR does not sync edits between multiple windows when the same thread is open in each. Release Notes: - Improved Zed agent thread history to update across all open windows
Joseph T. Lyons created
1c1a657
client: Fix ACP registry blog post URL (#47881)
Closes #47882 Release Notes: - Fixed a typo in the link to the ACP registry URL blog post --------- Co-authored-by: MrSubidubi <finn@zed.dev>
O. Bennett and MrSubidubi created
446227c
repl: Streamline Markdown output usage (#47713)
Brought the Markdown output up to date with how Markdown is used in the Agent panel. This fixed an issue with outputs that were too large for the execution view as well as made sure that markdown would wrap. <img width="3222" height="2334" alt="image" src="https://github.com/user-attachments/assets/c65efa53-b792-4529-909a-9117053e30be" /> Release Notes: - N/A
Kyle Kelley created
a21e21c
git: Hide toggle split diff button behind feature flag (#47878)
Release Notes: - N/A Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Cole Miller and Jakub Konka created
308537f
cli: Add GitHub token to `generate_message` step (#47876)
Release Notes: - N/A
Finn Evers created
c3fddcd
client: Store `ReleaseChannel` instead of `&'static str` (#47868)
Closes #ISSUE Store `ReleaseChannel` instead of `&'static str`. This allows displaying other aspects about the channel than just the display name. Makes it more concrete what is stored within the field, as it has limited variants, as opposed to something like `session_id` Release Notes: - N/A *or* Added/Fixed/Improved ...
tidely created