b6fd06d
project_panel: Make scroll to bottom to use the last visible entry (#25160)
Click to expand commit body
Closes #25159
Release Notes:
- Fixed project panel implementation of the `menu::SelectLast` action
PJ Tatlow
created
ddec72e
Better key-rendering for linux/windows (#25139)
Click to expand commit body
Release Notes:
- linux: Render keystrokes more consistently
Before (note the added extra vertical padding, the + instead of the -,
and the misalignment between the text and the icons)
<img width="354" alt="Screenshot 2025-02-18 at 23 17 57"
src="https://github.com/user-attachments/assets/924cf08f-8204-4503-8052-abaa7686e644"
/>
After (note the lack of those things):
<img width="322" alt="Screenshot 2025-02-18 at 23 15 48"
src="https://github.com/user-attachments/assets/5b20a6f2-757b-44d2-a888-f495523b688d"
/>
I still think we might want to go "vim-mode" always, because the capital
letters are pretty noisy, but that does mean the letters don't match
what's on the keyboard (though they *do* match the keyboard config
files)
<img width="312" alt="Screenshot 2025-02-18 at 23 16 59"
src="https://github.com/user-attachments/assets/cf6f150c-20bc-4492-adb9-fb5c5bdce351"
/>
The language::markdown crate had been superceded by markdown::Mardown.
After #25117, the only two remaining use-cases were rendering git commit
messages (which are arguably not really markdown) and the signature help
(which is definitely not markdown).
Updated the former to use the new markdown component, and the latter to
do syntax highlighting manually.
Release Notes:
- Allow selecting the commit message in git commits
Conrad Irwin
created
686978d
editor: Minimum scroll thumb size (#25162)
Click to expand commit body
Closes #22610
This PR fixes the invisible scroll thumb or very tiny scroll thumb when
viewing long or wide files.
The difference between `track_bounds` (imagine scrollbar total height)
and `thumb_size` is the remaining area, which maps to the total height
of the page for scrolling to work as expected. This is already accounted
for. That means we can adjust the thumb size as needed, and the
remaining height/width will be mapped correctly.
So, we can simply use define a minimum size for the thumb and handle
cases where the track bounds are smaller than the defined minimum size.
In such cases, the scrollbar will take up the full height/width of the
track bounds. This is handled mainly to avoid panics in extreme edge
cases. Practically, at such small heights/widths, users are unlikely to
attempt scrolling.
Before:
https://github.com/user-attachments/assets/cf2edf03-8b9a-4678-b3c6-9dcbd01e5db8
After:
https://github.com/user-attachments/assets/e9496a44-3e7d-4be7-b892-2762cccd9959
Release Notes:
- Fixed issue where scroll thumb was invisible or too small when viewing
long or wide files.
smit
created
486e106
license detection: Include the UPL license (#25152)
Click to expand commit body
For projects such as https://github.com/roc-lang/roc that uses this
license.
Release Notes:
- N/A
- Hides header when no active repo/no repo
- Entire commit editor now has i-beam cursor on hover
- Adds an icon to the project diff tab
Release Notes:
- N/A
Nate Butler
created
c0c48d3
Revert "file_finder: Remove common segments of long paths in search results (#25049)" (#25163)
Click to expand commit body
This reverts commit 9ef0501853825db41e702c03ab398bf531a8bc1f due to a
panic.
```
{
"thread": "main",
"payload": "9 is not a valid char boundary in path \"crates/…/LiveKitBridge/\"",
"location_data": {
"file": "crates/file_finder/src/file_finder.rs",
"line": 646
}
}
```
Release Notes:
- N/A
Cole Miller
created
f8770fe
edit prediction: Refine subtle mode flag styles (#25157)
Click to expand commit body
There's still a tiny, 1px shadow being cast in the flag pole that I
didn't figure out yet how to fix it.
https://github.com/user-attachments/assets/714da320-5995-4bd2-a0dc-6c027b4d91eb
Release Notes:
- N/A
Danilo Leal
created
044be72
popover_menu: Add docs to the `trigger_with_tooltip` method (#25158)
Click to expand commit body
Felt like this was relevant particularly as we're living with both
`trigger` and `trigger_with_tooltip`. At some point, I believe there
should be only one (`trigger_with_tooltip`) and that should be then
renamed to just `trigger` back again! We're supporting both for now just
for ease of migration/avoiding big changes.
Release Notes:
- N/A
Danilo Leal
created
8b98b5c
project: Fix doc comments for `NodeBinarySettings` (#25154)
Click to expand commit body
This PR fixes the doc comments on the `NodeBinarySettings` struct.
Release Notes:
- N/A
This PR fixes an incorrectly-formatted doc comment in the
`BufferSnapshot` impl.
Release Notes:
- N/A
Marshall Bowers
created
fb19db0
editor: Do not highlight selected text + Clear highlight preemptively when new selection is detected (#25149)
Click to expand commit body
When selecting text, it highlights all matching occurences along with
selected text itself. This causes highlight overlap, which looks bit
odd. This PR fixes it.
Bonus:
Context: We have an edge case (which we already cover) where we don’t
want to clear `SelectedTextHighlight` every time the selection changes.
This happens when you are dragging the selection across some word, if
you clear it directly on selection change, due to debounce wait, the
highlight take some time to appear, which causes flickering for the
user. We solve this by not clearing it directly but only clearing it
when a new selection is found. This avoids the flicker.
However, we also need to clear the selection even before the debounce
wait if we detect early on that the selection is different from previous
ones. Otherwise, the user will have to wait until the debounce time to
see it cleared on the screen.
The code for this is a little repetitive because we check the buffer
state both before and after the debounce. But this is necessary.
---
Before:
Notice overlapping corners and selected text is bit darker in this case.

After:

Release Notes:
- N/A
smit
created
094430e
Properly normalize completion labels with multi-byte characters (#25150)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/25142
Release Notes:
- Fixed panics on completion with multi-byte characters input
Fix broken links to [PHP
extensions](https://github.com/zed-extensions/php) from [the
documentation](https://zed.dev/docs/languages/php).
Release Notes:
- N/A
USAMI Kenta
created
2274e88
Highlight regex in the project search input (#25147)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/25005
Project search also has regex search option, highlight it the same way
too.
Release Notes:
- N/A
Closes #16951
Handle the case where you click on the terminal while pressing Shift.
Instead of setting a new selection head, we simply update the selection
to that point. This allows you to repeatedly extend the selection to new
points by pressing Shift while preserving the original selection head.
Preview:
Selection works in direct terminal, but doesn't on Vim like program,
which is expected.
https://github.com/user-attachments/assets/e46987d8-a9a3-495d-8dd9-98d461317a8d
Release Notes:
- Added ability to extend selection with Shift + click in the terminal.
smit
created
1fa105e
docs: Fix selection highlight default value (#25134)
Click to expand commit body
Changed default debounce value in docs to match default settings.
Release Notes:
- N/A
1678e3c
Fix clicking on file links in editor (#25117)
Click to expand commit body
Closes #18641
Contributes: #13194
Release Notes:
- Open LSP documentation file links in Zed not the system opener
- Render completion documentation markdown consistently with
documentation markdown
Conrad Irwin
created
ebbc6a9
Highlight `super` and `this` as keywords in JS/TS/TSX (#25135)
Click to expand commit body
Closes #24951
We were highlighting both as `@variable.special` however, they are
_techinically_ keywords and other editors (VSCode/WebStorm) seem to
highlight them as keywords as well.
Release Notes:
- N/A
Ben Kunkle
created
bb600ac
Set base highlight for identifiers in go to variable highlight color (#25128)
Click to expand commit body
Closes #24947
Release Notes:
- N/A
Ben Kunkle
created
372aaec
language_model_selector: Authenticate all providers up front (#25123)
Click to expand commit body
This PR fixes an issue where configured language model providers would
not show up unless the configuration view was opened.
The problem was that we were filtering unauthenticated language model
providers out of the language model selector, but would only
authenticate the active provider when the selector loaded.
Authenticating the rest of the providers was deferred until the
configuration view was opened for the first time.
Closes https://github.com/zed-industries/zed/issues/21821.
Release Notes:
- Fixed an issue where configured languages models were not showing up
in the language model selector until the configuration view was opened
for the first time.
Marshall Bowers
created
7a6b652
language_model: Return `AuthenticateError`s from `LanguageModelProvider::authenticate` (#25126)
Click to expand commit body
This PR updates the `LanguageModelProvider::authenticate` method to
return an `AuthenticateError` instead of an `anyhow::Error`.
This allows us to model the "credentials not found" state explicitly as
`AuthenticateError::CredentialsNotFound`, which enables the caller to
check for this state and act accordingly.
Planning to use this in #25123 to silence errors about missing
credentials when authenticating providers in the background.
Release Notes:
- N/A
Marshall Bowers
created
2627a5f
assistant: Improve the language model selector (#25125)
Click to expand commit body
This PR includes change such as:
- Ensures the popover width is fixed/not dancing around
- Ensures the popover is not obscuring the trigger in the buffer and
terminal inline assistant scenarios
- Removes ellipsis from the trigger button label
- Ensures the scrollbar doesn't hide the check icon
| Terminal | Prompt Editor | Buffer |
|--------|--------|--------|
| 
| 
| 
|
Release Notes:
- N/A
Danilo Leal
created
a6006af
language_model_selector: Fix variable name (#25121)
Click to expand commit body
This PR fixes an inaccurate variable name that I noticed in the language
model selector.
Release Notes:
- N/A
Marshall Bowers
created
92f128e
Do not fail hard on selection persistence if the editor is removed (#25120)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/25083
Follows practices from editors' scroll position persisting:
https://github.com/zed-industries/zed/blob/5a05b7461e476d7ddc59418868ebdab6687b8d2f/crates/editor/src/persistence.rs#L200
and do not fail hard if the editor with the ID given does not exist.
Also add the problematic IDs into the error context to see them in the
error logs.
Release Notes:
- N/A
Kirill Bulatov
created
98ea659
assistant2: Fix thread history only working in one Zed window (#25119)
Click to expand commit body
This PR fixes an issue where the thread history would only work in one
Zed window at a time.
The backing LMDB database can only be opened once per Zed instance.
However, the `ThreadStore` has one instance per Zed window.
To fix this, we need to create the `heed` environment once and store it
as a global, and then reference the same environment across all of the
`ThreadStore`s.
Release Notes:
- N/A
Marshall Bowers
created
d0816ef
edit predictions: Fix fold not expanding after jump (#25116)
Click to expand commit body
Closes #24938.
Release Notes:
- Edit predictions: Fix fold not expanding after jump
João Marcos
created
6885b28
assistant2: Deploy inline assistant in PromptEditor (#25094)
48f87a8
Don't open file finder menu on command (#25097)
Click to expand commit body
Closes #24740
Release Notes:
- Don't open the split menu in the file finder when command is pressed
Conrad Irwin
created
bff1548
assistant2: Add file icons for mentioned creases (#25111)
Click to expand commit body
This PR makes the mentioned file creases/buttons use `FileIcons`.
<img width="700" alt="Screenshot 2025-01-21 at 11 20 49 AM"
src="https://github.com/user-attachments/assets/876da534-c11a-4d13-af82-a5948863f954"
/>
Release Notes:
- N/A
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Done automatically with
> ast-grep -p '$A.background_executor().spawn($B)' -r
'$A.background_spawn($B)' --update-all --globs "\!crates/gpui"
Followed by:
* `cargo fmt`
* Unexpected need to remove some trailing whitespace.
* Manually adding imports of `gpui::{AppContext as _}` which provides
`background_spawn`
* Added `AppContext as _` to existing use of `AppContext`
Release Notes:
- N/A
Michael Sloan
created
f606b06
workspace: Prevent user from undoing persistent session deserialization (#25106)
Click to expand commit body
Closes #21846
Release Notes:
- Fixed a bug that made it possible to undo changes in dirty
deserialized buffer (with `restore_unsaved_buffers: true`)
Piotr Osiewicz
created
e5d8bd2
Issue response: pull team members from staff team (#25102)
Click to expand commit body
Release Notes:
- N/A
Joseph T. Lyons
created
529c652
Revert gutter stripes as indicator of hunk staged status (#25089)
Click to expand commit body
We've decided to go in a different direction on indicating the staged
status of hunks, so go back for now to a world where we don't display
staged and unstaged hunks differently outside the (still gated) project
diff editor.
cc @iamnbutler
This reverts commit 8c202b3b09083e0b5430fce3631734de6112bbc0.
Release Notes:
- N/A
Cole Miller
created
737b177
Switch to columnar selection by pressing `alt-shift` while mouse is down (#25096)
Click to expand commit body
We begin a columnar selection when we drag the mouse while holding
`alt-shift`. This PR makes it possible to start the selection and then
turn it into columnar by pressing `alt-shift`.
Fixes #5372
Release Notes:
- Support switching to columnar selection by pressing `alt-shift` while
mouse is down
Agus Zubiaga
created
c10ac31
theme: Don't log errors for missing themes until extensions have loaded (#25098)
Click to expand commit body
This PR makes it so we don't log errors for missing themes or icon
themes until after the extensions have been loaded.
Currently, if you are using a theme that is defined in an extension it
is common to see one or more "theme not found" errors in the logs. This
is the result of us having to initialize the theme before the extensions
have actually finished loading.
This means that a theme that _may_ exist once extensions load is
considered non-existent before they have loaded.
To that end, we now wait until the extensions have loaded before we
start logging errors if we can't find the theme or icon theme.
Closes https://github.com/zed-industries/zed/issues/24539.
Release Notes:
- Reduced the number of "theme not found" and "icon theme not found"
errors in the logs for themes provided by extensions.
Marshall Bowers
created
1e255e4
assistant2: Show token count in the Prompt Editor view (#25091)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Agus Zubiaga <hi@aguz.me>
Danilo Leal
and
Agus Zubiaga
created
8a7565e
Add small improvement to the theme picker footer (#25088)
Click to expand commit body
- Always start a button's label with an imperative verb
- Use the `ArrowUpRight` icon when the button opens an external link
<img width="700" alt="Screenshot 2025-01-21 at 11 20 49 AM"
src="https://github.com/user-attachments/assets/383d9bad-2756-4e85-acad-4ed956f541cb"
/>
Release Notes:
- N/A
Danilo Leal
created
8e7cad7
theme: Return structured errors when a theme is not found (#25090)
Click to expand commit body
This PR updates the `ThemeRegistry` to return structured errors from the
`get` and `get_icon_theme` methods (which are used to retrieve themes
and icon themes, respectively).
We want to be able to carry the name of the theme that was not found as
state on the error, which is why we use a `Result` and not an `Option`.
However, we also want to be able to accurately identify when the error
case is "not found" so we can take appropriate action, based on the
circumstances.
By using a custom error type instead of an `anyhow::Error`, we get both.
There isn't any functional change in this PR. This just sets us up for
future improvements in this error.
Release Notes:
- N/A
Marshall Bowers
created
76f501a
git: Don't load shallow HEAD text of symlinks (#25058)
Click to expand commit body
For symlinks, return `None` from `load_committed_text` as we do from
`load_index_text` ever since #10037.
Release Notes:
- Fixed diff hunks appearing in unchanged symlinked files
Cole Miller
created
9ef0501
file_finder: Remove common segments of long paths in search results (#25049)
Click to expand commit body
This PR makes progress on #7711 by identifying any common prefix of the
paths in the file finder's search results, and replacing the "interior"
of that prefix---every path segment but the first and last---with `...`,
when a heuristic indicates that the longest path would otherwise
overflow the modal.
The elision is not applied to any segment that contains a match for the
search query.
There may be more work to do on #7711 in the case of long result paths
that do not share a significant common prefix.
Release Notes:
- Improved display of long paths in the file finder modal
Co-authored-by: Max <max@zed.dev>
Part of https://github.com/zed-industries/zed/issues/7371
Closes https://github.com/zed-industries/zed/issues/12853
Release Notes:
- Started to persist latest selections for editors, to restore those on
restart
Kirill Bulatov
created
b340378
terminal: Change context menu item label (#25085)
Click to expand commit body
Super subtle, but when I initially saw just "Close", I got weirded out
asking myself "why there's a menu item to close the context menu?", to
only then realize that it didn't close the menu, but the terminal _tab_.
Might be obvious, because that's how buffer tabs are labled, but I don't
know, it feels like the redundancy here is overall positive.
Release Notes:
- N/A
Danilo Leal
created
295e486
edit prediction: Update disabled globs link in the onboarding modal (#25084)
Some language servers report version 0 even if the buffer hasn't been
opened yet. We detect this case and treat it as if the version was
`None`.
Closes #23706
Release Notes:
- Fixed a bug that prevented renames for some languages.