Commit log

1cadff9 project_panel: Fix sticky items horizontal scroll and hover propagation (#34367)

Click to expand commit body
Release Notes:

- Fixed horizontal scrolling not working for sticky items in the Project
Panel.
- Fixed issue where hovering over the last sticky item in the Project
Panel showed a hovered state on the entry behind it.
- Improved behavior when clicking a sticky item in the Project Panel so
it scrolls just enough for the item to no longer be sticky.

Smit Barmase created

8f6b9f0 debugger: Allow users to shutdown debug sessions while they're booting (#34362)

Click to expand commit body
This solves problems where users couldn't shut down sessions while
locators or build tasks are running.

I renamed `debugger::Session::Mode` enum to `SessionState` to be more
clear when it's referenced in other crates. I also embedded the boot
task that is created in `SessionState::Building` variant. This allows
sessions to shut down all created threads in their boot process in a
clean and idiomatic way.

Finally, I added a method on terminal that allows killing the active
task.

Release Notes:

- Debugger: Allow shutting down debug sessions while they're booting up

Anthony Eid created

970a106 git: Handle shift-click to stage a range of entries in the panel (#34296)

Click to expand commit body
Release Notes:

- git: shift-click can now be used to stage a range of entries in the
git panel.

Cole Miller created

833bc69 debugger: Fix correctly determine replace range for debug console completions (#33959)

Click to expand commit body
Follow-up #33868

This PR fixes a few issues with determining the completion range for
client‑ and variable‑list completions.

1. Non‑word completions
We previously supported only word characters and _, using their combined
length to compute the start offset. In PHP, however, an expression can
contain `$`, `-`, `>`, `[`, `]`, `(`, and `)`. Because these characters
weren’t treated as word characters, the start offset stopped at them,
even when the preceding character was part of a word.

2. Trailing characters inside the search text
When autocompletion occurred in the middle of the search text, we didn’t
account for trailing characters. As a result, the start offset was off
by the number of characters after the cursor. For example, replacing res
with result in print(res) produced `print(rresult)` because the trailing
`)` wasn’t subtracted from the start offset.

The following completions are correctly covered now:

- **Before** `$aut` -> `$aut$author` **After** `$aut` -> `$author`
- **Before** `$author->na` -> `$author->na$author->name` **After**
`$author->na` -> `$author->name`
- **Before** `$author->books[` -> `$author->books[$author->books[0]`
**After** `$author->books[` -> `$author->books[0]`
- **Before** `print(res)` -> `print(rresult)` **After** `print(res)` ->
`print(result)`

**Before**


https://github.com/user-attachments/assets/b530cf31-8d4d-45e6-9650-18574f14314c


https://github.com/user-attachments/assets/52475b7b-2bf2-4749-98ec-0dc933fcc364

**After**


https://github.com/user-attachments/assets/c065701b-31c9-4e0a-b584-d1daffe3a38c


https://github.com/user-attachments/assets/455ebb3e-632e-4a57-aea8-d214d2992c06

Release Notes:

- Debugger: Fixed autocompletion not always replacing the correct search
text

Remco Smits created

a8cc927 debugger: Improve appearance of session list for JavaScript debugging (#34322)

Click to expand commit body
This PR updates the debugger panel's session list to be more useful in
some cases that are commonly hit when using the JavaScript adapter. We
make two adjustments, which only apply to JavaScript sessions:

- For a child session that's the only child of a root session, we
collapse it with its parent. This imitates what VS Code does in the
"call stack" view for JavaScript sessions.
- When a session has exactly one thread, we label the session with that
thread's name, instead of the session label provided by the DAP. VS Code
also makes this adjustment, which surfaces more useful information when
working with browser sessions.

Closes #33072 

Release Notes:

- debugger: Improved the appearance of JavaScript sessions in the debug
panel's session list.

---------

Co-authored-by: Julia <julia@zed.dev>
Co-authored-by: Remco Smits <djsmits12@gmail.com>

Cole Miller , Julia , and Remco Smits created

13ddd5e Return back the guards when goto targets are queried for (#34340)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/34310
Follow-up of https://github.com/zed-industries/zed/pull/29359

Release Notes:

- Fixed goto definition not working in remote projects in certain
conditions

Kirill Bulatov created

1b6e212 debugger: Fix endless restarts when connecting to TCP adapters over SSH (#34328)

Click to expand commit body
Closes #34323
Closes #34313

The previous PR #33932 introduced a way to "close" the
`pending_requests` buffer of the `TransportDelegate`, preventing any
more requests from being added. This prevents pending requests from
accumulating without ever being drained during the shutdown sequence;
without it, some of our tests hang at this point (due to using a
single-threaded executor).

The bug occurred because we were closing `pending_requests` whenever we
detected the server side of the transport shut down, and this closed
state stuck around and interfered with the retry logic for SSH+TCP
adapter connections.

This PR fixes the bug by only closing `pending_requests` on session
shutdown, and adds a regression test covering the SSH retry logic.

Release Notes:

- debugger: Fixed a bug causing SSH connections to some adapters
(Python, Go, JavaScript) to fail and restart endlessly.

Cole Miller created

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