a0ee84d
Use the main thread less on search tool (#26732)
Click to expand commit body
Release Notes: - N/A
Richard Feldman created
a0ee84d
Use the main thread less on search tool (#26732)
Release Notes: - N/A
Richard Feldman created
6cac0b3
docs: Add marker to signal which languages are built into Zed (#26913)
I saw over the weekend some social media posts that indicated people didn't know which languages are included in Zed by default. We do say that on each language-specific page, but I figured having this high-level view on the languages page wouldn't hurt. Release Notes: - N/A
Danilo Leal created
45606ab
git_hosting_providers: Refactor constructors (#26919)
This PR refactors the constructors for the various Git hosting providers to facilitate adding support for more self-hosted variants. Release Notes: - N/A
Marshall Bowers created
8ba6ce4
git_hosting_providers: Fix incorrect name for SourceHut (#26915)
This PR fixes an issue where the SourceHut Git hosting provider was using the wrong name. Release Notes: - N/A
Marshall Bowers created
040d42f
assistant tools: Fix running tests locally (#26914)
Without this, we running into the following error: ``` Running into this when running tests. Is this dyld[45041]: Library not loaded: @rpath/WebRTC.framework/WebRTC Referenced from: <B2EA63A5-994E-3FB0-A74B-C9C4F7E5C1EF> /Users/aguz/zed/zed/target/debug/deps/assistant_tools-522d7745dd439dfb Reason: no LC_RPATH's found ``` Thanks Piotr! Release Notes: - N/A
Agus Zubiaga created
22d905d
nix: Allow auto-update in the devshell (#26911)
Our direnv integration was making zed refuse to auto-update when you had the zed repo open with the devshell active. This was happening even when you used a non-nix build of zed, which actually should be able to auto-update. I'm a bit unsure of why we check for the `ZED_UPDATE_EXPLANATION` env var [both at build time _and_ at runtime](https://github.com/zed-industries/zed/blob/2828dcb67b0427bb64dd7c350896673ff6a14782/crates/auto_update/src/auto_update.rs#L149), but I can see an argument for why people might want that so I'll just do the less intrusive change for now and leave the var out of the devshell. Release Notes: - N/A
Julia Ryan created
bf735da
Support extended keys on Mac (F20-F35) (#26899)
Closes #4640 About the support limit of Fn: Mac F1-F35 Win F1-F24 Linux F1-F35 Terminal F1-F20 Release Notes: - Improved support for extended keyboards on Mac (F20-F35)
0x2CA created
210d8d5
Allow cancellation of tool uses (#26906)
Release Notes: - N/A
Antonio Scandurra created
a0f995d
Support SSH usernames which contain @ symbols (#25314)
Closes #25246 Release Notes: - SSH: Improved handling of multiple `@` in connection strings: e.g. `ssh jim.lv@es2@10.220.67.57@11.239.1.231` improving support of jump hosts running JumpServer. --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Color Fuzzy and Conrad Irwin created
8f560da
chore: Extract http-client-tls crate (#26895)
http-client pulled in rustls which in turn meant that gpui depended on rustls/aws-lc-sys. This commit extracts http-client-tls crate to separate the http-client and tls dependencies. Closes #ISSUE Release Notes: - N/A
Piotr Osiewicz created
d5bb126
Delete tool uses paths instead of globs (#26715)
Also made `run` avoid doing work on the main thread. Release Notes: - N/A
Richard Feldman created
8a31dca
Use textDocument/codeLens data in the actions menu when applicable #2 (#26848)
Re-applies what's been reverted in https://github.com/zed-industries/zed/pull/26832 with an action-related fix in https://github.com/zed-industries/zed/commit/64b5d37d324176cc7b819418f46724cd4c67393d Before, actions were resolved only if `data` is present and either of the possible fields is empty: https://github.com/zed-industries/zed/blob/e842b4eade368127f01944f1b442016edd6b292d/crates/project/src/lsp_store.rs#L1632-L1633 But Zed resolves completions and inlays once, unconditionally, and the reverted PR applied the same strategy to actions. That did not work despite the spec not forbidding `data`-less actions to be resolved. Soon, it starts to work due to https://github.com/rust-lang/rust-analyzer/pull/19369 but it seems safer to restore the original filtering code. Code lens have no issues with `data`-less resolves: https://github.com/rust-lang/rust-analyzer/blob/220d913cbcd05f9b7635179a98c685f31821a572/crates/rust-analyzer/src/handlers/request.rs#L1618-L1620 so the same approach as completions and inlays is kept: resolve once. Release Notes: - N/A
Kirill Bulatov created
ef91e7a
Minor optimization of line number length logic (#26845)
In `layout_excerpt_gutter`, compute max line number length once instead of for every row In `max_line_number_width`, use ilog10 instead of converting to floats and back Release Notes: - N/A
Michael Sloan created
c220fb3
Fix panic when providing 0 to ilog10 in line number length logic (#26844)
Introduced in #24428 Release Notes: - N/A
Michael Sloan created
adbde21
termina: Fix text selection for first line scrolls up (#26842)
Closes #21626 Now scroll will only happen when cursor goes beyond the bounds of terminal. Before: https://github.com/user-attachments/assets/9ac48e80-d0e0-44c9-87ad-14ed748de78d After: https://github.com/user-attachments/assets/c697c1fc-a6d2-4b9a-aad4-5b0c79837c2a Release Notes: - Fixed an issue where selecting the first line in the terminal would cause it to scroll.
Smit Barmase created
b81a1ad
gpui: Fix text underline width (#26827)
Release Notes: - N/A Fix #24721 mistake to make sure underline width same as the text. ## Before  ## After <img width="912" alt="image" src="https://github.com/user-attachments/assets/222b5dcb-c0fb-4ec1-8e23-d68247621375" />
Jason Lee created
5f390f1
Initial PyLSP documentation (#26835)
Closes https://github.com/zed-industries/zed/issues/26820 Release Notes: - N/A
Peter Tripp created
c282acb
terminal: Don’t include line breaks for soft wrap in Assistant terminal context (#25415)
> Detects and combines wrapped lines into single logical lines, more
accurately representing the actual terminal content.
```shell
perl -i -pe \
's/"vscode-languageserver(\/node)?"/"\@zed-industries\/vscode-languageserver$1"/g' packages/css/lib/node/cssServerMain.js
```
<img width="518" alt="image"
src="https://github.com/user-attachments/assets/52d9327c-c381-4e5f-a676-0cf84c824388"
/>
<img width="1314" alt="image"
src="https://github.com/user-attachments/assets/0a32e1f9-7e95-482e-9beb-2e8a6c40584c"
/>
Closes https://github.com/zed-industries/zed/issues/25341
Release Notes:
- Fixed a bug where context for the terminal assistant would add line
breaks in the presence of soft wrapped lines.
---------
Co-authored-by: Peter Tripp <peter@zed.dev>
Richard Hao and Peter Tripp created
021d658
Revert "Use `textDocument/codeLens` data in the actions menu when applicable (#26811)" (#26832)
This reverts commit b61171f1526f00c9916a5429af3d95b33d560d56. This PR reverts #26811, as it has broken `rust-analyzer` code actions. With this commit reverted my code actions are working again. Release Notes: - Community: Reverted https://github.com/zed-industries/zed/pull/26811.
Marshall Bowers created
b547cd1
ci: Remove `migration_checks` as a required check (#26833)
This PR removes the `migration_checks` job as a required check. This was not required before, and we shouldn't make it required, as there are cases where we need to bypass it, as is the case in https://github.com/zed-industries/zed/pull/26832. Release Notes: - N/A
Marshall Bowers created
8f841d1
Revert unintended `Cargo.lock` changes (#26830)
This PR reverts some of the changes made to `Cargo.lock` in #25702. In that PR, several crate versions were unintentionally downgraded, including `aws-lc-rs`, which has caused release builds to fail on Windows again. Release Notes: - N/A
张小白 created
4b153e7
gpui: Fix `line_through`, `underline` position when used text center or right (#24721)
Release Notes: - N/A --- | Before | After | | --- | --- | | <img width="912" alt="image" src="https://github.com/user-attachments/assets/0640ac85-ee5d-4707-b866-997e36608c18" /> | <img width="912" alt="image" src="https://github.com/user-attachments/assets/caf84477-a7bc-4c22-a9e6-f44c3b6f86ef" /> | And fix the `line_through` doc link.
Jason Lee created
b61171f
Use `textDocument/codeLens` data in the actions menu when applicable (#26811)
Similar to how tasks are fetched via LSP, also queries for document's
code lens and filters the ones with the commands, supported in server
capabilities.
Whatever's left and applicable to the range given, is added to the
actions menu:

This way, Zed can get more actions to run, albeit neither r-a nor vtsls
seem to provide anything by default.
Currently, there are no plans to render code lens the way as in VSCode,
it's just the extra actions that are show in the menu.
------------------
As part of the attempts to use rust-analyzer LSP data about the
runnables, I've explored a way to get this data via standard LSP.
When particular experimental client capabilities are enabled (similar to
how clangd does this now), r-a starts to send back code lens with the
data needed to run a cargo command:
```
{"jsonrpc":"2.0","id":48,"result":{"range":{"start":{"line":0,"character":0},"end":{"line":98,"character":0}},"command":{"title":"▶︎ Run Tests","command":"rust-analyzer.runSingle","arguments":[{"label":"test-mod tests::ecparser","location":{"targetUri":"file:///Users/someonetoignore/work/ec4rs/src/tests/ecparser.rs","targetRange":{"start":{"line":0,"character":0},"end":{"line":98,"character":0}},"targetSelectionRange":{"start":{"line":0,"character":0},"end":{"line":98,"character":0}}},"kind":"cargo","args":{"environment":{"RUSTC_TOOLCHAIN":"/Users/someonetoignore/.rustup/toolchains/1.85-aarch64-apple-darwin"},"cwd":"/Users/someonetoignore/work/ec4rs","overrideCargo":null,"workspaceRoot":"/Users/someonetoignore/work/ec4rs","cargoArgs":["test","--package","ec4rs","--lib"],"executableArgs":["tests::ecparser","--show-output"]}}]}}}
```
This data is passed as is to VSCode task processor, registered in
https://github.com/rust-lang/rust-analyzer/blob/60cd01864a2d0d6e2231becee402ba063b59dfa1/editors/code/src/main.ts#L195
where it gets eventually executed as a VSCode's task, all handled by the
r-a's extension code.
rust-analyzer does not declare server capabilities for such tasks, and
has no `workspace/executeCommand` handle, and Zed needs an interactive
terminal output during the test runs, so we cannot ask rust-analyzer
more than these descriptions.
Given that Zed needs experimental capabilities set to get these lens:
https://github.com/rust-lang/rust-analyzer/blob/60cd01864a2d0d6e2231becee402ba063b59dfa1/editors/code/src/client.ts#L318-L327
and that the lens may contain other odd tasks (e.g. docs opening or
references lookup), a protocol extension to get runnables looks more
preferred than lens:
https://rust-analyzer.github.io/book/contributing/lsp-extensions.html#runnables
This PR does not include any work on this direction, limiting to the
general code lens support.
As a proof of concept, it's possible to get the lens and even attempt to
run it, to no avail:

Release Notes:
- Used `textDocument/codeLens` data in the actions menu when applicable
Kirill Bulatov created
0b492c1
Use `line_endings` macro for the edit tool tests (#26642)
This aligns with how we handle other tests on Windows. Release Notes: - N/A
张小白 created
265caed
vim: Add global marks (#25702)
Closes https://github.com/zed-industries/zed/issues/13111 Release Notes: - vim: Added global marks `'[A-Z]` - vim: Added persistence for global (and local) marks. When re-opening the same workspace your previous marks will be available. --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
AidanV and Conrad Irwin created
1481317
Reveal always_included entries in Project Panel (#26197)
If the user has the `auto_reveal` option enabled, as well as `file_scan_inclusions` and opens a file that is gitignored but is also set to be always included, that file won't be revealed in the project panel. I've personally found this annoying, as the project panel can provide useful context on where you are in a codebase. It also just feels weird for it to be out of sync with the editor state. Release Notes: - Fixed the interaction between `auto_reveal`, `file_scan_inclusions`, and `.gitignore` within the Project Panel. Files that are always included will now be auto-revealed in the Project Panel, even if those files are also gitignored.
Ryan Hawkins created
7c1405d
Update rendering of gutter diff hunks to show whether a hunk is staged or not (#26809)
In the gutter, it seems more intuitive to me for the unstaged hunks to be hollow, indicating an action left to complete, and the staged hunks to be filled. I therefore flipped the style of expanded hunks to match the gutter icons. Is that acceptable? And would it be a breaking change? If it is not acceptable, then 058dc216d5a284033eebd38d28853f69aa336a55 contains the opposite behaviour, it is not a problem to revert to it. In the following images, the first hunk is always ~unstaged~ staged and the second is ~staged~ unstaged. <img width="138" alt="image" src="https://github.com/user-attachments/assets/35927069-da90-424a-8988-a4eb984d865f" /> <img width="133" alt="image" src="https://github.com/user-attachments/assets/4edd0e0d-a2b5-453a-8172-47684e065c82" /> <br /> <img width="143" alt="image" src="https://github.com/user-attachments/assets/2f295944-81aa-45f3-a103-c13b92bc2aba" /> <img width="133" alt="image" src="https://github.com/user-attachments/assets/35248218-7104-4059-8742-ae0e54da6c6b" /> Release Notes: - Improved gutter diff hunks to show whether a hunk is staged
Jakub Charvat created
96b747e
editor: Disable edit predictions in read-only buffers (#26804)
Closes #26797 Release Notes: - Fixed edit predictions appearing in read-only buffers. Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Finn Evers and Marshall Bowers created
7a888de
Add initial implementation of evaluating changes generated by the assistant (#26799)
Release Notes: - N/A --------- Co-authored-by: Richard Feldman <oss@rtfeldman.com> Co-authored-by: Thomas <thomas@zed.dev>
Michael Sloan , Richard Feldman , and Thomas created
e9b4fa1
rust: Follow-up fixes for attribute highlighting (#26172)
Closes #26124 This PR fixes some more cases of improper attribute highlights for rust. In #25501 I tried to address the regression in highlighting rust attributes which were introduced by #25333 . However, I failed to properly check all cases of attribute highlights as shown in the linked issue - really sorry for that! Thus, this is a follow-up fix aiming to resolve the issues the previous PR did not cover. The changes do not affect any highlighting shown in the [previous PR](https://github.com/zed-industries/zed/pull/25501): | `main` | <img width="719" alt="main-working" src="https://github.com/user-attachments/assets/9aa0e611-7bda-4b50-9335-c87da4c38057" /> | | --- | --- | | This PR | <img width="719" alt="PR-working" src="https://github.com/user-attachments/assets/605b275c-1d68-4bd7-97c6-251d7614a7ed" /> | But resolves the mentioned regressions in the linked issue: | `main` | <img width="371" alt="main_broken" src="https://github.com/user-attachments/assets/ebbb47b7-7945-41e0-b030-2fe3f2198653" /> | | --- | --- | | This PR | <img width="371" alt="PR_broken" src="https://github.com/user-attachments/assets/fa97408b-e1d6-4d99-81c1-cfb8073961a4" /> | Again, sorry for not checking this more thoroughly. Release Notes: - Fixed attributes in Rust being improperly highlighted. Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Finn Evers and Marshall Bowers created
ead60d1
docs: Add documentation for icon theme (#25973)
Adds documentation for the icon theme setting (mostly based on the documentation from theme but adjusted for icon theme). Release Notes: - N/A --------- Co-authored-by: Peter Tripp <peter@zed.dev> Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Devzeth , Peter Tripp , and Marshall Bowers created
768dfc8
Reinstate failing worktree tests (#26733)
Just debugging for now Release Notes: - N/A
Cole Miller created
f2f9c78
Fix the feedback modal (#26793)
Closes #26787 Release Notes: - Fixed a bug that prevented typing in the in-app feedback form
Cole Miller created
e5d2678
editor: Disable selection highlights for single line editor (#26805)
Fixes the selection highlight appearing in single-line editors like the file picker, command palette, etc. Release Notes: - Fixed selection highlight appearing in input fields like the file picker, command palette, etc.
Smit Barmase created
3ad9074
editor: Fix auto-closing quotes after word character (#26803)
Closes #14349
When typing quotes immediately after a word character, it resulted in
auto-closing the quote.
```js
const thing = this is text^;
```
Typing a quote resulted in `this is text""^;` which is not correct, and
should be `this is text"^;`.
This PR changes logic for auto close:
1. We now prevent auto-closing in case of brackets where start == end
when they're typed immediately after a word character. i.e. For, ``` `,
", ' ```.
2. Other bracket pairs like `{}, (), etc` continue to auto-close
regardless of preceding character. So, `func^` to `func()^` will keep
working.
3. Auto-closing in other contexts like after spaces, punctuation, etc.
will still work.
Before:

After:

Release Notes:
- Fixed auto-paired quotes being inserted when typing a quote
immediately next to a word character.
Smit Barmase created
f40b22c
Add action log to thinking tool (#26802)
Release Notes: - N/A
Richard Feldman created
8490d0d
Add thinking tool (#26675)
Release Notes: - N/A
Richard Feldman created
afd0da9
language_selector: Improve lookup for language icons (#26376)
This PR fixes a rare case where icons could be missing in the language selector. Currently, whilst looking up an icon, all file suffixes starting with a dot are filtered out. While this works fine for some languages, there are some languages having only file suffixes starting with a dot, e.g. the "Git Attributes" language provided from the "Git Firefly" extension. This results in no icon being displayed in the list, as shown in the screenshots below. To solve this, we can just simply remove the check for this special case as well as the construction of an artificial file name in the code, as both are not needed. A simple path just consisting of the extension is sufficient, as we currently do not differentiate between file names and file suffixes during an icon lookup. see the relevant code below: https://github.com/zed-industries/zed/blob/013a64679947fca3c940d319841069000d5ddf2b/crates/file_icons/src/file_icons.rs#L23-L52 As the first lookup is directly done using the entire file name and then checked against all suffixes, we actually do not have to construct an artificial file name at all. Should that produce no match, we check for a hidden file right after, so we do not have to filter hidden file names out. With this fix, nothing changes for "normal" file suffixes, for some cases where languges provide entire file names as a path suffix, the matching might improve, and for languages with only hidden associated file names, the initially described issue is resolved. I do believe the behavior of matching icons to languages could be improved in general. Fowever, I do think this is beyond the scope of this change. | Current main | <img width="546" alt="main" src="https://github.com/user-attachments/assets/5c3c9fdc-cadf-4e44-9667-2530374aa0d2" /> | | --- | --- | | This PR |<img width="546" alt="PR" src="https://github.com/user-attachments/assets/82e59108-e31f-4ca9-8bbd-b9fd2b34feb0" />| Aditionally, in 4395f78fb2c49f74c4bfa6b4146aee8b55435838 I refactored the code which acquires the label and icon for a match, since I found it a bit hard to read initially. The majority of this diff comes from this change. Should that not be wanted, I can revert that change. Release Notes: - Fixed a rare case where languages had no associated icon in the language selector.
Finn Evers created
1bf1c72
assistant edit tool: Fix editing files in context (#26751)
When the user attached context in the thread, the editor model request would fail because its tool use wouldn't be removed properly leading to an API error. Also, after an edit, we'd keep the old file snapshot in the context. This would make the model think that the edits didn't apply and make it go in a loop. Release Notes: - N/A
Agus Zubiaga created
ba8b9ec
gpui: Add interval in pattern (#26459)
Closes #ISSUE [git: Use font size to determine pattern slash width #26446](https://github.com/zed-industries/zed/pull/26446) This PR only uses font size as the slant line width, and here it further uses line height as the slant line interval control. before  now  big line height  Release Notes: - N/A *or* Added/Fixed/Improved ...
0x2CA created
685536c
editor: Change order of format and timeout futures (#26796)
Very small change, simply changing the order of the futures we pass to `select_biased!` so that if the format request and the timeout resolve at the same time (highly unlikely) we choose the format request instead of choosing the timeout and throwing away our work! Release Notes: - N/A
Ben Kunkle created
ae017c3
file_finder: Fix panic when file name contains new line (#26791)
Closes #26777
This PR fixes a panic when a file name contains a newline and a
multi-byte character like 👋 (4 bytes in UTF-8). The issue was in the
regex not considering newlines in file names, causing it to match only
the latter part of the file name.
For example:
```
left: PathWithPosition { path: "ab", row: None, column: None } // matched
right: PathWithPosition { path: "ab\ncd", row: None, column: None } // actual file name
```
This resulted in incorrect index calculation later in the code, which
went unnoticed until now due to the lack of tests with file names
containing newlines.
We discovered this issue when a panic occurred due to incorrect index
calculation while trying to get the index of a multi-byte character.
After the newline fix, the index calculation is always correct, even in
the case of multi-byte characters.
Release Notes:
- Fixed an issue where file names with newlines and multi-byte
characters could cause a crash in certain cases.
Smit Barmase created
f587e95
Add `seed` argument to `#[gpui::test]` attribute macro (#26764)
This PR introduces the arguments `seed` and `seeds` to `gpui::test`, e.g.: - `#[gpui::test(seed = 10)]` - `#[gpui::test(seeds(10, 20, 30, 40))]` Which allows us to run a test against a specific seed value without slowing down our tests like `iterations` does with high values. This was motivated by a diff hunk test that only fails in a 400+ seed, but is slow to run 400+ times for every `cargo test`. If your test failed with a specific seed, you can now add the `seed` arg to increase the chances of detecting a regression. There are now three ways of setting seeds, the `SEED` env var, `iterations`, and the args this PR adds. See docs in `gpui::test`. --- I also relaxed the limitation on `retries` not working with `iterations`, as that seemed unnecessary. Release Notes: - N/A
João Marcos created
83dfdb0
assistant2: Add "running" status feedback in the disclosure (#26786)
Just a tiny bit of polish here, so that if the user expands the disclosure, an equivalent loading state is at the response container. <img src="https://github.com/user-attachments/assets/a2ecb7f4-c9ea-4a14-8a60-9f7f2983a1a1" width="600px" /> Release Notes: - N/A
Danilo Leal created
566c5f9
Refine word completions (#26779)
Follow-up of https://github.com/zed-industries/zed/pull/26410
* Extract word completions into their own, `editor::ShowWordCompletions`
action so those could be triggered independently of completions
* Assign `ctrl-shift-space` binding to this new action
* Still keep words returned along the completions as in the original PR,
but:
* Tone down regular completions' fallback logic, skip words when the
language server responds with empty list of completions, but keep on
adding words if nothing or an error were returned instead
* Adjust the defaults to wait for LSP completions infinitely
* Skip "words" with digits such as `0_usize` or `2.f32` from completion
items, unless a completion query has digits in it
Release Notes:
- N/A
Kirill Bulatov created
21057e3
assistant2: Refine thread design (#26783)
Just some light design polish while we're in-flight with this. <img src="https://github.com/user-attachments/assets/40a68fe6-f37e-4df1-b669-824c7dd8ff11" width="600px" /> --- Release Notes: - N/A
Danilo Leal created
f68a475
Introduce rating for assistant threads (#26780)
Release Notes: - N/A --------- Co-authored-by: Richard Feldman <oss@rtfeldman.com> Co-authored-by: Agus Zubiaga <hi@aguz.me>
Antonio Scandurra , Richard Feldman , and Agus Zubiaga created
c62210b
copilot: Handle sign out when copilot language server is not running (#26776)
When copilot is not being used as the edit prediction provider and you open a fresh Zed instance, we don’t run the copilot language server. This is because copilot chat is purely handled via oauth token and doesn’t require the language server. In this case, if you click sign out, instead of asking the language server to sign out (which isn’t running), we can manually clear the config directory, which contains the oauth tokens. We already watch this directory, and if the token is not found, we update the sign-in status. Release Notes: - N/A
Smit Barmase created
ad14dcc
assistant2: Truncate thread title in context picker (#26775)
Similar issue as in https://github.com/zed-industries/zed/pull/26721. Release Notes: - N/A
Danilo Leal created
b9432db
macOS: Disable fullscreen window tabbing (take 2) (#26774)
Take 2 on https://github.com/zed-industries/zed/pull/26600. Now, it doesn't break remote development. Instead of using it in `build_classes`, it's now used in the `open` method while creating a window. I found similar usage in other places over internet. Release Notes: - Fixed issue where Zed would show mac native tabs when opening new fullscreen windows on macOS.
Smit Barmase created