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.
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 ...
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)
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.
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.
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
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
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 ...
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