Commit log

46834d3 Refine status bar design (#34324)

Click to expand commit body
Experimenting with a set of standardized icons and polishing spacing a
little bit.

Release Notes:

- N/A

Danilo Leal created

e070c81 Remove remaining plugin-related language server adapters (#34334)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/34208

Release Notes:

- N/A

Kirill Bulatov created

5b61b8c agent: Fix crash with pathological fetch output (#34253)

Click to expand commit body
Closes #34029

The crash is due to a stack overflow in our `html_to_markdown`
conversion; I've added a maximum depth of 200 for the recursion in that
crate to guard against this kind of thing.

Separately, we were treating all content-types other than `text/plain`
and `application/json` as HTML; I've changed this to only treat
`text/html` and `application/xhtml+xml` as HTML, and fall back to
plaintext. (In the original crash, the content-type was
`application/octet-stream`.)

Release Notes:

- agent: Fixed a potential crash when fetching large non-HTML files.

Cole Miller created

625ce12 Revert "git: Intercept signing prompt from GPG when committing" (#34306)

Click to expand commit body
Reverts zed-industries/zed#34096

This introduced a regression, because the unlocked key can't benefit
from caching.

Release Notes:
- N/A

Cole Miller created

12bc890 Recall empty, unsaved buffers on app load (#33475)

Click to expand commit body
Closes #33342

This PR implements serialization of pinned tabs regardless of their
state (empty, untitled, etc.)

The root cause was that empty untitled tabs were being skipped during
serialization but their pinned state was still being persisted, leading
to a mismatch between the stored pinned count and actual restorable
tabs, this issue lead to a crash which was patched by @JosephTLyons, but
this PR aims to be a proper fix.

**Note**: I'm still evaluating the best approach for this fix. Currently
exploring whether it's necessary to store the pinned state in the
database schema or if there's a simpler solution that doesn't require
schema changes.

--- 

**Edit from Joseph**

We ended up going with altering our recall logic, where we always
restore all editors, even those that are new, empty, and unsaved. This
prevents the crash that #33335 patched because we are no longer skipping
the restoration of pinned editors that have no text and haven't been
saved, throwing off the count dealing with the number of pinned items.

This solution is rather simple, but I think it's fine. We simply just
restore everything the same, no conditional dropping of anything. This
is also consistent with VS Code, which also restores all editors,
regardless of whether or not a new, unsaved buffers have content or not.

https://github.com/zed-industries/zed/tree/alt-solution-for-%2333342

Release Notes:
- N/A

---------

Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>

vipex and Joseph T. Lyons created

67c765a keymap_ui: Dual-phase focus for keystroke input (#34312)

Click to expand commit body
Closes #ISSUE

An idea I and @MrSubidubi came up with, to improve UX around the
keystroke input.

Currently, there's a hard tradeoff with what to focus first in the edit
keybind modal, if we focus the keystroke input, it makes keybind
modification very easy, however, if you don't want to edit a keybind,
you must use the mouse to escape the keystroke input before editing
something else - breaking keyboard navigation.

The idea in this PR is to have a dual-phased focus system for the
keystroke input. There is an outer focus that has some sort of visual
indicator to communicate it is focused (currently a border). While the
outer focus region is focused, keystrokes are not intercepted. Then
there is a keybind (currently hardcoded to `enter`) to enter the inner
focus where keystrokes are intercepted, and which must be exited using
the mouse. When the inner focus region is focused, there is a visual
indicator for the fact it is "recording" (currently a hacked together
red pulsing recording icon)


<details><summary>Video</summary>


https://github.com/user-attachments/assets/490538d0-f092-4df1-a53a-a47d7efe157b


</details>

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

206cce6 keymap_ui: Support unbinding non-user defined keybindings (#34318)

Click to expand commit body
Closes #ISSUE

Makes it so that `KeymapFile::update_keybinding` treats removals of
bindings that weren't user-defined as creating a new binding to
`zed::NoAction`.


Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

c3edc2c DAP log view improvements (#34311)

Click to expand commit body
Now DAP logs show the label of each session which makes it much easier
to pick out the right one.

Also "initialization sequence" now shows up correctly when that view is
selected.

Release Notes:

- N/A

---------

Co-authored-by: Cole Miller <cole@zed.dev>

Julia Ryan and Cole Miller created

625a4b9 Tinker with the reporting of telemetry events (#34239)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Katie Geer <katie@zed.dev>

Mikayla Maki and Katie Geer created

fbead09 go: Write `envFile` properties back to `env` config (#34300)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/32984

Note that while https://github.com/zed-industries/zed/pull/33666 did the
reading of the `envFile` just fine, the read values were never passed
along. This was mentioned by [this
comment](https://github.com/zed-industries/zed/pull/33666#issuecomment-3060785970)
and also confirmed by myself.

With the changes here, I successfully debugged a project of mine and all
the environment variables from my `.env` were present.

Release Notes:

- Fix Go debugger ignoring env vars from the envFile setting.

Lukas Spiss created

0797f7b keymap_ui: Show existing keystrokes as placeholders in edit modal (#34307)

Click to expand commit body
Closes #ISSUE

Previously, the keystroke input would be empty, even when editing an
existing binding. This meant you had to re-enter the bindings even if
you just wanted to edit the context. Now, the existing keystrokes are
rendered as a placeholder, are re-shown if newly entered keystrokes are
cleared, and will be returned from the `KeystrokeInput::keystrokes()`
method if no new keystrokes were entered.

Additionally fixed a bug in `KeymapFile::update_keybinding` where
semantically identical contexts would be treated as unequal due to
formatting differences.

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

6f6c291 Display and jump to tool locations (#34304)

Click to expand commit body
Release Notes:

- N/A

Agus Zubiaga created

0bd6582 Truncate multi-line debug value hints (#34305)

Click to expand commit body
Release Notes:

- Multi-line debug inline values are now truncated.

Co-authored-by: Anthony Eid <hello@anthonyeid.me>

Julia Ryan and Anthony Eid created

90bf602 Reduce number of snapshots and notifies during editor scrolling (#34228)

Click to expand commit body
We not do not create new snapshots anymore when autoscrolling
horizontally and also do not notify any longer should the new scroll
position match the old one.

Release Notes:

- N/A

---------

Co-authored-by: Michael Sloan <mgsloan@gmail.com>

Finn Evers and Michael Sloan created

cd024b8 Add licenses.md for Windows build (#34272)

Click to expand commit body
Release Notes:

- N/A

localcc created

af71e15 editor: Fix scrolling stuttering at the top of multibuffers (#34295)

Click to expand commit body
Release Notes:

- Fixed an issue where scrolling would stutter at the top of
multibuffers.

Finn Evers created

d0e01db Improve thread message history (#34299)

Click to expand commit body
- Keep history across threads
- Reset position when edited

Release Notes:

- N/A

---------

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

Agus Zubiaga and Ben Brandt created

d65855c git: Change merge conflict button labels (#34297)

Click to expand commit body
Following feedback that "Take Ours" and "Take Theirs" was confusing,
leading to users not knowing what exactly happened with each of these
buttons. It's now "Use HEAD" and "Use Origin", which also match what is
written in Git markers, helping parse them out more easily. Future
improvement is to have the actual branch target name in the "Use Origin"
button.

Release Notes:

- git: Improved merge conflict buttons clarity by changing labels to
"Use HEAD" and "Use Origin".

Danilo Leal created

7035136 Fix bad kerning in integrated terminal (#34292)

Click to expand commit body
Closes #16869

Release Notes:

- (preview only): Fix bad kerning in integrated terminal.

Alisina Bahadori created

993e0f5 ACP follow (#34235)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

---------

Co-authored-by: Agus Zubiaga <agus@zed.dev>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

Conrad Irwin , Agus Zubiaga , Anthony Eid , and Ben Brandt created

496bf0e keymap_ui: Ensure keymap UI opens in local workspace (#34291)

Click to expand commit body
Closes #ISSUE

Use `workspace.with_local_workspace` to ensure the keymap UI is opened
in a local workspace, even in remote. This was tested by removing the
feature flag handling code, as with the feature flag logic the action
does not appear which is likely a bug.

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

c09f484 collab: Add ability to add tax ID during Stripe Checkout (#34246)

Click to expand commit body
### 1. **Added Tax ID Collection Types**
- Created a new `StripeTaxIdCollection` struct with an `enabled` field
- Added `tax_id_collection` field to `StripeCreateCheckoutSessionParams`

### 2. **Updated the Stripe Client Interface**
- Modified the real Stripe client to handle tax ID collection conversion
- Updated the fake Stripe client for testing purposes
- Added proper imports across all affected files

### 3. **Enabled Tax ID Collection in Checkout Sessions**
- Both `checkout_with_zed_pro` and `checkout_with_zed_pro_trial` methods
now enable tax ID collection
- The implementation correctly sets `tax_id_collection.enabled = true`
for all checkout sessions

### 4. **Key Implementation Details**
- Tax ID collection will be shown to new customers and existing
customers without tax IDs
- Collected tax IDs will be automatically saved to the customer's
`tax_ids` array in Stripe
- Business names will be saved to the customer's `name` property
- The existing `customer_update.name = auto` setting ensures
compatibility with tax ID collection

Release Notes:

- N/A

morgankrey created

a58a75c keymap_ui: Hide tooltips when context menu is shown (#34286)

Click to expand commit body
This PR ensures tooltips are dismissed/not shown once the context menu
is opened.

It also ensures the context menu is dismissed once the list is scrolled.

Release Notes:

- N/A

Finn Evers created

d1a6c5d keymap_ui: Hover tooltip for context (#34290)

Click to expand commit body
Closes #ISSUE

Ideally the tooltip would only appear if the context was overflowing
it's column, but for now, we just unconditionally show a tooltip so that
long contexts can be seen.

This PR also includes a change to the tooltip element, allowing for
tooltips with non-text contents which is used here for syntax
highlighting

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Co-authored-by: Anthony <anthony@zed.dev>

Ben Kunkle and Anthony created

10028aa Ensure *.json recognized as JSONC if checkout folder not `zed` (#34289)

Click to expand commit body
Follow-up to: https://github.com/zed-industries/zed/pull/33410

Release Notes:

- N/A

Peter Tripp created

3b9bb52 keymap_ui: Only show conflicts between user bindings (#34284)

Click to expand commit body
Closes #ISSUE

This makes it so conflicts are only shown between user bindings. User
bindings that override bindings in the Vim, Base, and Default keymaps
are not identified as conflicts

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Co-authored-by: Anthony <anthony@zed.dev>

Ben Kunkle and Anthony created

7eb739d Add initial support for search by keystroke to keybinding editor (#34274)

Click to expand commit body
This PR adds preliminary support for searching keybindings by keystrokes
in the keybinding editor.

Release Notes:

- N/A

Anthony Eid created

b4cbea5 Fix icon size on Windows (#34277)

Click to expand commit body
Closes #34122

Release Notes:

- N/A

localcc created

1538401 linux: Use `randr` as fallback for scale factor in X11 (#34265)

Click to expand commit body
Closes #14537

- Adds server-side scale factor detection via `randr` when client-side
detection fails using `xrdb/Xft.dpi`.
- Adds the `GPUI_X11_SCALE_FACTOR` flag to force a scale factor, which
can be a positive number for custom scaling or `randr` for server-side
scale factor detection.

Release Notes:

- Fixed an issue where the scale factor was not detected correctly on
X11 systems when `Xft.dpi` is not defined (mostly in cases involving
window managers).

Smit Barmase created

8812e7c windows: Fix an issue where dead keys that require holding `shift` didn’t work properly (#34264)

Click to expand commit body
Closes #34194

Release Notes:

- N/A

张小白 created

56d0ae6 Don't apply contrast adjustment to decorative chars (#34238)

Click to expand commit body
Closes #34234

Release Notes:

- Automatic contrast adjustment in terminal is no longer applied to
decorative characters used in block art.

Richard Feldman created

d52f07b lsp tool: Make "Restart All Servers" always visible (#34255)

Click to expand commit body
Next step is to have a "Restart Current Buffer Server(s)". 😬 

Release Notes:

- N/A

Danilo Leal created

089ce8f agent: Allow clicking on the read file tool header to jump to the exact file location (#33161)

Click to expand commit body
Release Notes:

- Allow clicking on the header of the read file tool to jump to the
exact file location

When researching code or when the Agent analyzes context by reading
various project files, the read file tool is used. It usually includes
line numbers relevant to the current prompt or task. However, it’s often
frustrating that the read file header isn’t clickable to view the
corresponding code directly. This PR makes the header clickable,
allowing users to jump to the referenced file. If start and end lines
are specified, it will navigate directly to that exact location.


https://github.com/user-attachments/assets/b0125d0b-7166-43dd-924e-dc5585813b0b

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Max Frai and Danilo Leal created

842ac98 git: Intercept signing prompt from GPG when committing (#34096)

Click to expand commit body
Closes #30111 

- [x] basic implementation
- [x] implementation for remote projects
- [x] surface error output from GPG if signing fails
- [ ] ~~Windows~~

Release Notes:

- git: Passphrase prompts from GPG to unlock commit signing keys are now
shown in Zed.

Cole Miller created

87362c6 Assign checksum seed in windows releases (#34252)

Click to expand commit body
This will allow windows releases to report panics and telemetry.

Release Notes:

- N/A

Max Brunsfeld created

94916cd Fix screenshare sources error handling, `is_sharing_screen() == false` on error (#34250)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

7915b9f keymap_ui: Add ability to delete user created bindings (#34248)

Click to expand commit body
Closes #ISSUE

Adds an action and special handling in `KeymapFile::update_keybinding`
for removals. If the binding being removed is the last in a keymap
section, the keymap section will be removed entirely instead of left
empty.

Still to do is the ability to unbind/remove non-user created bindings
such as those in the default keymap by binding them to `NoAction`,
however, this will be done in a follow up PR.

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

33f1ac8 Use installed trusted signing (#34245)

Click to expand commit body
Fixes windows nightly build failures

Release Notes:

- N/A

Max Brunsfeld created

a118884 Make inline and regular diagnostics more related (#34237)

Click to expand commit body
Release Notes:

- N/A

Kirill Bulatov created

7588280 Windows screen sharing (#34223)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: localcc <work@localcc.cc>
Co-authored-by: Peter Tripp <petertripp@gmail.com>

Max Brunsfeld , localcc , and Peter Tripp created

f82fdaa ci: Skip ci.yml checks for script/update_top_ranking_issues (#34241)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/19433
Supercedes: https://github.com/zed-industries/zed/pull/33308

cc: @eshasantosh

Release Notes:

- N/A

Peter Tripp created

41085f8 settings_ui: Inform about keybind conflicts in modal (#34205)

Click to expand commit body
This PR updates the keybinding editor modal so that conflicts are
already shown in the modal itself. Notably, this does not add validation
on every keystroke, the update still has to be confirmed. However, if
only a warning is present, on the second confirm the keybind will
actually be updated.

The change also includes a slight update to the displayment of errors,
since we now differentiate between errors and warnings.

| Error | Warning | 
| --- | --- |
| <img width="543" height="332" alt="warning_keybind"
src="https://github.com/user-attachments/assets/867319be-eeb9-40d7-bf32-fbd44aacf0b5"
/> | <img width="543" height="310" alt="error_keybind"
src="https://github.com/user-attachments/assets/858a6c7c-8c9a-4a90-95af-a5103125676f"
/> |


Release Notes:

- N/A

Finn Evers created

8e1d341 nix: Fix CI job (#34231)

Click to expand commit body
Fix regex filter

Release Notes:

- N/A

Julia Ryan created

9d2b7c8 agent: Dismiss the agent panel notification if window is closed (#34230)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/32951

Release Notes:

- agent: Fixed an issue where the agent panel notification would linger
on even after you closed the window.

Danilo Leal created

c6603e4 Stop extensions' servers and message loops before removing their files (#34208)

Click to expand commit body
Fixes an issue that caused Windows to fail when removing extension's
directories, as Zed had never stop any related processes.

Now:

* Zed shuts down and waits until the end when the language servers are
shut down

* Adds `impl Drop for WasmExtension` where does
`self.tx.close_channel();` to stop a receiver loop that holds the "lock"
on the extension's work dir.
The extension was dropped, but the channel was not closed for some
reason.

* Does more unregistration to ensure `Arc<WasmExtension>` with the `tx`
does not leak further

* Tidies up the related errors which had never reported a problematic
path before

Release Notes:

- N/A

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Co-authored-by: Smit <smit@zed.dev>

Kirill Bulatov , Smit Barmase , and Smit created

c549b71 Just Zed instead of Zed Editor (#34146)

Click to expand commit body
Release Notes:

- N/A

localcc created

d6bff27 settings_ui: Ensure selected keymap entry is properly updated (#34229)

Click to expand commit body
This change ensures that we more reliably deploy the context menu in the
keymap editor as well as highlight the selected row quicker.

Release Notes:

- N/A

Finn Evers created

cfc9cfa language_models: Refresh the list of models when the LLM token is refreshed (#34222)

Click to expand commit body
This PR makes it so we refresh the list of models whenever the LLM token
is refreshed.

This allows us to add or remove models based on the plan in the new
token.

Release Notes:

- Fixed model list not refreshing when subscribing to Zed Pro.

---------

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>

Marshall Bowers and Bennet Bo Fenner created

e2e529b Remove redundant `autoscroll_horizontally` during editor prepaint (#34218)

Click to expand commit body
* Experimentally `scroll_manager.anchor()` appears to be the same before
and after this 2nd call of `autoscroll_horizontally`

* Nothing these depend on seem to be mutated between the calls (and
since this is prepaint, stuff within editor also shouldn't be mutated)

Release Notes:

- N/A

Co-authored-by: Finn <finn@zed.dev>

Michael Sloan and Finn created

e6c41b5 Add more admin to seed script (#34220)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created