Commit log

44ac6ca ci: fix-up upload path in upload-nightly for aarch64 (#9409)

Click to expand commit body
mea culpa

Release Notes:

- N/A

Piotr Osiewicz created

487ae73 Fix sharp corners on images (#9408)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

b38e3f1 gpui: img element object-fit (#9393)

Click to expand commit body
Release Notes:

- Added [object-fit
API](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) to the
`img` element. This allows the user to decide how the image is scaled
within the element bounds.
- Fixes corner radius not working as expected on overflowing elements.

Matthias Grandl created

55f4c8e Encapsulate `CommandPaletteFilter` and `CommandPaletteInterceptor` (#9402)

Click to expand commit body
This PR refactors the `CommandPaletteFilter` and
`CommandPaletteInterceptor` to better encapsulate their internals.

Previously these globals and their fields were publicly accessible,
which meant that there was a lot of reaching in and making
modifications.

These changes should make it easier to add additional consumers of these
hooks (right now they're primarily used by Vim mode).

Release Notes:

- N/A

Marshall Bowers created

d311a4b [WIP] chore: Distribute non-universal binaries on Mac (#9284)

Click to expand commit body
Related: #6837, #8671 
Release Notes:

- Zed now ships as a non-universal binary, reducing binary size by ~50%.

Piotr Osiewicz created

dcdd1ec Small improvements of the task terminal spawn behavior (#9399)

Click to expand commit body
* Add a `reveal: always|never` field in task definitions from tasks.json
, allowing to customize task terminal behavior on spawn
* Ensure reveal: always reveals the terminal even if the old task is
already running


Release Notes:

- Added a `reveal: always|never` (`always` is a default) field in task
definitions from tasks.json , allowing to customize task terminal
behavior on spawn

---------

Co-authored-by: Piotr Osiewicz <piotr@zed.dev>

Kirill Bulatov and Piotr Osiewicz created

276139f Implement updating for node-based language servers (#9361)

Click to expand commit body
Fixes: https://github.com/zed-industries/zed/issues/9234

This doesn't address `vue` as it has a slightly different install code,
but it should be fairly simple to add - I'll add it in in a follow-up.

This PR will allow all (except `vue`) node-based language servers to
update. It is mostly just throwing in a method into the `NodeRuntime`
trait that is used for checking if a package doesn't exist locally, or
is out of date, by checking the version against what's newest, and
installing. If any parsing of the `package.json` data fails along the
way, it assumes something has gone awry on the users system, logs the
error, and then proceeds with trying to install the package, so that
users don't get stuck on version if their package has some bad data.
Outside of adding this method, it just adds that check in all of the
language server's individual `fetch_server_binary` methods.

Release Notes:

- Added updating for node-based language servers
([#9234](https://github.com/zed-industries/zed/issues/9234)).

Joseph T. Lyons created

cb16003 Fill context menu of Zed macOS dock icon with recent projects (#8952)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/8416

Release Notes:

- Added recent projects into Zed's macOS dock icon context menu ([8416](https://github.com/zed-industries/zed/issues/8416))

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>

Daniel Zhu and Kirill Bulatov created

5bf0c8e Revert "windows: better looking titlebar" and follow-up (#9392)

Click to expand commit body
This reverts #9053 and #9375 because they introduced a regression on
`main` that broke the titlebars on macOS:


![image](https://github.com/zed-industries/zed/assets/1185253/d046003b-5c66-4a42-9385-623f5d58c9a4)

Two things are off:

- Left padding is missing
- Titlebar height is less than it was before, which means the
traffic-light buttons are not centered vertically

What @as-cii and I noticed while looking into this: the `cfg!(macos)`
macros that were used don't work like that. You need to check for
`cfg!(target = "macos")` etc. Means that on macOS we never used the
macOS-specific code because the condition was always false.

Overall height, we're not sure about.

Release Notes:

- N/A

Thorsten Ball created

5ae1451 Fix flickering when interacting with the language server logs (#9390)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/9340

The flickering was caused by the pane trying to restore focus on a
`FocusHandle` that wasn't being rendered anymore. This commit uses the
new `WeakFocusHandle` to avoid retaining a reference to focus handles
that don't exist anymore.

Release Notes:

- Fixed a bug that caused flickering when interacting with the language
server logs
([#9340](https://github.com/zed-industries/zed/issues/9340)).

Antonio Scandurra created

b9f7a37 Add option to collapse all folders in root (#9372)

Click to expand commit body
Release Notes:

- Added option to root project folder to collapse all subfolders

Jack T created

badcd3f Remove `Copy` trait for enum Operator (#9378)

Click to expand commit body
In this commit, the Copy trait has been removed from Operator. This
change was necessary due to the value of operator may wish to attach a
motion type, which is not compatible with the Copy trait.

All instances where Operator was previously copied have been updated to
use the clone() or cloned() method instead. This includes function
parameters, variable assignments, and closures.

Hans created

ee26091 Improve TS and JSON syntax highlighting (#9302)

Click to expand commit body
Successor to #7767.

Release Notes:

- Improved syntax highlighting for TS/TSX and JSON.

Robin Pfäffle created

27bcb7f Fix#9253 Duplicate menu item for "Emojis & Symbols" (#9377)

Click to expand commit body
Fix #9253

Hans created

de1db8b Rework/redesign message replies (#9049)

Click to expand commit body
Hello! This PR proposes a redesigned replying system in Zeds chat panel,
inspired by chat applications like [Slack](https://slack.com) and
[Discord](https://discord.com). Feedback and suggestions are welcome! 😄

### TODOs

- [x] Handle replies to removed messages
- [x] Add replied user's profile picture to reply indicator
- [x] Highlight the message that's been selected for replying

--------

### Current Status


https://github.com/zed-industries/zed/assets/146845123/4ed2c2d7-a586-48bd-973c-0d3f033e2c6b

--------

Release Notes:

- Redesigned message replies in the chat panel

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>

Evren Sen and Thorsten Ball created

71aaefc Add `multi_cursor_modifier` setting (#9014)

Click to expand commit body
this PR allows users to use `cmd` instead of `alt` as the
`multi_cursor_modifier` for creating multiple cursors/selections

closes #4339

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Max and Conrad Irwin created

e836a97 vim: Add Multi Replace mode in Vim (#8469)

Click to expand commit body
For #4440, I've only added support for normal, if it's visual mode,
would we like this to delete the current selection row and enter insert
mode?

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Hans and Conrad Irwin created

72d36d0 Foundations for Open All the Things (#9353)

Click to expand commit body
This is the beginning of setting up a flexible way to open items beyond
the text buffer -- think notebooks, images, GeoJSON, etc. The primary
requirement to allow opening an arbitrary file is `try_open` on the
`project::Item` trait. Now we can make new `Item`s for other types with
their own ways to render.

Under the hood, `register_project_item` uses this new opening scheme. It
supports a dynamic array of opener functions, that will handle specific
item types. By default, a `Buffer` should be able to be able to open any
file that another opener did not.

A key detail here is that the order of registration matters. The last
item has primacy. Here's an example:

```rust
workspace::register_project_item::<Editor>(cx);
workspace::register_project_item::<Notebook>(cx);
workspace::register_project_item::<ImageViewer>(cx);
```

When a project item (file) is attempted to be opened, it's first tried
with the `ImageViewer`, followed by the `Notebook`, then the `Editor`.

The tests are set up in a way that should make it _hopefully_ easy to
learn how to write a new opener. First to go after should probably be
image files.

Release Notes:

N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>

Kyle Kelley , Antonio Scandurra , and Mikayla Maki created

f9b9123 chore: cleanup more windows use (#9376)

Ezekiel Warren created

ff8a4a8 Add outlines for CSS (#8706)

Click to expand commit body
Add outlines for .css files

⚠️I also added `workspace = { workspace = true, features =
["test-support"] }` to dev deps of 'languages' crate to make unit tests
work.

![Css
outlines](https://github.com/zed-industries/zed/assets/4057095/0cade407-79e7-4d0f-9b80-3502509e373d)

Ivan Buryak created

8c43e10 whoops (#9375)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

948b382 windows: better looking titlebar (#9053)

Click to expand commit body
~~work in progress. not ready for review. made for visibility only, but
feel free to comment :)~~

TODO:
- [x] add close/min/max buttons (to be rendered with gpui)
- [x] snap layout support
- [x] fix issues with clicking items in titlebar
- [x] cleanup/document

Release Notes:

- Added custom windows titlebar

![](https://media.discordapp.net/attachments/1208481909676576818/1216985375969378324/caption-buttons-working.gif?ex=660260f4&is=65efebf4&hm=53a17af6e2f233eba54302a5adb9efe23900f4d6f6d1d854bec887120789130c&=)

---------

Co-authored-by: Mikayla <mikayla@zed.dev>

Ezekiel Warren and Mikayla created

6bbc5e2 windows: cleanup window crate uses (#9374)

Ezekiel Warren created

a92dccc Enable `clippy::non_canonical_clone_impl` (#9373)

Click to expand commit body
This PR enables the
[`clippy::non_canonical_clone_impl`](https://rust-lang.github.io/rust-clippy/master/index.html#/non_canonical_clone_impl)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

845eb64 Windows: IME support (#9188)

Click to expand commit body
Waiting for #9180 to be merged.

The behavior of IME windows is consistent with VS Code.



https://github.com/zed-industries/zed/assets/14981363/14913219-7345-4fec-9cc5-623d0c60acc9




Release Notes:
- N/A

张小白 created

c2d27c4 Use Windows native API to impl dispatcher (#9280)

Click to expand commit body
Using `Threadpool` and `TimerQueue` which are provided by the native
Windows APIs, to implement the corresponding interfaces, we do not need
to sort tasks ourselves as Windows will handle it in a relatively more
efficient manner, I guess. I am unsure if Zed would welcome this PR, and
suggestions are welcome.

Release Notes:

- N/A

张小白 created

4939d23 Enable `clippy::derive_ord_xor_partial_ord` (#9371)

Click to expand commit body
This PR enables the
[`clippy::derive_ord_xor_partial_ord`](https://rust-lang.github.io/rust-clippy/master/index.html#/derive_ord_xor_partial_ord)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

35c9216 Fix window restoration bugs (#9358)

Click to expand commit body
- [x] fixes https://github.com/zed-industries/zed/issues/9349
- [x] fixes https://github.com/zed-industries/zed/issues/4656
- [x] fixes https://github.com/zed-industries/zed/issues/8345

Release Notes:

- TODO

Mikayla Maki created

14cdafb Enable `clippy::eq_op` (#9369)

Click to expand commit body
This PR enables the
[`clippy::eq_op`](https://rust-lang.github.io/rust-clippy/master/index.html#/eq_op)
rule and fixes the outstanding violations.

Enabling this rule seems to have caught two bugs!

Release Notes:

- N/A

Marshall Bowers created

404adbc Encode rem values derived from pixels using `rems_from_px` (#9367)

Click to expand commit body
This PR adds a new `rems_from_px` helper function that can be used to
compute rem values based on a pixel value.

This is something we do fairly commonly, where we want to express a size
that is a given pixel size at the base rem size (e.g., "14px when the
rem size is 16px").

`rems_from_px` helps make the intent more explicit, as well as prevent
the base rem size from being duplicated everywhere.

Note: Ideally we would want `rems_from_px` to be `const`, but that
depends on https://github.com/rust-lang/rust/issues/57241.

Release Notes:

- N/A

Marshall Bowers created

a78576a Allow `clippy::single_range_in_vec_init` as a permanent rule (#9366)

Click to expand commit body
This PR promotes the allowance of the
[`clippy::single_range_in_vec_init`](https://rust-lang.github.io/rust-clippy/master/index.html#/single_range_in_vec_init)
rule to a permanent one.

This rule complains about a pretty common pattern we use that doesn't
seem to have any adverse effects, so we're going to continue allowing
this rule.

Release Notes:

- N/A

Marshall Bowers created

7f3f296 Enable `clippy::await_holding_lock` (#9362)

Click to expand commit body
This PR enables the
[`clippy::await_holding_lock`](https://rust-lang.github.io/rust-clippy/master/index.html#/await_holding_lock)
rule and fixes the outstanding violations.

Release Notes:

- N/A

Marshall Bowers created

b0ce25b Log numbers as numbers (#9363)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

61225ec Enable `clippy::never_loop` (#9006)

Click to expand commit body
Three changes: two of which are changing `while let` construct to `if
let` as they unconditionally broke and one of which was removing a loop
in the `start_default_prettier` as it unconditionally broke in the
control flow for match installation task: the diff for this is larger
than needed as removing the loop changed a lot of indentation for
`rustfmt`.

Kirpal Grewal created

df27e78 Update Homebrew installation instructions (#9356)

Click to expand commit body
This PR updates the README to include Homebrew installation instructions
for the preview version and adds a link to the Homebrew homepage.

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>

Klaus Hipp and Marshall Bowers created

60044a5 Fix panic by preventing opening local files in a remote project (#9304)

Click to expand commit body
Release Notes:

- Fixed a panic caused by allowing the CLI to re-use workspaces

Co-authored-by: Marshall <marshall@zed.dev>

Conrad Irwin and Marshall created

cbf960e Windows: make `fs` to use workspace `windows` crate (#9350)

Click to expand commit body
Release Notes:

- N/A

张小白 created

a183c33 Prevent long extension descriptions from overflowing (#9348)

Click to expand commit body
This PR fixes an issue where long extension descriptions could take up
more room than intended, pushing the GitHub repository icon off the
screen.

<img width="901" alt="Screenshot 2024-03-14 at 12 54 14 PM"
src="https://github.com/zed-industries/zed/assets/1486634/befce468-f8df-4183-b3cc-9d088dd53b4e">

Fixes #9331.

Release Notes:

- Fixed an issue where long extension descriptions could push the GitHub
repository icon off the screen
([#9331](https://github.com/zed-industries/zed/issues/9331)).

Marshall Bowers created

3610b07 Restore `--all-targets` for clippy (#9346)

Click to expand commit body
This PR restores the `--all-targets` flag when running `cargo clippy`.

Without it, there are areas that Clippy does not check, as evidenced by
the violations that were caught once the flag was re-added.

Release Notes:

- N/A

Marshall Bowers created

5f02ef7 fs: Remove unused import (#9344)

Click to expand commit body
Followup to #9341 as I've noticed a CI failure on bundling step of my
other PR
(https://github.com/zed-industries/zed/actions/runs/8283419386/job/22666698264)
Release Notes:

- N/A

Piotr Osiewicz created

fab5548 Fix project search filtering on projects with multiple worktrees (#9337)

Click to expand commit body
Fixes #9285

Release Notes:

- Fixed a bug that broke search filtering when searching a project with
multiple worktrees
([#9285](https://github.com/zed-industries/zed/issues/9285)).

---------

Co-authored-by: Thorsten <thorsten@zed.dev>

Antonio Scandurra and Thorsten created

7629c16 Always read files to string on a background thread (#9341)

Click to expand commit body
We noticed that when you open a lot of files (i.e. project-wide search
with multi-buffer) that the main thread can become unresponsive, because
while we are async, we still load these files on the main thread.

What this change does is it uses `smol::unblock` to load files on a
different thread.

Release Notes:

- Improved responsiveness when loading files into memory.

Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Kirill <kirill@zed.dev>

Thorsten Ball , Antonio , and Kirill created

c015baa Do not start searching if query is empty (#9333)

Click to expand commit body
This avoids the problem of a search being kicked off involuntarily and
potentially using a large amount of CPU when toggling on the `Search
Ignored Files` option.

What would happen is that someone would turn the option on, we'd kick
off a search, and go through all of the files in, say, `node_modules`.
Even if no query was given.

This avoids that.

Release Notes:

- Fixed an empty search being kicked off involuntarily if no query was
typed in yet but an option was toggled.

Thorsten Ball created

f142568 Allow navigating back to multibuffers (#9334)

Click to expand commit body
Fixes
https://github.com/orgs/zed-industries/projects/14/views/1?pane=issue&itemId=56263346

Fixes a state where Zed multi buffers were not reachable after going to
an excerpt inside it (with alt-enter).
I suspect, we will have to come back to multi buffer history and check
the way it behaves on inner excerpts clicking, but now this change seems
to restore the main thing: multi buffers not being shown in the history
at all.



Release Notes:

- Fixes "go backwards" not considering multibuffers in history

Kirill Bulatov created

b795b0e editor: Do not autoindent on line removals in vim mode. (#9332)

Click to expand commit body
Fixes #8942

Release Notes:

- Fixed overeager auto-indentation on line removals in Vim mode.

Piotr Osiewicz created

51261c5 Fix double-clicking titlebar to zoom (#9323)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/9300

This was a regression caused by not inserting a hitbox when a div only
had click listeners on it.

Release Notes:

- Fixed a regression that disabled double-clicking on the titlebar to
zoom the window.
([#9300](https://github.com/zed-industries/zed/issues/9300))
(preview-only)

Antonio Scandurra created

bffde43 Improve vim undo (#9317)

Click to expand commit body
The important change here is to ensure that undo never lands you in
visual mode; but we also take care to restore the selection the same way
vim does (visual line goes to beginning of line, visual block to the top
left, etc.).

To help make this behaviour feel right we also group any deletions that
started insert mode with the first text inserted.

Fixes: #7521

Release Notes:

- vim: Improved undo. It will now restore you to normal mode in the same
position as vim, and group deletions caused by `c` or `s` with the
concomitant insert.
([#7521](https://github.com/zed-industries/zed/issues/7521)).

Conrad Irwin created

6ae5274 Scrollbar markers enhancements (#9080)

Click to expand commit body
Several improvements in how various markers are displayed in the editor
scrollbar, as described in #9070, if you're ok with the proposal:
- Scrollbar has three columns:
  - 1st is for git markers
  - 2nd is for selections and search resulta highlightings
  - 3rd is for diagnostics
- Height of all markers is scaled, but there's a minimal allowed height
of 2px.
- Right border removed from both the scrollbar and thumb to make more
room for markers.

Release Notes:

- Improved scrollbar markers visualization (#9070).

Andrew Lygin created

b65aa7e Fix accidental leak of text stack between frames (#9297)

Click to expand commit body
Co-Authored-By: Max <max@zed.dev>
Co-Authored-By: Marshall <marshall@zed.dev>

Release Notes:

- Fixed a bug where text styles could leak between frames (preview only)

Co-authored-by: Max <max@zed.dev>
Co-authored-by: Marshall <marshall@zed.dev>

Conrad Irwin , Max , and Marshall created

3274cc9 Windows: impl `WindowsDisplay` (#9287)

Click to expand commit body
Tested on my laptop, and I've noticed that when I move the window,
`WindowsPlatform::displays()` is being continuously called. Is this
intended?

Release Notes:

- N/A

张小白 created