As I mentioned before, there are the following issues with how GPUI
handles scale factors greater than 1.0:
1. The title bar buttons do not function correctly, with minimizing
button performing maximization and maximizing button performing closure.
2. As discussed in #8809, setting a scale factor greater than 1.0 causes
GPUI's drawing content to be pushed off the screen.
This PR introduces `LogicalSize` and `PhysicalSize` to differentiate
between coordinate systems for proper GPUI rendering, and now scale
factors above 1.5 are working correctly.
`Zed` with a scale factor equals 1.5, and change between different scale
factors:
https://github.com/zed-industries/zed/assets/14981363/3348536d-8bd3-41dd-82f6-052723312a5b
Release Notes:
- N/A
张小白
created
2c36652
wayland: fix handling of non-discrete scroll events (#9548)
Click to expand commit body
https://github.com/zed-industries/zed/pull/9103 broke touchpad scrolling
on Wayland
This PR correctly filters the `Axis` to handle all non-discrete scroll
events (see
https://wayland.app/protocols/wayland#wl_pointer:enum:axis_source)
Should fix https://github.com/zed-industries/zed/issues/9525
Release Notes:
- N/A
apricotbucket28
created
8ae5a3b
Allow AI interactions to be proxied through Zed's server so you don't need an API key (#7367)
Click to expand commit body
Co-authored-by: Antonio <antonio@zed.dev>
Resurrected this from some assistant work I did in Spring of 2023.
- [x] Resurrect streaming responses
- [x] Use streaming responses to enable AI via Zed's servers by default
(but preserve API key option for now)
- [x] Simplify protobuf
- [x] Proxy to OpenAI on zed.dev
- [x] Proxy to Gemini on zed.dev
- [x] Improve UX for switching between openAI and google models
- We current disallow cycling when setting a custom model, but we need a
better solution to keep OpenAI models available while testing the google
ones
- [x] Show remaining tokens correctly for Google models
- [x] Remove semantic index
- [x] Delete `ai` crate
- [x] Cloud front so we can ban abuse
- [x] Rate-limiting
- [x] Fix panic when using inline assistant
- [x] Double check the upgraded `AssistantSettings` are
backwards-compatible
- [x] Add hosted LLM interaction behind a `language-models` feature
flag.
Release Notes:
- We are temporarily removing the semantic index in order to redesign it
from scratch.
---------
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Thorsten <thorsten@zed.dev>
Co-authored-by: Max <max@zed.dev>
Nathan Sobo
,
Antonio
,
Antonio Scandurra
,
Thorsten
, and
Max
created
905a240
Add GitHub Action for publishing the extension CLI (#9542)
Click to expand commit body
This PR adds a GitHub Action for publishing the extension CLI.
When the `extension-cli` tag is pushed, this Action will run, build the
`zed-extension` binary, and upload it to DigitalOcean for consumption.
This will allow us to consume the pre-built binary in the CI for the
extensions repo.
Release Notes:
- N/A
---------
Co-authored-by: Max <max@zed.dev>
Marshall Bowers
and
Max
created
2ea333f
Insert hitbox if div contains tooltip (#9545)
Click to expand commit body
Release Notes:
- Fixed a bug that would cause certain tooltips to not show up
(preview-only).
the space key was being reported as key " " which didn't allow it to be
used in keybindings
Release Notes:
- N/A
Ezekiel Warren
created
fd0071f
Add an animation to the LSP checking indicator (#9463)
Click to expand commit body
Spinner go spinny.
Extra thanks to @kvark for helping me with the shaders.
https://github.com/zed-industries/zed/assets/2280405/9d5f4f4e-0d43-44d2-a089-5d69939938e9
Release Notes:
- Added a spinning animation to the LSP checking indicator
---------
Co-authored-by: Dzmitry Malyshau <kvark@fastmail.com>
This builds on #9353 by adding an image viewer to Zed. Closes #5251.
Release Notes:
- Added support for rendering image files
([#5251](https://github.com/zed-industries/zed/issues/5251)).
<img width="1840" alt="image"
src="https://github.com/zed-industries/zed/assets/836375/3bccfa8e-aa5c-421f-9dfa-671caa274c3c">
---------
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Kyle Kelley
and
Mikayla Maki
created
8d515a6
Update binary name for extension CLI (#9541)
Click to expand commit body
This PR updates the binary name used by the extension CLI from
`extension_cli` to `zed-extension`.
Release Notes:
- N/A
Follow-up from #9138
Release Notes:
- Adds suggested extensions for some filetypes
([#7096](https://github.com/zed-industries/zed/issues/7096)).
---------
Co-authored-by: Felix Zeller <felixazeller@gmail.com>
Conrad Irwin
and
Felix Zeller
created
7573f35
Simplify and document parts of linux text system code (#9443)
Click to expand commit body
I mainly focused on improving the `font_id` function, see the
description of e286483262e525c64c29d3747838ea9d2bac7bad for more
details. The rest are some drive-by changes I could not resist to.
When I am right about af4d6c43ce87ff5f16ad39c223e13326550010dd, someone
with a Mac could change it there as well.
This PR is probably best reviewed commit by commit :)
cc @gabydd @h3mosphere
Release Notes:
- N/A
---------
Signed-off-by: Niklas Wimmer <mail@nwimmer.me>
`HANDLE` is wrapped in a RAII struct.
Release Notes:
- N/A
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
白山風露
and
Mikayla Maki
created
868616d
Introduce `extension-cli` binary, for packaging extensions in CI (#9523)
Click to expand commit body
This will be used in the
[extensions](https://github.com/zed-industries/extensions) repository
for packaging the extensions that users submit.
Release Notes:
- N/A
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Max Brunsfeld
and
Marshall Bowers
created
7ef6600
Improve Ruby language to recognize Guardfiles (#9530)
Click to expand commit body
Release Notes:
- Improved Ruby language to recognize Guardfile.
Ben Hamment
created
97fbec9
Clean up the live_kit_client manifest file (#9532)
Click to expand commit body
Removes some redundant dependency defenitions and updates one
dependency.
TL;DR:
- shaves off about 0.5 seconds from most of our debug builds.
- It would've slightly regressed release build due to preventing build pipelining, but as a tradeoff I've bumped up codegen-units for zed.
\# What did you come up with this time Piotr
In our zed repository I've noticed that merely *loading dependencies* in each crate takes non-trivial amount of time (~800ms in case of editor).
That is to say, the moment you \`use editor\`, your build time increases by 800ms - this happens just once in crate though, as it looks like compiler has to load .rlibs of all of the referenced dependencies.
This is visible under rustc's self-profile. Repro steps on twitter: https://twitter.com/PiotrOsiewicz/status/1762845413072101567
\# How does this commit alleviate this?
zed lib + zed bin are on critical path of every build and cumulatively take about 3s to build. This commit bundles all of this up into ~2.2s of bin build time instead.
\# Wait, splitting binary targets is good, no?
Splitting up a binary target into lib + bin is generally considered to be a good practice, as you can then reuse the lib part elsewhere if needed.
It also allows the build to kick off the moment metadata for all of the dependencies is available (thus, you don't need to wait for codegen).
However, we do not really use zed as a lib, so the first benefit is not really a thing for us.
The latter *is* indeed something we lose out on in release mode (in dev codegen phase of leaf-ish crates is insignificant, as we use shared generics - thus we don't spend much time codegening).
That's why I've bumped codegen units for zed crate to 16 in release mode to keep build times in tact.
Piotr Osiewicz
created
79a424f
Add Vue language server auto update (#9474)
Click to expand commit body
For #9401
---------
Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
Hans
and
Joseph T. Lyons
created
192cd5f
Fix file git status refresh on .gitignore update (#9466)
Click to expand commit body
This PR fixes file name coloring in the project panel and tabs when
.gitignore file is updated. It's intended to fix #7831.
There's another, less vivid, problem with git-aware labels coloring.
It's about files that are both ignored and contained in the git index.
I'll file a separate issue for it to keep this fix focused.
Release Notes:
- Fixed file Git status refreshing on .gitignore update (#7831).
This patch puts the prost, prost-build, and prost-types dependencies
together and unifies their version. This improves organization a bit in
addition to improving build time slightly, since a redundant version of
prost is now removed.
The dependencies are _not_ updated to the newest versions, because the
newest versions add a dependency on the `protoc` application, which is
not provided by cargo and thus breaks the building process.
We made a change last week to allow creating files with names. This
means some files have null saved_mtime, which old versions of zed panic
on.
A fix is available in 0.126.3 and above
Release Notes:
- N/A
This PR adjusts scrolling to be a lot faster on Linux and also makes
terminal scrolling work.
For Wayland, it makes scrolling faster by handling the `AxisValue120`
event (which also allows high-resolution scrolling on supported mice)
On X11, changed the 1 line per scroll to 3.
### Different solutions
I tried replicating Chromium's scrolling behaviour, but it was
inconsistent in X11/Wayland and found it too fast on Wayland. Plus, it
also didn't match VSCode, since it seems that they do something
different.
Release Notes:
- Made scrolling faster on Linux
- Made terminal scroll on Linux
Since Windows has a distinction between symlinks for directories and
symlinks for files, the implementation is adapted to this distinction.
Release Notes:
- N/A
白山風露
created
cd9b865
maintain channel subscriptions in RAM (#9512)
Click to expand commit body
This avoids a giant database query on every leave/join event.
Release Notes:
- N/A
Conrad Irwin
created
963618a
Upgrade Tree-sitter to handle high memory usage and memory errors in wasm parsers (#9518)
Click to expand commit body
Fixes #8528
Release Notes:
- Fixed a crash that could occur when editing certain SQL files.
- Fixed a general class of crashes that could occur due to bugs in
grammars added via extensions.
Co-authored-by: Marshall <marshall@zed.dev>
Max Brunsfeld
and
Marshall
created
18fa84b
Fix panic loading language queries (#9506)
Click to expand commit body
Release Notes:
- Fixed a panic when loading a language with queries but no grammar
Typoed in path in #9509 , mea culpa.
Release Notes:
- N/A
Piotr Osiewicz
created
bce6fe4
chore/ci: Fix naming collision in release artifacts. (#9509)
Click to expand commit body
Release Notes:
- N/A
Piotr Osiewicz
created
df94906
Make the cli crate depend on workspace clap (#9507)
Click to expand commit body
This fixes an outstanding TODO.
---------
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Tobias Decking
and
Piotr Osiewicz
created
7c0a0e2
Add keyboard shortcut to suppress prompt while deleting files/dirs (#9452)
Click to expand commit body
Completes #7228.
Adds back Backspace as the main delete key binding and makes Linux
bindings consistent with macOS
Release Notes:
- ⌘-Delete/⌘-Backspace will now suppress deletion confirmation prompts
in project panel
([#7228](https://github.com/zed-industries/zed/issues/7228)).
Mayfield
created
e22d31b
windows: Respect "appears transparent" for title bar (#9454)
Click to expand commit body
now respecting the 'appears transparent' titlebar option which is used
in the storybook crate. created for #9453
# storybook
running
```
cargo run -p storybook components/text
```
| before | after |
| --- | --- |
|

|

|
Release Notes:
- N/A
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Some foreground tasks were being missed causing some unresponsiveness in
Zed. The foreground tasks used to happen but it was changed in #9351
(here:
https://github.com/zed-industries/zed/pull/9351/files#diff-5b5e706f04c15d77efd23989ec5b1b1cf73d36144e2d066a074de165533ecaeaL227)
Release Notes:
- N/A
Ezekiel Warren
created
3d08e20
Fix dispatching global actions from a window (#9502)
Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/9313
Release Notes:
- Fixed a regression that caused global actions to stop working when
invoked from a window (preview-only)
([#9313](https://github.com/zed-industries/zed/issues/9313)).
Co-authored-by: Conrad <conrad@zed.dev>
At the moment, `Picker` always has an editor at the top, that allows the
user to search list elements by text. Sometimes, the UI doesn't need
such an editor. Like in the [tab
switcher](https://github.com/zed-industries/zed/issues/7653) that will
confirm selection on the modifier keys release, so there will be no
searching capabilities.
This PR adds support for a "headless picker" that doesn't display an
editor. It only has an invisible element to hold input focus for
preventing it from jumping back to the workspace.
At the moment, none of the picker implementations is made headless. It's
for the future implementations. But I'd like to make it a separate PR to
keep it focused on this particular feature.
Release Notes:
- N/A
Related Issues:
- Part of #7653
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Andrew Lygin
and
Marshall Bowers
created
ad97c35
Add regex syntax highlighting for JS and TS (#7851)
Click to expand commit body
<img width="544" alt="SCR-20240215-pvzy"
src="https://github.com/zed-industries/zed/assets/67913738/e4d463a6-1795-4728-ac24-6c8e03e7ea5b">
Release Notes:
- Added support for regex syntax highlighting in `JS` and `TS`.
Robin Pfäffle
created
9f96c43
windows: Don't report 'shift' for certain keys (#9479)
Click to expand commit body
allows keybindings for character such as `:`, `?`, etc. (important for
vim mode!)
alternative solution is here: #9478
Release Notes:
- N/A
This is an update to 82 Zed UI and file_icons to improve icon legibility
and align contributed file_icons to the general icon system styling.
From review it appears they're 2px larger in width and height but gpui
render scaling is at play. The original icons were designed at 14x14 to
be viewed at that size, but the ui_font_size now controls this so
they've been updated to the default of 16x16 for optimum fidelity.

Release Notes:
- Updated various UI and file icons for consistency.
Derek Briggs
created
5668cca
docs: Use plain quotes for callouts (#9499)
Click to expand commit body
This PR adjusts our docs to use plain Markdown quotes for callouts.
This Markdown gets rendered in a number of different locations:
- GitHub
- zed.dev
- mdBook
As such, we should use Markdown that is supported by all three.
Release Notes:
- N/A
Just handling clippy warnings
Release Notes:
- N/A
白山風露
created
ee50d22
windows: Add manifest for storybook (#9453)
Click to expand commit body
allows `cargo run -p storybook` to work on Windows
Release Notes:
- N/A
Ezekiel Warren
created
f60774b
chore: Wrap WorkspaceId in newtype (#9492)
Click to expand commit body
Release Notes:
- N/A
Piotr Osiewicz
created
07dbee8
task: Add ZED_PACKAGE task variable in Rust files. (#9491)
Click to expand commit body
This variable is experimental, as I expect it to be superseded by
whatever the extensions can provide (once we get them)
Release Notes:
- Added experimental ZED_PACKAGE task variable which contains name of
the current crate in Rust files.
---------
Co-authored-by: Kirill <kirill@zed.dev>
Piotr Osiewicz
and
Kirill
created
a69eddc
Limit project search to avoid unresponsive app (#9404)
Click to expand commit body
This fixes #[#9135](https://github.com/zed-industries/zed/issues/9135)
by introducing file/results limit to project search.
It does this by changing how project search works in multiple ways.
User-facing changes:
- Number files that are being searched is now limited to 5000
- Number of search results in all files is now limited to 10000
- If a limit is reached, search is stopped and a message is displayed
to the user
Under the hood, we also reworked `Project::search_local`:
- Code has been refactored so that the concurrency-logic is easier to
distinguish from the search logic.
- We now limit the number of concurrent `open_buffer` operations, since
that is being done on the main thread and can lead to beachballs when
finding a lot of results.
Note for reviewer:
@SomeoneToIgnore since you know this code, can you take a look at this?
The changes might look bigger than they are in certain places because I
only extracted code into functions, but the middle part — the sorting of
file paths — has changed in order to avoid too many tasks opening
buffers at the same time and making app unresponsive.
What's also curious is that I think there was a bug in that we searched
ignored entries _twice_: once in `search_snapshots` and then later in
the dedicated `search_ignored_entry` function. I changed the `entries()`
call in `search_snapshots` so that it's always `false`, but that caused
tests to fail (see `test_search_in_gitignored_dirs`). @bennetbo and I
think that there's some state in the Project that made the tests pass
before, because the last of the 3 assertions in that test only passes
when the other two queries run. So we changed the test to be more
stateless and included the possible fix in `search_snapshots`.
Release Notes:
- Fixed project-wide search leading to unresponsive application when
searching in ignored files, by limiting the number of files that are
searched (to 5000) and the number of overall search results to 10000.
Additional performance improvements have also been made in order to
offload more work onto a background thread.
([#9135](https://github.com/zed-industries/zed/issues/9135)).
---------
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
Co-authored-by: Bennet <bennetbo@gmx.de>
Thorsten Ball
,
Antonio Scandurra
, and
Bennet
created
52a9bc3
Automatically create a hitbox for focusable elements (#9485)
Click to expand commit body
Closes #9462
This fixes the focus story in the storybook.
Release Notes:
- N/A