Commit log

db7417f Rework file picker for SSH modal (#19020)

Click to expand commit body
This PR changes the SSH modal design so its more keyboard
navigation-friendly and adds the server nickname feature.

Release Notes:

- N/A

---------

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

Piotr Osiewicz , Danilo , and Danilo Leal created

be7b24f ssh remote: Shutdown SSH & server process correctly on app quit (#19210)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Bennet <bennet@zed.dev>

Thorsten Ball and Bennet created

62de03f tab: Fix copy wrong relative path for tab (#19206)

Click to expand commit body
Closes #19204 

Release Notes:

- Fixed relative paths copied incorrectly from tabs
([#19204](https://github.com/zed-industries/zed/issues/19204))

CharlesChen0823 created

41ba417 gpui: Fix crash caused by ownership leak (#19185)

Click to expand commit body
- Closes #18811

Release Notes:

- N/A

wannacu created

6e2869a Prevent deadlock when create a new meter/price on Stripe (#19196)

Click to expand commit body
This also puts the entire state of `StripeBilling` behind a `RwLock`.
When fetching the existing prices and meters, or when inserting new
ones, we acquire a write lock and hold it until the Stripe request
completes. This prevents two concurrent calls to `get_or_insert_price`
from inserting the same data twice.

Creating a new meter/price is unusual, so in practice we'll acquire a
read lock most of the time.

/cc @rtfeldman @maxdeviant 

Release Notes:

- N/A

Antonio Scandurra created

6986f08 supermaven: Fix crash when editing non-ASCII text (#19153)

Click to expand commit body
Closes #19051
Closes #19182


#### How to reproduce this crash:
1. Open any file and input some ASCII characters.
2. Replace these characters with `你好`.
3. Press `backspace`.
4. Crash.



https://github.com/user-attachments/assets/ea5c5340-29a5-42c8-98c5-6e60770445a4



The issue lies with the `prefix_offset` introduced in #18858. After the
buffer is modified, this value is not always valid and may fall within a
`char boundary`, which results in a crash.



Release Notes:

- Fixed Supermaven crashing on deleting non-ASCII text

张小白 created

3ff52a8 windows: Fix opening wrong path when clicking path in the terminal view (#18726)

Click to expand commit body
Closes #18550

This PR removes the prefix `\\?\`.

https://github.com/user-attachments/assets/f4f4333c-5d87-4f0f-b12c-fb2108703b6a


Release Notes:

- N/A

张小白 created

7d5fe66 remote: Disable ControlPersist for master ssh connection (#19193)

Click to expand commit body
remote: Disable ControlPersist for master ssh connection

`ControlPersist=yes` combined with `ControlMaster=yes` silently forces
`ForkAfterAuthentication=yes` (even when the user has explicitly set it
to `no` - reported upstream in [0]) - and the latter makes the ssh
subprocess disappear, which makes us think that the connection died

(This is only an issue for people who have `ControlPersist=yes` in their
`ssh_config`, and perhaps the answer is "if that option breaks things,
don't use that option?" - but it's an option that makes sense _most_ of
the time, it's just in this edge-case of "creating an ssh connection
with -N and expecting the process to stay in the foreground" where it
_must_ be set to no)

I think the alternative approach is to tell people "if you want to use
persistent connections, have a separate ~/.ssh/config entry for
servername (to ssh into) and servername-no-persist (to zed into)", which
is possible, but ugh. Kind of a messy situation >.<


Tests:

- Before: Connections to my server result in "Failed to connect: ." (The
error message is attempting to show stderr, but stderr is empty)

- After: Connections to my server work reliably


[0] https://bugzilla.mindrot.org/show_bug.cgi?id=3743


Release Notes:

- N/A

Shish created

792f583 Revert "chore: Bump taffy to 0.5.2 (#18729)" (#19189)

Click to expand commit body
This reverts commit a99750fd35ef4f44409f474228285b1842c1b7d3.

@huacnlee found that commit to have a bad impact on perf and triaged it
for us in
https://github.com/zed-industries/zed/pull/18729#issuecomment-2410445980
Closes #ISSUE

Release Notes:

- N/A

Piotr Osiewicz created

6ec00cd ssh remoting: Restore SSH projects when reopening Zed (#19188)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Bennet <bennet@zed.dev>

Thorsten Ball and Bennet created

71a878a remote ssh: Fix asset embedding in cross-compilation (#19180)

Click to expand commit body
This fixes the panic from the settings file not being embedded.


Release Notes:

- N/A

---------

Co-authored-by: Bennet <bennet@zed.dev>

Thorsten Ball and Bennet created

f2337bb Redirect to checkout page when payment is required (#19179)

Click to expand commit body
Previously, we were redirecting to a non-existant page.

Release Notes:

- N/A

Antonio Scandurra created

fcf9e54 project: Fix content not displaying when selecting a folder in Windows (#18946)

Click to expand commit body
- Closes #16998

This PR resolves issues with the /file and /diagnostics commands in the
assistant panel, which previously failed to display the contents of a
directory when searching for a folder instead of using the arrow button.

- Changed the format in `project.rs` (located at
`crates/project/src/project.rs`) to use `std::path::MAIN_SEPARATOR` for
cross-platform compatibility, which resolves errors encountered on
Windows that originally used the format `format!("{}/", ...)`.


Release Notes:

- N/A

Lilith Iris created

7dc0691 Improve macOS build guide (#19172)

Click to expand commit body
- `mold` moved to `sold` long time ago.
  And https://github.com/bluewhalesystems/sold/issues/43...
- And add a step for accepting xcodebuild license

Signed-off-by: Xavier Lau <x@acg.box>

Xavier Lau created

5b207ba vim: Add some "z" keybindings for scrolling (#18928)

Click to expand commit body
Release Notes:

- vim: Added a few "z" keybindings for scrolling

Frank Sheiness created

325f106 Add vim::Search command option for non-regex search (#19177)

Click to expand commit body
Similar to e2647025ac833856961a1234ed2bd0202f9c4746, this adds a `regex`
option to `vim::Search` command to allow disabling regex search.

Release Notes:

- Added `regex` option to `vim::Search` command to allow disabling regex
search by default in the keymap. Example usage:
  ```yaml
  {
    "context": "VimControl && !menu",
    "bindings": {
      "/": ["vim::Search", { "regex": false }],
    }
  }
  ```

Ömer Sinan Ağacan created

ec5d6e9 Make `danger` to output less false-positives (#19151)

Kirill Bulatov created

54683ff docs: Fix typo in environment documentation (#19164)

Click to expand commit body
Update incorrect spelling of Raycast in environment.md

Bolaji Olajide created

cdead57 docs: Formatter arguments, document `{buffer_path}` usage (#19156)

Peter Tripp created

39468de Return back to history-based tabs activation on close (#19150)

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

Alters https://github.com/zed-industries/zed/pull/18168 and moves its
change behind a settings flag, restoring the previous behavior.

Release Notes:

- Fixed tab closing not respecting history. Use `tabs.activate_on_close
= neighbour` settings to activate near tabs instead.

Kirill Bulatov created

6491148 Fail on warnings during CI builds (#19149)

Click to expand commit body
Forbid things like
https://github.com/zed-industries/zed/pull/19144#issuecomment-2408871788

Release Notes:

- N/A

Kirill Bulatov created

0b10fd5 cpp: Better icon support (#19146)

Peter Tripp created

74cc908 ci: Give names to all github actions (#19080)

Shish created

875c0cb Bytes 1.7.2 merge fix (#19145)

Peter Tripp created

aefc559 Improve auto-detection via shebang of TypeScript, JavaScript and Shell Script (#19114)

Peter Tripp created

bebe24e Add remote server cross compilation (#19136)

Click to expand commit body
This will allow us to compile debug builds of the remote-server for a
different architecture than the one we are developing on.

This also adds a CI step for building our remote server with minimal
dependencies.

Release Notes:

- N/A

Mikayla Maki created

f73a076 Update Rust crate bytes to v1.7.2 (#18656)

Click to expand commit body
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [bytes](https://redirect.github.com/tokio-rs/bytes) |
workspace.dependencies | patch | `1.7.1` -> `1.7.2` |

---

### Release Notes

<details>
<summary>tokio-rs/bytes (bytes)</summary>

###
[`v1.7.2`](https://redirect.github.com/tokio-rs/bytes/blob/HEAD/CHANGELOG.md#172-September-17-2024)

[Compare
Source](https://redirect.github.com/tokio-rs/bytes/compare/v1.7.1...v1.7.2)

##### Fixed

- Fix default impl of `Buf::{get_int, get_int_le}`
([#&#8203;732](https://redirect.github.com/tokio-rs/bytes/issues/732))

##### Documented

- Fix double spaces in comments and doc comments
([#&#8203;731](https://redirect.github.com/tokio-rs/bytes/issues/731))

##### Internal changes

- Ensure BytesMut::advance reduces capacity
([#&#8203;728](https://redirect.github.com/tokio-rs/bytes/issues/728))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone
America/New_York, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

Release Notes:

- N/A

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC45Ny4wIiwidXBkYXRlZEluVmVyIjoiMzguMTE1LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

renovate[bot] and renovate[bot] created

b2e844f Fix an issue with using non-reusable body types with redirects (#19134)

Click to expand commit body
Closes #19131
Closes #19039

fixes the broken auto-updater.

I had the bright idea of using streams as the most common unit of data
transfer. Unfortunately, streams are not re-usable. So HTTP redirects
that have a stream body (like our remote server and auto update
downloads), don't redirect, as they can't reuse the stream. This PR
fixes the problem and simplifies the AsyncBody implementation now that
we're not using Isahc.

Release Notes:

- N/A

Mikayla Maki created

9e14fd9 docs: Fix missing parenthesis in the Terminal: Detect Virtual Environments section of configuring-zed.md (#19127)

Click to expand commit body
Release Notes:

- N/A

Lorenzo Cinque created

c85a3cc Switch from OpenSSL to Rustls (#19104)

Click to expand commit body
This PR also includes a downgrade of our async_tungstenite version to
0.24

Release Notes:

- N/A

Mikayla Maki created

22ac178 Restore HTTP client transition, but use reqwest everywhere (#19055)

Click to expand commit body
Release Notes:

- N/A

Mikayla Maki created

c709b66 collab: Don't record billing events if billing is not enabled (#19102)

Click to expand commit body
This PR adjusts the billing logic to not write any records to
`billing_events` if:

- The user is staff, as we don't want to bill staff members
- Billing is disabled (we currently enable billing based on the presence
of the Stripe API key)

Release Notes:

- N/A

Marshall Bowers created

b739cfa docs: Link environment.md (#19101)

Peter Tripp created

0fc3072 Document extension extraction process (#19085)

Click to expand commit body
Release Notes:

- N/A

Peter Tripp created

3cbaa08 Fix script/linux for Linux Mint (#19096)

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

Release Notes:

- N/A

Peter Tripp created

12c9f0f Test some billing events logic (#19094)

Click to expand commit body
Release Notes:

- N/A

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

Richard Feldman and Marshall created

f280b29 collab: Make the `StripeBilling` object long-lived (#19090)

Click to expand commit body
This PR makes the `StripeBilling` object long-lived so that we can make
better use of the cached data on it.

We now hold it on the `AppState` and spawn a background task to
initialize the cache on startup.

Release Notes:

- N/A

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

Marshall Bowers and Richard created

550064f Fix ~ expansion in ssh projects' terminals (#19078)

Click to expand commit body
When setting a remote ssh project path starting with ~, Zed would fail
to cd into such project's directory when opening a new terminal.

Release Notes:

- N/A

---------

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

Kirill Bulatov and Thorsten Ball created

f33b8ab collab: Sort LLM database ID types (#19083)

Click to expand commit body
This PR sorts the order of the LLM database ID type declarations.

Release Notes:

- N/A

Marshall Bowers created

22ea7ce collab: Add usage-based billing for LLM interactions (#19081)

Click to expand commit body
This PR adds usage-based billing for LLM interactions in the Assistant.

Release Notes:

- N/A

---------

Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Richard <richard@zed.dev>
Co-authored-by: Richard Feldman <oss@rtfeldman.com>

Marshall Bowers , Antonio Scandurra , Antonio , Richard , and Richard Feldman created

f1c45d9 collab: Remove dependency on X11 (#19079)

Click to expand commit body
collab: Remove dependency on X11

I'm not sure if this is the best solution (perhaps pulling
`LanguageName` into a separate `language_types` crate would be
better...?) - but it massively reduces build time / dependencies / size
and means that the collab server no longer requires X11 libraries to be
installed.

tl;dr: `telemetry_events` requires the `language` crate, and the
language crate requires a whole ton of extra stuff. Since
telemetry_events only uses `language` for a single type definition
(`LanguageName`, aka `String`), we can cut all of these out by using the
base `String` type (This doesn't seem too terrible, given that all other
telemetry fields are using basic datatypes like String as opposed to
more strongly-typed variants).


FYI the dependency tree for "why does collab need X11 libraries??" looks
like this:

```
collab
 \- telemetry_events
     \- language
         |- gpui
         |- fuzzy
         |   \- gpui
         |- git
         |   \- gpui
         |- lsp
         |   |- gpui
         |   \- release_channel
         |       \- gpui
         |- settings
         |   |- fs
         |   |   \- gpui
         |   \- gpui
         |- task
         |   \- gpui
         \- theme
             \- gpui
```

Release Notes:

- N/A

Shish created

84b61c8 assistant: Add support for displaying billing-related errors (#19082)

Click to expand commit body
This PR adds support to the assistant for display billing-related
errors.

Pulling this out of #19081 to make it easier to cherry-pick.

Release Notes:

- N/A

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

Marshall Bowers , Antonio , and Richard created

5cf0217 terminal: Improve default locale handling (#18967)

Click to expand commit body
terminal: Improve default locale handling

* Use `LANG` instead of `LC_ALL` (`LC_ALL` is the highest priority which
will override any other end-user settings; when that isn't set things
fall back to separate `LC_*` variables; and when those aren't set things
fall back to `LANG`). [0]
* Only set `LANG` for our child if necessary (if it already exists in
the parent, then the child will inherit that, no need for us to do
anything)

[0]
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_02

Tested cases:

- `unset LANG ; cargo run`: locale inside zed's terminal is set to
`en_US.UTF-8`
- `export LANG=en_GB.UTF-8 ; cargo run`: locale inside zed's terminal is
set to `en_GB.UTF-8`

Release Notes:

- Use the system locale in the terminal instead of forcing `en_US.UTF-8`

Shish created

c21f26c ssh remote: Stream stderr from server via proxy to client (#19073)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Bennet <bennet@zed.dev>

Thorsten Ball and Bennet created

d976c5f gleam: Extract to external repository (#19072)

Click to expand commit body
This PR transfers the Gleam extension over to the @gleam-lang
organization:

https://github.com/gleam-lang/zed-gleam

Release Notes:

- N/A

Marshall Bowers created

79ed217 Properly compute depth and path for project panel entries (#19068)

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

This fixes incorrect width estimates and horizontal scrollbar glitches

Release Notes:

- Fixes horizontal scrollbar not scrolling enough for certain paths
([#18939](https://github.com/zed-industries/zed/issues/18939))

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

Kirill Bulatov and Piotr Osiewicz created

0a7468c lsp: Show error message in read only buffer (#19063)

Click to expand commit body
Clicking on

<img width="361" alt="image"
src="https://github.com/user-attachments/assets/b55e2575-b438-4c26-922f-313dc1f41fea">

now opens a read only buffer

<img width="547" alt="image"
src="https://github.com/user-attachments/assets/af82e104-1603-4fe4-9351-635a02cfb4f9">

Previously the buffer would show up as a normal untitled buffer and
would open a prompt when closing the tab.

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

Release Notes:

- N/A

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

Bennet Bo Fenner and Thorsten created

518f8cc fix: Absolutize path to worktree root in `worktree.read_text_file` (#19064)

Click to expand commit body
Closes #19050

Release Notes:

- Fixed `worktree.read_text_file` plugin API working incorrectly
([#19050](https://github.com/zed-industries/zed/issues/19050))

Tim Havlicek created

ccaf326 Check paths for FS existence before parsing them as paths with line numbers (#19057)

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

Release Notes:

- Fixed Zed not being open filenames with special combination of
brackets ([#18268](https://github.com/zed-industries/zed/issues/18268))

Kirill Bulatov created

1691652 ssh: Fix abs paths in file history & repeated go-to-def (#19027)

Click to expand commit body
This fixes two things:

- Go-to-def to absolute paths (i.e. opening stdlib files) multiple times
(opening, dropping, and re-opening worktrees)
- Re-opening abs paths from the file picker history that were added
there by go-to-def


Release Notes:

- N/A

---------

Co-authored-by: Bennet <bennet@zed.dev>

Thorsten Ball and Bennet created