c8b1062
linux/x11: Resize on GTK_EDGE_CONSTRAINTS atom (#13833)
Click to expand commit body
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
Now, it can run on windows.

Release Notes:
- N/A
张小白
created
818e6e5
Introduce Tabs to Assistant Panel (#13783)
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)
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)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
This PR renames the `DiagnosticsCommand` to `DiagnosticsSlashCommand` to
match the rest of our slash commands.
Release Notes:
- N/A
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
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)
Click to expand commit body
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
22a9293
docs: Document setting up Claude in the Assistant (#13765)
Click to expand commit body
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
38fb841
Use regex to properly select Go test runnable (#13750)
Click to expand commit body
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)
Click to expand commit body
Release Notes:
- vim: Add vim bindings for outline panel #13763
Xiaoguang Wang
created
089cc85
Use a dedicated test extension in extension tests (#13781)
Click to expand commit body
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)
Click to expand commit body
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)
Click to expand commit body
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>
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)
Click to expand commit body
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)
Click to expand commit body
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>
- Add the phrase "compact folders" to `auto_fold_dirs` to enhance
searchability.
- Fix `buffer_line_height` copy pasta
Release Notes:
- N/A
Peter Tripp
created
28c5e33
JSON: Fix validation being disabled following #13459 (#13770)
Click to expand commit body
The problem with #13459 was the bump to a newer JSON LS version, which
requires explicitly opting into validation.
Release Notes:
- Fixed JSON validation being disabled by default (Preview only)
Piotr Osiewicz
created
5c7a8f7
Allow extensions to define providers for indexing docs (#13755)
Click to expand commit body
This PR provides extensions with the ability to define providers for
indexing docs.
Release Notes:
- N/A
Continuing from #13597, this PR refactors platform controls to extract a
generic set of platform controls that can be used for any platform that
does not define it's own/we don't use the system ones.
In the future, these controls will likely be used as a fallback on
windows as well when the windows icon font isn't available.
Release Notes:
- Added updated window controls on Linux
Nate Butler
created
eb845ee
Send telemetry events for pnpm usage (#13748)
Click to expand commit body
This PR adds telemetry events for pnpm usage, similar to what we did for
Yarn in #12785.
Seems like useful information to have.
Release Notes:
- N/A
Marshall Bowers
created
8ea2bd4
Organize dependencies in workspace `Cargo.toml` (#13746)
Click to expand commit body
This PR does some organization in the workspace's `Cargo.toml`.
Namely, ensuring the dependency lists of internal and external
dependencies remain separate.
Release Notes:
- N/A
Marshall Bowers
created
7460381
Start work on genericizing `/rustdoc` (#13745)
Click to expand commit body
This PR begins the process of making the backing infrastructure for the
`/rustdoc` command more generic such that it can be applied to
additional documentation providers.
In this PR we:
- Rename the `rustdoc` crate to `indexed_docs` as a more general-purpose
name
- Start moving rustdoc-specific functionality into
`indexed_docs::providers::rustdoc`
- Add an `IndexedDocsRegistry` to hold multiple `IndexedDocsStore`s (one
per provider)
We haven't yet removed the rustdoc-specific bits in the `DocsIndexer`.
That will follow soon.
Release Notes:
- N/A
8dd7c2c
Fix typo in show_whitespaces docs in default setting (#13735)
Click to expand commit body
Release Notes:
- N/A
Andrei N. Onea
created
3bbe574
Introduce a New `assistant: insert into editor` Action (#13467)
Click to expand commit body
This implements the functionality (paired with @as-cii), but we weren't
sure what the clearest name would be for the action. It's essentially
the inverse of "quote selection" - but what's the opposite of quoting
the selection?
One idea:
* Rename "quote selection" to "Insert **into** assistant"
* Name this "Insert **from** assistant"
Release Notes:
- Added action to insert from assistant into editor (default keybinding:
`cmd-<` on macOS, `ctrl-<` on Linux)
---------
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Bennet <bennet@zed.dev>
Richard Feldman
,
Antonio Scandurra
, and
Bennet
created
51ee60b
assistant: Feature flag terminal inline assistant (#13732)
Click to expand commit body
This PR adds a feature flag for the terminal inline assistant because we
want to keep it internal for now.
Release Notes:
- N/A
Bennet Bo Fenner
created
193be27
Fix focusing terminal when running tasks (#13675)
Click to expand commit body
After removing the unnecessary reveal strategy handling:
[focus-task-fix.webm](https://github.com/zed-industries/zed/assets/39293/93afd332-8f22-47f5-914d-5bc040e24029)
When running tasks, the terminal was not focused when the terminal had
to be replaced. This is because the code for revealing the terminal had
been executed twise: once inside `replace_terminal` function and also at
the end of `spawn_task`.
Fixes #13674
Release Notes:
- Fixed focusing the terminal when re-spawning a task
([#13674](https://github.com/zed-industries/zed/issues/13674))
This PR updates the `html_to_markdown` crate with the necessary changes
to publish it to crates.io.
Publishing it makes it available for use within extensions when
implementing functionality for the Assistant.
Release Notes:
- N/A
This PR adds a new `fetch` function to the `zed_extension_api` to allow
fetching a URL through the Wasm host.
Currently we only support GET requests and return the response body as a
string.
Release Notes:
- N/A