46b5a6f
Reset extensions dir to origin/main
Richard Feldman created
46b5a6f
Reset extensions dir to origin/main
Richard Feldman created
c4c2a0a
Merge remote-tracking branch 'origin/main' into register-language-model-extensions
Richard Feldman created
6976208
Move autofix stuff to zippy (#45304)
Although I wanted to avoid the dependency, it's hard to get github to do what we want. Release Notes: - N/A
Conrad Irwin created
9d23e57
Remove AgentModelIcon
Richard Feldman created
3a6e91a
Merge remote-tracking branch 'origin/main' into provider-extensions
Richard Feldman created
6055b45
Add support for provider extensions (but no extensions yet) (#45277)
This adds support for provider extensions but doesn't actually add any yet. Release Notes: - N/A
Richard Feldman created
88f90c1
Add language server version in a tooltip on language server hover (#45302)
I wanted a way to make it easy to figure out which version of a language server Zed is running. Now, you get a tooltip when hovering on a language server in the Language Servers popover. <img width="498" height="168" alt="SCR-20251218-ovln" src="https://github.com/user-attachments/assets/1ced4214-b868-4405-8881-eb7c0b75a53e" /> This PR also fixes a bug. We had existing code to open a tooltip on these language server entrees and display the language server message, which was never fully wired up for `CustomEntry`s. Now, in this PR, we will show show either version, message, or both, in the documentation aside, depending on what the server has given us. Mostly done with Droid (using GPT-5.2), with manual review and multiple follow ups to guide it into using existing patterns in the codebase, when it did something abnormal. Release Notes: - Added language server version in a tooltip on language server hover --------- Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Joseph T. Lyons and factory-droid[bot] created
0d74f98
danger: Upgrade `danger-plugin-pr-hygiene` to v0.7.1 (#45303)
This PR upgrades `danger-plugin-pr-hygiene` to v0.7.1. Release Notes: - N/A
Marshall Bowers created
ca90b85
docs: Remove local collaboration docs (#45301)
This PR removes the docs for running Collab locally, as they are outdated and don't reflect the current state of affairs. Release Notes: - N/A
Marshall Bowers created
8516d81
Fix display name for Ollama models (#45287)
Closes #43646 Release Notes: - Fixed display name for Ollama models
Richard Feldman created
af589ff
agent_ui: Simplify timestamp display (#45296)
This PR simplifies how we display thread timestamps in the agent panel's history view. For threads that are older-than-yesterday, we just show how many days ago that thread was had in. Hovering over the thread item shows you both the title and the full date, if needed (time and date). <img width="450" height="786" alt="Screenshot 2025-12-18 at 5 24@2x" src="https://github.com/user-attachments/assets/11416e9b-f1b0-4307-9db0-988a95a316a1" /> Release Notes: - N/A
Danilo Leal created
d2bbfbb
lsp: Broadcast our capability for `MessageActionItem`s (#45047)
Closes #37902 Release Notes: - Enable LSP Message action items for more language servers. These are interactive prompts, often for things like downloading build inputs for a project.
Julia Ryan created
413f4ea
Redact environment variables from language server spawn errors (#44783)
Redact environment variables from zed logs when lsp fails to spawn. Release Notes: - N/A
Peter Tripp created
1b6d588
danger: Deny conventional commits in PR titles (#45283)
This PR upgrades `danger-plugin-pr-hygiene` to v0.7.0 so that we can have Danger deny conventional commits in PR titles. Release Notes: - N/A
Marshall Bowers created
334ca21
Truncate code actions with a long label and show full label aside (#45268)
Closes #43355 Fixes the issue were code actions with long labels would get cut off without being able to see the full description. We now properly truncate those labels with an ellipsis and show the full description in an aside. Release Notes: - Added ellipsis to truncated code actions and an aside showing the full action description.
Gaauwe Rombouts created
f58278a
glossary: Fix grammar and typo (#45267)
Fixes grammar and a typo in `Picker` description. Release Notes: - N/A
Emmanuel Amoah created
e10b9b7
git: Add global git integration enable/disable setting (#43326)
Closes #13304 Release Notes: - Add global `git status` and `git diff` on/off in one place instead of control everywhere We can first review to ensure this change meets both `Zed` and user requirements, as well as code rules. Currently, we only support user-level settings. We can wait for this PR: https://github.com/zed-industries/zed/pull/43173 to be merged, then modify it to support both user and project levels.
Leo created
098adf3
gpui: Enable direct-to-display optimization for metal (#44334)
When profiling Zed with Instruments, a warning appears indicating that surfaces cannot be pushed directly to the display as they are non-opaque. This happens because the metal layer is currently marked as non-opaque by default, even though the window itself is not transparent. <img width="590" height="55" alt="image" src="https://github.com/user-attachments/assets/2647733e-c75b-4aec-aa19-e8b2ffd6194b" /> Metal on macOS can bypass compositing and present frames directly to the display when several conditions are met. One of those conditions is that the backing layer must be declared opaque. Apple’s documentation notes that marking layers as opaque allows the system to avoid unnecessary compositing work, reducing GPU load and improving frame pacing Ref: https://developer.apple.com/documentation/metal/managing-your-game-window-for-metal-in-macos This PR updates the Metal renderer to mark the layer as opaque whenever the window does not use transparency. This makes Zed eligible for macOS’s direct-to-display optimization in scenarios where the system can apply it. Release Notes: - gpui: 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
a85c508
Fix self-referential symbolic link (#45265)
Release Notes: - N/A
Jakub Konka created
2a713c5
gpui: Small tab group performance improvements (#41885)
Closes #ISSUE Removes a few eager container clones and iterations. Added a todo to `get_prev_tab_group_window` and `get_next_tab_group_window`. They seem to use `HashMap::keys()` for choosing the previous tab group, however `.keys()` returns an arbitrary order, so I'm not sure if previous actually means anything here. Conrad seems to have worked on this part previously, maybe he has some insights. That can possibly be a follow-up PR, but I'd be willing to work on it here as well since the other changes are so simple. Release Notes: - N/A
tidely created
f937c19
rules_library: Only store built-in prompts when they are customized (#45112)
Follow up to #45004 Release Notes: - N/A
Bennet Bo Fenner created
7a62f01
agent_ui: Use display name for the message editor placeholder (#45264)
Follow up to a regression that happened when we introduced agent servers that made everywhere displaying agent names use the extension name instead of the display name. This has been since fixed in other places and this PR now updates the agent panel's message editor, too: | Before | After | |--------|--------| | <img width="1154" height="254" alt="Screenshot 2025-12-18 at 12 54 2@2x" src="https://github.com/user-attachments/assets/5f3de9f9-4e11-42f6-90c2-56fc8cdff32e" /> | <img width="1154" height="254" alt="Screenshot 2025-12-18 at 12 54@2x" src="https://github.com/user-attachments/assets/46ed5c45-7e1d-4cc6-b219-b6cc19206d1b" /> | Release Notes: - N/A
Danilo Leal created
2d071b0
editor: Fix git-hunk toggling for adjacent hunks (#43187)
Closes #42934 Release Notes: - Fix toggling adjacent git-diff hunks based on the reported behaviour in #42934 --------- Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Sean Hagstrom and Jakub Konka created
bd2b0de
gpui: Add modal dialog window kind (#40291)
Closes #ISSUE A [modal dialog](https://en.wikipedia.org/wiki/Modal_window) window is a window that demands the user's immediate attention and blocks interaction with other parts of the application until it's closed. - On Windows this is done by disabling the parent window when the dialog window is created and re-enabling the parent window when closed. - On Wayland this is done using the [`XdgDialog`](https://wayland.app/protocols/xdg-dialog-v1) protocol, which hints to the compositor that the dialog should be modal. While compositors like GNOME and KDE block parent interaction automatically, the XDG specification does not guarantee this behavior, compositors may deliver events to the parent window unfiltered. Since the specification explicitly requires clients to implement event filtering logic themselves, this PR implements client-side blocking in GPUI to ensure consistent modal behavior across all Wayland compositors, including those like Hyprland that don't block parent interaction. - On X11 this is done by enabling the application window property [`_NET_WM_STATE_MODAL`](https://specifications.freedesktop.org/wm/latest/ar01s05.html#id-1.6.8) state. I'm unable to implement this on MacOS as I lack the experience and the hardware to test it. If anyone is interested on implementing this let me know. |Window|Linux (wayland)| Linux (x11) |MacOS| |-|-|-|-| |<video src="https://github.com/user-attachments/assets/bfd0733a-445d-4b63-ac6b-ebe098a7dc74"></video>|<video src="https://github.com/user-attachments/assets/024cd6ec-ff81-4250-a5be-5d207a023f8c"></video>| N/A | <video src="https://github.com/user-attachments/assets/656e60a5-26b2-4ee2-8368-1fbbe872453c"></video>| TODO: - [x] Block parent interaction client-side on X11 Release Notes: - Added modal dialog window kind on GPUI --------- Co-authored-by: Jason Lee <huacnlee@gmail.com> Co-authored-by: Anthony Eid <anthony@zed.dev> Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Alvaro Parker , Jason Lee , Anthony Eid , and Anthony Eid created
886de8f
agent_ui: Improve UX when pasting code into message editor (#45254)
Follow up to #42982 Release Notes: - agent: Allow pasting code without formatting via ctrl/cmd-shift-v. - agent: Fixed an issue where pasting a single line of code would always insert an @mention
Bennet Bo Fenner created
7a783a9
acp: Update to agent-client-protocol rust sdk v0.9.2 (#45255)
Release Notes: - N/A
Ben Brandt created
f9462da
terminal: Fix pane re-entrancy panic when splitting terminal tabs (#45231)
## Summary Fix panic "cannot update workspace::pane::Pane while it is already being updated" when dragging terminal tabs to split the pane. ## Problem When dragging a terminal tab to create a split, the app panics due to re-entrancy: the drop handler calls `terminal_panel.center.split()` synchronously, which invokes `mark_positions()` that tries to update all panes in the group. When the pane being updated is part of the terminal panel's center group, this causes a re-entrancy panic. ## Solution Defer the split operation using `cx.spawn_in()`, similar to how `move_item` was already deferred in the same handler. This ensures the split (and subsequent `mark_positions()` call) runs after the current pane update completes. ## Test plan - Open terminal panel - Create a terminal tab - Drag the terminal tab to split the pane - Verify no panic occurs and split works correctly
Ahmed M. Ammar created
61dd6a8
agent_ui: Add some fixes to tool calling display (#45252)
- Follow up to https://github.com/zed-industries/zed/pull/45097 — not showing raw inputs for edit and terminal calls - Removing the display of empty Markdown if the model outputs it Release Notes: - N/A --------- Co-authored-by: Agus Zubiaga <hi@aguz.me> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Danilo Leal , Agus Zubiaga , and Ben Brandt created
4f22272
Alphabetize auto_install_extensions
Richard Feldman created
20d7513
Re-add html to auto_install_extensions
Richard Feldman created
493f8d5
Merge remote-tracking branch 'origin/main' into provider-extensions
Richard Feldman created
abb199c
thread_view: Clearer authentication states (#45230)
Closes #44717 Sometimes, we show the user the agent's auth methods because we got an AuthRequired error. However, there are also several ways a user can choose to re-enter the authentication flow even though they are still logged in. This has caused some confusion with several users, where after logging in, they type /login again to see if anything changed, and they saw an "Authentication Required" warning. So, I made a distinction in the UI if we go to this flow from a concrete error, or if not, made the language less error-like to help avoid confusion. | Before | After | |--------|--------| | <img width="1154" height="446" alt="Screenshot 2025-12-18 at 10 54@2x" src="https://github.com/user-attachments/assets/9df0d59a-2d45-4bfc-ba85-359dd1a4c8ae" /> | <img width="1154" height="446" alt="Screenshot 2025-12-18 at 10 53@2x" src="https://github.com/user-attachments/assets/73a9fb45-4e6f-4594-8795-aaade35b2a72" /> | Release Notes: - N/A --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com> Co-authored-by: Miguel Raz Guzmán Macedo <miguel@zed.dev>
Ben Brandt , Danilo Leal , and Miguel Raz Guzmán Macedo created
cebbf77
gpui(windows): Fix clicks to inactive windows not dispatching to the clicked window (#45237)
Release Notes: - Fixed an issue on windows where clicking buttons on windows in the background would not register as being clicked on that window
Lukas Wirth created
0180f3e
deepseek: Fix for max output tokens blocking completions (#45236)
They count the requested max_output_tokens against the prompt total. Seems like a bug on their end as most other providers don't do this, but now we just default to None for the main models and let the API use its default behavior which works just fine. Closes: #45134 Release Notes: - deepseek: Fix issue with Deepseek API that was causing the token limit to be reached sooner than necessary
Ben Brandt created
5488a19
terminal: Respect RevealStrategy::NoFocus and Never focus settings (#45180)
Closes #45179
## Summary
Fixes the focus behavior when creating terminals with
`RevealStrategy::NoFocus` or `RevealStrategy::Never`. Previously,
terminals would still receive focus if the terminal pane already had
focus, contradicting the documented behavior.
## Changes
- **`add_terminal_task()`**: Changed focus logic to only focus when
`RevealStrategy::Always`
- **`add_terminal_shell()`**: Same fix
The fix changes:
```rust
// Before
let focus = pane.has_focus(window, cx)
|| matches!(reveal_strategy, RevealStrategy::Always);
// After
let focus = matches!(reveal_strategy, RevealStrategy::Always);
```
## Impact
This affects:
- Vim users running `:!command` (uses `NoFocus`)
- Debugger terminal spawning (uses `NoFocus`)
- Any programmatic terminal creation requesting background behavior
Release Notes:
- Fixed terminal focus behavior to respect `RevealStrategy::NoFocus` and
`RevealStrategy::Never` settings when the terminal pane already has
focus.
rabsef-bicrym created
bb1198e
languages: Allow using locally installed `ty` for Python (#45193)
Release Notes: - Allow using locally installed `ty` for Python
Henry Chu created
69fe27f
Keep tab stop-less snippets in completion list (#45227)
Closes https://github.com/zed-industries/zed/issues/45083 cc @agu-z Release Notes: - Fixed certain rust-analyzer snippets not shown
Kirill Bulatov created
469da2f
gpui: Fix Windows credential lookup returning error instead of `None` when credentials don't exist (#45228)
This spams the log with amazon bedrock otherwise Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
4f87822
gpui: Persist window bounds and display when detaching a workspace session (#45201)
Closes #41246 #45092
Release Notes:
- N/A
**Root Cause**:
Empty local workspaces returned `DetachFromSession` from
`serialize_workspace_location()`, and the `DetachFromSession` handler
only cleared the session_id **without saving window bounds**.
**Fix Applied**:
Modified the `DetachFromSession` handler to save window bounds via
`set_window_open_status()`:
```rust
WorkspaceLocation::DetachFromSession => {
let window_bounds = SerializedWindowBounds(window.window_bounds());
let display = window.display(cx).and_then(|d| d.uuid().ok());
window.spawn(cx, async move |_| {
persistence::DB
.set_window_open_status(database_id, window_bounds, display.unwrap_or_default())
.await.log_err();
persistence::DB.set_session_id(database_id, None).await.log_err();
})
}
```
**Recording**:
https://github.com/user-attachments/assets/2b6564d4-4e1b-40fe-943b-147296340aa7
shibang created
9a69d89
thread_view: Remove unused acp auth method (#45221)
This was from an early iteration and this code path isn't used anymore Release Notes: - N/A
Ben Brandt created
54f360a
Add a test to ensure we invalidate brackets not only on edits (#45219)
Follow-up of https://github.com/zed-industries/zed/pull/45187 Release Notes: - N/A
Kirill Bulatov created
b2a0b78
acp: Change default for gemini back to managed version (#45218)
It seems we unintentionally changed the default behavior of if we use the gemini on the path in #40663 Changing this back so by default we use a managed version of the CLI so we can better control min versions and the like, but still allow people to override if they need to. Release Notes: - N/A
Ben Brandt created
f1ca2f9
workspace: Fix new projects opening with default window size (#45204)
Previously, when opening a new project (one that was never opened before), the window bounds restoration logic would fall through to GPUI's default window sizing instead of using the last known window bounds. This change consolidates the window bounds restoration logic so that both empty workspaces and new projects use the stored default window bounds, making the behavior consistent: any new window will use the last resized window's size and position. Closes #45092 Release Notes: - Fixed new files and projects opening with default window size instead of the last used window size.
MostlyK created
4b34ade
Update Mistral models context length to their recommended values (#45194)
I noticed some of mistral models context lenghts were outdated, they were updated accordingly to mistral documentation. The following models had their context lenght changed: [mistral-large-latest](https://docs.mistral.ai/models/mistral-large-3-25-12) [magistral-medium-latest](https://docs.mistral.ai/models/magistral-medium-1-2-25-09) [magistral-small-latest](https://docs.mistral.ai/models/magistral-small-1-2-25-09) [devstral-medium-latest](https://docs.mistral.ai/models/devstral-2-25-12) [devstral-small-latest](https://docs.mistral.ai/models/devstral-small-2-25-12)
Guilherme do Amaral Alves created
df48294
agent_ui: Remove unnecessary Arc allocation (#45172)
Follow up to https://github.com/zed-industries/zed/pull/44297. Initial implementation in ce884443f1c38ca8da9edf9fbbb8e7fd579452cb used `Arc` to store the reference to the hash map inside the iterator while keeping the lifetime static. The code was later simplified in 5151b22e2ea37fb457cf4f88b88fe4f315306074 to build the list eagerly but the Arc was forgotten, although it became unnecessary. cc @bennetbo Release Notes: - N/A
Oleksii Orlenko created
cdc5cc3
Return back the eager snapshot update (#45210)
Based on https://github.com/zed-industries/zed/pull/45187#discussion_r2630140112 Release Notes: - N/A Co-authored-by: Lukas Wirth <lukas@zed.dev>
Kirill Bulatov and Lukas Wirth created
0f7f540
Always invalidate tree-sitter data on buffer reparse end (#45187)
Also do not eagerly invalidate this data on buffer reparse start Closes https://github.com/zed-industries/zed/issues/45182 Release Notes: - Fixed bracket colorization not applied on initial file open
Kirill Bulatov created
184001b
docs: Add note about conflicting global macOS shortcut (#45186)
This is already noted in our `default-macos.json`, but was never surfaced in our docs for some reason. A user noted their LSP completions were not working because they were not aware of the conflicting global shortcut. Ref: https://github.com/zed-industries/zed/issues/44970#issuecomment-3664118523 Release Notes: - N/A
Kunall Banerjee created
225a2a8
google_ai: Refactor token count methods in Google AI (#45184)
The change simplifies the `max_token_count` and `max_output_tokens` methods by grouping Gemini models with identical token limits. Release Notes: - N/A
Xiaobo Liu created
ea37057
Restore generic modal closing on mouse click (#45183)
Was removed in https://github.com/zed-industries/zed/pull/44887/changes#diff-1de872be76a27a9d574a0b0acec4581797446e60743d23b3e7a5f15088fa7e61 Release Notes: - (Preview only) Fixed certain modals not being dismissed on mouse click outside
Kirill Bulatov created