Commit log

a95c05b v0.122.x preview

Joseph T. Lyons created

83cffdd Use collections::{HashMap, HashSet} instead of its std:: counterpart (#7502)

Kirill Bulatov created

c322179 Initialize the `SystemAppearance` using the app's global window appearance (#7508)

Click to expand commit body
This PR changes our approach to initializing the `SystemAppearance` so
that we can do it earlier in the startup process.

Previously we were using the appearance from the window, meaning that we
couldn't initialize the value until we first opened the window.

Now we read the `window_appearance` from the `AppContext`. On macOS this
is backed by the
[`effectiveAppearance`](https://developer.apple.com/documentation/appkit/nsapplication/2967171-effectiveappearance)
on the `NSApplication`.

We currently still watch for changes to the appearance at the window
level, as the only hook I could find in the documentation is
[`viewDidChangeEffectiveAppearance`](https://developer.apple.com/documentation/appkit/nsview/2977088-viewdidchangeeffectiveappearance),
which is at the `NSView` level.

In my testing this makes it so Zed appropriately chooses the correct
light/dark theme on startup.

Release Notes:

- N/A

Marshall Bowers created

b59e110 Attempt to fix random lag (#7506)

Click to expand commit body
Co-Authored-By: Antonio <antonio@zed.dev>
Co-Authored-By: Thorsten <thorsten@zed.dev>
Co-Authored-By: Mikayla <mikayla@zed.dev>

Release Notes:

- N/A

**or**

- N/A

Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Thorsten <thorsten@zed.dev>
Co-authored-by: Mikayla <mikayla@zed.dev>

Conrad Irwin , Antonio , Thorsten , and Mikayla created

42a5081 Use try_from_bytes for windows build (#7500)

Click to expand commit body
Reduce windows build error.

Release Notes:

- N/A

白山風露 created

c7b0221 theme_importer: Read theme name from VS Code theme (#7489)

Click to expand commit body
apply theme_name(fallback use "")

Release Notes:

- N/A

d1y created

ad3940c text rendering: support strikethroughs (#7363)

Click to expand commit body
<img width="1269" alt="image"
src="https://github.com/zed-industries/zed/assets/18583882/d4c93033-b2ac-4ae0-8e12-457f256ee869">

Release Notes:

- Added support for styling text with strikethrough.

Related: 
- https://github.com/zed-industries/zed/issues/5364
- https://github.com/zed-industries/zed/pull/7345

Kieran Gill created

55129d4 Revert "Use Fx* variants of HashMap and HashSet everywhere in Zed" (#7492)

Click to expand commit body
Reverts zed-industries/zed#7481

This would regress performance because we'd be using the standard
library's hash maps everywhere, so reverting for now.

Antonio Scandurra created

5c8073d Underline text if in dead key state (#7488)

Click to expand commit body
This highlights dead keys. Example: when in Brazilian keyboard layout
and typing `"` it's now underlined.



https://github.com/zed-industries/zed/assets/1185253/a6b65f7b-1007-473d-ab0f-5d658faa191b



Release Notes:

- Fixed dead keys not being underlined.

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

Thorsten Ball and Antonio created

db39b9d Add ability to bind to pane::RevealInProjectPanel (#7487)

Click to expand commit body
Previously it wasn't possible to create a keybinding for this action
because it required an argument.

Now the action takes the active item of the pane and if it's a
multi-buffer the first one.

This also adds a default keybinding for Vim mode: `-` will reveal the
file in the project panel.

Fixes #7485.

Release Notes:

- Added `pane::RevealInProjectPanel` as an action in the command
palette. ([#7485](https://github.com/zed-industries/zed/issues/7485)).

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

Thorsten Ball and Antonio created

2aa8ccd fix: use OPEN_AI_API_URL (#7484)

Click to expand commit body
Release Notes:

- N/A

Todsaporn Banjerdkit created

eb23630 Use Fx* variants of HashMap and HashSet everywhere in Zed (#7481)

Click to expand commit body
Release Notes:

- N/A

Kirill Bulatov created

7939673 Jetbrains keymap - Movement between panes (#7464)

Click to expand commit body
Release Notes:

- Improved Jetbrains keybindings to include cmd+alt+left/right to go
back and forwards between panes rather than the default previous / next
pane

Signed-off-by: James Gee <1285296+geemanjs@users.noreply.github.com>

James Gee created

9fd2212 Go back to an alacritty release (#7474)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

3aa4e0c Fix Vim 'e' Behavior When Boundary Is Last Point on Line (#7424)

Click to expand commit body
This was originally just to fix
https://github.com/zed-industries/zed/issues/4354, which I did by just
returning the previous offset in `find_boundary`.. but `find_boundary`
is used in the "insert mode" / normal editor too, so returning the
previous boundary breaks existing functionality in that case.

I was considering a new `find_boundary` function just for some of the
vim motions like this, but I thought that this is straightforward enough
and future Vim functions might need similar logic too.

Release Notes:

- Fixed https://github.com/zed-industries/zed/issues/4354

Andrew Marek created

90cd3b5 Prevent terminal being a single column wide (#7471)

Click to expand commit body
Fixes: #2750
Fixes: #7457



Release Notes:

- Fixed a hang/panic that could happen rendering a double-width
character in a single-width terminal
([#2750](https://github.com/zed-industries/zed/issues/2750),
[#7457](https://github.com/zed-industries/zed/issues/7457)).

Conrad Irwin created

1264e36 Remove Default impl for ConnectionId (#7452)

Click to expand commit body
We noticed the following message in my logs when trying to debug some
lag when collaborating:

```
2024-02-06T09:42:09-08:00 [ERROR] error handling message. client_id:3, sender_id:Some(PeerId { owner_id: 327, id: 1123430 }), type:GetCompletions, error:no such connection: 0/0
```

That `0/0` looks like a bogus connection id, constructed via a derived
`Default`. We didn't ever find a code path that would *use* a default
`ConnectionId` and lead to this error, but it did seem like an
improvement to not have a `Default` for that type.

Release Notes:

- N/A

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

Max Brunsfeld and Marshall created

4e519e3 Make diagnostics with empty messages take up one line (#7456)

Click to expand commit body
When a supporting diagnostic had an empty message, we were accidentally
giving the corresponding block a height of zero lines.

Release Notes:

- Fixed an issue where an editors' lines were not laid out correctly
when showing certain diagnostics.

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

Max Brunsfeld and Marshall created

6c4b96e Add the ability to reply to a message (#7170)

Click to expand commit body
Feature
- [x] Allow to click on reply to go to the real message
    - [x] In chat
- [x] Show only a part of the message that you reply to
    - [x] In chat
    - [x] In reply preview

TODO’s
- [x] Fix migration
    - [x] timestamp(in filename)
    - [x] remove the reference to the reply_message_id
- [x] Fix markdown cache for reply message
- [x] Fix spacing when first message is a reply to you and you want to
reply to that message.
- [x] Fetch message that you replied to
    - [x] allow fetching messages that are not inside the current view 
- [x] When message is deleted, we should show a text like `message
deleted` or something
    - [x] Show correct GitHub username + icon after `Replied to: `
    - [x] Show correct message(now it's hard-coded)
- [x] Add icon to reply + add the onClick logic
- [x] Show message that you want to reply to
  - [x] Allow to click away the message that you want to reply to
  - [x] Fix hard-coded GitHub user + icon after `Reply tp:`
  - [x] Add tests

<img width="242" alt="Screenshot 2024-02-06 at 20 51 40"
src="https://github.com/zed-industries/zed/assets/62463826/a7a5f3e0-dee3-4d38-95db-258b169e4498">
<img width="240" alt="Screenshot 2024-02-06 at 20 52 02"
src="https://github.com/zed-industries/zed/assets/62463826/3e136de3-4135-4c07-bd43-30089b677c0a">


Release Notes:

- Added the ability to reply to a message.
- Added highlight message when you click on mention notifications or a
reply message.

---------

Co-authored-by: Bennet Bo Fenner <53836821+bennetbo@users.noreply.github.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Remco Smits , Bennet Bo Fenner , and Conrad Irwin created

743f9b3 chore: Move workspace dependencies to workspace.dependencies (#7454)

Click to expand commit body
We should prefer referring to local deps via `.workspace = true` from
now on.

Release Notes:

- N/A

Piotr Osiewicz created

70e7ea3 chore: Fix up warnings from cargo +beta check. (#7453)

Click to expand commit body
With upcoming release of 1.76 I did a check of current +beta (which
seems to already be at 1.77). These would cause CI pipeline failures
once 1.77 is out.

Release Notes:

- N/A

Piotr Osiewicz created

792c832 Improve error handling when copying a permalink fails (#7447)

Click to expand commit body
This PR improves the error handling when the `editor: copy permalink to
line` action fails.

Right now if something goes wrong nothing happens, and we don't write
anything to the logs.

This PR makes it so we display a toast when the operation fails with the
error message, as well as write it to the Zed logs.

Release Notes:

- Improved error behavior for `editor: copy permalink to line` action.

Marshall Bowers created

0b2a9d2 Remove empty message editor placeholder (#7444)

Click to expand commit body
This PR removes the placeholder that we previously displayed for the
chat message editor.

With the changes in #7441 we can no longer hit this codepath.

Release Notes:

- N/A

Marshall Bowers created

960eaf6 Remove unused TerminalView.has_new_content (#7429)

Click to expand commit body
Found this last week with @osiewicz and we realized that it's unused. So
I think it's fine to remove it, but I want to hear whether @mikayla-maki
has some thoughts here.



Release Notes:

- N/A

Thorsten Ball created

068c141 Fix shell environment not loading for Nushell (#7442)

Click to expand commit body
Turns out that Nushell doesn't like `-lic` and `&&`, but works perfectly
fine with `-l -i -c` and `;`, which the other shells do too.

These all work:

    bash -l -i -c 'echo lol; /usr/bin/env -0'
    nu -l -i -c 'echo lol; /usr/bin/env -0'
    zsh -l -i -c 'echo lol; /usr/bin/env -0'
    fish -l -i -c 'echo lol; /usr/bin/env -0'

Release Notes:

- Fixed shell environment not being loaded if Nushell was set as
`$SHELL`.

Thorsten Ball created

33d982b Add Elm file icon (#7440)

Click to expand commit body
Tried to match the existing file icons in Zed as much as possible. This
is how it looks:

|  dark  | light  | 
|---|----|
| <img width="183" alt="Screenshot 2024-02-06 at 15 03 57"
src="https://github.com/zed-industries/zed/assets/43472/bd862753-41bb-4ca6-9a44-16b9b1c9591c">
| <img width="180" alt="Screenshot 2024-02-06 at 15 03 14"
src="https://github.com/zed-industries/zed/assets/43472/9df8c589-64b6-49f2-8e15-b43126579a9f">
|

The main challenge is that the tangram is visually quite heavy and
detailed. The existing icons in Zed are designed in a 14px bounding box,
but are a bit smaller themselves. I guess the extra space is reserved
for hanging elements, it probably doesn't make sense to occupy the whole
area.

Simply scaling down an available SVG of the tangram didn't work well.
The individual shapes were not recognizable because the spacing between
them was too thin. I tried removing the spacing and applying different
opacities for each shape, but that didn't yield enough contrast between
the shapes either.

The second approach was to just use the outlines. It sort of worked, but
looked a bit messy in the places when the outlines are denser than the
tangram shapes:

|  dark  | light  | 
|---|----|
| <img width="192" alt="Screenshot 2024-02-05 at 22 55 46"
src="https://github.com/zed-industries/zed/assets/43472/d0029f49-675d-40ac-96d8-788a29706bad">
| <img width="195" alt="Screenshot 2024-02-05 at 22 56 05"
src="https://github.com/zed-industries/zed/assets/43472/d2de922a-70ec-4bd1-9033-db9a5201e9bd">
|

I then tried to remove the main outline and use the maximum space for
the tangram. That let me increase the spacing between the shapes. I also
rounded them a little bit, to make them look similar to other icons from
Zed. The end result looks clean and the shapes are still recognisable.

Approaches I tried next to an existing icon from Zed:

<img width="711" alt="Screenshot 2024-02-06 at 15 15 33"
src="https://github.com/zed-industries/zed/assets/43472/a3e4b0db-4b98-4072-91e8-fe71cff19adf">


Release Notes:

- Added file type icon for Elm

Andrey Kuzmin created

56f7f18 Hide the chat message editor when there is no active chat (#7441)

Click to expand commit body
This PR makes it so the chat message editor is hidden when not in an
active chat.

Release Notes:

- Changed the chat message editor to be hidden when not in an active
chat.

Marshall Bowers created

b2ce515 Add Prisma file icon (#7207)

Click to expand commit body
Add Prisma icon from https://github.com/file-icons/icons

![CleanShot 2024-02-06 at 13 17
01@2x](https://github.com/zed-industries/zed/assets/5864275/55ce9286-4e15-4125-b7f7-003e2e8d8bd5)


Release Notes:

- Added Prisma icon.

Guillem Arias Fauste created

dad2df3 Add notes about XCode also being on the Apple Developer website (#7431)

Click to expand commit body
Super minor edit about XCode being on the Apple Developer website, which
can be easier to download and install without needing to go through the
App Store.

Release Notes:
- N/A

---------

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>

Josh Taylor and Kirill Bulatov created

1446fb7 Outline a bunch of methods in gpui that leaked SubscriberSet types (#7430)

Click to expand commit body
This takes down LLVM IR size of theme_selector from 316k to ~250k. Note
that I do not care about theme_selector in particular, though it acts as
a benchmark for smaller crates to me ("how much static overhead in
compile time does gpui have").

The title is a bit dramatic, so just to shed some light: by leaking a
type I mean forcing downstream crates to codegen it's methods/know about
it's drop code. Since SubscriberSet is no longer used directly in the
generic (==inlineable) methods, users no longer have to codegen `insert`
and co.

Release Notes:

- N/A

Piotr Osiewicz created

c591681 Fix Terminal focus handlers not being called (#7428)

Click to expand commit body
This fixes #7401 and probably a few other things that seemed odd with
the terminal.

Turns out that `TerminalView` has `focus_in` and `focus_out` callbacks,
but they were never called. The `focus_handle` on which they were set
was not passed in to `TerminalView`.

That meant that the `impl FocusableView for TerminalView` never returned
the focus handle with the right callbacks.

This change here uses the already created focus handle and passes it in,
so that `focus_in` and `focus_out` are now correctly called.

Release Notes:

- Fixed terminal not handling focus-state correctly and, for example,
not restoring cursor blinking state correctly.
([#7401](https://github.com/zed-industries/zed/issues/7401)).

Thorsten Ball created

038d2a8 Respect RUST_LOG when started in terminal (#7425)

Click to expand commit body
Release Notes:

- N/A

Oliver N created

c7c4166 Disable extra frames for ProMotion when screen is not active. (#7410)

Click to expand commit body
This was causing an issue where windows about 1/10 of the way across the
display would hang for a fully second after being deactivated.

Release Notes:

- N/A

Co-authored-by: max <max@zed.dev>
Co-authored-by: nathan <nathan@zed.dev>
Co-authored-by: antonio <antonio@zed.dev>

Mikayla Maki , max , nathan , and antonio created

d04a286 Fix prompting the user to hang up when opening a workspace (#7408)

Click to expand commit body
Before this change if you had joined a call with an empty workspace,
then we'd prompt you to hang up when you tried to open a recent project.



Release Notes:

- Fixed an erroneous prompt to "hang up" when opening a new project from
an empty workspace.

Conrad Irwin created

1a40c9f Add Haskell buffer symbol search (#7331)

Click to expand commit body
This PR is a follow-up from
https://github.com/zed-industries/zed/pull/6786#issuecomment-1912912550
and adds an `outline.scm` file for buffer symbol search support in
Haskell.

Release Notes:

- Added buffer symbol search support for Haskell

Pseudomata created

0c34bd8 fix following bugs (#7406)

Click to expand commit body
- Another broken following test
- Fix following between two windows

Release Notes:

- Fixed following when the leader has multiple Zed windows open

Conrad Irwin created

a80a3b8 Add support for specifying both light and dark themes in `settings.json` (#7404)

Click to expand commit body
This PR adds support for configuring both a light and dark theme in
`settings.json`.

In addition to accepting just a theme name, the `theme` field now also
accepts an object in the following form:

```jsonc
{
  "theme": {
    "mode": "system",
    "light": "One Light",
    "dark": "One Dark"
  }
}
```

Both `light` and `dark` are required, and indicate which theme should be
used when the system is in light mode and dark mode, respectively.

The `mode` field is optional and indicates which theme should be used:
- `"system"` - Use the theme that corresponds to the system's
appearance.
- `"light"` - Use the theme indicated by the `light` field.
- `"dark"` - Use the theme indicated by the `dark` field.

Thank you to @Yesterday17 for taking a first stab at this in #6881!

Release Notes:

- Added support for configuring both a light and dark theme and
switching between them based on system preference.

Marshall Bowers created

b59f925 Upgrade GH actions to reduce CI warnings (#7403)

Click to expand commit body
Deals with one of the warnings GH shows on our actions run:

https://github.com/zed-industries/zed/actions/runs/7790218555
<img width="1383" alt="image"
src="https://github.com/zed-industries/zed/assets/2690773/e523ec7c-bf43-4b0d-8c36-8540aef6fae9">

bufbuild/* actions seem to have no new major versions so there's nothing
new to upgrade to.

Release Notes:

- N/A

Kirill Bulatov created

46464eb terminal: Fix copy to clipboard lag (#7323)

Click to expand commit body
Fixes #7322

Release Notes:

- Fixed terminal's copy to clipboard being non-instant ([7322](https://github.com/zed-industries/zed/issues/7322))

N8th8n8el created

28a62af Clean up visible inlay hints that got removed from the cache (#7399)

Click to expand commit body
Fixes another flack in the inlay hint cache.
Now that test does not fail after 500 iterations and seems to be stable
at last.

Release Notes:

- N/A

Kirill Bulatov created

6863b92 Add Terraform & HCL syntax highlighting (#6882)

Click to expand commit body
Terraform and HCL are almost the same language, but not quite so
proposing them as separate languages within Zed. (Terraform is an
extension of HCL, with a different formatter.)

This is just adding the language definition, parsing and highlighting
functionality, not any LSP or formatting beyond that for either
language.

I've taken a bunch of inspiration from Neovim for having the separate
languages, and also lifted some of their `scm` files (with attribution
comments in this codebase) as the tree-sitter repo doesn't contain them.
(Neovim's code is Apache-2.0 licensed, so should be fine here with
attribution from reading Zed's licenses files.) I've then amended to
make sure the capture groups are named for things Zed understands. I'd
love someone from Zed to confirm that's okay, or if I should clean-room
implement the `scm` files.

Highlighting in Terraform & HCL with a moderate amount of syntax in a
file (Terraform on left, HCL on right.)

<img width="1392" alt="Screenshot 2024-01-31 at 18 07 45"
src="https://github.com/zed-industries/zed/assets/696/1d3c9a08-588e-4b8f-ad92-98ce1e419659">

Release Notes:

- (|Improved) ...
([#5098](https://github.com/zed-industries/zed/issues/5098)).

Caius Durling created

21797ba file_finder: Simplify removal of file name from file path (#7398)

Click to expand commit body
This PR simplifies the removal of the file name from the file path when
computing the file finder matches.

Release Notes:

- N/A

Marshall Bowers created

ce62404 Correctly use the base element in `HighlightedLabel` (#7397)

Click to expand commit body
This PR updates the `HighlightedLabel` to correctly render its base
element, which is the one that receives the styling properties, instead
of rendering a new `LabelLike`.

Release Notes:

- N/A

Marshall Bowers created

8911e1b Make inlay hints test less flacky (#7396)

Click to expand commit body
Suppresses a flacky inlay hints test failures like
https://github.com/zed-industries/zed/actions/runs/7788741514a for now.

Release Notes:

- N/A

Kirill Bulatov created

2ed45d7 File finder UI enhancement (#7364)

Click to expand commit body
File finder looks and feels a little bulky now. It duplicates file names
and consumes too much space for each file.

This PR makes it more compact:
- File name is trimmed from the path, removing duplication
- Path is placed to the right of the file name, improving space usage
- Path is muted and printed in small size to not distract attention from
the main information (file names)

It makes search results easier to look through, consistent with the
editor tabs, and closer in terms of usage to mature editors.

Release Notes:

- File finder UI enhancement

Andrew Lygin created

91303a5 Do not run scheduled CI jobs on forks (#7394)

Click to expand commit body
Runs scheduled CI jobs only on the main repository, not on forks. These
jobs fail on forks and generate unnecessary noise on contributor emails.



Release Notes:

- N/A

Dairon M created

e2e8e52 Beancount syntax highlighting (#7389)

Click to expand commit body
Release Notes:

- Added syntax highlighting for [Beancount](https://beancount.github.io)

Conrad Irwin created

4195f27 Fix hover links in channel buffers (#7393)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

583ce44 Fix cmd+k in terminal and fix sporadic keybind misses (#7388)

Click to expand commit body
This fixes `cmd+k` in the terminal taking 1s to have an effect. It is
now immediate.

It also fixes #7270 by ensuring that we don't set a bad state when
matching keybindings.

It matches keybindings per context and if it finds a match on a lower
context it doesn't keep pending keystrokes. If it finds two matches on
the same context level, requiring more keystrokes, then it waits.



Release Notes:

- Fixed `cmd-k` in terminal taking 1s to have an effect. Also fixed
sporadic non-matching of keybindings if there are overlapping
keybindings.
([#7270](https://github.com/zed-industries/zed/issues/7270)).

---------

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

Thorsten Ball , Conrad , and Conrad Irwin created

47329f4 Add `search.match_background` colors to bundled themes (#7385)

Click to expand commit body
This PR populates the `search.match_background` colors in the bundled
themes, using the values from the Zed1 themes.

Release Notes:

- Added theme-specific `search.match_background` colors to built-in
themes.

Marshall Bowers created