87014ce
theme: Add `panel.overlay_background` and `panel.overlay_hover` (#34655)
Click to expand commit body
In https://github.com/zed-industries/zed/pull/33994 sticky scroll was
added to project_panel.
I love this feature!
This introduces a new element layering not seen before. On themes that
use transparency, the overlapping elements can make it difficult to read
project panel entries. This PR introduces a new selector:
~~panel.sticky_entry.background~~ `panel.overlay_background` This
selector lets you set the background of entries when they become sticky.
Closes https://github.com/zed-industries/zed/issues/34654
Before:
<img width="373" height="104" alt="Screenshot 2025-07-17 at 10 19 11 AM"
src="https://github.com/user-attachments/assets/d5bab065-53ca-4b27-b5d8-3b3f8d1f7a81"
/>
After:
<img width="292" height="445" alt="Screenshot 2025-07-17 at 11 46 57 AM"
src="https://github.com/user-attachments/assets/4cd2b87b-2989-4489-972f-872d2dc13a33"
/>
<img width="348" height="390" alt="Screenshot 2025-07-17 at 11 39 57 AM"
src="https://github.com/user-attachments/assets/49c0757f-2c50-4e01-92c6-2ae7e4132a53"
/>
<img width="668" height="187" alt="Screenshot 2025-07-17 at 11 39 29 AM"
src="https://github.com/user-attachments/assets/167536c2-5872-4306-90c6-c6b68276b618"
/>
Release Notes:
- Add `panel.sticky_entry.background` theme selector for modifying
project panel entries when they become sticky when scrolling and overlap
with entries below them.
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Bret Comnes
and
Smit Barmase
created
2b671a4
ai onboarding: Don't show API keys section if user is already in Pro (#34867)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
eaccd54
Add fast-follows to the AI onboarding flow (#34737)
Click to expand commit body
Follow-up to https://github.com/zed-industries/zed/pull/33738.
Release Notes:
- N/A
---------
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Danilo Leal
and
Bennet Bo Fenner
created
5a530ec
zed: Add support for `zed://agent` links (#34862)
Click to expand commit body
This PR adds support for `zed://agent` links for opening the Agent
Panel.
Release Notes:
- N/A
Marshall Bowers
created
233e66d
Add `editor::BlameHover` action for triggering the blame popover via keyboard (#32096)
Click to expand commit body
Make the git blame popover available via the keymap by making it an
action. The blame popover stays open after being shown via the action,
similar to the `editor::Hover` action.
I added a default vim-mode key binding for `g b`, which goes in hand
with `g h` for hover. I'm not sure what the keybind would be for regular
layouts, if any would be set by default.
I'm opening this as a draft because I coludn't figure out a way to
position the popover correctly above/under the cursor head. I saw some
uses of `content_origin` in other places for calculating absolute pixel
positions, but I'm not sure how to make use of it here without doing a
big refactor of the blame popover code 🤔. I would appreciate some
help/tips with positioning, because it seems like the last thing to
implement here.
Opening as a draft for now because I think without the correct
positioning this feature is not complete.
Closes https://github.com/zed-industries/zed/discussions/26447
Release Notes:
- Added `editor::BlameHover` action for showing the git blame popover
under the cursor. By default bound to `ctrl-k ctrl-b` and to `g h` in
vim mode.
This PR refactors the `OpenRequest` to introduce an `OpenRequestKind`
enum.
It seems most of the fields on `OpenRequest` are mutually-exclusive, so
it is better to model it as an enum rather than using a bunch of
`Option`s.
There are likely more of the existing fields that can be converted into
`OpenRequestKind` variants, but I'm being conservative for this first
pass.
Release Notes:
- N/A
Marshall Bowers
created
5289b81
ai_onboarding: Send users directly into the trial checkout flow when starting the trial (#34859)
Click to expand commit body
This PR makes it so users will be sent immediately into the trial
checkout flow (by hitting zed.dev/account/start-trial) when they click
the "Start Pro Trial" button.
Release Notes:
- N/A
Marshall Bowers
created
8515487
agent: Add new thread start buttons to the empty state (#34829)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
19ab1eb
Fix an issue where xkb defined hotkeys for arrows would not work (#34823)
Click to expand commit body
Addresses
https://github.com/zed-industries/zed/pull/34053#issuecomment-3096447601
where custom-defined arrows would stop working in Zed.
How to reproduce:
1. Define custom keyboard layout
```bash
cd /usr/share/X11/xkb/symbols/
sudo nano mykbd
```
```
default partial alphanumeric_keys
xkb_symbols "custom" {
name[Group1]= "Custom Layout";
key <AD01> { [ q, Q, Escape, Escape ] };
key <AD02> { [ w, W, Home, Home ] };
key <AD03> { [ e, E, Up, Up ] };
key <AD04> { [ r, R, End, End ] };
key <AD05> { [ t, T, Tab, Tab ] };
key <AC01> { [ a, A, Return, Return ] };
key <AC02> { [ s, S, Left, Left ] };
key <AC03> { [ d, D, Down, Down ] };
key <AC04> { [ f, F, Right, Right ] };
key <AC05> { [ g, G, BackSpace, BackSpace ] };
// include a base layout to inherit the rest
include "us(basic)"
};
```
2. Activate custom layout with win-key as AltGr
```bash
setxkbmap mykbd -variant custom -option lv3:win_switch
```
3. Now Win-S should produce left arrow, Win-F right arrow
4. Test whether it works in Zed
Release Notes:
- linux: xkb-defined hotkeys for arrow keys should behave as expected.
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Sergei Surovtsev
and
Conrad Irwin
created
722a05b
Wire up stop button in claude threads (#34839)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Agus Zubiaga
and
Ben Brandt
created
5b3e371
gpui: Round `scroll_max` to two decimal places (#34832)
Click to expand commit body
Follow up to #31836
After enabling rounding in the Taffy layout engine, we frequently run
into cases where the bounds produced by Taffy and ours slightly differ
after 5 or more decimal places. This leads to cases where containers
become scrollable for less than 0.0000x Pixels. In case this happens for
e.g. hover popovers, we render a scrollbar due to the container being
technically scrollable, even though the scroll amount here will in
practice never be visible.
This change fixes this by rounding the `scroll_max` by which we clamp
the current scroll position to two decimal places. We don't benefit from
the additional floating point precision here at all and it stops such
containers from becoming scrollable altogether. Furthermore, we now
store the `scroll_max` instead of the `padded_content_size` as the
former gives a much better idea on whether the corresponding container
is scrollable or not.
| `main` | After these changes |
| -- | -- |
| <img width="610" height="316" alt="main"
src="https://github.com/user-attachments/assets/ffcc0322-6d6e-4f79-a916-bd3c57fe4211"
/> | <img width="610" height="316" alt="scroll_max_rounded"
src="https://github.com/user-attachments/assets/5fe530f5-2e21-4aaa-81f4-e5c53ab73e4f"
/> |
Release Notes:
- Fixed an issue where scrollbars would appear in containers where no
scrolling was possible.
Finn Evers
created
8eca7f3
Fix for vim bindings in Pickers on Linux (#34840)
Click to expand commit body
Closes: https://github.com/zed-industries/zed/issues/34780
Also relocated undo/redo selection in the keymap (no-op) as they are
from Sublime, not VSCode.
Release Notes:
- vim: Fixed an issue so `ctrl-w` / `ctrl-h` and `ctrl-u` work in
pickers on Linux when Vim mode is enabled.
Peter Tripp
created
1a17157
Fix enter to select model in agent panel (#34846)
Click to expand commit body
Broken by #34664
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Ben Kunkle
created
241acbe
Stop onboarding page from showing up instead of welcome page (#34845)
Click to expand commit body
This is from PR #34723 where I was working on developing the onboarding
page, but I forgot to switch the first page back to our current version.
Release Notes:
- N/A
Anthony Eid
created
6ea09be
terminal: Handle spaces in cwds of remote terminals (#34844)
Click to expand commit body
Closes #34807
Release Notes:
- Fixed "Open in terminal" action not working with paths that contain
spaces in SSH projects.
Piotr Osiewicz
created
3e50d99
agent: Fix double-lease panic when clicking on thread to jump (#34843)
da8bf9a
Auto-retry agent errors by default (#34842)
Click to expand commit body
Now we explicitly carve out exceptions for which HTTP responses we do
*not* retry for, and retry at least once on all others.
Release Notes:
- The Agent panel now automatically retries failed requests under more
circumstances.
Richard Feldman
created
589af59
collab: Refresh the LLM token once the terms of service have been accepted (#34833)
Click to expand commit body
Release Notes:
- N/A
Bennet Bo Fenner
created
254c7a3
Regroup LSP context menu items by the worktree name (#34838)
Click to expand commit body
Also
* remove the feature gate
* open buffers with an error when no logs are present
* adjust the hover text to indicate that difference
<img width="480" height="380" alt="image"
src="https://github.com/user-attachments/assets/6b2350fc-5121-4b1e-bc22-503d964531a2"
/>
Release Notes:
- N/A
This PR removes the `PUT /billing/preferences` endpoint, as it has been
moved to `cloud.zed.dev`.
Release Notes:
- N/A
Marshall Bowers
created
c251f2a
gpui: Throttle interactive resize events on Wayland (#34760)
Click to expand commit body
Wayland compositors can potentially generate thousands of resize
requests when drag-resizing a window, which Zed is unable to keep up
with. This commit changes the behavior to only resize once per vblank
cycle, which helps significantly when resizing the window with a high
poll-rate mouse (1000Hz is common these days)
Here is an example of the behavior pre and post this commit, with some
print-debugging added for tracking resize calls. I have a wireless mouse
with a 2000Hz polling rate and a 165Hz display:
Before:
https://github.com/user-attachments/assets/4c657f90-5fd2-4809-97ef-363fd48e81b8
After:
https://github.com/user-attachments/assets/4a0f5fbd-c3c4-40a1-9f71-3b4358c827cf
Closes #20660
Release Notes:
- Improved: Make resizing smoother on Wayland/Linux
Kamal Ahmad
created
cc56196
Fix loading agent server settings (#34662)
We've had problems in the past with bumping past 0.5.2 due to perf
regressions reported by @huacnlee; 0.5.1 was fine though.
Hence, let's bump taffy to 0.5.1 as a safe bet and then try to push past
0.5.2 (after we identify the root cause of regression
Related to #19189
Release Notes:
- N/A
Piotr Osiewicz
created
56fd950
thread view: Add ability to expand message editor and fix scroll (#34766)
Instead of selecting a screen to share arbitrarily, we'll now allow user
to select the screen to share. Note that sharing multiple screens at the
time is still not supported (though prolly not too far-fetched).
Related to #4666

Release Notes:
- Added screen selector dropdown to screen share button
---------
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Co-authored-by: Cole Miller <cole@zed.dev>
Piotr Osiewicz
,
Kirill Bulatov
, and
Cole Miller
created
57ab09c
claude: Don't quote executable path in mcp configuration (#34805)
Click to expand commit body
This was generating an invalid string for the configuration, removing
the extra quotes makes it work. This affected the versions of Zed that
have a space in their name.
Release Notes:
- N/A
Release Notes:
- N/A
With a `tab_index` and `tab_stop` option to `FocusHandle` to us can
switch focus by `Tab`, `Shift-Tab`.
The `tab_index` is from
[WinUI](https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.control.tabindex?view=winrt-26100)
and [HTML
tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex),
only the `tab_stop` is enabled that can be added into the `tab_handles`
list.
- Added `window.focus_next()` and `window.focus_previous()` method to
switch focus.
- Added `tab_index` to `InteractiveElement`.
```bash
cargo run -p gpui --example tab_stop
```
https://github.com/user-attachments/assets/ac4e3e49-8359-436c-9a6e-badba2225211
Jason Lee
created
137081f
Misc code cleanups accumulated while working on other changes (#34787)
Click to expand commit body
Release Notes:
- N/A
Michael Sloan
created
7c1040b
keymap_ui: Auto complete action arguments (#34785)
Click to expand commit body
Supersedes: #34242
Creates an `ActionArgumentsEditor` that implements the required logic to
have a JSON language server run when editing keybinds so that there is
auto-complete for action arguments.
This is the first time action argument schemas are required by
themselves rather than inlined in the keymap schema. Rather than add all
action schemas to the configuration options we send to the JSON LSP on
startup, this PR implements support for the
`vscode-json-language-server` extension to the LSP whereby the server
will request the client (Zed) to resolve URLs with URI schemes it does
not recognize, in our case `zed://`. This limits the impact on the size
of the configuration options to ~1KB as we send URLs for the language
server to resolve on demand rather than the schema itself. My
understanding is that this is how VSCode handles JSON schemas as well. I
plan to investigate converting the rest of our schema generation logic
to this method in a follow up PR.
Co-Authored-By: Cole <cole@zed.dev>
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Ben Kunkle
created
ff79b29
Set stripe-mock version to `0.178.0` to match stripe API version used (#34786)
Click to expand commit body
Release Notes:
- N/A
Michael Sloan
created
2e41e31
component preview: Fix Zed AI onboarding young account preview (#34783)
Click to expand commit body
Release Notes:
- N/A
Bennet Bo Fenner
created
5f92ac2
docs: Consolidate backend setup docs into local-collaboration.md (#34653)
Click to expand commit body
Simplify docs for mac/linux/windows by consolidating the backend
dependencies (collaboration) docs into local-collaboration.md. Most
users building zed will not need to do this -- streamline them into
getting setup to build the zed client app first.
Release Notes:
- N/A
Fix a spurious error in Zed logs from the OpenRouter svg Logo introduced
in https://github.com/zed-industries/zed/pull/29496:
```log
WARN [usvg::parser::svgtree] Failed to parse clip-path value: 'url(#clip0_205_3)'.
```
Release Notes:
- N/A
Peter Tripp
created
2911130
agent: Fix Mistral tool use error message (#34692)
Click to expand commit body
Closes #32675
Exactly the same changes as in #33640 by @sviande
The PR has been in WIP state for 3 weeks with no activity, and the issue
basically makes Mistral models unusable. I have tested the changes
locally, and it does indeed work. Full credit goes to @sviande, I just
want this feature to be finished.
Release Notes:
- agent: Fixed an issue with tool calling with the Mistral provider
(thanks [@sviande](https://github.com/sviande) and
[@armyhaylenko](https://github.com/armyhaylenko))
Co-authored-by: sviande <sviande@gmail.com>
Oleksandr Mykhailenko
and
sviande
created
0ffd937
Fix Tailwind support for HTML/ERB files (#34743)
Click to expand commit body
Closes #27118
Closes #34165
Fix a small issue after we landed
https://github.com/zed-extensions/ruby/pull/113+ where we introduced
`HTML/ERB` and `YAML/ERB` language IDs to improve user experience. Sorry
about that. Thanks!
Release Notes:
- N/A
70bde54
ci: Lint GitHub Actions workflows with actionlint (#34729)
Click to expand commit body
Added [rhysd/actionlint](https://github.com/rhysd/actionlint/) a static
checker for GitHub Actions workflow files.
Install locally with `brew install actionlint` the run with
`actionlint`.
Inspired by: https://github.com/zed-industries/zed/pull/34704 which
yielded this observation:
> In github actions:
> 1. strings are truthy
> 2. `${{ }}` will become a string if it doesn't wrap the whole value.
>
> So `if: false && true` becomes `false`
> and `if: ${{ false && true }}` becomes `false`
> but `if: false && ${{ true }}` becomes `"false && true"` which
evaluates true
> The reason you sometimes need `${{ }}` is because YAML doesn't like
`!`
> so `if: !false` is invalid yaml
> and `if: ${{ !false }}` works just fine.
Changes:
- Add `actionlint` job
- Refactor `job_spec` job to be more readable
- Fix all `actionlint` and `shellcheck` errors in Actions workflows (62
in all)
- Add `self-mini-macos` and `self-32vcpu-windows-2022` labels to
self-hosted runners. Not strictly related, but useful if you need to
take a runner out of the rotation (since `macOS`, `self-hosted`, and
`ARM64` are auto-set and cannot be added/removed).
- Change ci.yml macos_relase to target `self-mini-macos` instead of
`bundle` which was previously deprecated.
This would've caught the error fixed in
https://github.com/zed-industries/zed/pull/34704. Here's what that [job
failure](https://github.com/zed-industries/zed/actions/runs/16376993944/job/46279281842?pr=34729)
would've looked like.
Release Notes:
- N/A
When `use_modifier_to_send` is turned on, holding `cmd`/`ctrl` is
necessary to send a message in the agent panel. Text threads already use
`cmd-enter` by default to submit a message, and it was done this way to
have the usual text editing bindings not taken over when writing a
prompt, sort of stimulating more thoughtful writing. While `enter` to
send is still somewhat a huge pattern in chat-like LLM UIs, it still
makes sense to allow this for the new agent panel... hence the existence
of this setting now!
Release Notes:
- agent: Added the `use_modifier_to_send` setting, which makes holding a
modifier (`cmd`/`ctrl`), together with `enter`, required to send a new
message.
Danilo Leal
created
64ce696
ui: Add the `SwitchField` component (#34713)
Click to expand commit body
This will be useful for both the current agent panel and some other
onboarding stuff we're working on. Also ended up removing the
`SwitchWithLabel` as it was unused.
Release Notes:
- N/A
Danilo Leal
created
87555d3
project: Remove clones from git blame serialization (#34727)