Commit log

1fe16f4 Fix context in command palette from application menu (#14599)

Click to expand commit body
Supercedes #14468

Release Notes:

- linux: Fixed the command palette when opened from the application menu

Conrad Irwin created

448ef53 More ignorable commits (#14596)

Click to expand commit body
- More of https://github.com/zed-industries/zed/pull/13889

Peter Tripp created

f612c40 repl: Don't run empty code submission (#14598)

Click to expand commit body
Closes #14565.

Release Notes:

- N/A

Kyle Kelley created

0c61059 Open URIs from the CLI, support for the `zed://` URI scheme on Linux (#14104)

Click to expand commit body
Allows Zed to open custom `zed://` links (redirects from
https://zed.dev/channels) on Linux used XDG MIME types.

This PR also allows the CLI to be able to open Zed (`zed://`) URIs
directly instead of executing the main executable in
`/usr/libexec/zed-editor`.


Release Notes:

- Linux: Allow `zed.dev/channel` (`zed://`) URIs to open on Linux
- CLI: Ability to open URIs from the command line

---------

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

Cappy Ishihara and Conrad Irwin created

64a796d Fix renaming sometimes not working in vim mode (#14320)

Click to expand commit body
Disable vim key contexts during renaming, to fix renaming being
interfered with vim commands.

Release Notes:

- Fixed renaming sometimes not working in vim mode
[#14292](https://github.com/zed-industries/zed/issues/14292)
[#11882](https://github.com/zed-industries/zed/issues/11882).
- Fixed inline assistant sometimes not working in vim mode #11559

---------

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

Congyu and Conrad Irwin created

76594ae vim: fix escape while waiting (#14595)

Click to expand commit body
Follow up from #14233

Release Notes:

- N/A

Conrad Irwin created

05de1dc Rename Linux desktop icon to match application name (#14437)

Click to expand commit body
Release Notes:

- Updated the Linux manual installation docs to fix windows not matching
with desktop icons
([#14435](https://github.com/zed-industries/zed/issues/14435)).

The automated `curl | bash` installation script already renames the
`zed.desktop` file to match the window, so most users will not be facing
this issue. This is only affecting users who have downloaded and
extracted the files following the manual instructions.

Since the app ID and the desktop file name are not the same, open
windows are not being matched with the desktop icons, therefore showing
a default one. This PR changes the documentation to tell users they
should rename the `.desktop` file to `dev.zed.Zed.desktop`, and
therefore match the automated install script.

Before:

![image](https://github.com/user-attachments/assets/324b91e6-dae1-4902-b59c-b4f124a29820)

After:

![image](https://github.com/user-attachments/assets/169a4e8c-5c84-4400-8f0d-30cf478ca272)

Robert Sturla created

ef53058 collab: Fix exact extension filtering (#14591)

Click to expand commit body
This PR fixes the exact extension filtering introduced in #14588.

As we traversed the extensions we were always updating `exact_match`,
regardless of whether it matched the extension ID from the filter.

Release Notes:

- N/A

Marshall Bowers created

8028e7f Refactor repl context menu (#14587)

Kyle Kelley created

cb6fc11 Rank exact extension ID matches higher in search results (#14588)

Click to expand commit body
Release Notes:

- Improved relevance of extension search results

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

Conrad Irwin and Marshall created

cf8bd4a Remoting public alpha (#14541)

Click to expand commit body
Release Notes:

- remoting: An alpha version of remote development is now available to
everyone. For more information on how to use it, and limitations see
https://zed.dev/docs/remote-development.

Conrad Irwin created

62ab6e1 remoting: Allow Add/Remove remote folder (#14532)

Click to expand commit body
Release Notes:

- remoting (alpha only): Allow add/remove folders to projects

---------

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

Conrad Irwin and Max created

be1387f Fix text appearing twice after Chinese character input (#14558)

Click to expand commit body
Release Notes:

- Fixed the issue where text appears twice in the editor after Chinese
Character input.([linux: Fix IME on
fcitx](https://github.com/zed-industries/zed/pull/14508)).

Before:

![zed2](https://github.com/user-attachments/assets/e387d70b-ca91-49c8-93e4-850f9e3ef227)

After Fixed:

![zed](https://github.com/user-attachments/assets/8307c12f-30a7-4e82-8c65-d0b53bb8cf44)

aohanhongzhi created

09459fa wayland: Fix drag and drop for paths with spaces (#14574)

Click to expand commit body
This wasn't doing any proper parsing before, so `%20` or similar encoded
characters weren't handled correctly.

Release Notes:

- N/A

apricotbucket28 created

400ae9c extensions_ui: Add feature upsell for Go (#14586)

Click to expand commit body
This PR adds a feature upsell for Go when searching for it in the
extensions view.

Release Notes:

- N/A

Marshall Bowers created

f9472ce extensions_ui: Add telemetry for docs click-throughs from feature upsells (#14583)

Click to expand commit body
This PR adds some telemetry when the "View docs" button is clicked on a
feature upsell.

The goal here is to get a sense for how effective these upsells are at
getting users to click through if they can't find what they're looking
for.

Release Notes:

- N/A

Marshall Bowers created

0556edd docs: Add Git page (#14582)

Click to expand commit body
This PR adds a basic Git page to the docs so that we have somewhere to
link to from the Git upsell within Zed.

Release Notes:

- N/A

Marshall Bowers created

09c497f editor: Ensure allocation reuse (#14577)

Click to expand commit body
In #14567 I claimed that the underlying allocation is reused. And it
was. At the time I've submitted a PR I was using `.filter_map(|x| x)`,
which got flagged by clippy as something that could be simplified to
`.flatten()` - that however broke the allocation reuse promise.

Thus, this PR goes back to using `filter_map` and additionally in debug
builds it performs checks for allocation reuse. With .flatten in place,
a bunch of unit test fail on that branch, so the checks do work.



Release Notes:

- N/A

Piotr Osiewicz created

1b85438 docs: Fix casing of "REPL" in sidebar (#14579)

Click to expand commit body
This PR fixes the casing of the REPL link in the sidebar.

Release Notes:

- N/A

Marshall Bowers created

b3d0ac3 Show how to switch out kernels and discover them (#14531)

Click to expand commit body
A few new doc changes for the repl feature.

Release Notes:

- N/A

Kyle Kelley created

a51a9b0 docs: Add AOSC OS Installation (#14575)

Click to expand commit body
Added AOSC OS Installation docs

Release Notes:

- N/A

Mag Mell created

6cf6614 Fix xkbcommon overflow more (#14571)

Click to expand commit body
Release Notes:

- linux: Fixed overflow in xkbcommon-rs

Conrad Irwin created

0bf0152 Fix GoForward shortcut on non-US keyboard layouts (#14570)

Click to expand commit body
- Fixes #14418. Originally broken by #13946

Peter Tripp created

d338e4a editor: Improve performance of edit coalescing (#14567)

Click to expand commit body
# Background
In https://github.com/zed-industries/zed/issues/14408 we received a
repro for "Replace all" being slow, even after the work I did
https://github.com/zed-industries/zed/pull/13654. Admittedly #13654 was
a pretty straightforward change.
Under the profiler it turned out that we're spending *10 seconds* in
`memmove` on main thread. Ugh. Not great. The direct ancestor of the
memmove call was
https://github.com/zed-industries/zed/blob/66f0c390a88f5aa16d21047a8982a5888fa0f816/crates/editor/src/display_map/tab_map.rs#L108-L119

What?

# Accidental O(n^2)
We have a bunch of `consolidate_*_edits` functions which take a list of
Fold/Tab/Inlay/Wrap edits and merge consecutive edits if their ranges
overlap/are next to one another. The loop usually goes as follows:
```
while ix < edits.len() {
    let (prev_edits, next_edits) = edits.split_at_mut(ix);
    let prev_edit = prev_edits.last_mut().unwrap();
    let edit = &next_edits[0];
    if PREV_EDIT_CAN_BE_MERGED_WITH_CURRENT_ONE {
        MERGE_EDITS(prev_edit, edit);
        edits.remove(ix); // !!
    } else {
        ix += 1;
    }
}
```
The problem is the call to `.remove` - it has to shift all of the
consecutive elements in the `edits` vector! Thus, when processing the
edits from the original repro (where consolidation shrinks the edit list
from 210k entries to 30k), we mostly spend time moving entries in memory
around.

Thus, the original repro isn't really an issue with replace_all; it's
just that replace_all is one of the few tools available to the end user
that can apply large # of edits in a single transaction.

# Solution
In this PR I address the issue by rewriting the loop in a way that does
not throw items away via `.remove`. Instead, `Iterator::scan` is used,
which lets us achieve the same logic without having the pitfalls of
`.remove`s.
Crucially, **this code does not allocate a new backing buffer for
edits** (see [this article for
rationale](https://blog.polybdenum.com/2024/01/17/identifying-the-collect-vec-memory-leak-footgun.html));
with `vec.into_iter().scan().filter_map().collect()` we still use the
same underlying buffer as the one that's passed into `consolidate_*`
functions. In development I verified that by checking whether the
pointers to backing storage of a Vec are the same before and after the
consolidation.

# Results

### Before
Nightly 0.145.0
[66f0c390a88f5aa16d21047a8982a5888fa0f816](https://github.com/zed-industries/zed/commit/66f0c390a88f5aa16d21047a8982a5888fa0f816)


https://github.com/user-attachments/assets/8b0ad3bc-86d6-4f8a-850c-ebb86e8b3bfc

(~13s end-to-end)
### After


https://github.com/user-attachments/assets/366835db-1d84-4f95-8c74-b1506a9fabec

(~2s end-to-end)

The remaining lag is (I think) lies in `TextSummary` calculation and not
the consolidation itself. Thus, for the purposes of scoping this PR,
I'll tackle it separately.

Release Notes:

- Significantly improved performance of applying large quantities of
concurrent edits (e.g. when running "Replace all").

Piotr Osiewicz created

751508b linux: Install dependencies when bundling nightly (#14566)

Click to expand commit body
Release Notes:

- N/A

Thorsten Ball created

f54f5df linux: Build Nightly for ARM too (#14562)

Click to expand commit body
Release Notes:

- N/A

Thorsten Ball created

66f0c39 linux: Fix missing licenses in binary causing panics (#14561)

Click to expand commit body
Turns out that the existing CI step for Nightly did create the licenses
and they have been baked into X86 builds ever since, because our
builders are stateful.

On ARM machines, the licenses wouldn't exist in the binary because we
called `script/generate-licenses` too late in `scripts/bundle-linux`,
after the binary had been created.

This removes the duplication and generates the licenses once, before the
binary is created.

Fixes #14302.

Release Notes:

- Fixed "View Dependency Licenses" (or `zed: open licenses`) crashing on
Linux ARM machines.
([#14302](https://github.com/zed-industries/zed/issues/14302)

Thorsten Ball created

fdd233e Change the context menu and Copilot settings icon (#14501)

Click to expand commit body
Felt the link we were using for menu items that open a browser page was
not the best. That one is most typically used for attachments within
scope, as opposed to opening external links. Noticed that via the
"Copilot Settings" menu, which also felt like it could have a bit more
descriptive label. Also reduced the size of the rendered icon in this
component.

---

Release Notes:

- N/A

Danilo Leal created

bf7e474 Properly fix the tab icons

Kirill Bulatov created

2a8cee5 Keep initial tab config without the icons (#14553)

Click to expand commit body
Based on
https://zed-industries.slack.com/archives/C04S5TU0RSN/p1721125498461089

Release Notes:
- N/A

Kirill Bulatov created

ef20afa project_panel: Fixed open in split not working in project panel (#14535)

Click to expand commit body
Release Notes:

- Fixed `cmd-double click` in project panel not opening a split view ([14465](https://github.com/zed-industries/zed/issues/14465))

CharlesChen0823 created

e413823 Headless extensions (#14538)

Click to expand commit body
Release Notes:

- remoting (alpha only): Fix extension installation

Conrad Irwin created

e68d9f4 Switch to muted color for kernel output labels (#14529)

Click to expand commit body
Sets the text for "Executing...", "Queued", etc. to be `Color::Muted`

<img width="442" alt="image"
src="https://github.com/user-attachments/assets/10c27ce2-b804-41a3-a50e-0778b7e6cd09">


Release Notes:

- N/A

Kyle Kelley created

3407256 linux: Tweak file chooser dialogs (#14526)

Click to expand commit body
Mostly some small tweaks to the file chooser dialogs.

Fixes https://github.com/zed-industries/zed/issues/14127 (along with the
`ashpd` update in https://github.com/zed-industries/zed/pull/14401)

Also included a fix
(https://github.com/zed-industries/zed/commit/971d67c994dd595454cc4bc92bdf33d9da30a31a)
for an issue that made multiple file chooser dialogs pop up on Wayland
when doing CTRL + O and quickly pressing the escape key.

Release Notes:

- N/A

apricotbucket28 created

abc5abc open picker (#14524)

Click to expand commit body
Release Notes:

- linux: Added a fallback Open picker for when XDG is not working
- Added a new setting `use_system_path_prompts` (default true) that can
be disabled to use Zed's builtin keyboard-driven prompts.

---------

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

Conrad Irwin and Max created

da33aac extensions_ui: Remove commented-out code (#14525)

Click to expand commit body
This PR removes some commented-out code from the `extensions_ui`.

Release Notes:

- N/A

Marshall Bowers created

1818fef Display file icons in tabs (#14523)

Click to expand commit body
This PR adds support for displaying file icons in tabs.

The `tabs.file_icons` setting controls whether the icons are displayed:

```json
{
  "tabs": {
    "file_icons": false
  }
}
```

This setting defaults to `true`.

<img width="1566" alt="Screenshot 2024-07-15 at 6 17 26 PM"
src="https://github.com/user-attachments/assets/86dfc8c9-764c-453d-95e4-2ec95d6fe715">

<img width="1566" alt="Screenshot 2024-07-15 at 6 24 26 PM"
src="https://github.com/user-attachments/assets/4b4e8489-49d3-41bf-b4cb-59365bdd3e9d">

Release Notes:

- Added file icons to buffer tabs
([#12138](https://github.com/zed-industries/zed/issues/12138)).
- If desired, these icons can be removed using `"tabs": { "file_icons":
false }`.

Marshall Bowers created

2ae1a47 Upsell built-in features on the extensions page (#14516)

Click to expand commit body
This PR extends the extensions page with support for upselling built-in
Zed features when certain keywords are searched for.

This should help inform users about features that Zed has out-of-the-box
when they go looking for them as extensions.

For example, when someone searches "vim":

<img width="1341" alt="Screenshot 2024-07-15 at 4 58 44 PM"
src="https://github.com/user-attachments/assets/b256d07a-559a-43c2-b491-3eca5bff436e">

Here are more examples of what the upsells can look like:

<img width="1341" alt="Screenshot 2024-07-15 at 4 54 39 PM"
src="https://github.com/user-attachments/assets/1f453132-ac14-4884-afc4-7c12db47ad1d">

Release Notes:

- Added banners for built-in Zed features when corresponding keywords
are used in the extension search.

Marshall Bowers created

d7a25c1 Add an experimental, WIP diagnostics grouping panel (#14515)

Click to expand commit body
Provide a current, broken state as an experimental way to browse
diagnostics.
The diagnostics are grouped by lines and reduced into a block that, in
case of multiple diagnostics per line, could be toggled back and forth
to show more diagnostics on the line.
Use `grouped_diagnostics::Deploy` to show the panel.

Issues remaining:
* panic on warnings toggle due to incorrect excerpt manipulation
* badly styled blocks
* no key bindings to navigate between blocks and toggle them
* overall odd usability gains for certain groups of people

Due to all above, the thing is feature-gated and not exposed to regular
people.


Release Notes:

- N/A

Kirill Bulatov created

2c6cb4e Fix Cmd+\ for workspace::ToggleLeftDock for Atom base keymap (#14098)

Click to expand commit body
Release Notes:

- Fixed Left Dock in Atom keymap on Mac/Linux (`cmd-\`, `ctrl-\`) 
 ([#14098](https://github.com/zed-industries/zed/pull/14098), thanks [@audionerd](https://github.com/audionerd)).

---------

Co-authored-by: Peter Tripp <peter@zed.dev>

Eric Skogen and Peter Tripp created

143035b gpui_macros: Extract `border_style_methods` macro (#14514)

Click to expand commit body
This PR extracts a separate `border_style_methods` macro so that it can
be used independently from `style_helpers!`.

Release Notes:

- N/A

Marshall Bowers created

fa3d290 Add REPL dropdown menu to toolbar (#14493)

Click to expand commit body
TODO: 


- [x] Actions run from menu not firing
- [x] Menu differentiates idle and busy for running kernel

Menu States:
- [x] No session && no support known

No session && no kernel installed for languages of known support
- (TODO after) Intro to REPL
- [x] Link to docs

No session but can start one
- [x] Start REPL
- (TODO after) More info -> Docs?

Yes Session

- [x] Info: Kernel name, language
  example: chatlab-3.7-adsf87fsa (Python)
  example: condapy-3.7 (Python)
- [x] Change Kernel -> https://zed.dev/docs/repl#change-kernel
- ---
- [x] Run
- [x] Interrupt
- [x] Clear Outputs
- ---
- [x] Shutdown


(Release notes left empty as the change will be documented in the REPL
release!)

Reserved for a follow on PR:

```
- [ ] Status should update when the menu is open (missing `cx.notify`?)
- [ ] Shutdown all kernels action
- [ ] Restart action
- [ ] [Default kernel changed - restart (this kernel) to apply] // todo!(kyle): need some kind of state thing that says if this has happened
```


Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Co-authored-by: Kyle Kelley <rgbkrk@gmail.com>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

Nate Butler , Marshall Bowers , Kyle Kelley , and Piotr Osiewicz created

1856320 Add mouse handling to gpui input example (#14350)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Jason Lee <huacnlee@gmail.com>

Conrad Irwin and Jason Lee created

b58abb1 linux: Hide Install CLI from welcome (#14506)

Click to expand commit body
Release Notes:

- linux: Remove "Install CLI" from welcome, it is not necessary

Conrad Irwin created

868455f linux: Fix IME on fcitx5 (#14508)

Click to expand commit body
Release Notes:

- linux: Fix IME under fcitx5 (#14192)

Conrad Irwin created

c27c412 linux: re-add open fallback (#14359)

Click to expand commit body
Release Notes:

- linux: Fixed opening urls/directories on systems where the xdg desktop
portal doesn't handle those requests.

Conrad Irwin created

0b0de8c Display hint to add PATH for Fish shell too (#14504)

Click to expand commit body
tested on `fish 3.7.1 (released March 19, 2024)`
___

Release Notes:

- N/A

makeProjectGreatAgain created

f3ddd18 linux: Show warning if file picker portal is missing (#14401)

Click to expand commit body
This PR adds a warning when the file chooser couldn't be opened on Linux

It's quite confusing when trying to open a file and apparently nothing
happens:

fixes https://github.com/zed-industries/zed/issues/11089,
https://github.com/zed-industries/zed/issues/14328,
https://github.com/zed-industries/zed/issues/13753#issuecomment-2225812703,
https://github.com/zed-industries/zed/issues/13766,
https://github.com/zed-industries/zed/issues/14384,
https://github.com/zed-industries/zed/issues/14353,
https://github.com/zed-industries/zed/issues/9209


![image](https://github.com/user-attachments/assets/5acabdaa-7a9d-4225-9480-e371d20387c3)


Release Notes:

- N/A

apricotbucket28 created

5d860e2 Fix selectable popover dismissing on key press (#14368)

Click to expand commit body
Release Notes:

- Fixed dismissal bug included in #12918

Ephram created

e26dbe2 Add linux Zed log location to crash report github issue template (#14373)

Click to expand commit body
Release Notes:

- N/A

Peter Tripp created