750df6c
Clean up comments in runtimes (#13870)
Kyle Kelley created
750df6c
Clean up comments in runtimes (#13870)
Kyle Kelley created
a53b3b6
Explicitly specify php files' formatter for prettier (#13883)
Closes https://github.com/zed-industries/zed/issues/13878 Seems that all regular files types are being recognized by Prettier from their paths, but the PHP one does not despite the PHP plugin used when formatting. Release Notes: - Fixed PHP prettier formatting, by including `php` parser name into formatting queries ([13878](https://github.com/zed-industries/zed/issues/13878))
Kirill Bulatov created
078ce33
lua: Bump to v0.0.3 (#13882)
This PR bumps the Lua extension to v0.0.3. Changes: - https://github.com/zed-industries/zed/pull/13871 Release Notes: - N/A
Marshall Bowers created
19490d8
lua: Add Windows support (#13871)
The current version of the extension tries to download the Windows binary files for lua-language-server like this: `lua-language-server-3.9.3-win32-x64.tar.gz` The [Windows binary files](https://github.com/LuaLS/lua-language-server/releases) are only released as zip archives, so it will fail to get the required files. This pr changes the following: - Add check for Windows specific zip archive - Add check for Windows specific .exe executable Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Idris Saklou and Marshall Bowers created
61e4b64
zed_extension_api: Return structured slash command completions (#13879)
This PR updates the extension API to use structured slash command completions instead of plain strings. This allows slash commands defined in extensions to take advantage of the improvements made in #13876. Release Notes: - N/A
Marshall Bowers created
950e7e5
assistant: Clean up completion building in `/docs` command (#13877)
This PR cleans up the building of completions in the `/docs` command a bit after #13876. Release Notes: - N/A
Marshall Bowers created
68accae
assistant: Improve `/docs` argument completions (#13876)
This PR improves the completions for arguments in the `/docs` slash command. We achieved this by extending the `complete_argument` method on the `SlashCommand` trait to return a `Vec<ArgumentCompletion>` instead of a `Vec<String>`. In addition to the completion `label`, `ArgumentCompletion` has two new fields that are can be used to customize the completion behavior: - `new_text`: The actual text that will be inserted when the completion is accepted, which may be different from what is shown by the completion label. - `run_command`: Whether the command is run when the completion is accepted. This can be set to `false` to allow accepting a completion without running the command. Release Notes: - N/A --------- Co-authored-by: Antonio <antonio@zed.dev>
Marshall Bowers and Antonio created
ca27f42
extension: Don't use `unzip` to extract `.zip` files (#13869)
This PR replaces the usage of `unzip` for extracting `.zip` files downloaded by extensions with extraction via a library. This will allow us to extract `.zip` files even if `unzip` is not available (e.g., on Windows). Release Notes: - Removed the need for `unzip` to be present on the system to extract `.zip` files downloaded by extensions.
Marshall Bowers created
d70c577
Remove stray `println!` for window-side decorations (#13868)
This PR removes a stray `println!` that was spamming stdout with the window decorations in use. Release Notes: - N/A
Marshall Bowers created
c77ea47
Runtimes UI Starter (#13625)
Initial runtimes UI panel. The main draw here is that all message subscription occurs with two background tasks that run for the life of the kernel. Follow on to #12062 * [x] Disable previous cmd-enter behavior only if runtimes are enabled in settings * [x] Only show the runtimes panel if it is enabled via settings * [x] Create clean UI for the current sessions ### Running Kernels UI <img width="205" alt="image" src="https://github.com/zed-industries/zed/assets/836375/814ae79b-0807-4e23-bc95-77ce64f9d732"> * [x] List running kernels * [x] Implement shutdown * [x] Delete connection file on `drop` of `RunningKernel` * [x] Implement interrupt #### Project-specific Kernel Settings - [x] Modify JupyterSettings to include a `kernel_selections` field (`HashMap<String, String>`). - [x] Implement saving and loading of kernel selections to/from `.zed/settings.json` (by default, rather than global settings?) #### Kernel Selection Persistence - [x] Save the selected kernel for each language when the user makes a choice. - [x] Load these selections when the RuntimePanel is initialized. #### Use Selected Kernels - [x] Modify kernel launch to use the selected kernel for the detected language. - [x] Fallback to default behavior if no selection is made. ### Empty states - [x] Create helpful UI for when the user has 0 kernels they can launch and/or 0 kernels running <img width="694" alt="image" src="https://github.com/zed-industries/zed/assets/836375/d6a75939-e4e4-40fb-80fe-014da041cc3c"> ## Future work ### Kernel Discovery - Improve the kernel discovery process to handle various installation methods (system, virtualenv, poetry, etc.). - Create a way to refresh the available kernels on demand ### Documentation: - Update documentation to explain how users can configure kernels for their projects. - Provide examples of .zed/settings.json configurations for kernel selection. ### Kernel Selection UI - Implement a new section in the RuntimePanel to display available kernels. - Group on the language name from the kernel specification - Create a dropdown for each language group to select the default kernel. Release Notes: - N/A --------- Co-authored-by: Kirill <kirill@zed.dev>
Kyle Kelley and Kirill created
821aa08
Fix delay when changing scrolling direction (#13867)
Fixes: #13720. Co-authored-by: Antonio Scandurra <antonio@zed.dev>
Peter Tripp and Antonio Scandurra created
fa60200
Configurable window decorations (#13866)
Introduces the `ZED_WINDOW_DECORATIONS` env variable. - Not set, defaulting to client-side decorations - Value is "client": client-side decorations - Value is "server": server-side decorations I think it's good to have this escape-hatch next to all possible detection mechanisms. Release Notes: - N/A
Thorsten Ball created
9b7bc04
ocaml: Bump to v0.0.2 (#13864)
This PR bumps the OCaml extension to v0.0.2. Changes: - https://github.com/zed-industries/zed/pull/13834 Release Notes: - N/A
Marshall Bowers created
a61188d
ocaml: Pass environment to language server (#13834)
Fixed the environment not being passed to ocaml lsp causing it to not work with direnv based installs Release Notes: - N/A
Stanislav Alekseev created
1bd5851
docs: Update the example to set up black formatter in Python (#13839)
As titled. The new example is consistent with the instructions in "Configuring Zed". I verified that the example works as expected. Release Notes: - Update the instructions to set up external formatter for Python.
Zhangfan created
e69f9d6
linux/x11: Fix gap when tiling windows side by side (#13859)
By leveraging the `_GTK_EDGE_CONSTRAINTS` atom we can get all four
booleans for the `Tiling` struct and figure out which side is free when
the window is tiled to half of the screen.
For the logic behind the `_GTK_EDGE_CONSTRAINTS` see:
-
https://github.com/GNOME/mutter/blob/8e9d13aa3b3baa099ca32bbcb10afb4d9eea4460/src/x11/window-x11.c#L65-L75
-
https://github.com/GNOME/mutter/blob/8e9d13aa3b3baa099ca32bbcb10afb4d9eea4460/src/x11/window-x11.c#L1205-L1231
(I used Claude 3.5 Sonnet with our code and these pieces from `mutter`
to generate the Rust code, that was pretty sweet)
This fixes the gap in the middle when a GPUI window is tiled to the left
and another window to the right.
It's not _perfect_ but it looks a lot better.
Here's a diff that makes it look better:
```diff
diff --git a/crates/gpui/examples/window_shadow.rs b/crates/gpui/examples/window_shadow.rs
index 122231f6b..7fa29dadc 100644
--- a/crates/gpui/examples/window_shadow.rs
+++ b/crates/gpui/examples/window_shadow.rs
@@ -72,8 +72,8 @@ impl Render for WindowShadow {
.when(!(tiling.top || tiling.left), |div| div.rounded_tl(rounding))
.when(!tiling.top, |div| div.pt(shadow_size))
.when(!tiling.bottom, |div| div.pb(shadow_size))
- .when(!tiling.left, |div| div.pl(shadow_size))
- .when(!tiling.right, |div| div.pr(shadow_size))
+ .when(!tiling.left, |div| div.pl(shadow_size - border_size))
+ .when(!tiling.right, |div| div.pr(shadow_size - border_size))
.on_mouse_move(|_e, cx| cx.refresh())
.on_mouse_down(MouseButton::Left, move |e, cx| {
let size = cx.window_bounds().get_bounds().size;
```
But that makes it look weird on Wayland, so I didn't do it.
I think it's fine for now. Chromium looks bad and has a gap, so we're
already better.
## Before


## After


Release Notes:
- N/A
Thorsten Ball created
c4dbe32
assistant: Limit amount of concurrent completion requests (#13856)
This PR refactors the completion providers to only process a maximum amount of completion requests at a time. Also started refactoring language model providers to use traits, so it's easier to allow specifying multiple providers in the future. Release Notes: - N/A
Bennet Bo Fenner created
f2711b2
ui: Don't show tooltip when ButtonLike is selected (#13857)
This fixes the issue of a tooltip covering the thing that the button has revealed. It also mirrors what other UI frameworks do. Chrome on Linux behaves the same, and Safari does the same thing on macOS. It fixes this:  Release Notes: - N/A
Thorsten Ball created
1260b52
linux scripts: Respect `$CARGO_TARGET_DIR` (#13830)
https://doc.rust-lang.org/cargo/reference/environment-variables.html Some people (myself included) set this variable to have a single directory to clean up (or whatever reason one might have for having a single `target` directory). This changes the linux scripts to respect that Release Notes: - N/A
Chinmay Dalal created
fc8749f
linux: Set directory in SaveFileRequest dialog (#13850)
This has been bugging me for a while. If you create a new file and then save it, the dialogue would show the home directory and not the folder that you were in. This fixes it. Release Notes: - N/A
Thorsten Ball created
2a923e3
linux/x11: Set transparency to false by default (#13848)
The previous code lead to a ton of error messages from Blade on my X11 machine, even with *client-side decorations working well!* As @someone13574 pointed out [here](https://github.com/zed-industries/zed/pull/13611#issuecomment-2201685030) things still work with this being false. And if someone changes a theme with transparent background, then it will get set anyway. We just don't do it by default. And as @jansol pointed out [here](https://github.com/zed-industries/zed/issues/5040#issuecomment-2096560629): > On X11 it may be possible to configure a compositor to blur window backgrounds but Zed has no way to influence that. So we don't lose anything, I think, but get rid of a ton of error messages in the logs. Proof of shadows etc. still working:  Release Notes: - N/A
Thorsten Ball created
56e3fc7
linux/x11: Fix bugs related to unflushed commands (#13844)
**Edit**: This PR adds flushes to functions which should have an immediate affect. I've observed it fixing the following bugs (but there are probably more): - The cursor not updating when just hovering. - The window not maximising after clicking the full-screen button until you move the mouse. - The window not minimising after clicking the minimise button until you move the mouse. --- **Original content**: Following #13646, the cursor style wouldn't change because the `change_window_attributes` command wasn't being flushed. I guess it was working before because something else was flushing it somewhere else so it was never noticed. I just added `check()` which flushes the command so that the cursor will actually update when just hovering. Before you would need to interact with the window so that something else could flush the command. Release Notes: - N/A
Owen Law created
c8b1062
linux/x11: Resize on GTK_EDGE_CONSTRAINTS atom (#13833)
With the new window decorations resizing was _really_ laggy on my X11 machine. Before: - Click on window border (hitbox doesn't work properly, but that's another issue) - Drag and resize - 4-5s nothing happens - Window is resized After: - Click on window border - Drag and resize - Window is resized I'm still not 100% sure on why this happens on my machine and not Conrad's/Mikayla's, but seems like that GTK_EDGE_CONSTRAINTS atom is sent when resizing. The other thing that I can't explain is that we get a `ConfigureNotify` when resizing, with the right size, but maybe not often enough? Anyway, for now we'll go with this. Release Notes: - N/A
Thorsten Ball created
398c2f9
docs: Add Dart (#13829)
This PR adds Dart support to the docs, as it was one of the first-party extensions that wasn't mentioned anywhere. Release Notes: - N/A
Marshall Bowers created
3a5d116
docs: Update language docs and include links in the sidebar (#13828)
This PR updates the supported language docs and adds them to the sidebar for better discoverability. Release Notes: - N/A
Marshall Bowers created
e3cd1dd
docs: Update language pages to indicate whether they are native or from an extension (#13827)
This PR updates the language pages in the docs to indicate whether the support is available natively or provided by an extension. Release Notes: - N/A
Marshall Bowers created
b1f8fc8
Allow Shift + Scroll to Horizontally Scroll in X11 and Wayland (#13676)
Release Notes: - Allows shift + scroll horizontal scrolling on X11 and Wayland. [Screencast from 2024-06-29 17-17-59.webm](https://github.com/zed-industries/zed/assets/14155062/2cac77b9-ecc8-4ddb-b08d-b5d964c8dc84)
Keenan Wresch created
d450a1d
windows: Fix `package-version-server` (#13821)
Now, it can run on windows.  Release Notes: - N/A
张小白 created
818e6e5
Introduce Tabs to Assistant Panel (#13783)
<img width="1652" alt="image" src="https://github.com/zed-industries/zed/assets/482957/8397ea87-51aa-4b69-85c7-bf963fe2b08a"> Release Notes: - N/A
Antonio Scandurra created
ed09bb9
Fix panel state (#13668)
In the latest update, panel loading occasionally occurred randomly, either before or after workspace deserialization due to their asynchronous nature. This update addresses the issue by ensuring panels restore their state based on serialized data, synchronizing their loading with workspace deserialization. Release Notes: - Fixed [#9638](https://github.com/zed-industries/zed/issues/9638) - Fixed [#12954](https://github.com/zed-industries/zed/issues/12954)
Yongkang Chen created
52583fe
Remove unused `ids` query parameter from `GET /extensions` endpoint (#13802)
This PR removes the `ids` query parameter from the `GET /extensions` endpoint, as we don't use it. We originally added the query parameter in #9929 to facilitate auto-updates. However, it was superseded by the `GET /extensions/updates` endpoint in #10052. There shouldn't be any Zed versions out in the wild that are using the `ids` query parameter, as we added the endpoint on Thursday, March 28, and replaced its usage with the new endpoint on Monday, April 1, before the next Zed release. Release Notes: - N/A
Marshall Bowers created
8ec478c
Rust: Prefer completion.label_details over completion.details (#13797)
In doing so we get to surface origin packages more prominently. Fixes #13494 (again) Release Notes: - Fixed origin packages not being surfaced in Rust completions
Piotr Osiewicz created
6d10b16
gleam: Include a package name suffix for docs entries (#13798)
This PR updates the Gleam docs provider to include the package name as a suffix for docs entries: <img width="639" alt="Screenshot 2024-07-03 at 5 48 28 PM" src="https://github.com/zed-industries/zed/assets/1486634/0d98ffba-fbab-4511-ae16-e1e742d56f93"> This will help disambiguate modules with the same names from different packages, as well as help out with providing better completions when the package name and top-level module name do not match. Release Notes: - N/A
Marshall Bowers created
05af87e
Rename `DiagnosticsCommand` to `DiagnosticsSlashCommand` (#13795)
This PR renames the `DiagnosticsCommand` to `DiagnosticsSlashCommand` to match the rest of our slash commands. Release Notes: - N/A
Marshall Bowers created
75d2e04
assistant: Add `/docs` slash command (#13794)
This PR adds a new `/docs` slash command to the Assistant. This slash command replaces `/rustdoc`. The `/docs` slash command works with different providers. There is currently a built-in provider for rustdoc, but new providers can be defined within extensions. The Gleam extension contains an example of this. When you first type `/docs` a completion menu will be shown with the list of available providers: https://github.com/zed-industries/zed/assets/1486634/32287000-5855-44d9-a2eb-569596f5abd9 After completing the provider you want to use then you can type the package name and/or item path to search for the relevant docs: https://github.com/zed-industries/zed/assets/1486634/6fc55a63-7fcd-42ea-80ce-08c670bf03fc There are still some rough edges around completions that I would like to get cleaned up in a future PR. Both of these seem to stem from the fact that we're using an intermediate completion in the slash command: 1. Accepting a provider completion will show an error until you press <kbd>Space</kbd> to continue typing. - We need a way of not submitting a slash command when a completion is accepted. 2. We currently need to show the provider name in the documentation item completion list. - Without it, the provider name gets wiped out when accepting a completion, causing the slash command to become invalid. Release Notes: - N/A
Marshall Bowers created
492040d
fix duplicated code
Mikayla Maki created
47aa761
Linux window decorations (#13611)
This PR adds support for full client side decorations on X11 and Wayland TODO: - [x] Adjust GPUI APIs to expose CSD related information - [x] Implement remaining CSD features (Resizing, window border, window shadow) - [x] Integrate with existing background appearance and window transparency - [x] Figure out how to check if the window is tiled on X11 - [x] Implement in Zed - [x] Repeatedly maximizing and unmaximizing can panic - [x] Resizing is strangely slow - [x] X11 resizing and movement doesn't work for this: https://discord.com/channels/869392257814519848/1204679850208657418/1256816908519604305 - [x] The top corner can clip with current styling - [x] Pressing titlebar buttons doesn't work - [x] Not showing maximize / unmaximize buttons - [x] Noisy transparency logs / surface transparency problem https://github.com/zed-industries/zed/pull/13611#issuecomment-2201685030 - [x] Strange offsets when dragging the project panel https://github.com/zed-industries/zed/pull/13611#pullrequestreview-2154606261 - [x] Shadow inset with `_GTK_FRAME_EXTENTS` doesn't respect tiling on X11 (observe by snapping an X11 window in any direction) Release Notes: - N/A --------- Co-authored-by: conrad <conrad@zed.dev> Co-authored-by: Owen Law <81528246+someone13574@users.noreply.github.com> Co-authored-by: apricotbucket28 <71973804+apricotbucket28@users.noreply.github.com> Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Mikayla Maki , conrad , Owen Law , apricotbucket28 , and Conrad Irwin created
98699a6
gleam: Improve indexing of HexDocs (#13787)
This PR improves the indexing of HexDocs content for Gleam packages. We now index each of the modules in the package instead of just the root. Release Notes: - N/A
Marshall Bowers created
f024fcf
Linux builds on stable (#13744)
Release Notes: - First beta version of Linux
Conrad Irwin created
2f05f5b
Make initial settings valid JSON (#13785)
Peter Tripp created
22a9293
docs: Document setting up Claude in the Assistant (#13765)
Release Notes: - Added documentation on how to set up Claude as the assistant. --------- Co-authored-by: Peter Tripp <petertripp@gmail.com> Co-authored-by: Gilles Peiffer <gilles.peiffer.yt@gmail.com> Co-authored-by: Peter Tripp <peter@zed.dev>
Max McKenzie , Peter Tripp , Gilles Peiffer , and Peter Tripp created
cceebee
v0.144.x dev
Peter Tripp created
38fb841
Use regex to properly select Go test runnable (#13750)
This is already done when selecting a subtest; by wrapping the test name
with `^{}$` the runnable will avoid selecting additional tests with the
same prefix.
Without this fix, selecting the runnable for `TestExample` will also run
`TestExample2`.
Release Notes:
- Fixed Golang tasks spawning tests starting with the current function name and not using the exact match.
Connor Finnell created
48763d0
vim: Add vim bindings for outline panel (#13763)
Release Notes: - vim: Add vim bindings for outline panel #13763
Xiaoguang Wang created
089cc85
Use a dedicated test extension in extension tests (#13781)
This PR updates the `extension` crate's tests to use a dedicated test extension for its tests instead of the real Gleam extension. As the Gleam extension continues to evolve, it makes it less suitable to use as a test fixture: 1. For a while now, the test has failed locally due to me having `gleam` on my $PATH, which causes the extension's `get_language_server_command` to go down a separate codepath. 2. With the addition of the `indexed_docs_providers` the test was hanging indefinitely. While these problems are likely solvable, it seems reasonable to have a dedicated extension to use as a test fixture. That way we can do whatever we need to exercise our test criteria. The `test-extension` is a fork of the Gleam extension with some additional functionality removed. Release Notes: - N/A
Marshall Bowers created
995b082
Change `tool_calls` to be an Option in response (#13778)
Here is an image of my now getting assistance responses!  I ended up adding a function to handle the use case of not serializing the tool_calls response if it is either null or empty to keep the functionality of the existing implementation (not deserializing if vec is empty). I'm sorta a noob, so happy to make changes if this isn't done correctly, although it does work and it does pass tests! Thanks a bunch to [amtoaer](https://github.com/amtoaer) for pointing me in the direction on how to fix it. Release Notes: - Fixed some responses being dropped from OpenAI-compatible providers ([#13741](https://github.com/zed-industries/zed/issues/13741)).
Allison Durham created
64755a7
linux/x11: Custom run loop with `mio` instead of `calloop` (#13646)
This changes the implementation of the X11 client to use `mio`, as a polling mechanism, and a custom run loop instead of `calloop` and its callback-based approach. We're doing this for one big reason: more control over how we handle events. With `calloop` we don't have any control over which events are processed when and how long they're processes for. For example: we could be blasted with 150 input events from X11 and miss a frame while processing them, but instead of then drawing a new frame, calloop could decide to work off the runnables that were generated from application-level code, which would then again cause us to be behind. We kinda worked around some of that in https://github.com/zed-industries/zed/pull/12839 but the problem still persists. So what we're doing here is to use `mio` as a polling-mechanism. `mio` notifies us if there are X11 on the XCB connection socket to be processed. We also use its timeout mechanism to make sure that we don't wait for events when we should render frames. On top of `mio` we now have a custom run loop that allows us to decide how much time to spend on what — input events, rendering windows, XDG events, runnables — and in what order we work things off. This custom run loop is consciously "dumb": we render all windows at the highest frame rate right now, because we want to keep things predictable for now while we test this approach more. We can then always switch to more granular timings. But considering that our loop runs and checks for windows to be redrawn whenever there's an event, this is more an optimization than a requirement. One reason for why we're doing this for X11 but not for Wayland is due to how peculiar X11's event handling is: it's asynchronous and by default X11 generates synthetic events when a key is held down. That can lead to us being flooded with input events if someone keeps a key pressed. So another optimization that's in here is inspired by [GLFW's X11 input handling](https://github.com/glfw/glfw/blob/b35641f4a3c62aa86a0b3c983d163bc0fe36026d/src/x11_window.c#L1321-L1349): based on a heuristic we detect whether a `KeyRelease` event was auto-generated and if so, we drop it. That essentially halves the amount of events we have to process when someone keeps a key pressed. Release Notes: - N/A --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com> Co-authored-by: Conrad <conrad@zed.dev>
Thorsten Ball , Conrad Irwin , and Conrad created
3348c3a
vim: Support for q and @ (#13761)
Fixes: #1504 Release Notes: - vim: Support for macros (`q` and `@`) to record and replay (#1506, #4448)
Conrad Irwin created
dceb082
Rename `ExtensionDocsIndexer` to `ExtensionIndexedDocsProvider` (#13776)
This PR renames `ExtensionDocsIndexer` to `ExtensionIndexedDocsProvider` to better align with the name of the trait it implements. Release Notes: - N/A
Marshall Bowers created
c1e1805
gpui: Prefer integrated GPUs on Intel Mac (#13685)
On Intel, Metal will pick a discrete GPU by default when available, resulting in higher power consumption and heat output. Prefer non‐removable low‐power devices to correct this. On Apple Silicon, there is only ever one GPU, so there is no functional change. I didn’t do intensive benchmarking of this or anything, but Zed still seems responsive and it stops my MacBook Pro acting as a combination space heater–jet engine. Thanks to @denlukia for showing that this is easy to fix; I’ve marked you as a co‐author, I hope that’s okay. Closes: #5124 Release Notes: - Improved power consumption on Intel Macs by preferring integrated GPUs over the discrete GPUs. ([#5124](https://github.com/zed-industries/zed/issues/5124)). Co-authored-by: Denis Lukianenko <denlyk1@gmail.com>
Emily and Denis Lukianenko created