Commit graph

888 commits

Author SHA1 Message Date
Kirill Bulatov
976ab33fb4
Reduce release binary sizes (#65168)
Not sure how worth such optimization is WRT the speed, but for such
gains, seems worth opening to discuss?

-----------

Optimize selected workspace crates for size and hide Rust exports in
macOS bundles.

Measurements (release editor executable size):

| Platform | Architecture | Before (bytes) | After (bytes) | Reduction
(bytes / %) |
| --- | --- | ---: | ---: | ---: |
| macOS | ARM64 | 258,218,240 | 172,524,896 | 85,693,344 / 33.19% |
| Linux | x86_64 | 317,435,136 | 295,344,952 | 22,090,184 / 6.96% |
| Windows | x86_64 | 358,987,776 | 256,678,400 | 102,309,376 / 28.50% |


Release Notes:

- Reduced Zed's binary size
2026-10-07 14:56:09 +00:00
Lena
2a4326a256
Duplicate Bot tracking: handle issues deleted mid-run (#65222)
Release Notes:

- N/A
2026-10-06 09:03:03 +00:00
Lena
24aabd3fa6
Community board automations: ignore case for Track (#65224)
This is only really needed for Track, a custom field that has a
manually-maintained mapping to the area labels on PRs, but it's a cheap
enough operation for the rest of them. Follow-up to
https://github.com/zed-industries/zed/pull/64650

Release Notes:

- N/A
2026-10-06 09:03:01 +00:00
Kirill Bulatov
204362325c
Fix incorrect LLD used when bundling (#65183)
Follow-up to https://github.com/zed-industries/zed/pull/65169
Fixes
https://github.com/zed-industries/zed/actions/runs/37313460920/job/111774290269#logs

Release Notes:

- N/A
2026-10-05 15:03:19 +00:00
Kirill Bulatov
d6b7f24b7b
Improve Linux binary size (#65169)
First commit enables safe identical-code folding and strip unneeded
Linux symbols.

Measurements (release editor executable size, made after
https://github.com/zed-industries/zed/pull/65168):

Baseline includes the workspace size optimizations in
kb/binary-size-again-1.

| Platform | Architecture | Before (bytes) | After (bytes) | Reduction
(bytes / %) |
| --- | --- | ---: | ---: | ---: |
| Linux | x86_64 | 295,344,952 | 225,907,112 | 69,437,840 / 23.51% |

Second commit ensures the symbols are always uploaded to Sentry.

Release Notes:

- Improved Linux binary size
2026-10-05 11:51:47 +00:00
renovate[bot]
ba2b48461d
Update dependency urllib3 to v2.8.0 [SECURITY] (#64995)
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [urllib3](https://redirect.github.com/urllib3/urllib3)
([changelog](https://redirect.github.com/urllib3/urllib3/blob/main/CHANGES.rst))
| `2.7.0` → `2.8.0` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/urllib3/2.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/urllib3/2.7.0/2.8.0?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/15138) for more information.

---

### urllib3: HTTPS proxy TLS configuration may be ignored or overridden
[CVE-2026-97687](https://nvd.nist.gov/vuln/detail/CVE-2026-97687) /
[GHSA-8988-9cw3-xx77](https://redirect.github.com/advisories/GHSA-8988-9cw3-xx77)

<details>
<summary>More information</summary>

#### Details
##### Impact

urllib3 supports configuring TLS independently for an HTTPS proxy and
the target server.

`proxy_ssl_context`, `proxy_assert_hostname`, and
`proxy_assert_fingerprint` configure the TLS connection to the proxy.
`ssl_context` and the other target-specific TLS parameters configure the
connection to the target server.

In urllib3 versions 1.26.0 through 2.7.0, these configurations were not
consistently separated. Depending on the proxy mode, urllib3 could:

1. Ignore `proxy_ssl_context` and use the target server's SSL context
for the TLS connection to an HTTPS forwarding proxy.
2. Override the HTTPS proxy's certificate-verification policy with the
target server's certificate-verification policy.
3. Apply target-specific SNI, hostname assertions, certificate
fingerprint assertions, or TLS client credentials to the TLS connection
to an HTTPS forwarding proxy.

In particular, configuring `cert_reqs="CERT_NONE"` for a target server
could overwrite the `verify_mode` of the SSL context configured for the
HTTPS proxy. This modification occurred in place and persisted on the
context object, potentially disabling proxy certificate verification for
later connections that reused the same context.

An attacker able to intercept the connection to an HTTPS proxy may be
able to impersonate the proxy when the effective proxy TLS configuration
disables certificate verification or otherwise accepts the attacker's
certificate. This may occur, for example, when the target server's trust
or identity policy is incorrectly applied to the proxy connection.

When HTTPS forwarding is enabled, an impersonated proxy can observe or
modify forwarded requests and responses, potentially exposing
credentials, authentication tokens, request bodies, response data, and
other sensitive information.

A TLS client certificate intended for the target server may also be
presented to the proxy or to an attacker impersonating it. This can
disclose the client's identity and provide proof of possession of the
corresponding private key. The private key itself is not transmitted
during the TLS handshake.

In CONNECT tunneling mode, impersonating the HTTPS proxy does not by
itself defeat the separate end-to-end TLS connection between the client
and the target server.

##### Affected Usages

Code using urllib3 versions 1.26.0 through 2.7.0 may be affected in any
of the following cases.

##### 1. The target SSL context is used for an HTTPS forwarding proxy

HTTPS requests are forwarded through an HTTPS proxy with
`use_forwarding_for_https=True`, and `proxy_ssl_context` is configured
for the proxy.

urllib3 may ignore `proxy_ssl_context` and use the target server's
`ssl_context` for the proxy TLS handshake. The proxy may therefore be
verified using the target server's trust and certificate policy instead
of the policy explicitly configured for the proxy.

##### 2. The target verification policy overrides the proxy policy

An HTTPS proxy is configured with `proxy_ssl_context`, while the target
server uses a different certificate-verification policy.

urllib3 may apply the target server's `cert_reqs` value to the proxy SSL
context. For example, setting `cert_reqs="CERT_NONE"` for the target
server may also disable certificate verification for the HTTPS proxy,
even when `proxy_ssl_context` was configured to require verification.

This issue can affect the TLS connection to an HTTPS proxy in both
forwarding and CONNECT tunneling configurations.

##### 3. A mutated proxy SSL context is reused

The same SSL context is reused as `proxy_ssl_context` across multiple
connections, and certificate verification is disabled for one target
server.

urllib3 may modify the proxy SSL context's `verify_mode` in place. Later
connections that reuse the same context may therefore connect to the
HTTPS proxy without certificate verification.

##### 4. Target-specific TLS identity or credentials are applied to the
proxy

HTTPS requests are forwarded through an HTTPS proxy with
`use_forwarding_for_https=True`, and target-specific SNI, hostname
assertions, certificate fingerprint assertions, or TLS client
credentials are configured.

urllib3 may apply these target-specific settings to the proxy TLS
handshake. This may cause urllib3 to:

- send SNI intended for the target server to the proxy;
- verify the proxy using a hostname or certificate fingerprint intended
for the target server; or
- present a TLS client certificate intended for the target server to the
proxy.

Code connecting through a plain HTTP proxy does not establish a TLS
connection to the proxy and is not affected by this issue.

##### Remediation

Upgrade to urllib3 2.8.0 or later.

urllib3 2.8.0 independently applies the explicitly configured
`proxy_ssl_context` and proxy-specific certificate assertions to the
HTTPS proxy connection. Target-specific SNI, certificate assertions, and
TLS client certificate parameters are no longer applied to the HTTPS
proxy handshake.

For backward compatibility, when an HTTPS proxy is used with
`use_forwarding_for_https=True` and `proxy_ssl_context` is not provided,
urllib3 2.8.0 continues to use `ssl_context` for the TLS connection to
the proxy. This configuration emits a `FutureWarning`. In urllib3 3.0,
passing `ssl_context` with `use_forwarding_for_https=True` for an HTTPS
proxy will raise an error. Applications should use `proxy_ssl_context`
to configure TLS for an HTTPS forwarding proxy.

The fixes were implemented in commits
b6447295fff7b38fdffc67e0df9712d60cef3cc3 and
07408cec79d1856d81bb42c74a904a24fdb9e465.

#### Severity
- CVSS Score: 7.6 / 10 (High)
- Vector String:
`CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N`

#### References
-
[https://github.com/urllib3/urllib3/security/advisories/GHSA-8988-9cw3-xx77](https://redirect.github.com/urllib3/urllib3/security/advisories/GHSA-8988-9cw3-xx77)
-
[https://nvd.nist.gov/vuln/detail/CVE-2026-97687](https://nvd.nist.gov/vuln/detail/CVE-2026-97687)
-
[https://github.com/urllib3/urllib3/pull/5093](https://redirect.github.com/urllib3/urllib3/pull/5093)
-
[07408cec79)
-
[b6447295ff)
-
[https://github.com/urllib3/urllib3/releases/tag/2.8.0](https://redirect.github.com/urllib3/urllib3/releases/tag/2.8.0)
-
[https://github.com/advisories/GHSA-8988-9cw3-xx77](https://redirect.github.com/advisories/GHSA-8988-9cw3-xx77)

This data is provided by the [GitHub Advisory
Database](https://redirect.github.com/advisories/GHSA-8988-9cw3-xx77)
([CC-BY
4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### urllib3: HTTPResponse.stream()/read_chunked() buffers an unbounded
chunk-size line into memory
[CVE-2026-97689](https://nvd.nist.gov/vuln/detail/CVE-2026-97689) /
[GHSA-vxq7-64xx-v4gw](https://redirect.github.com/advisories/GHSA-vxq7-64xx-v4gw)

<details>
<summary>More information</summary>

#### Details
##### Impact

urllib3's [streaming
API](https://urllib3.readthedocs.io/en/2.7.0/advanced-usage.html#streaming-and-i-o)
is designed for efficiently handling large HTTP responses by reading the
content in chunks, rather than loading the entire response body into
memory at once. When decoding a [chunked-transfer-encoded
response](https://httpwg.org/specs/rfc9112.html#chunked.encoding), this
API reads each chunk's size field by buffering until it sees `\n` or
EOF.

A malicious HTTP server can return `Transfer-Encoding: chunked` and then
send a very long run of bytes without any newline, causing the streaming
client to buffer that entire run before urllib3 can reject the chunk
size as invalid and allocate more memory than intended.

To fix the issue, we'll reject chunk-size fields larger than 65536
bytes, as already done in the non-streaming case, which is currently
handled by the Python standard library. Note that this only applies to
reading the chunk-size field, not the chunk data, which is already
handled correctly. Thus, there shouldn't be any impact for non-malicious
servers.

##### Affected usages

Applications and libraries using urllib3 versions earlier than 2.8.0 may
be affected when streaming a chunked response from untrusted sources.
Specifically, this affects the
[read_chunked()](https://urllib3.readthedocs.io/en/stable/reference/urllib3.response.html#urllib3.response.BaseHTTPResponse.read_chunked)
and
[stream()](https://urllib3.readthedocs.io/en/stable/reference/urllib3.response.html#urllib3.response.BaseHTTPResponse.stream)
methods of the HTTPResponse object.

This also affects requests streaming API, which uses urllib3 under the
hood.

##### Remediation

Upgrade to urllib3 version 2.8.0 or later, where chunk-size fields
larger than 65536 will be rejected. If upgrading is not immediately
possible, consider reading the response at once using the
[read()](https://urllib3.readthedocs.io/en/stable/reference/urllib3.response.html#urllib3.response.BaseHTTPResponse.read)
method.

#### Severity
- CVSS Score: 8.9 / 10 (High)
- Vector String:
`CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H`

#### References
-
[https://github.com/urllib3/urllib3/security/advisories/GHSA-vxq7-64xx-v4gw](https://redirect.github.com/urllib3/urllib3/security/advisories/GHSA-vxq7-64xx-v4gw)
-
[https://nvd.nist.gov/vuln/detail/CVE-2026-97689](https://nvd.nist.gov/vuln/detail/CVE-2026-97689)
-
[cd770b059b)
-
[https://github.com/urllib3/urllib3/releases/tag/2.8.0](https://redirect.github.com/urllib3/urllib3/releases/tag/2.8.0)
-
[https://github.com/advisories/GHSA-vxq7-64xx-v4gw](https://redirect.github.com/advisories/GHSA-vxq7-64xx-v4gw)

This data is provided by the [GitHub Advisory
Database](https://redirect.github.com/advisories/GHSA-vxq7-64xx-v4gw)
([CC-BY
4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### urllib3: Chunked Deflate streaming can enter an infinite loop
[CVE-2026-97688](https://nvd.nist.gov/vuln/detail/CVE-2026-97688) /
[GHSA-gh4c-6fx4-qh6g](https://redirect.github.com/advisories/GHSA-gh4c-6fx4-qh6g)

<details>
<summary>More information</summary>

#### Details
##### Impact

urllib3's streaming API is designed for the efficient handling of large
HTTP responses by reading content in chunks instead of loading the
entire response body into memory at once.

urllib3 can decompress response bodies according to the HTTP
`Content-Encoding` header. When streaming a compressed, chunked
response, urllib3 first consumes data already buffered by the decoder
before reading the next HTTP chunk.

However, urllib3 versions from 2.6.2 through 2.7.0 could enter an
infinite loop when a chunked response contained bytes after the end of
the Deflate stream. If the decompressed body exceeded the requested
streaming chunk size, Python's zlib implementation could retain the
trailing bytes as unconsumed input after reaching the end of the
compressed stream. urllib3 would repeatedly attempt to decode those same
bytes without making progress or reading more data from the network.

A malicious server could exploit this behavior to cause excessive CPU
usage and prevent the affected request from completing on the client.
Network read timeouts would not interrupt the loop because no further
socket operation was required.

##### Affected usages

Applications and libraries using urllib3 versions 2.6.2 through 2.7.0
may be affected when all of the following conditions are met:

1. Compressed responses from an untrusted source are streamed using
`HTTPResponse.stream(amt=N)` or `HTTPResponse.read_chunked(amt=N)` with
a positive, finite chunk size.
2. Content decoding is enabled.
3. The response uses both `Transfer-Encoding: chunked` and
`Content-Encoding: deflate`.
4. The decoded body exceeds the requested chunk size and the encoded
body contains bytes after the end of the Deflate stream.

`HTTPResponse.stream()` uses a finite chunk size by default and is
therefore affected when the other conditions are met.

##### Remediation

Upgrade to urllib3 2.8.0, in which the Deflate decoder stops accepting
input after reaching the end of the compressed stream and no longer
reports trailing bytes as data that can produce more decoded output.

If upgrading is not immediately possible, disable automatic content
decoding for responses from untrusted sources by setting
`decode_content=False`, or reject streamed responses using the Deflate
content encoding. Applications that disable automatic decoding must
handle the compressed response safely at another layer.

#### Severity
- CVSS Score: 6.9 / 10 (Medium)
- Vector String:
`CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N`

#### References
-
[https://github.com/urllib3/urllib3/security/advisories/GHSA-gh4c-6fx4-qh6g](https://redirect.github.com/urllib3/urllib3/security/advisories/GHSA-gh4c-6fx4-qh6g)
-
[https://nvd.nist.gov/vuln/detail/CVE-2026-97688](https://nvd.nist.gov/vuln/detail/CVE-2026-97688)
-
[ea2ad7b21a)
-
[https://github.com/urllib3/urllib3/releases/tag/2.8.0](https://redirect.github.com/urllib3/urllib3/releases/tag/2.8.0)
-
[https://github.com/advisories/GHSA-gh4c-6fx4-qh6g](https://redirect.github.com/advisories/GHSA-gh4c-6fx4-qh6g)

This data is provided by the [GitHub Advisory
Database](https://redirect.github.com/advisories/GHSA-gh4c-6fx4-qh6g)
([CC-BY
4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Release Notes

<details>
<summary>urllib3/urllib3 (urllib3)</summary>

###
[`v2.8.0`](https://redirect.github.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#280-2026-09-15)

[Compare
Source](https://redirect.github.com/urllib3/urllib3/compare/2.7.0...2.8.0)

\==================

## Security

Fixed the following security issues:

- The TLS configuration for HTTPS proxies could be ignored or
overridden.
(High severity, `GHSA-8988-9cw3-xx77
<https://github.com/urllib3/urllib3/security/advisories/GHSA-8988-9cw3-xx77>`\_\_)
- `HTTPResponse.stream()` and `read_chunked()` could buffer a chunk-size
  line of unbounded length in memory. (High severity,
`GHSA-vxq7-64xx-v4gw
<https://github.com/urllib3/urllib3/security/advisories/GHSA-vxq7-64xx-v4gw>`\_\_)
- Chunked Deflate streaming could enter an infinite loop. (Medium
severity,
`GHSA-gh4c-6fx4-qh6g
<https://github.com/urllib3/urllib3/security/advisories/GHSA-gh4c-6fx4-qh6g>`\_\_)

.. caution::

```
urllib3 2.8.0 fixes HTTPS proxy TLS configuration being ignored or
overridden by destination settings. Configurations relying on that
behavior may require changes.

Configure proxy CA certificates and client certificates in
``proxy_ssl_context``, and proxy identity checks with
``proxy_assert_hostname`` or ``proxy_assert_fingerprint``.
Destination client certificates and identity overrides no longer
apply to HTTPS forwarding proxy connections.
```

## Deprecations & Removals

- Deprecated using an empty collection as the `Retry` option
  `allowed_methods` to retry any verb.
  (`#&#8203;5044 <https://github.com/urllib3/urllib3/issues/5044>`\_\_)

## Features

- Added `Url.auth_decoded` and `Url.auth_decoded_joined` convenience
  properties to the result of `parse_url()`.
  (`#&#8203;4945 <https://github.com/urllib3/urllib3/issues/4945>`\_\_)
- Added `basic_auth_encoding` and `proxy_basic_auth_encoding` parameters
to
  `urllib3.util.make_headers()`.
  (`#&#8203;5092 <https://github.com/urllib3/urllib3/issues/5092>`\_\_)

## Bugfixes

- Fixed response header handling to replace obsolete folded header lines
(`obs-fold`) with spaces in accordance with RFC 9112, preventing raw
CRLF
  sequences from appearing in header values such as `Set-Cookie`.
  (`#&#8203;1362 <https://github.com/urllib3/urllib3/issues/1362>`\_\_)
- Fixed usage of `proxy_ssl_context` with `ProxyManager` when
  `use_forwarding_for_https=True`. Passing `ssl_context` instead of
`proxy_ssl_context` for HTTPS proxies in this configuration now emits a
  `FutureWarning` and will raise an error in v3.0.
  (`#&#8203;2577 <https://github.com/urllib3/urllib3/issues/2577>`\_\_)
- Changed behavior of the default `ConnectionPool.pool` initialization.
  `LifoQueue` is now resolved from the `queue` module after the
  `ConnectionPool` is instantiated instead of using the default cached
  `QueueCls` class property. This is done because sometimes the
`queue.LifoQueue` is monkey-patched late in the program, such as by
gevent.
  (`#&#8203;3289 <https://github.com/urllib3/urllib3/issues/3289>`\_\_)
- Raised `UnrewindableBodyError` instead of `ValueError` when retrying a
  request whose body had `tell()` but not `seek()`.
  (`#&#8203;3779 <https://github.com/urllib3/urllib3/issues/3779>`\_\_)
- Decoded percent-encoded SOCKS proxy credentials before authenticating
with
  the proxy server.
  (`#&#8203;3785 <https://github.com/urllib3/urllib3/issues/3785>`\_\_)
- Fixed `HTTPResponse.drain_conn()` to discard unread response data in
64 KiB
chunks (same as the default `amt` when doing
`HTTPResponse.stream(...)`).
  (`#&#8203;5019 <https://github.com/urllib3/urllib3/issues/5019>`\_\_)
- Fixed `is_ipaddress()` to detect non-standard IPv4 forms accepted by
`socket.connect`, such as hex (`0x7f000001`), octal (`0177.0.0.1`), and
decimal integers (`2130706433`), ensuring SSL certificate verification
uses
  the correct mode for these addresses.
  (`#&#8203;5029 <https://github.com/urllib3/urllib3/issues/5029>`\_\_)
- Fixed `HTTPConnectionPool.urlopen` raising a misleading
`FullPoolError`
instead of `ValueError` when called with an invalid `timeout` argument
on
  a pool created with `block=True`.
  (`#&#8203;5059 <https://github.com/urllib3/urllib3/issues/5059>`\_\_)
- Fixed port-zero handling to preserve explicit `:0` values instead of
substituting the default ports 80 or 443 in URL parsing, pool selection,
proxy configuration, `connection_from_url()`, and HTTP/2 request
authority.
  (`#&#8203;5071 <https://github.com/urllib3/urllib3/issues/5071>`**,
  `#&#8203;5101 <https://github.com/urllib3/urllib3/issues/5101>`**)
- Fixed a bug where `PoolManager` passed the `assert_hostname` and
  `assert_fingerprint` parameters to HTTP connection pools.
  (`#&#8203;5077 <https://github.com/urllib3/urllib3/issues/5077>`\_\_)
- Fixed `HTTPConnectionPool.urlopen()` and HTTP proxy forwarding to
strip URL
  fragments from absolute request targets before sending requests.
  (`#&#8203;5079 <https://github.com/urllib3/urllib3/issues/5079>`\_\_)
- Added safeguards to the proxy tunneling code to prevent potential
security
issues when handling invalid characters in the proxy host and HTTP
headers.
This change affects users of Python 3.10, Python 3.11, and Python 3.12
when
the standard library does not contain the fix; those on newer Python
versions
  should upgrade to 3.13.14+ or 3.14.5+ to get the same security fixes.
  (`#&#8203;5091 <https://github.com/urllib3/urllib3/issues/5091>`\_\_)
- Fixed `HTTPSConnection.connect()` overriding
`ProxyConfig.ssl_context`'s
certificate policy and proxy identity checks with the target
connection's TLS
  settings when forwarding through an HTTPS proxy.

  `HTTPSConnection` no longer applies target SNI, assertions, or client
  credentials to forwarding proxy handshakes and continues to use its
`ssl_context` as a fallback when an HTTPS proxy forwards an HTTP target.
  (`#&#8203;5093 <https://github.com/urllib3/urllib3/issues/5093>`\_\_)
- Fixed URL parsing to more strictly enforce RFC 3986 host syntax,
rejecting
invalid host input such as raw spaces and control characters, malformed
percent-encodings, and percent-encoded control characters in HTTP(S)
hosts
and IPv6 zone identifiers, including proxy CONNECT tunnel targets. Host
  normalization now also follows RFC 3986 normalization rules for
percent-encoded octets by decoding percent-encoded unreserved characters
and
  uppercasing the hexadecimal digits of retained percent-encoded octets.
  (`#&#8203;5095 <https://github.com/urllib3/urllib3/issues/5095>`\_\_)
- Fixed an `AttributeError` on Python built with OpenSSL 4+, where
  `ssl.PROTOCOL_TLSv1` no longer exists.
  (`#&#8203;5097 <https://github.com/urllib3/urllib3/issues/5097>`\_\_)
- Fixed `urllib3.contrib.pyopenssl` to use cryptography APIs when
reading a
  certificate subject and loading encrypted private keys, avoiding
  `DeprecationWarning` raised by pyOpenSSL 26.3.0+.
  (`#&#8203;5103 <https://github.com/urllib3/urllib3/issues/5103>`\_\_)
- Fixed handling of HTTP 303 redirects for requests with chunked or
file-like
  bodies.
  (`#&#8203;5161 <https://github.com/urllib3/urllib3/issues/5161>`\_\_)
- Fixed `assert_fingerprint()` to raise `SSLError` instead of
`binascii.Error` when a fingerprint has a supported length but contains
  non-hexadecimal characters.
  (`#&#8203;5211 <https://github.com/urllib3/urllib3/issues/5211>`\_\_)

## Misc

- Added a `test` dependency group containing the minimum dependencies
needed
to run the test suite, intended for downstream packagers. The `dev-base`
  and `mypy` groups now include this new group via `include-group`,
  removing duplication.
  (`#&#8203;3594 <https://github.com/urllib3/urllib3/issues/3594>`\_\_)
- Fixed test failures with pytest >= 9.1.
  (`#&#8203;5094 <https://github.com/urllib3/urllib3/issues/5094>`\_\_)
- Enabled JSPI tests with Firefox in the Emscripten test suite.
  (`#&#8203;5166 <https://github.com/urllib3/urllib3/issues/5166>`\_\_)
- Improved streamed response decoding performance.
  (`#&#8203;5209 <https://github.com/urllib3/urllib3/issues/5209>`\_\_)
- Fixed flaky tests.
  (`#&#8203;5232 <https://github.com/urllib3/urllib3/issues/5232>`**,
  `#&#8203;5234 <https://github.com/urllib3/urllib3/issues/5234>`**,
  `#&#8203;5239 <https://github.com/urllib3/urllib3/issues/5239>`\_\_)

</details>

---

### Configuration

📅 **Schedule**: (in timezone America/New_York)

- Branch creation
  - At any time (no schedule defined)
- 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMjUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-02 07:57:16 +00:00
chogng
bf89346c1b
Fix Auth and Zed.dev community PR routing (#64650)
## Why

The Community PR Board route check looks up the configured Track option
by exact name. The mapping for auth-related labels uses `Auth &
Zed.dev`, while the project option is `Auth & zed.dev`, so `route-pr`
fails when it handles those labels.

## What changed

Update the auth-related label mapping to use the existing `Auth &
zed.dev` Track name.

## Testing

- `python3 -m json.tool script/community-pr-track-mapping.json`
- `git diff --check`

Release Notes:

- N/A
2026-09-23 14:15:20 +00:00
Ali
62e5991dd0
Keep the grid top-anchored when growing on Windows (#63699)
# Objective
fixes https://github.com/zed-industries/zed/issues/39453.


## Solution

-  Bump bundled ConPTY to 1.25.260710002

## Testing

- 


## Showcase
before : 


https://github.com/user-attachments/assets/8d3fd721-20fb-4d9d-a468-db3e5dc7ae21


after : 


https://github.com/user-attachments/assets/af0c70ce-503b-45cd-b74b-7098f713c7d8


---

Release Notes:

- Keep the grid top-anchored when growing on Windows

---------

Co-authored-by: Finn Evers <finn.evers@outlook.de>
2026-09-22 12:38:36 +00:00
rn23thakur
af431aeef4
ui: Add buttons to switch diff view when diffing buffers (#64529)
# Objective

- This PR enables users to switch between unified/split diff views when
comparing buffers.
- Fixes #64419 .

## Solution

- The unified/split toggle (`DiffStyleControls`) is normally surfaced
automatically by `BufferSearchBar`, which detects any active item
exposing a `SplittableEditor`. That auto-detection is gated to
multi-buffer views, since it's paired with an expand/collapse-all-hunks
control that only makes sense across multiple files. `FileDiffView`
(used by `zed --diff <old> <new>`) is a singleton buffer, so it's
intentionally excluded from that generic path.
- Git's own single-file diff view,
[`SoloDiffView`](395def7a06/crates/git_ui/src/solo_diff_view.rs (L52)),
hits the same limitation and works around it with a small, dedicated
`ToolbarItemView` (`SoloDiffStyleToolbar`) that renders
`DiffStyleControls` directly, independent of `BufferSearchBar`.
- This PR follows the same pattern: a new `FileDiffStyleToolbar` (in
`git_ui_core::file_diff_view`) activates whenever a `FileDiffView` is
the focused pane item, and renders just the unified/split toggle, no
expand/collapse or file-status controls, since neither concept applies
to a plain two-file diff. It's registered in `initialize_pane` alongside
the existing git toolbars.


## Testing

- Did you test these changes? If so, how?
Ran `cargo test -p git_ui_core`, all passed. I've also attached the
results of manual testing in the Showcase section below.
- Are there any parts that need more testing?
I think more tests can be added.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Showcase

Adds a unified/split toggle to the diff view opened via `zed --diff
<old> <new>`, matching the toggle already available in git's diff views.

<details>
  <summary>Click to view before/after</summary>

**Before**:
<img width="1920" height="1080" alt="screenshot_20260921_020610"
src="https://github.com/user-attachments/assets/92cbcf75-0cac-4555-8d2d-ce927064515f"
/>

**After**:
<img width="1920" height="1080" alt="screenshot_20260921_020355"
src="https://github.com/user-attachments/assets/56f9ebc6-11df-41cc-a44d-99bfa8caa130"
/>

</details>

---

Release Notes:

- Added a unified/split toggle to the diff view opened via `zed --diff
<old> <new>` command.

---------

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
2026-09-21 11:17:46 +00:00
Hyeondong Lee
74646bf29c
Fix casing of libX11-devel SUSE package in script/linux (#64411)
Some checks are pending
Congratsbot / congrats (push) Blocked by required conditions
run_tests / check_workspace_binaries (push) Blocked by required conditions
run_tests / extension_tests (push) Blocked by required conditions
run_tests / orchestrate (push) Waiting to run
run_tests / check_style (push) Waiting to run
run_tests / clippy_windows (push) Blocked by required conditions
run_tests / run_tests_linux (push) Blocked by required conditions
run_tests / run_tests_mac (push) Blocked by required conditions
run_tests / doctests (push) Blocked by required conditions
run_tests / build_visual_tests_binary (push) Blocked by required conditions
run_tests / check_wasm (push) Blocked by required conditions
run_tests / check_dependencies (push) Blocked by required conditions
Congratsbot / check-author (push) Waiting to run
deploy_nightly_docs / deploy_docs (push) Waiting to run
run_tests / clippy_linux (push) Blocked by required conditions
run_tests / clippy_mac (push) Blocked by required conditions
run_tests / clippy_mac_x86_64 (push) Blocked by required conditions
run_tests / run_tests_windows (push) Blocked by required conditions
run_tests / miri_scheduler (push) Blocked by required conditions
run_tests / check_docs (push) Blocked by required conditions
run_tests / check_licenses (push) Blocked by required conditions
run_tests / check_scripts (push) Blocked by required conditions
run_tests / check_remote_server_linux_x86_64 (push) Blocked by required conditions
run_tests / check_remote_server_mac_aarch64 (push) Blocked by required conditions
run_tests / check_remote_server_windows_x86_64 (push) Blocked by required conditions
run_tests / check_postgres_and_protobuf_migrations (push) Blocked by required conditions
run_tests / tests_pass (push) Blocked by required conditions
## Objective

`libx11-devel` is not a valid package name in SUSE: it should
be`libX11-devel` (_should be a capital X!_).

source: [RPM resource
libX11-devel](https://rpmfind.net/linux/rpm2html/search.php?query=libX11-devel)

## Testing

- [x] Did you test these changes? If so, how?
- Tested on SLES 15.7 an [openSUSE
Tumbleweed](https://software.opensuse.org/package/libX11-devel)
  - `script/bundle-linux` succeeds

<img width="675" height="175" alt="Screenshot 2026-09-18 at 02 43 41"
src="https://github.com/user-attachments/assets/4a89f6e5-de9f-4457-a6c2-8f5a15ad4283"
/>


---

Release Notes:

- N/A
2026-09-17 18:31:12 +00:00
Kirill Bulatov
9930d2c2a3
Share generics better and strip rodio audio features (#64260)
* Preserve bundle compiler flags commit commit is a follow-up to
https://github.com/zed-industries/zed/pull/63432

Linux bundling script had custom `RUSTFLAGS` set which eradicated prior
config.
Moved all flags into `.cargo/bundle-config.toml` instead.

* Trim audio features and compress resources commit removes unused
`rodio` features and enables resource compression

The win from the latter seems not that large, so can revert if needed,
but seemed very easy to enable.

With compiler wrappers disabled, `cargo clean --target-dir
target/binary-size-split-build` and `cargo build --locked -p zed`:
Before: 135.6s wall, 1569.8s CPU, zed binary 1175563800 bytes
After: 130.5s wall (-3.8%), 1488.7s CPU (-5.2%), zed binary 1171527064
bytes (-0.3%, -4.0MB)

With `ZED_BUNDLE=true CXXFLAGS=-stdlib=libc++` and `cargo --config
.cargo/bundle-config.toml build --locked --release -p zed -p cli
--target aarch64-apple-darwin`:
Before: 369.4s wall, 3861.6s CPU, zed binary 381662328 bytes
After: 369.4s wall (+0.01%), 3866.1s CPU (+0.1%), zed binary 377836968
bytes (-1.0%, -3.8MB)

Release Notes:

- N/A
2026-09-16 16:03:18 +00:00
Finn Evers
2328e18cac
Move some configuration files out of the repository root (#64303)
This PR cleans up the repository root a bit, moving some of the less
relevant config files into the `.config` folder and removing unused
ones.

Release Notes:

- N/A
2026-09-16 14:08:49 +00:00
Finn Evers
93f9fce115
Require release notes to be present (#64238)
Release notes are the sole information users have about what could
either have improved or have been broken for them. Omitting release
notes is one thing, but not writing any or having empty ones helps
nobody - users get no context on what could cause issues they were
seeing nor do they know about potential improvements, triagers cannot
easily find the PR that could have introduced the bug either.

Thus, this PR now makes it so that danger actually requires one to write
release notes. Empty release notes or the placeholder will no longer be
accepted.

Release Notes:

- N/A
2026-09-15 13:38:45 +00:00
Finn Evers
ee1c6f8c40
Add initial support for having GPUI release notes (#64203)
Release Notes:

- N/A
2026-09-15 12:43:19 +00:00
Kamil Jakubus
a3e93fffaa
extension: Bump wasi-sdk to version 34 (#63816)
# Objective

Bumps `wasi-sdk` to v34 that is based on LLVM 23.1 which includes [a
compile time and memory usage
fix](https://github.com/llvm/llvm-project/pull/181755) for tree-sitter
grammars. It speeds up every grammar's compile time and reduces compile
memory usage unlocking big grammars that were impossible to compile
before to be submitted to Zed extensions.

Drive-by added additional wasi-sdk targets for the rest of the supported
architectures (by wasi-sdk), if riscv is unwanted I can remove it but it
should not create any problems (I think).

Also noticed the `download-wasi-sdk` script had `OS=mingw` which wasn't
even in the artifact name on v25.

## Testing

Compiled, ran and compiled my [big
grammar](https://github.com/usagi-coffee/tree-sitter-abl) on it, that
wouldn't compile at all pre-llvm 23.

## Self-Review Checklist:

- [X] I've reviewed my own diff for quality, security, and reliability

---

Release Notes:

- Fixed compiling dev extensions with big Tree-sitter grammars.
- Fixed compiling dev extensions on Windows ARM64.
- Added wasi-sdk installation invalidation.

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
2026-09-09 15:16:15 +00:00
Finn Evers
6916400834
Add platform:web to community-pr-track-mapping.json (#63753)
Release Notes:

- N/A
2026-09-07 07:30:20 +00:00
Lena
e2c4075cd0
Handle reopened PRs on the community PR board (#63755)
The particular edge case that is covered here is closing a community PR,
then labeling it with an `area:`, and _then_ reopening it.

Release Notes:

- N/A
2026-09-04 12:47:05 +00:00
Lena
a7bc7d7736
Consolidate GitHub helpers for community scripts (#63198)
It's been fun for a while to have the same function calling GitHub API
in every single script, but we're going to have fun in different ways
now.

This one's for you, @MrSubidubi! 🥂 

## Testing

I've ran the things that had `--dry-run` locally and nothing blew up,
but the ultimate smoke test will be carried out in production.

---

Release Notes:

- N/A
2026-09-04 11:40:05 +00:00
Lena
63e31fb7af
Add issue upvotes to the community PR board (#63692)
We already had the PR's upvotes (all the positive reactions,
deduplicated by user); this commit adds the issue-closed-by-the-PR's
upvotes (deduplicated against the PR's upvoters too). The code got even
uglier because I'm trying to avoid extra API calls.

Release Notes:

- N/A
2026-09-03 13:28:03 +00:00
Kirill Bulatov
8a4bd132a6
Strip local symbols from macOS and Linux release bundles (#63429)
Not sure if this PR is 100% good, since it removes symbols from local
traces, leaving addresses only — but this what Windows seem to do
already, and we have those symbols on Sentry to restore from, which were
needed to normally read Linux perf traces already (see `perf.zip` in
https://github.com/zed-industries/zed/issues/59689#issuecomment-5452720248)

On the upside, uncompressed binaries' are now ~100MB less, which is a
lot — hence decided to open the PR for the review

-------------------

Strips debug info and local symbols from shipped macOS and Linux
binaries, matching what Windows already does with PDBs: `bundle-mac` now
always runs `dsymutil` before a new `strip -x` step, and `bundle-linux`
adds `--discard-all` plus `zed.dbg`/`remote_server.dbg` extraction via
`--only-keep-debug`.

Sentry uploads are unchanged and precede stripping.

The macOS binary UUID and the GNU build id survive stripping, so
user-provided traces stay recoverable without rebuilding at the
reporter's commit: `sample` output resolves via `atos` against the
archived `zed.dwarf`, and `perf.data` via `perf buildid-cache` against
the Sentry-archived binary.

zed binary:
macOS (2026-08-29 nightly): 420478976 -> 316503984 bytes (-24.7%,
-104.0MB)
Linux (v1.17.2 aarch64): 439417448 -> 336967256 bytes (-23.3%, -102.5MB)
Downloads shrink far less, symbols compress ~7:1: the macOS DMG loses
only ~15MB.

Release Notes:

- Improved installed size on macOS and Linux by stripping debug symbols
from release binaries (roughly -25%)
2026-09-02 19:38:12 +00:00
Conrad Irwin
ff020dd053
git_ui: Batch merge conflict anchor resolution (#63394)
Improves merge-conflict loading by resolving ordered conflict anchors
with a single excerpt sweep instead of restarting the excerpt scan four
times per conflict.

The pull request also adds `script/generate-merge-conflict-benchmark`,
which creates validated small, medium, or severe repositories with real
unresolved Git merges.

On the severe workload (128 files × 256 conflicts), anchor conversion
decreased from 483.5 ms to 5.9 ms, saving about 478 ms, or roughly 5% of
the total refresh.

Closes
https://linear.app/zed-industries/issue/FR-174/improve-git-panel-performance-for-large-merge-conflicts

## Testing

- `cargo test -p multi_buffer
test_ordered_buffer_anchor_ranges_to_anchor_ranges`
- `cargo test -p git_ui conflict`
- `./script/clippy -p multi_buffer -p git_ui`
- Generated and validated the small synthetic merge-conflict workload

Release Notes:

- Improved performance when opening large merge conflicts
2026-08-31 15:07:24 +00:00
Kirill Bulatov
6840b8d2fc
Fix repo docs (#63486)
Some checks are pending
Congratsbot / check-author (push) Waiting to run
Congratsbot / congrats (push) Blocked by required conditions
deploy_nightly_docs / deploy_docs (push) Waiting to run
run_tests / orchestrate (push) Waiting to run
run_tests / check_style (push) Waiting to run
run_tests / clippy_windows (push) Blocked by required conditions
run_tests / clippy_linux (push) Blocked by required conditions
run_tests / clippy_mac (push) Blocked by required conditions
run_tests / clippy_mac_x86_64 (push) Blocked by required conditions
run_tests / run_tests_windows (push) Blocked by required conditions
run_tests / run_tests_linux (push) Blocked by required conditions
run_tests / run_tests_mac (push) Blocked by required conditions
run_tests / miri_scheduler (push) Blocked by required conditions
run_tests / doctests (push) Blocked by required conditions
run_tests / check_workspace_binaries (push) Blocked by required conditions
run_tests / build_visual_tests_binary (push) Blocked by required conditions
run_tests / check_scripts (push) Blocked by required conditions
run_tests / check_postgres_and_protobuf_migrations (push) Blocked by required conditions
run_tests / extension_tests (push) Blocked by required conditions
run_tests / check_wasm (push) Blocked by required conditions
run_tests / check_dependencies (push) Blocked by required conditions
run_tests / check_docs (push) Blocked by required conditions
run_tests / check_licenses (push) Blocked by required conditions
run_tests / tests_pass (push) Blocked by required conditions
* ensures The Rule cannot be accidentall removed
* fixes the perf command example to capture call graphs, to avoid
round-trips like
https://github.com/zed-industries/zed/issues/59689#issuecomment-5453623044
(samples without call graphs are not quite usable for investigating bugs
like these)


Release Notes:

- N/A
2026-08-31 11:00:40 +00:00
Kirill Bulatov
68b6504506
Enable share-generics in release bundle builds (#63432)
Cargo joins `build.rustflags` across config sources, so the base
`symbol-mangling-version=v0` and `tokio_unstable` flags still apply
after the newly added config.

With sccache disabled, `cargo build --release -p zed` on macOS: 
Before: zed binary 420677880 bytes
After: zed binary 375109048 bytes (-10.8%, -45.6MB)

After `strip -x` of both
(https://github.com/zed-industries/zed/pull/63429):
313879024 -> 307727432 bytes (-2.0%, -6.2MB)
The rest of the delta is the smaller symbol table. `drop_glue`
instantiations: 101778 -> 65041.

Release Notes:

- N/A
2026-08-31 05:42:11 +00:00
Kirill Bulatov
9b5b58607b
Update .rules to prompt for self-review before submitting PR (#62945)
Release Notes:

- N/A
2026-08-21 10:32:14 +00:00
Lena
ef50ad95b5
Automate cleanup of unsigned and stale draft pull requests (#62936)
- Notify the author when their PR has been in draft state with no new
commits for three weeks
- Close the draft PRs that didn't get updated after one more week
- Re-try the cla-bot check on PRs that are still unsigned after a week
- Close the PRs that are still unsigned after the re-try

## Testing

It works on my machine™

```
python script/github-pr-cleanup.py --dry-run
Checking 713 open pull requests
Dry-run mode: no comments or closures will be made
PR #60885: asking the CLA bot to check again
  Would comment on PR #60885:
@cla-bot check

PR #61625: asking the CLA bot to check again
  Would comment on PR #61625:
@cla-bot check

PR #57239: warning about a stale draft
  Would comment on PR #57239:
<!-- zed-community-automation:stale-draft-warning -->

This pull request has remained in draft without new commits for three weeks.
If it remains a draft without new commits for another week, it will be closed
automatically.

PR #57241: warning about a stale draft
  Would comment on PR #57241:
<!-- zed-community-automation:stale-draft-warning -->

This pull request has remained in draft without new commits for three weeks.
If it remains a draft without new commits for another week, it will be closed
automatically.

PR #61461: warning about a stale draft
  Would comment on PR #61461:
<!-- zed-community-automation:stale-draft-warning -->

This pull request has remained in draft without new commits for three weeks.
If it remains a draft without new commits for another week, it will be closed
automatically.

PR #61722: warning about a stale draft
  Would comment on PR #61722:
<!-- zed-community-automation:stale-draft-warning -->

This pull request has remained in draft without new commits for three weeks.
If it remains a draft without new commits for another week, it will be closed
automatically.

PR #61808: warning about a stale draft
  Would comment on PR #61808:
<!-- zed-community-automation:stale-draft-warning -->

This pull request has remained in draft without new commits for three weeks.
If it remains a draft without new commits for another week, it will be closed
automatically.

PR #61809: warning about a stale draft
  Would comment on PR #61809:
<!-- zed-community-automation:stale-draft-warning -->

This pull request has remained in draft without new commits for three weeks.
If it remains a draft without new commits for another week, it will be closed
automatically.

Cleanup complete: 0 unsigned PR closures, 6 draft warnings, 0 draft closures
```



Release Notes:

- N/A
2026-08-21 07:53:28 +00:00
Lena
84aaa52595
Remove unused triage project sync workflow (#62992)
We're not using it at the moment, so, removing it to avoid confusion
with the other triage-related automations.

Release Notes:

- N/A
2026-08-21 07:06:56 +00:00
Neel
1b04e4caf0
Stop bundling GLib in Linux release archives (#61593)
Bundled GLib shadowed the system libraries for host plugins dlopen'd
into the process, like PipeWire's videoconvert on 1.6+, which would
break Wayland screen sharing on newer distros. This PR makes Zed rely on
system GLib instead, since the bundled version pulls from whatever is in
CI (presently Ubuntu 20.04).

Release Notes:

- Removed GLib libraries from Linux release bundle, which could conflict
with system plugins
2026-08-20 10:20:14 +00:00
Neel
282f47a544
Switch from cargo-machete to cargo-shear (#62643)
This results in ~110 crates being removed, and some orphaned files also.

---

Release Notes:

- N/A

Signed-off-by: Neel <neel@zed.dev>
2026-08-20 10:08:48 +00:00
ADITYA CHAUHAN
bf65fd4d7c
legal: Use absolute URLs for Terms of Service and Privacy Policy links (#62684)
Release Notes:

- Fixed broken links in the installer Terms of Service dialog (#62677).

---

### Description

Closes #62677

In `script/terms/terms.rtf` and `legal/terms.md` (as well as
`legal/privacy-policy.md` and `legal/third-party-terms.md`), relative
URLs like `/privacy-policy` and `/acceptable-use-policies` caused error
-50 ("The application can't be opened") when clicked from installer
dialogs (such as the macOS installer).

This PR updates the relative URLs to absolute `https://zed.dev` URLs so
they open properly in the browser.
2026-08-17 09:35:54 +00:00
Smit Barmase
c95e0c5105
Add new area labels to community PR track mapping (#62314)
Label | Description
-- | --
area:integrations/git/panel | Feedback for the Git panel UI and
behavior.
area:gpui/graphics/wgpu | Feedback for GPUI's WGPU graphics backend,
including initialization and rendering.
area:breadcrumbs | Feedback for editor path and symbol breadcrumbs.
area:title bar | Issues suitable for title bar.
area:ai/agent thread/checkpoints | Feedback for Agent checkpoint
creation, comparison, restoration, and related Git behavior.
area:ai/agent thread/tools | Feedback for built-in Agent tools,
including execution, permissions, inputs, and outputs.

Release Notes:
- N/A
2026-08-07 11:11:10 +00:00
Lena
98f39bfcca
Duplicate Bot: Improve candidate retrieval (v6) (#62011)
Release Notes:

- N/A
2026-07-31 15:45:04 +00:00
Lena
59cb143caf
Fix triage queue board matching every open issue (#61993)
Our date filter used two qualifiers ("created:>START created:<=END"),
which isn't valid range syntax, so GitHub ignored it and returned every
open issue. Use a single "created:START..END" range. Also fix the window
math, which was a business day too recent and excluded its start day.

Release Notes:

- N/A
2026-07-31 12:44:52 +00:00
Yassen Damyanov
b209000d28
Make Install script reject 32-bit Linux architectures (#61919)
# Objective

Prevent successful installations on 32-bit Linux architectures where the
`zed` binary will **fail to execute** post-installation. Rather, fail at
installation time with a proper verdict.

`script/install.sh` maps `uname -m` onto the two architectures Zed
publishes builds for. Two of the matchers named 32-bit userlands and
mapped them onto a 64-bit tarball:

- `linux-armhf` mapped to `aarch64`
- `linux-i686*` mapped to `x86_64`

Neither can execute the binary it selected. Tested on i386 Debian Trixie
container: the installer downloaded, unpacked, symlinked and reported
success, and the failure surfaced later as an exec error -- see
[Showcase](##showcase).

Thus the installer's correct behavior would be to reject the 32-bit
architecture and terminate with an "unsupported" verdict.


## Solution

Remove the case-statement-based mapping of `linux-armhf` to `aarch64`,
and of `linux-i686*` to `x86_64`.


## Testing

Tested in isolation, simulating supported and unsupported platforms, and
supported and unsupported architectures:

| Platform | `uname -m` | Outcome |
| --- | --- | --- |
| Linux | `x86_64` | ✅ Installed — resolves to `x86_64`, symlink created
|
| Linux | `i386` | ❌ Unsupported — `i386` doesn't match glob `x86*` (no
case handles plain i386 anyway |
| Linux | `i686` | ❌ Unsupported — same reason |
| Linux | `aarch64` | ✅ Installed — resolves to `aarch64` |
| Linux | `arm64` | ✅ Installed — resolves to `aarch64` |
| Linux | `armv7l` | ❌ Unsupported — no 32-bit ARM case |
| Linux | `riscv64` | ❌ Unsupported |
| Darwin | `arm64` | ✅ Installed — resolves to `aarch64`, copied to real
`/Applications/Zed.app`, symlink created; |
| Darwin | `x86_64` | ✅ Installed — resolves to `x86_64`, copied to real
`/Applications/Zed.app`, symlink created |
| Darwin | `i386` | ❌ Unsupported — no case for macOS 32-bit |
| FreeBSD | `x86_64` | ❌ Unsupported platform - expected |

This is all correct behavior. Successful installations are expected to
work. Unsupported architectures are detected and rejected as unsupported
during installation.

## Showcase

```plaintext
~# file /usr/bin/dash  # a sample executable showing the 32-bit arch
/usr/bin/dash: ELF 32-bit LSB pie executable, Intel i386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=7e2e8652114c8c2ae595b6f78798716a9ba07671, for GNU/Linux 3.2.0, stripped

~# file .local/zed.app/bin/zed
.local/zed.app/bin/zed: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=e550eeb1d97f0cdac2460de672bfa36e9e3f6e25, not stripped

~# .local/zed.app/bin/zed
bash: .local/zed.app/bin/zed: cannot execute: required file not found
# It cannot find  ELF 64-bit interpreter /lib64/ld-linux-x86-64.so.2 -- this is
# a 32-bit container on a 64-bit host. On a genuine 32-bit host it would fail with:
# `Exec format error`.
```


## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Locally conducted tests cover the new/changed behavior

---

Release Notes:

- N/A
2026-07-31 09:48:15 +00:00
Lena
5786fee55a
Duplicate Bot: Discussions, second critic, more context (v5) (#61948)
Release Notes:

- N/A
2026-07-30 16:56:19 +00:00
Lena
9677f83f87
Add second-line triage queue board automation (#61918)
GitHub issue search can't express the one filter we want here: "created
at least one business day ago." That's the whole reason the project
board #\87 exists — since we can't save it as a search, we keep a
project's membership in sync to stand in for it.

So: an hourly workflow runs script/github-triage-queue-board.py, which
adds the open issues that fall in the eligibility window to project #\87
and removes the ones that have aged out. Also wires the workflow into
the community automation failure Slack alert, so if it breaks we hear
about it.


Release Notes:

- N/A
2026-07-30 13:12:54 +00:00
Nitin Krishna Mucheli
9aa48e46e9
Fix musl linking failure in bundle-linux by setting CC for musl target (#61203)
Fixes https://github.com/zed-industries/zed/issues/24880 

# Objective
"Assisted/analysed by AI"
> The remote_server musl build failed with undefined references to
__isoc23_sscanf and __isoc23_strtol from aws-lc-sys because the default
C compiler used glibc headers while linking against musl libc. Setting
CC_<target>=musl-gcc ensures C dependencies compile with musl headers.

I have tested the fix, and it seems to have fixed the compilation issue
I faced on Fedora 44, without resorting to the [hack noted in
docs](https://zed.dev/docs/development/linux#installing-a-development-build).
Initially reported in this
[issue](https://github.com/zed-industries/zed/issues/24880).

I'd want someone with expertise in the domain to take a look at this
fix, as from what I understand, the process in the doc is a hacky
workaround.

## Solution

Setting CC_<target>=musl-gcc ensures C dependencies compile with musl
headers.

## Testing

- Did you test these changes? If so, how?

    <details><summary>Here's my steps to repro:</summary>
1. install [toolbox](https://github.com/containers/toolbox) (or
podman-toolbox)
(I used toolbox as it's easy to reuse the cloned repo, as the whole home
dir is mounted in the devcontainer)
Used the main branch - commit 5d6c88cdb7
    2. toolbox create -d fedora -r 44
    3. toolbox enter fedora-toolbox-44
    4. then run the `scripts/linux` script to install prereqs
5. try compiling remote-server using the commands in
`scripts/install-linux` (I just ran the script wholly)
    
    LDD version:
    ```
    ⬢[root@toolbox zed]# ldd --version
    ldd (GNU libc) 2.43
    ```
    
    GCC/MUSL versions:
    ```
    musl-gcc  : 1.2.5
    gcc : 16.1.1
    ```
    
    Error:
    ```
    error: linking with `cc` failed: exit status: 1
      |
= note: "cc" "-m64"
"<sysroot>/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/rcrt1.o"
"<sysroot>/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crti.o"
"<sysroot>/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crtbeginS.o"
"<747 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic"
"/root/zed/target/x86_64-unknown-linux-musl/release/deps/rustceHhjo8/{libzstd_sys-5c3eb6739555ecf4,libtree_sitter_json-ad90c8af7e8a3750,libtree_sitter-f91a92b688e12e56,libwasmtime-decd3377028506ce,libaws_lc_sys-a051f708b6dafc2a,libring-fcc1b43e3092bc93,libpsm-d967f50c6f2b67a4}.rlib"
"-lunwind" "-lc"
"<sysroot>/lib/rustlib/x86_64-unknown-linux-musl/lib/libcompiler_builtins-*.rlib"
"-L"
"/root/zed/target/x86_64-unknown-linux-musl/release/deps/rustceHhjo8/raw-dylibs"
"-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack"
"-nostartfiles" "-L"
"/root/zed/target/x86_64-unknown-linux-musl/release/build/psm-dc603221f407eabc/out"
"-L"
"/root/zed/target/x86_64-unknown-linux-musl/release/build/tree-sitter-28f7b87c1db3fab9/out"
"-L"
"/root/zed/target/x86_64-unknown-linux-musl/release/build/wasmtime-f0bb0950e09a7352/out"
"-L"
"/root/zed/target/x86_64-unknown-linux-musl/release/build/aws-lc-sys-2a7ca8eafafe18fa/out"
"-L"
"/root/zed/target/x86_64-unknown-linux-musl/release/build/ring-d7857a166bac60a6/out"
"-L"
"/root/zed/target/x86_64-unknown-linux-musl/release/build/zstd-sys-0e04609af7157148/out"
"-L"
"/root/zed/target/x86_64-unknown-linux-musl/release/build/tree-sitter-json-b1e2eeaba7bbb519/out"
"-L"
"<sysroot>/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained"
"-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-musl/lib" "-o"
"/root/zed/target/x86_64-unknown-linux-musl/release/deps/remote_server-3782b255c59d4e14"
"-Wl,--gc-sections" "-static-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1"
"-nodefaultlibs" "-Wl,--disable-new-dtags,-rpath,$ORIGIN/../lib"
"<sysroot>/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crtendS.o"
"<sysroot>/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crtn.o"
= note: some arguments are omitted. use `--verbose` to show all linker
arguments
= note: /usr/bin/ld.bfd:
/root/zed/target/x86_64-unknown-linux-musl/release/deps/rustceHhjo8/libaws_lc_sys-a051f708b6dafc2a.rlib(f8e4fd781484bd36-bcm.o):
in function `aws_lc_0_40_0_handle_cpu_env':

/aws-lc/crypto/fipsmodule/cpucap/cpu_intel.c:(.text.aws_lc_0_40_0_handle_cpu_env+0x63):
undefined reference to `__isoc23_sscanf'
/usr/bin/ld.bfd:
/root/zed/target/x86_64-unknown-linux-musl/release/deps/rustceHhjo8/libaws_lc_sys-a051f708b6dafc2a.rlib(f8e4fd781484bd36-bcm.o):
in function `pkey_rsa_ctrl_str':

/aws-lc/crypto/fipsmodule/evp/p_rsa.c:692:(.text.pkey_rsa_ctrl_str+0x222):
undefined reference to `__isoc23_strtol'
/usr/bin/ld.bfd:
/aws-lc/crypto/fipsmodule/evp/p_rsa.c:703:(.text.pkey_rsa_ctrl_str+0x261):
undefined reference to `__isoc23_strtol'
              collect2: error: ld returned 1 exit status
              
= note: some `extern` functions couldn't be found; some native libraries
may need to be installed or have their path specified
      = note: use the `-l` flag to specify native libraries to link
= note: use the `cargo:rustc-link-lib` directive to specify the native
libraries to link with Cargo (see
https://doc.rust-lang.org/cargo/reference/build-scripts.html#rustc-link-lib)
    
error: could not compile `remote_server` (bin "remote_server") due to 1
previous error
    ```
    </details>

- Are there any parts that need more testing?  -- Maybe
- How can other people (reviewers) test your changes? Is there anything
specific they need to know? -- Steps listed above
- If relevant, what platforms did you test these changes on, and are
there any important ones you can't test? -- Fedora 44

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [ ] Tests cover the new/changed behavior
- [ ] Performance impact has been considered and is acceptable

## Showcase

> This section is optional. If this PR does not include a visual change
or does not add a new user-facing feature, you can delete this section.

- Help others understand the result of this PR by showcasing your
awesome work!
- If this PR includes a visual change, consider adding a screenshot,
GIF, or video
- A before/after comparison is very useful for changes to existing
features!

While a showcase should aim to be brief and digestible, you can use a
toggleable section to save space on longer showcases:

<details>
  <summary>Click to view showcase</summary>

My super cool demos here

</details>

---

Release Notes:

- Fixed musl error when building remote server from source for the
default musl triple on Linux

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-22 09:37:55 +00:00
Lena
a736da2a80
Update first responders notifier for repo label rename (#61402)
`priority:*` labels in the github repository are becoming `severity:*`,
and `frequency:*` — `reach:*`. This commit will update the slack
notifications for the first responders accordingly.

Also, delete the github-label-issues-to-triage.py one-off script, which
worked with the old label names and is by now too distant in the past to
be useful as reference or anything.

Release Notes:

- N/A
2026-07-21 15:04:45 +00:00
Lukas Wirth
875042b698
cloud_api_client: Implement Wasm support (#61328)
Some checks are pending
run_tests / miri_scheduler (push) Blocked by required conditions
Congratsbot / check-author (push) Waiting to run
Congratsbot / congrats (push) Blocked by required conditions
deploy_nightly_docs / deploy_docs (push) Waiting to run
run_tests / orchestrate (push) Waiting to run
run_tests / check_style (push) Waiting to run
run_tests / clippy_windows (push) Blocked by required conditions
run_tests / clippy_linux (push) Blocked by required conditions
run_tests / clippy_mac (push) Blocked by required conditions
run_tests / clippy_mac_x86_64 (push) Blocked by required conditions
run_tests / run_tests_windows (push) Blocked by required conditions
run_tests / run_tests_linux (push) Blocked by required conditions
run_tests / run_tests_mac (push) Blocked by required conditions
run_tests / doctests (push) Blocked by required conditions
run_tests / check_workspace_binaries (push) Blocked by required conditions
run_tests / build_visual_tests_binary (push) Blocked by required conditions
run_tests / check_wasm (push) Blocked by required conditions
run_tests / check_dependencies (push) Blocked by required conditions
run_tests / check_docs (push) Blocked by required conditions
run_tests / check_licenses (push) Blocked by required conditions
run_tests / check_scripts (push) Blocked by required conditions
run_tests / check_postgres_and_protobuf_migrations (push) Blocked by required conditions
run_tests / extension_tests (push) Blocked by required conditions
run_tests / tests_pass (push) Blocked by required conditions
Release Notes:

- N/A or Added/Fixed/Improved ...

---------

Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
2026-07-21 13:20:31 +00:00
Kirill Bulatov
dde45ff092
Mimic macOS bundling behavior for Windows builds (#61180)
Rei-mplements the logic from
9552acc2bc/script/bundle-mac (L120-L123)
for Windows bundling so that `run-bundling` label in CI can build
unsigned Windows binaries properly.

Release Notes:

- N/A
2026-07-17 09:01:06 +00:00
Lena
a0bb97cad5
Guild board automation: fix In Progress status moves (#61115)
Release Notes:

- N/A
2026-07-16 16:17:01 +00:00
Yossi Eliaz
c75b287a0e
Improve sccache cache reuse (#60968)
## Summary

- Upgrade sccache from 0.10.0 to 0.16.0 on macOS, Linux, and Windows CI
runners.
- Normalize the GitHub workspace with `SCCACHE_BASEDIRS` so identical
builds can reuse cache entries across checkout roots.
- Validate the cached binary version and stop an older server before
replacing it, including on Windows where a running executable cannot be
overwritten.

## Why

The setup scripts configured `SCCACHE_BASEDIR`, which sccache did not
use for cache-key path normalization. Absolute checkout paths therefore
remained part of cache keys and reduced reuse between CI workspaces.
sccache 0.16.0 supports `SCCACHE_BASEDIRS` and includes the Windows
path-normalization fix needed for the Windows runner.

## Validation

- `bash -n script/setup-sccache`
- `git diff --check`
- Upgraded a live local sccache 0.15.0 server to 0.16.0 through the
setup script.
- Compiled identical C sources from two checkout roots and observed one
cache miss followed by one cache hit.
- Confirmed that every release asset referenced by the setup scripts
exists for the supported CI runner targets.

Release Notes:

- N/A
2026-07-15 20:35:16 +00:00
CorbinPost10
18f35ffac2
Fix gentoo cmake package name (#60930)
script/linux tried to install dev-util/cmake, which is not the correct
package name, so the script fails. Changing it to dev-build/cmake fixes
this.

Release Notes:

- N/A
2026-07-14 13:56:45 +00:00
Lena
7dc634124c
Switch Guild board automation to role checks (#60606)
Outside collaborators can't be added to GitHub teams, team membership is
restricted to org members.

https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization#:~:text=Outside%20collaborators%20cannot%20be%20added%20to%20a%20team%2C%20team%20membership%20is%20restricted%20to%20members%20of%20the%20organization

Release Notes:

- N/A
2026-07-08 16:52:33 +00:00
Ben Brandt
fc827a218e
Update issue ranking script dependencies (#60345)
Release Notes:

- N/A
2026-07-07 12:49:19 +00:00
Ben Brandt
616b76cd59
Update Danger to 13.0.8 (#60346)
Release Notes:

- N/A
2026-07-03 10:10:41 +00:00
Finn Evers
a91c8aa7d7
Remove more storybook leftovers (#60337)
Release Notes:

- N/A
2026-07-03 08:27:48 +00:00
Lena
b3d5ead59f
Add Guild board automation (#60266)
Automates the Guild contributor program on project board #74 so the
cohort is recognized and kept unblocked without manual babysitting.

- Move a board issue to In Progress when a Guild member self-assigns it,
and post a friendly heads-up when they are assigned an issue that is not
on the board.
- Flag when a Guild member opens a new PR while another of theirs is
still open, to help them land work before spreading thin.
- Check in on quiet assignments and, if an assignee stays silent, free
the issue back to a to-do column so others can pick it up; a "guild
hold" label lets maintainers pause check-ins after they have followed
up.
- Share a weekly digest of what the Guild shipped.
- Label PRs from Guild members and recognize a Guild contributor tier on
the community PR board.

Release Notes:

- N/A
2026-07-02 09:46:22 +00:00
Smit Barmase
d132afe9fc
Add new area labels to track mapping - 2 (#60247)
| Label | Description |
|---|---|
| `area:ai/agent thread/sandbox` | Feedback for Zed's Agent sandboxing |
| `area:text finder` | Issue about text finder |
| `area:gpui/graphics` | Related to graphics issues in GPUI |

Release Notes:

- N/A
2026-07-02 07:42:58 +00:00
Peter Tripp
e0f77d16fb
Update bundled JSON schemas (2026-04-29) (#58948)
./script/update-json-schemas 16c22767

- Improved `script/update-json-schemas`
  - Fix paths to match new locations of schemas
  - Add support for specifying an explicit commit
  - Use sed to replace `json.` links with `www.` in schemas
- Updated JSON schemas to
[SchemaStore/schemastore@16c2276](16c227677c)
(2026-04-29; last updated 2025-02-28)
-
[tsconfig.json](https://github.com/SchemaStore/schemastore/commits/master/src/schemas/json/tsconfig.json)
@
[16c2276](https://raw.githubusercontent.com/SchemaStore/schemastore/16c227677c1cb71864593f63382705e8c7390810/src/schemas/json/tsconfig.json)
-
[changes](https://github.com/SchemaStore/schemastore/commits/16c227677c1cb71864593f63382705e8c7390810/src/schemas/json/tsconfig.json)
-
[package.json](https://github.com/SchemaStore/schemastore/commits/master/src/schemas/json/package.json)
@
[16c2276](https://raw.githubusercontent.com/SchemaStore/schemastore/16c227677c1cb71864593f63382705e8c7390810/src/schemas/json/package.json)
-
[changes](https://github.com/SchemaStore/schemastore/commits/16c227677c1cb71864593f63382705e8c7390810/src/schemas/json/package.json)
- Updates tsconfig.json to support ES2025 stuff.
- Updates package.json to support `nodemonConfig`

Note, this is pinned to an old commit
(16c22767) because
anything after https://github.com/SchemaStore/schemastore/pull/5631 will
result in errors for all referenced schemas in package.json. This occurs
as they are all now relative links, which cannot be resolved for the
schema injected via config. This is also a hint that the current method
of bundling of package.json schema in practice triggers json-language
fetching 8 other nested schemas. Probably worth revisiting that.

CC: @probably-neb as someone who recently worked on the schemastore
stuff.

Self-Review Checklist:

- [Yes] I've reviewed my own diff for quality, security, and reliability
- [N/A] Unsafe blocks (if any) have justifying comments
- [N/A] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [N/A] Tests cover the new/changed behavior
- [N/A] Performance impact has been considered and is acceptable

Release Notes:

- Update bundled tsconfig.json and package.json schemas

---------

Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
2026-06-25 17:30:12 +00:00
Yara 🏳️‍⚧️
8372eb1b13
Add picker label to GitHub community PR board automation (#59905)
Release Notes:

- N/A
2026-06-25 14:18:47 +00:00