Commit log

ce51c26 Add libstdc++-12-dev for linux (#12962)

Click to expand commit body
Release Notes:

- N/A

PS: :wave: Congrats on the release :confetti_ball: and hey from
discussing CRDTs at the [GitPod/DevX conference last
year](https://www.youtube.com/watch?v=wXT73bBr83s)! Just read the [blog
post](https://zed.dev/blog/zed-decoded-linux-when) and thought I'd
finally try zed out (I have a linux laptop). This was the only snag I
ran into :clap:

Philip Schatz created

702fd8f ui: Render disclosures with `IconButtonShape::Square` (#13004)

Click to expand commit body
This PR adjusts the `Disclosure` component to render using
`IconButtonShape::Square`.

This tightens up the hover styles so they aren't quite so massive.

### Before

<img width="116" alt="Screenshot 2024-06-13 at 3 22 43 PM"
src="https://github.com/zed-industries/zed/assets/1486634/dea8f8fb-a041-4aa7-89be-0cd2d7889955">

### After

<img width="113" alt="Screenshot 2024-06-13 at 3 23 02 PM"
src="https://github.com/zed-industries/zed/assets/1486634/7682cce6-4f83-4f3e-b91f-3023849bd314">

Release Notes:

- Tweaked the style of disclosure controls throughout the UI.

Marshall Bowers created

2e758dc X11: Fix black flashes on boot and while resizing (#13002)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

38d9ee3 project panel: Support dropping files from finder (#12880)

Click to expand commit body
Partially addresses #7386 



https://github.com/zed-industries/zed/assets/53836821/fc2e9864-40a8-4ada-ac95-a76a31c44437



Release Notes:

- Added support for dropping files from the finder onto the project
panel

Bennet Bo Fenner created

95c69d0 Fix git watching on linux (#12989)

Click to expand commit body
Release Notes:

- N/A

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

Conrad Irwin and Nathan created

5991025 windows: Implement `window_appearance()` and `should_auto_hide_scrollbars()` (#12527)

Click to expand commit body
Release Notes:

- N/A

张小白 created

da281d6 Fix issues where screen and window sizes contained Pixels, but were declared as DevicePixels (#12991)

Click to expand commit body
On most platforms, things were working correctly, but had the wrong
type. On X11, there were some problems with window and display size
calculations.

Release Notes:

- Fixed issues with window positioning on X11

---------

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

Max Brunsfeld , Conrad Irwin , and Mikayla created

22dc88e windows: Fix scrolling bug (#12431)

Click to expand commit body
Closes #12369 



https://github.com/zed-industries/zed/assets/14981363/14df820e-9be3-4b89-882b-a083ea42d59e



Release Notes:

- N/A

张小白 created

3c03102 Add missing Linux build dependencies (#12972)

Click to expand commit body
I found that builds failed on Arch and OpenSUSE so I added missing
dependencies. I also found that OpenSUSE Leap is currently not able to
install the required dependencies so I added a check to limit the
supported distros to Tumbleweed.

Release Notes:

- N/A

---------

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

DocKDE and Marshall Bowers created

14bf07c worktree: Fix race condition when a root of worktree is .git directory (#12995)

Click to expand commit body
It was possible to unload a root of worktree when it was a .git
directory; due to that, test_fs_events_in_dot_git_worktree was sometimes
stuck in an infinite loop on CI.

The gist of an issue is that when .git dir is a root dir, then modifying
a file within this directory could sometimes unload the .git dir; the
test went into an infinite loop when the first event in an filesystem
stream was not the event for the file creation, but for a dir
modification. In that case we'd unload the root directory and a
subsequent event for file creation would never be registered, leading to
the test being stuck waiting for it to happen.

This commit alleviates it by special-casing worktrees rooted in .git
directories.



Release Notes:

- Fixed a possible hang when opening a worktree in .git directory.

Piotr Osiewicz created

2845597 Disable mic and screenshare buttons on non-macOS platforms (#12994)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

85acc2b Persist index for `/rustdoc` in LMDB (#12988)

Click to expand commit body
This PR updates the `/rustdoc` command with persistence for the
documented rustdoc items.

Now when you run `/rustdoc --index <CRATE_NAME>` it will index the crate
and store the results in LMDB.

The documented items will then be read from the database when searching
using `/rustdoc` and persist across restarts of Zed.

Release Notes:

- N/A

Marshall Bowers created

6c70a80 Update linux keybinds (#12822)

Click to expand commit body
Release Notes:
- Add `ctrl-y` for Redo.
- Reorder bindings for copy/paste Fixes #11912
- Update `ctrl-b` to show hide left dock. This is the default behavior
in VSCode.


![image](https://github.com/zed-industries/zed/assets/22079654/e0cc6c0e-81df-443f-b77c-9a96370b6cb4)

### Or...

Release Notes:

- N/A

Inam Ul Haq created

a35947c Add dependencies for Ubuntu/Debian (#12959)

Click to expand commit body
Release Notes:

- Fixed #12890

Joel Tony created

f8ad5fe Arm builds (#12961)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

e2cfbc5 Fix headless mode (#12960)

Click to expand commit body
This was broken by two things:
1. A merge conflict in the install.sh script leading to bad sh syntax
2. A return removed by accident when we refactored main

Release Notes:

- N/A

Conrad Irwin created

0a13b9e lsp: Provide completion reason in the request (#12893)

Click to expand commit body
This should help LS make a better call about the completions it should
return back to the caller. For example, it speeds up import completions
for typescript.
Before: 


https://github.com/zed-industries/zed/assets/24362066/b38fd565-f9ff-4db7-a87f-c3b31a9fdc96

after: 


https://github.com/zed-industries/zed/assets/24362066/d4fbc9ae-9aab-4543-b9f6-16acf1619576


This should be merged after 06.12 Preview to give it some time on
Nightly.

Release Notes:

- N/A

Piotr Osiewicz created

eb7b5a7 project panel: Improve performance in worktrees with lots of files. (#12980)

Click to expand commit body
When working on a repro for a different issue that involved a worktree
with lots of files (100k to be precise), UI became pretty unresponsive.
I pinned it down to us repeatedly preparing a HashSet of all paths in
the currently-scrolled-to worktree, once per each entry in the range
passed to for_each_visible_range (which is e.g. called during
rendering).

This PR makes that hashing happen just once per worktree. Additionally,
we no longer iterate over (potentially) all entries in a given worktree
when calculating the depth of a given entry.

Note that we could probably be smarter about this still; instead of
recalculating the hashset per each call to for_each_visible_entry, we
could do it whenever we update entries in the project panel. However,
with this PR I wanted to get a quick bang for a small buck; I'm pretty
confident in the change as is, it is relatively straightforward and
messing with worktree updates is more involved.



Release Notes:

- Improvement performance of project panel in large worktrees

Piotr Osiewicz created

7798f64 chore: Bump lsp-types to 0.97.0 (#12928)

Click to expand commit body
This also includes https://github.com/gluon-lang/lsp-types/pull/287,
which should significantly reduce the time it takes for us to
deserialize completion lists.


Release Notes:
- N/A

Piotr Osiewicz created

21764c3 Fix typo error in flatpak script (#12978)

Click to expand commit body
Fix https://github.com/zed-industries/zed/issues/12977

Release Notes:

- N/A

yodatak created

cfbf5dc Add mold package for opensuse, arch, void and gentoo (#12964)

Click to expand commit body
Release Notes:

- N/A

Subodh Upreti created

2f43d52 A set of outline panel fixes (#12965)

Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/12637

* Wrong font size for the outline items (fixes
https://github.com/zed-industries/zed/pull/12637#issuecomment-2164084021)
* Duplicate context menu item (fixes
https://github.com/zed-industries/zed/issues/12957)
* Missing `space` keybinding for item opening (fixes
https://github.com/zed-industries/zed/issues/12956)
* Adds 60px more to the default width (fixes
https://github.com/zed-industries/zed/issues/12955)
* Incorrect scroll for singleton buffers (fixes
https://github.com/zed-industries/zed/issues/12953)

Release Notes:

- N/A

Kirill Bulatov created

e1f4dfc Refine inline transformation UX (#12939)

Click to expand commit body
https://github.com/zed-industries/zed/assets/482957/1790e32e-1f59-4831-8a4c-722cf441e7e9



Release Notes:

- N/A

---------

Co-authored-by: Richard <richard@zed.dev>
Co-authored-by: Nathan <nathan@zed.dev>

Antonio Scandurra , Richard , and Nathan created

9e3c5f3 Docs to help people find their way back (#12958)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

f780504 zed.desktop.in: Don't hardcode executable name due to binary conflicts (#12951)

Click to expand commit body
> * There are a couple of other `zed` binaries that may be present on
linux systems
    ([1](https://openzfs.github.io/openzfs-docs/man/v2.2/8/zed.8.html),
[2](https://zed.brimdata.io/docs/commands/zed)). If you want to rename
our CLI
binary because of these issues, we suggest `zedit`, `zeditor`, or
`zed-cli`.

Due to aformentioned issue don't hardcode the executable name in the
.desktop file so envsubst can change it in accordance with the
distributor's requirement.

Resolves #12290.

Release Notes:

- N/A

Joey Riches created

76b0120 Reveal the selected item when cycling a picker's selection (#12950)

Click to expand commit body
Release Notes:

- Fixed a bug where the selected tab was not always shown when cycling
between tabs with `ctrl-tab`.

Max Brunsfeld created

0ac9af9 assistant: Add MVP for `/rustdoc` using indexed docs (#12952)

Click to expand commit body
This PR adds an MVP of retrieving docs using the `/rustdoc` command from
an indexed set of docs.

To try this out:

1. Build local docs using `cargo doc`
2. Index the docs for the crate you want to search using `/rustdoc
--index <CRATE_NAME>`
    - Note: This may take a while, depending on the size of the crate
3. Search for docs using `/rustdoc my_crate::path::to::item`
    - You should get completions for the available items

Here are some screenshots of it in action:

<img width="640" alt="Screenshot 2024-06-12 at 6 19 20 PM"
src="https://github.com/zed-industries/zed/assets/1486634/6c49bec9-d084-4dcb-a92c-1b4c557ee9ce">

<img width="636" alt="Screenshot 2024-06-12 at 6 52 56 PM"
src="https://github.com/zed-industries/zed/assets/1486634/636a651c-7d02-48dc-b05c-931f33c49f9c">

Release Notes:

- N/A

Marshall Bowers created

ec08694 Use clang+mold on linux (#12944)

Click to expand commit body
Takes a clean build on my machine from 222s to 185s

Release Notes:

- N/A

Conrad Irwin created

8451dba Introduce an outline panel (#12637)

Click to expand commit body
Adds a new panel: `OutlinePanel` which looks very close to project
panel:

<img width="256" alt="Screenshot 2024-06-10 at 23 19 05"
src="https://github.com/zed-industries/zed/assets/2690773/c66e6e78-44ec-4de8-8d60-43238bb09ae9">

has similar settings and keymap (actions work in the `OutlinePanel`
context and are under `outline_panel::` namespace), with two notable
differences:
* no "edit" actions such as cut/copy/paste/delete/etc.
* directory auto folding is enabled by default

Empty view: 
<img width="841" alt="Screenshot 2024-06-10 at 23 19 11"
src="https://github.com/zed-industries/zed/assets/2690773/dc8bf37c-5a70-4fd5-9b57-76271eb7a40c">


When editor gets active, the panel displays all related files in a tree
(similar to what the project panel does) and all related excerpts'
outlines under each file.
Same as in the project panel, directories can be expanded or collapsed,
unfolded or folded; clicking file entries or outlines scrolls the buffer
to the corresponding excerpt; changing editor's selection reveals the
corresponding outline in the panel.

The panel is applicable to any singleton buffer:
<img width="1215" alt="Screenshot 2024-06-10 at 23 19 35"
src="https://github.com/zed-industries/zed/assets/2690773/a087631f-5c2d-4d4d-ae25-30ab9731d528">

<img width="1728" alt="image"
src="https://github.com/zed-industries/zed/assets/2690773/e4f8082c-d12d-4473-8500-e8fd1051285b">

or any multi buffer:

(search multi buffer)

<img width="1728" alt="Screenshot 2024-06-10 at 23 19 41"
src="https://github.com/zed-industries/zed/assets/2690773/60f768a3-6716-4520-9b13-42da8fd15f50">

(diagnostics multi buffer)
<img width="1728" alt="image"
src="https://github.com/zed-industries/zed/assets/2690773/64e285bd-9530-4bf2-8f1f-10ee5596067c">

Release Notes:
- Added an outline panel to show a "map" of the active editor

Kirill Bulatov created

7f56f4e Add libgit2 build dependency to Arch-based distros (#12924)

Click to expand commit body
Release Notes:

- N/A

DocKDE created

6fa347d Move rustdoc-related code to `rustdoc` crate (#12945)

Click to expand commit body
This PR moves the rustdoc-related code out of `html_to_markdown` and
into the `rustdoc` crate.

Release Notes:

- N/A

Marshall Bowers created

c3df9b7 Start on rustdoc crawler (#12942)

Click to expand commit body
This PR adds a first pass at a rustdoc crawler.

We'll be using this to get information about a crate from the rustdoc
artifacts for use in the Assistant.

Release Notes:

- N/A

---------

Co-authored-by: Richard <richard@zed.dev>

Marshall Bowers and Richard created

72dac24 Add missing LICENSE file to `ollama` crate (#12943)

Click to expand commit body
This PR adds a missing LICENSE file to the recently-added `ollama`
crate.

Also added the missing `lints.workspace = true` to the `Cargo.toml`.

Release Notes:

- N/A

Marshall Bowers created

001f17c vim: Implement named registers (#12895)

Click to expand commit body
Release Notes:

- vim: Add support for register selection `"a`-`"z`, `"0`-`"9`, `"-`.
`"_` and `"%`
([#11511](https://github.com/zed-industries/zed/issues/11511))

---------

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

Paul Eguisier and Conrad Irwin created

3c3dad6 v0.141.x dev

Joseph T Lyons created

1b28f93 Make notification windows not have titles on X11 (#12935)

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

Release Notes:

- N/A

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

Conrad Irwin and Max created

2fd00a8 docs: Capitalize Vim in Vim mode documentation (#12934)

Click to expand commit body
Release Notes:

- N/A

Thorsten Ball created

bee3441 Ollama improvements (#12921)

Click to expand commit body
Attempt to load the model early on when the user has switched the model.

This is a follow up to #12902

Release Notes:

- N/A

Kyle Kelley created

113546f Do not encourage additional ignored labels

Click to expand commit body
We recently reduced the set of ignored labels down to a single label: "ignore top-ranking issues." It makes sense that we don't allow for multiple to be registered in this script now.

Joseph T Lyons created

5e9f9b4 Wrap JS/TS runnables in quotes (#12932)

Click to expand commit body
Some of the runnables added in #12118 don't work for tests (or code)
that contain spaces. In other words, the runnable for a test like
```js
it('does the thing', () => ...)
```
would end up w/ something like `npx jest does the thing
/path/to/file.spec.js`, but what we really want is `npx jest
--testNamePattern "does the thing" /path/to/file.spec.js`. A similar
thing was happening for the "node execute selection" runnable: selecting
`let foo = 1` would run `node -e let foo = 1`, not `node -e "let foo =
1"`.

In my (somewhat limited?) experience, it's very common for tests like
these to include spaces, and of course a code selection is almost
certain to contain whitespace.

Not covered: 
- this just blindly wraps quotes around the symbol/code; in the future
it may make sense to try to figure out *what type of quote* to use. (eg
`it('does the "thing"', () => ...)` is a valid test name, but
`--testNamePattern "does the "thing""` would not work. Note the doubled
quotes.)
- I did not wrap the filenames in quotes to escape those for the shell,
nor did I test if that's actually an issue. In my experience, I've not
seen many (any?) test files that contain spaces in the name, but I
suspect that it would be an issue if a containing dir includes spaces.
(eg `npx jest ... /path/to/My Documents/Code/file.spec.js`

/cc @RemcoSmitsDev 

Release Notes:

- Fixed some runnables in Javascript/Typescript

claytonrcarter created

ec95a33 Added TSX test runnables (#12922)

Click to expand commit body
Fix #12884

Release Notes:

- Added runnable tests for TSX files.

---
Runnable tests can be customized via `tsx-test` tag

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

Chung Wei Leong and Piotr Osiewicz created

b823509 linux: Use filesystem based unix socket instead of abstract namespace (#12756)

Click to expand commit body
Release Notes:

- N/A

fixes: unable to launch multiple zed instances even if the support dirs
are different(example: bwrap based sandboxing)

maan2003 created

e16bbe0 Make install.sh sh-compatible (#12899)

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

Release Notes:

- N/A

---------

Co-authored-by: Max <max@zed.dev>
Co-authored-by: Shyim <github@shyim.de>

Conrad Irwin , Max , and Shyim created

ab41edd Fix cursors on some GNOME installations (#12914)

Click to expand commit body
This PR adds support for `org.gnome.desktop.interface`'s `cursor-theme`
setting on Wayland. This should fix cursors not showing up on some GNOME
installs. This PR also adds the wiring to watch the current cursor theme
value.

Thanks to @apricotbucket28 for helping debug the issue.

Release Notes:

- N/A

Mikayla Maki created

4cb8d6f Ollama Provider for Assistant (#12902)

Click to expand commit body
Closes #4424.

A few design decisions that may need some rethinking or later PRs:

* Other providers have a check for authentication. I use this
opportunity to fetch the models which doubles as a way of finding out if
the Ollama server is running.
* Ollama has _no_ API for getting the max tokens per model
* Ollama has _no_ API for getting the current token count
https://github.com/ollama/ollama/issues/1716
* Ollama does allow setting the `num_ctx` so I've defaulted this to
4096. It can be overridden in settings.
* Ollama models will be "slow" to start inference because they're
loading the model into memory. It's faster after that. There's no UI
affordance to show that the model is being loaded.

Release Notes:

- Added an Ollama Provider for the assistant. If you have
[Ollama](https://ollama.com/) running locally on your machine, you can
enable it in your settings under:

```jsonc
"assistant": {
    "version": "1",
    "provider": {
      "name": "ollama",
      // Recommended setting to allow for model startup
      "low_speed_timeout_in_seconds": 30,
    }
}
```

Chat like usual

<img width="1840" alt="image"
src="https://github.com/zed-industries/zed/assets/836375/4e0af266-4c4f-4d9e-9d74-1a91f76a12fe">

Interact with any model from the [Ollama
Library](https://ollama.com/library)

<img width="587" alt="image"
src="https://github.com/zed-industries/zed/assets/836375/87433ac6-bf87-4a99-89e1-96a93bf8de8a">

Open up the terminal to download new models via `ollama pull`:


![image](https://github.com/zed-industries/zed/assets/836375/af7ec411-76bf-41c7-ba81-64bbaeea98a8)

Kyle Kelley created

127b9ed project_panel: Don't show file icon during rename when file icons are otherwise hidden (#12910)

Click to expand commit body
This PR fixes an instance where the file icon for a project panel entry
would be shown during a rename even when the `project_panel.file_icons`
setting was set to `false`.

Resolves #12905.

Release Notes:

- Fixed an issue where file icons were displayed in the project panel
during a rename even when `project_panel.file_icons` was set to `false`
([#12905](https://github.com/zed-industries/zed/issues/12905)).

Marshall Bowers created

c30f6a1 Fix alt key getting stuck when tabbing on linux (#12912)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

8ccd2a0 Add tag handler for collecting crate items from rustdoc output (#12903)

Click to expand commit body
This PR adds a tag handler for collecting crate items from rustdoc's
HTML output.

This will serve as the foundation for getting more insight into a
crate's contents.

Release Notes:

- N/A

Marshall Bowers created

57b87be Hoist `indexmap` to workspace level (#12901)

Click to expand commit body
This PR hoists `indexmap` up to a workspace dependency.

Release Notes:

- N/A

Marshall Bowers created

80c14c9 Pull app / OS info out of GPUI, add Linux information, make fallible window initialization (#12869)

Click to expand commit body
TODO:
- [x] Finish GPUI changes on other operating systems 

This is a largely internal change to how we report data to our
diagnostics and telemetry. This PR also includes an update to our blade
backend which allows us to report errors in a more useful way when
failing to initialize blade.


Release Notes:

- N/A

---------

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

Mikayla Maki and Conrad Irwin created