3977b85
v0.140.x preview
Joseph T Lyons created
3977b85
v0.140.x preview
Joseph T Lyons created
1b28f93
Make notification windows not have titles on X11 (#12935)
Co-Authored-By: Max <max@zed.dev> Release Notes: - N/A Co-authored-by: Max <max@zed.dev>
Conrad Irwin and Max created
2fd00a8
docs: Capitalize Vim in Vim mode documentation (#12934)
Release Notes: - N/A
Thorsten Ball created
bee3441
Ollama improvements (#12921)
Attempt to load the model early on when the user has switched the model. This is a follow up to #12902 Release Notes: - N/A
Kyle Kelley created
113546f
Do not encourage additional ignored labels
We recently reduced the set of ignored labels down to a single label: "ignore top-ranking issues." It makes sense that we don't allow for multiple to be registered in this script now.
Joseph T Lyons created
5e9f9b4
Wrap JS/TS runnables in quotes (#12932)
Some of the runnables added in #12118 don't work for tests (or code)
that contain spaces. In other words, the runnable for a test like
```js
it('does the thing', () => ...)
```
would end up w/ something like `npx jest does the thing
/path/to/file.spec.js`, but what we really want is `npx jest
--testNamePattern "does the thing" /path/to/file.spec.js`. A similar
thing was happening for the "node execute selection" runnable: selecting
`let foo = 1` would run `node -e let foo = 1`, not `node -e "let foo =
1"`.
In my (somewhat limited?) experience, it's very common for tests like
these to include spaces, and of course a code selection is almost
certain to contain whitespace.
Not covered:
- this just blindly wraps quotes around the symbol/code; in the future
it may make sense to try to figure out *what type of quote* to use. (eg
`it('does the "thing"', () => ...)` is a valid test name, but
`--testNamePattern "does the "thing""` would not work. Note the doubled
quotes.)
- I did not wrap the filenames in quotes to escape those for the shell,
nor did I test if that's actually an issue. In my experience, I've not
seen many (any?) test files that contain spaces in the name, but I
suspect that it would be an issue if a containing dir includes spaces.
(eg `npx jest ... /path/to/My Documents/Code/file.spec.js`
/cc @RemcoSmitsDev
Release Notes:
- Fixed some runnables in Javascript/Typescript
claytonrcarter created
ec95a33
Added TSX test runnables (#12922)
Fix #12884 Release Notes: - Added runnable tests for TSX files. --- Runnable tests can be customized via `tsx-test` tag --------- Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Chung Wei Leong and Piotr Osiewicz created
b823509
linux: Use filesystem based unix socket instead of abstract namespace (#12756)
Release Notes: - N/A fixes: unable to launch multiple zed instances even if the support dirs are different(example: bwrap based sandboxing)
maan2003 created
e16bbe0
Make install.sh sh-compatible (#12899)
Co-Authored-By: Max <max@zed.dev> Release Notes: - N/A --------- Co-authored-by: Max <max@zed.dev> Co-authored-by: Shyim <github@shyim.de>
Conrad Irwin , Max , and Shyim created
ab41edd
Fix cursors on some GNOME installations (#12914)
This PR adds support for `org.gnome.desktop.interface`'s `cursor-theme` setting on Wayland. This should fix cursors not showing up on some GNOME installs. This PR also adds the wiring to watch the current cursor theme value. Thanks to @apricotbucket28 for helping debug the issue. Release Notes: - N/A
Mikayla Maki created
4cb8d6f
Ollama Provider for Assistant (#12902)
Closes #4424.
A few design decisions that may need some rethinking or later PRs:
* Other providers have a check for authentication. I use this
opportunity to fetch the models which doubles as a way of finding out if
the Ollama server is running.
* Ollama has _no_ API for getting the max tokens per model
* Ollama has _no_ API for getting the current token count
https://github.com/ollama/ollama/issues/1716
* Ollama does allow setting the `num_ctx` so I've defaulted this to
4096. It can be overridden in settings.
* Ollama models will be "slow" to start inference because they're
loading the model into memory. It's faster after that. There's no UI
affordance to show that the model is being loaded.
Release Notes:
- Added an Ollama Provider for the assistant. If you have
[Ollama](https://ollama.com/) running locally on your machine, you can
enable it in your settings under:
```jsonc
"assistant": {
"version": "1",
"provider": {
"name": "ollama",
// Recommended setting to allow for model startup
"low_speed_timeout_in_seconds": 30,
}
}
```
Chat like usual
<img width="1840" alt="image"
src="https://github.com/zed-industries/zed/assets/836375/4e0af266-4c4f-4d9e-9d74-1a91f76a12fe">
Interact with any model from the [Ollama
Library](https://ollama.com/library)
<img width="587" alt="image"
src="https://github.com/zed-industries/zed/assets/836375/87433ac6-bf87-4a99-89e1-96a93bf8de8a">
Open up the terminal to download new models via `ollama pull`:

Kyle Kelley created
127b9ed
project_panel: Don't show file icon during rename when file icons are otherwise hidden (#12910)
This PR fixes an instance where the file icon for a project panel entry would be shown during a rename even when the `project_panel.file_icons` setting was set to `false`. Resolves #12905. Release Notes: - Fixed an issue where file icons were displayed in the project panel during a rename even when `project_panel.file_icons` was set to `false` ([#12905](https://github.com/zed-industries/zed/issues/12905)).
Marshall Bowers created
c30f6a1
Fix alt key getting stuck when tabbing on linux (#12912)
Release Notes: - N/A
Mikayla Maki created
8ccd2a0
Add tag handler for collecting crate items from rustdoc output (#12903)
This PR adds a tag handler for collecting crate items from rustdoc's HTML output. This will serve as the foundation for getting more insight into a crate's contents. Release Notes: - N/A
Marshall Bowers created
57b87be
Hoist `indexmap` to workspace level (#12901)
This PR hoists `indexmap` up to a workspace dependency. Release Notes: - N/A
Marshall Bowers created
80c14c9
Pull app / OS info out of GPUI, add Linux information, make fallible window initialization (#12869)
TODO: - [x] Finish GPUI changes on other operating systems This is a largely internal change to how we report data to our diagnostics and telemetry. This PR also includes an update to our blade backend which allows us to report errors in a more useful way when failing to initialize blade. Release Notes: - N/A --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Mikayla Maki and Conrad Irwin created
ec9e700
linux/x11: Mark windows as destroyed after destroy request (#12892)
Turns out we still get FocusOut and UnmapNotify events after the window has been destroyed, which resulted in error messages popping up because we can't find the window anymore that we want to mark as unfocused. Release Notes: - N/A
Thorsten Ball created
a06189b
Fix most vim tests on linux (#12873)
Fixes most vim tests on linux (and a few editor ones) by loading Zed Mono instead of relying on the system fallback stack. Release Notes: - N/A
Conrad Irwin created
53b0720
Remove headers from prompt library picker (#12889)
Also, as a drive-by, we're fixing up/down not working in inline assistant editor. Release Notes: - N/A
Antonio Scandurra created
b6ea393
lsp: Add support for linked editing range edits (HTML tag autorenaming) (#12769)
This PR adds support for [linked editing of
ranges](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_linkedEditingRange),
which in short means that editing one part of a file can now change
related parts in that same file. Think of automatically renaming
HTML/TSX closing tags when the opening one is changed.
TODO:
- [x] proto changes
- [x] Allow disabling linked editing ranges on a per language basis.
Fixes #4535
Release Notes:
- Added support for linked editing ranges LSP request. Editing opening
tags in HTML/TSX files (with vtsls) performs the same edit on the
closing tag as well (and vice versa). It can be turned off on a language-by-language basis with the following setting:
```
"languages": {
"HTML": {
"linked_edits": true
},
}
```
---------
Co-authored-by: Bennet <bennet@zed.dev>
Piotr Osiewicz and Bennet created
98659ea
Overhaul inline assistant (#12846)
This pull request introduces a new diff mechanism that helps users understand exactly which lines were changed by the LLM. Release Notes: - N/A
Antonio Scandurra created
3722275
linux/x11: Only create ModifiersChanged event if they changed (#12879)
I noticed that when I use my mouse wheel, we get a ton of the `XkbStateNotify` events, but the modifiers don't change, so we add a ton of useless input events for the window. Release Notes: - N/A
Thorsten Ball created
ef84ce7
linux make install (#12870)
Release Notes: - N/A
Conrad Irwin created
44a5864
Wait for composition to end before sending InputIgnored (#12871)
Release Notes: - vim: Fixed `f`/`t` etc. for keys that require IME (#12522)
Conrad Irwin created
4e98c23
Reconnect button for remote projects (#12669)
Release Notes: - N/A --------- Co-authored-by: Max <max@zed.dev>
Conrad Irwin and Max created
1914a42
Update windows doc to mention rust-lld linker error (#12859)
Release Notes: - N/A ## Description When using rust-lld it's possible to get a `STATUS_ACCESS_VIOLATION` error at compile time. I added a bit of information about it in the build guide for windows to recommend using a different linker when building `zed`. --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
IceSentry and Marshall Bowers created
6afed19
Update EULA (#12858)
Release Notes: - N/A
Joseph T. Lyons created
2509af7
assistant: Improve JSON handling in `/fetch` command (#12864)
This PR improves the `/fetch` command with better support for URLs that return JSON content. JSON response bodies will now be pretty-printed and placed within a Markdown code block: <img width="690" alt="Screenshot 2024-06-10 at 3 39 52 PM" src="https://github.com/zed-industries/zed/assets/1486634/4a7c1cb7-9f5b-4a63-9e8e-5168bf9a6625"> Release Notes: - Improved the handling of JSON response bodies in the `/fetch` command in the Assistant.
Marshall Bowers created
8078e58
Remove unused `color` crate (#12860)
This PR removes the `color` crate, as it was not used anywhere. We had added this experimentally, but right now its existence is just a source of confusion. Release Notes: - N/A
Marshall Bowers created
b69c312
Add missing LICENSE file to `proto` crate (#12863)
This PR adds a missing LICENSE file to the recently-extracted `proto` crate. Release Notes: - N/A
Marshall Bowers created
e2c5ce5
Fix target of proto diff on CI (#12861)
Release Notes: - N/A
Nathan Sobo created
7005aaa
Update linux.md
Mikayla Maki created
9db2697
Update linux.md
Mikayla Maki created
77e88c1
Extract a `proto` crate out of `rpc` (#12852)
Release Notes: - N/A --------- Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra and Nathan created
57c4029
Show extension download counts with thousands separators (#12857)
This PR adjusts the extension download counts to be displayed using thousands separators. Release Notes: - Adjusted extension download counts to display with thousands separators (e.g., `1,000,000`).
Marshall Bowers created
0d5485b
assistant: Add `/now` slash command (#12856)
This PR adds a `/now` command to the Assistant for indicating the current date and time to the model. Release Notes: - Added `/now` command to the Assistant for getting the current date and time.
Marshall Bowers created
a600799
ruby: Remove outline for running tests (#12642)
Hi, this pull request superseeds the
https://github.com/zed-industries/zed/pull/12624
and removes queries for runnables from `outline.scm`. This pull request
has couple things to mention:
- Removed task for running tests with `minitest` as I think it's not
reliable in its state because, AFAIK, the only way to run `minitest`
with the specific line, i.e. `bundle exec rake test
spec/models/some_model.rb:12` is to use it with Rails. The support for
`minitest` is still there and users can add their own task, for
instance, when they use `minitest` in Rails to get support for running
tests:
```json
{
"label": "test $ZED_RELATIVE_FILE:$ZED_ROW",
"command": "./bin/rails",
"args": ["test", "\"$ZED_RELATIVE_FILE:$ZED_ROW\""],
"tags": ["minitest-test"]
}
```
**Question:** Perhaps that should be mentioned in the Ruby extension
documentation?
- Adjusted runnables queries to work without `ZED_SYMBOL`.
Release Notes:
- N/A
Vitaly Slobodin created
05b6581
linux/x11: handle XIM events sync to reduce lag (#12840)
This helps with the problem of keyboard input feeling laggy when the event loop is under load. What would previously happen is: - N events from X11 arrive - N events get forwarded to XIM - N events are handled in N iterations of the event loop (sadly, yes: we only seem to be getting back one `ClientMessage` per poll from XCB connection) - Each event is pushed into the channel - N event loop iterations are needed to get the events off the channel and handle them With this change, we get rid of the last 2 steps: instead of pushing the event onto a channel, we store it on the XIM handler itself, and then work it off synchronously. Usually one shouldn't block the event loop, but I think in this case - user input! - it's better to handle the events directly instead of re-enqueuing them again in a channel, where they can accumulate and need multiple iterations of the loop to be worked off. This does *not* fix the problem of input feeling choppy/slower when the system is under load, but it makes the behavior now feel exactly the same as when XIM is disabled. I also think the code is easier to understand since it's more straightforward. Release Notes: - N/A
Thorsten Ball created
43d1a80
linux: run runnables only when event loop is idle (#12839)
This change ensures that the event loop prioritizes enqueueing another render or handling user input over executing runnables. It's a subtle change as a result of a week of digging into performance on X11. It's also not perfect: ideally we'd get rid of the intermediate channel here and had more control over when and how we run runnables vs. X11 events, but I think short of rewriting how we use an event loop, this is good cost/benefit change. To illustrate: Before this change, it was possible to block the app from rendering for a long time by just creating a ton of futures that were executed on the "main" thread (we don't have a "main" thread on Linux, but we have a single thread in which we run the event loop). That was relatively easy to reproduce by opening the `zed` repository and starting `rust-analyzer`: at some point `rust-analyzer` sends us so many notifications, that are all handled in futures, that the event loop is busy just working off the runnables, never getting to the events that X11 sends us or our own timer to re-enqueue another render. When you put print statements into the code to show when which event was handled, you'd see something like this **before this change**: ``` [ ... hundreds of runnable.run() ... ] runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() new render tick timer. lag: 56.942049ms X11 event new render tick timer. lag: 9.668µs X11 event new render tick timer. lag: 9.955µs X11 event runnable.run() runnable.run() runnable.run() runnable.run() new render tick timer. lag: 12.462µs X11 event new render tick timer. lag: 14.868µs X11 event new render tick timer. lag: 11.234µs X11 event new render tick timer. lag: 11.681µs X11 event new render tick timer. lag: 13.926µs X11 event ``` Note the `lag: 56ms`: that's the difference between when we wanted to execute the callback that enqueues another render and when it ran. Longer lags are possible, this is just the first one I grabbed from the logs. Now, compare this with the logs **after this change**: ``` runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() new render tick timer. lag: 36.051µs runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() X11 event runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() runnable.run() ``` In-between many `runnable.run()` we'll always handle events. So, in essence, what this change does is to introduce 2 priorities into the X11 event queue: - high: X11 events (user events, render events, ...), render tick, XIM events, ... - low: all async rust code I've tested this with a debug build and release build and I think the app now feels more responsive. It doesn't feel perfect still, especially in the slow debug builds, but I couldn't observe 10s lockups anymore. Since it's a pretty small change, I think we should go for it and see how it behaves. Thanks to @maan2003 this now also includes the same change to Wayland. Release Notes: - N/A --------- Co-authored-by: maan2003 <manmeetmann2003@gmail.com>
Thorsten Ball and maan2003 created
e829a8c
Add auto-completion support for `package.json` files (#12792)
 Release Notes: - Added auto-completion support for `package.json` files.
Panghu created
87845a3
cpp: Highlight sized type specifiers as keywords (#12751)
Without this, `unsigned` or `unsigned int` is not highlighted properly: `int` is a primitive_type but `unsigned` is a sized_type_specifier. This is already handled in C as both are part of @type highlight group. Before:  After:  Release Notes: - N/A
Arseny Kapoulkine created
953393f
Rename `workspace::Restart` action into `workspace::Reload` (#12672)
Closes https://github.com/zed-industries/zed/issues/12609 Instead of adding some ordering mechanism to the actions, rename the action so that it's not interfering with the `editor: restart language server` command. Before:   After:   Release Notes: - Improved language server restart command ergonomics by renaming `workspace::Restart` action into `workspace::Reload` to remove any other "restart"-worded actions in the list
Kirill Bulatov created
75f8be6
vim: add guu gUU g~~ g/ (#12789)
Release Notes: - vim: Add `g/` for project search
Conrad Irwin created
e174f16
Refactor: Make it possible to share a remote worktree (#12775)
This PR is an internal refactor in preparation for remote editing. It restructures the public interface of `Worktree`, reducing the number of call sites that assume that a worktree is local or remote. * The Project no longer calls `worktree.as_local_mut().unwrap()` in code paths related to basic file operations * Fewer code paths in the app rely on the worktree's `LocalSnapshot` * Worktree-related RPC message handling is more fully encapsulated by the `Worktree` type. to do: * [x] file manipulation operations * [x] sending worktree updates when sharing for later * opening buffers * updating open buffers upon worktree changes Release Notes: - N/A
Max Brunsfeld created
aa60fc2
Use the new assistant icon in the setup instructions (#12787)
This is a PR with just a small visual adjustment, so instructions are up-to-date with the new icon. I did not remove the "old" ai.svg as I am not sure if its gonna be used in the future or if its has been completely replaced by the new "zed assistant" icon. Release Notes: - Fixed the wrong icon being used in the assistant setup instructions. For open ai <img width="543" alt="image" src="https://github.com/zed-industries/zed/assets/61624214/5f18a8f4-6761-4df5-8482-92582545dee5"> and anthropic <img width="544" alt="image" src="https://github.com/zed-industries/zed/assets/61624214/6ca3ed23-0f68-4c0d-bc8a-32ab7c607029"> how it looked before (Zed Preview 0.139.3 0c083b7f381d8d75632c5ce5bd60810cda195ad0): <img width="526" alt="image" src="https://github.com/zed-industries/zed/assets/61624214/af9c9fa8-89ed-4f6a-88ca-b285b4c522c3">
slowlydev created
5548773
vim: Add gU/gu/g~ (#12782)
Co-Authored-By: ethanmsl@gmail.com Release Notes: - vim: Added `gu`/`gU`/`g~` for changing case. (#12565)
Conrad Irwin created
3eac83e
Add event for yarn project identification (#12785)
Report a `open yarn project` `app_event` for each worktree where `yarn.lock` is found and only report it once per session. Release Notes: - N/A
Joseph T. Lyons created
243a0e7
Block publishing of `zed_extension_api` v0.0.7 (#12784)
This PR adds a temporary block on publishing v0.0.7 of the `zed_extension_api`. We have breaking changes to the extension API that are currently staged on `main` and are still being iterated on, so we don't want to publish again until we're ready to commit to the new API. This change is intended to prevent accidental publishing of the crate before we're ready. Release Notes: - N/A
Marshall Bowers created
6fa6e07
Check validity of new.range too (#12781)
I'm not certain yet how it could be invalid, but we are still seeing panics here. Release Notes: - Fixed a panic when opening the diagnostics view
Conrad Irwin created
834089f
Handle Wikipedia code blocks in `/fetch` command (#12780)
This PR extends the `/fetch` command with support for Wikipedia code blocks. Release Notes: - N/A
Marshall Bowers created