Commit log

4c29e1f zeta: Improve UX for simultaneous LSP and prediction completions (#24024)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Michael Sloan <michael@zed.dev>
Co-authored-by: Danilo <danilo@zed.dev>
Co-authored-by: Richard <richard@zed.dev>

Agus Zubiaga , Michael Sloan , Danilo , and Richard created

b6e680e Support bash autoindenting (#24156)

Click to expand commit body
Creates an indents.scm file for bash and adds regexes for
`{increase,decrease}_indent_pattern` in
`crates/languages/src/bash/config.toml`
so that autoindent works as expected in bash

Note that this PR does not attempt to handle all cases where indenting
might be desired in bash. I am aiming to support ~80% of what people
want while avoiding the more gnarly/edge cases like indented blocks in
case statements and indenting for associative arrays.
This is done with the explicit hope that someone (possibly from the
community) more familiar with and passionate about bash can come through
at a later date and handle those cases

Closes #23628

Release Notes:

- Add basic support for autoindent functionality in bash/shell files

Ben Kunkle created

dfd11c3 docs: Add docs for icon theme extensions (#24155)

Click to expand commit body
This PR adds docs for icon themes.

Release Notes:

- N/A

Marshall Bowers created

28b8045 Fix missing modifier changed events on Linux X11 (#24154)

Click to expand commit body
Release Notes:

- Fixed some modifier changed events not being present on Linux X11.
This affected things like the project search palette, where holding ctrl
would not cause the split options to appear.

Michael Sloan created

13b7be1 themes: Make background colors partly transparent by default (#24151)

Click to expand commit body
Certain themes define the `created` and `deleted` status colors, but not
`created_background` and `deleted_background`. Previously, Zed would use
`created` and `deleted` colors, and apply a hard-coded opacity change,
but *not* use `created_background` and `deleted_background`, but that
behavior was inadvertently changed in
https://github.com/zed-industries/zed/pull/22994.

This PR restores the old behavior as a fallback. If a theme defines a
status color, but not the corresponding background color, we'll use a
75% transparent version of the foreground color as a fallback.

Release Notes:

- Fixed an issue in certain themes where diffs would render with the
wrong red and green colors for deletions and insertions.

Max Brunsfeld created

e2d6d4b docs: Update link to Scheme extension (#24148)

Click to expand commit body
This PR updates the link to the Scheme extension in the docs, as it was
moved to a separate repo in #24078.

Release Notes:

- N/A

Marshall Bowers created

1ec91a8 Clip points when searching for `@` in the Assistant 2 panel (#24147)

Click to expand commit body
Release Notes:

- N/A

Kirill Bulatov created

11e095b Fix editor edited event property field name (#24145)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

45708d2 Project Diff 2 (#23891)

Click to expand commit body
This adds a new version of the project diff editor to go alongside the
new git panel.

The basics seem to be working, but still todo:

* [ ] Fix untracked files
* [ ] Fix deleted files
* [ ] Show commit message editor at top
* [x] Handle empty state
* [x] Fix panic where locator sometimes seeks to wrong excerpt

Release Notes:

- N/A

Conrad Irwin created

27a413a linux: Remove openssl dependency (#24141)

Click to expand commit body
Release Notes:

- linux: Move from using openssl for collaboration to rustls/ring

Conrad Irwin created

a47a7fb Reformat Zed Terms of Use with Prettier (no changes) (#24143)

Click to expand commit body
No-op white-space only change.
Converts two spaces after periods to one space.
Enables using Prettier going forward.

Peter Tripp created

4f63423 Upgrade to rustls v0.23.22 (#24138)

Click to expand commit body
This will help us debug a panic we're seeing in their internals.

In order to make this work, I've temporarily forked async-tls with:
https://github.com/async-rs/async-tls/pull/59/files

Closes #ISSUE

Release Notes:

- N/A

Conrad Irwin created

a8741dc Migrate more events to telemetry::event! macro (#24102)

Click to expand commit body
I believe this takes care of the remaining events running through the
old flow that requires transformation at the collab server level. I
think all events are now going through `telemetry::event!()`.

For anyone curious where the new telemetry names are coming from, you
can check the `for_snowflake` function within
`crates/collab/src/api/events.rs`, to see how collab is currently
transforming the events going through the old flow.

Release Notes:

- N/A

Joseph T. Lyons created

a864168 Enable collaborating editing of the commit message input inside the git panel (#24130)

Click to expand commit body
https://github.com/user-attachments/assets/200b88b8-249a-4841-97cd-fda8365efd00

Now all users in the collab/ssh session can edit the commit input
collaboratively, observing each others' changes live.

A real `.git/COMMIT_EDITMSG` file is opened, which automatically enables
its syntax highlight, but its original context is never used or saved on
disk — this way we avoid stale commit messages from previous commits
that git places there.

A caveat: previous version put some effort into preserving unfinished
commit messages on repo swtiches, but this version would not do that
— instead, it will be blank on startup, and use whatever
`.git/COMMIT_EDITMSG` contents on repo switch

Release Notes:

- N/A

---------

Co-authored-by: Cole Miller <cole@zed.dev>

Kirill Bulatov and Cole Miller created

6b48a6e workspace: Respect minimized state when deserializing workspaces (#24127)

Click to expand commit body
Fixes a regression from #24015 pointed out in #24093

Closes #24093

Release Notes:

- N/A

Piotr Osiewicz created

f45d58f Add support for Go fuzz tests (#24107)

Click to expand commit body
Add support for go fuzz tests.

Closes #23809

Release Notes:

- N/A

---------

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

Christian Borup and Piotr Osiewicz created

8edcaec inline completion: Merge `disabled_globs` setting with default values (#24122)

Click to expand commit body
This ensures that the following files are always ignored:

```
"**/.env*"
"**/*.pem"
"**/*.key"
"**/*.cert"
"**/*.crt"
"**/secrets.yml"
```

Release Notes:

- N/A

Bennet Bo Fenner created

eb820ab inline completion: Respect `disabled_globs` when manually requesting completions (#24121)

Click to expand commit body
When requesting completions manually with `editor: Show inline
completion`, we did not check if completions are actually disabled for
the current file (`inline_completions > disabled_globs`)

Release Notes:

- Fixed an issue where the `inline_completions > disabled_globs` setting
would not be respected when manually requesting a completion (`editor:
Show inline completion`)

Bennet Bo Fenner created

08c834c cli: Instruct in `--help` how to run to see all logs (#24112)

Click to expand commit body
Release Notes:

- N/A

João Marcos created

52aed48 Use `prettier` to fix formatting in `docs/src/languages/lua.md` + fix typo (#24118)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

f14ef40 Conditionally render divider between button groups in the status bar (#24114)

Click to expand commit body
In the left hand status bar, there are two groups of buttons. There was
a border between the two hardcoded on the first button of the second
group, however, if all buttons in the first group are hidden, the border
doesn't need to be rendered.

(Not handled in this PR) A potentially better approach would be to
change StatusBar's definition from `left_items` and `right_items` to
`left_groups` and `right_groups`, and render dividers between each group
of items. That seemed like a bigger refactor than I wanted to handle for
now, but is an option for the future.

If you use these settings on `main`, the border will show, but with
nothing to the left of it.

```json
{
  "collaboration_panel": {
    "button": false
  },
  "outline_panel": {
    "button": false
  },
  "project_panel": {
    "button": false,
  },
}
```

Screenshots:

Before:
<img width="117" alt="Screenshot 2025-02-02 at 6 19 24 PM"
src="https://github.com/user-attachments/assets/b3401b47-6172-4392-9277-31aa1affaf7a"
/>
<img width="134" alt="Screenshot 2025-02-02 at 6 20 12 PM"
src="https://github.com/user-attachments/assets/1e8caee6-1da8-47f6-8499-9a93b6d8fa27"
/>

After:
<img width="125" alt="Screenshot 2025-02-02 at 6 19 58 PM"
src="https://github.com/user-attachments/assets/9b9f421c-660b-41cb-80e0-acb774c66054"
/>
<img width="132" alt="Screenshot 2025-02-02 at 6 20 20 PM"
src="https://github.com/user-attachments/assets/87e0e475-084b-44df-b820-573c68728c1a"
/>

Release Notes:

- Conditionally render divider in status bar

---------

Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>

Kevin Sweet and Danilo Leal created

1d3e9b2 docs: Update completion keybindings and fix typos (#24113)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>

Billy and Danilo Leal created

1301c41 Add direnv `.envrc` to `.gitignore` (#24115)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

1dd2bbe docs: Add lua-language-server formatter example (#24105)

Peter Tripp created

4885ace workspace: Prevent clicks from falling through on some notifications (#24104)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A

Piotr Osiewicz created

691de6b Add `#[track_caller]` to gpui foreground executor spawn methods (#24103)

Click to expand commit body
Use of this location info was added in #21758 to help with diagnosing
remote_server panics on drop of tasks on a different thread.

Release Notes:

- N/A

Michael Sloan created

422d57e docs: Add Lua formatters section (stylua) (#24101)

Peter Tripp created

aa42e20 gpui: Add text alignment (#24090)

Click to expand commit body
Adds a text property for controlling left, center, or right text
alignment.

#8792 should stay open since this doesn't add support for `justify`
(which would require a much bigger change since this can just alter the
origin of each line, but justify requires changing spacing, whereas
justify requires changes to each platform's shaping code).

Release Notes:

- N/A

someone13574 created

4a65315 gpui: Switch from `linkme` to `inventory` for action registration (#24087)

Click to expand commit body
This switches how actions are registered in GPUI from
[dtolnay/linkme](https://github.com/dtolnay/linkme) to
[dtolany/inventory](https://github.com/dtolnay/inventory), fixing the
linking error seen in #15902, which also occurs on nightly toolchains.
I'm not sure if that issue should be closed or not given the other
problems on Chimera though.

This also fixes zed-industries/create-gpui-app#10

Release Notes:

- N/A

someone13574 created

f4f51c1 Remove /workflow command as not existing anymore #2 (#24097)

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

Release Notes:

- N/A

Kirill Bulatov created

f7d2b53 Remove /workflow command as not existing anymore (#24095)

Click to expand commit body
Based on
https://github.com/zed-industries/zed/issues/16913#issuecomment-2629424808
Follow-up of https://github.com/zed-industries/zed/pull/19900

Release Notes:

- N/A

Kirill Bulatov created

2f82374 Switch GitHub Copilot Chat from o1-mini to o3-mini (#24080)

Click to expand commit body
Co-authored-by: SkywardSyntax <87048477+SkywardSyntax@users.noreply.github.com>

Peter Tripp and SkywardSyntax created

af461f8 assistant: Use GPT 4 tokenizer for `o3-mini` (#24068)

Click to expand commit body
Sorry to dump an unsolicited PR for a hot feature! I'm sure someone else
was taking a look at this.

I noticed that token counting was disabled and I was getting error logs
of the form `[2025-01-31T22:59:01-05:00 ERROR assistant_context_editor]
No tokenizer found for model o3-mini` when using the new model. To fix
the issue, this PR registers the `gpt-4` tokenizer for this model.

Release Notes:

- openai: Fixed Assistant token counts for `o3-mini` models

Roshan Padaki created

f6824e3 Move scheme extension to zed-extensions/scheme (#24078)

Click to expand commit body
New home: https://github.com/zed-extensions/scheme

- See also: https://github.com/zed-industries/extensions/pull/1981

Peter Tripp created

5bd7eaa Solve 50+ `cargo doc` warnings (#24071)

Click to expand commit body
Release Notes:

- N/A

João Marcos created

39d45bc Update docs for running collab locally (again) (#24069)

Click to expand commit body
Release Notes:

- N/A

João Marcos created

d0152f9 vim: Add keybindings for resizing docks (#23874)

Click to expand commit body
Closes #23334

This does not follow the exact way that windows are resized in vim.
Normally the command is `ctrl-w >` however this PR uses just `ctrl->`.
This is because I could not find a good way to read in a count like `10
ctrl-w ctrl->`. This is not really a problem since `ctrl->` can be held
down, which, in my opinion, speeds up resizing. I think this is a good
compromise since it improves usability; however, I am concerned that
this is not intuitive. I am looking forward to feedback.

Release Notes:

- Added the following commands 
  - vim::ResizeLeftDock
  - vim::ResizeRightDock
  - vim::ResizeBottomDock
- Added keybinds
  - `ctrl->` for widening left dock
  - `ctrl-<` for narrowing left dock

AidanV created

a3c7dc3 vim: Add textobject `e` for entire file (#24039)

Click to expand commit body
Co-Authored-By: Thomas Heartman <zed@thomasheartman.com>

Release Notes:

- vim: Add `e` for entire file object. `yae` to copy entire file

Co-authored-by: Thomas Heartman <zed@thomasheartman.com>

Conrad Irwin and Thomas Heartman created

66e2028 git_ui: More git panel refinement (#24065)

Click to expand commit body
- Removes flakey keybindings from buttons
- Moves git panel entries to use a standard ListItem
- Show a repo selector in the panel when more than one repo is present
- Remove temporary repo selector from title bar

Release Notes:

- N/A

Nate Butler created

52a3013 editor: Push `em` width calculations down into `EditorSnapshot::gutter_dimensions` (#24062)

Click to expand commit body
This PR removes the `em_width` and `em_advance` parameters to
`EditorSnapshot::gutter_dimensions` in favor of computing the values
inside of it.

In practice all of the callers were passing in the same values, and
there isn't a circumstance where we would want to pass in different
values.

`gutter_dimensions` has also been modified to return
`Option<GutterDimensions>` instead of `GutterDimensions` so that we can
remove some `.unwrap`s when interacting with the text system.

Release Notes:

- N/A

Marshall Bowers created

1787226 Add `language::BufferSnapshot::highlighted_text_for_range` (#24060)

Click to expand commit body
In support of work on

https://github.com/zed-industries/zed/tree/new-ui-for-edit-prediction-with-lsp-completions,
where we want to be able to extract a range of the buffer as
`HighlightedText`.

Release Notes:

- N/A

Michael Sloan created

9a6b9e3 Use different commit author for collab project clients (#24058)

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

* Retrieves user + email for collab project clients and use these when
such users commit

Same as in https://github.com/zed-industries/zed/pull/23329, "is it the
right user name and e-mail" and "how to override these" questions apply.

* If this data is unavailable, forbid committing to the remote client

* Forbid running related actions in git panel, if committing/writing is
not permitted


Release Notes:

- N/A

Kirill Bulatov created

93c7b54 Renames: `HighlightedText`->`HighlightedMatch` + `HighlightedEdits`->`HighlightedText` (#24057)

Click to expand commit body
In support of work on
https://github.com/zed-industries/zed/tree/new-ui-for-edit-prediction-with-lsp-completions,
where we want to be able to extract a range of the buffer as
`HighlightedText`.

Release Notes:

- N/A

Michael Sloan created

4d9659a feature_flags: Add `FeatureFlagAppExt::wait_for_flag_or_timeout` (#24055)

Click to expand commit body
This PR adds a new `wait_for_flag_or_timeout` method to the
`FeatureFlagAppExt` trait.

This encapsulates the somewhat gnarly code for using `wait_for_flag`
with a timeout.

A side benefit of this is that the tasks waiting on the feature flags
run in parallel, so in the case where the feature flags do not resolve
we don't end up having to wait on consecutive timeouts. This should help
a bit with https://github.com/zed-industries/zed/issues/23922.

Release Notes:

- N/A

Marshall Bowers created

3af37dd lmstudio: Support missing quantization in model metadata (#24054)

Click to expand commit body
- Closes https://github.com/zed-industries/zed/issues/23764

Certain models do not include `quantization` parameter from lm studio rest API.

Peter Tripp created

df16ef2 chore: Fix default.json formatting (#24053)

Click to expand commit body
Forgot to run default.json through prettier in #24051. Oops.

Peter Tripp created

1e96663 assistant_context_editor: Don't block `ContextStore` initialization on reloading contexts (#24052)

Click to expand commit body
This PR changes the `ContextStore` constructor to not block on reloading
the contexts before we finish initializing it.

I noticed that the Assistant panel was taking a long time to show up in
the status bar, and upon further investigation uncovered that with a
large number of contexts (I have ~320) it takes a long time to load them
all.

Release Notes:

- N/A

Marshall Bowers created

de3702b Improve inline_completions.disabled_globs in default.json (#24051)

Click to expand commit body
Make sure that inline completions (Copilot, etc) are disabled for more secret globs (matches `private_files`)

Peter Tripp created

d04800c Add OpenAI o3-mini support (#24044)

Click to expand commit body
Release Notes:

- Add support for OpenAI o3-mini

Peter Tripp created

e42b6e6 Do less git metadata rescans on FS events (#24034)

Click to expand commit body
A preparation for collaborative commit message editing.

Before, almost any `.git`-contained file FS update, except
`.git/fsmonitor--daemon/cookies/**` caused git metadata rescan.
This included `index.lock` that was created after any git operation,
e.g. `git status`, which was unnecessary.
Collaborative editing aims to share `.git/COMMIT_EDITMSG` between
multiple users, so there are potentially multiple users editing the file
and causing excessive events.

The change makes worktree to ignore .git/COMMIT_EDITMSG`,
`.git/index.lock` and `.git/fsmonitor--daemon/**` paths and adjusts the
logic to be more extensible: there's much more files Zed can ignore and
still have its git metadata up to date.

Release Notes:

- N/A

Kirill Bulatov created