Commit log

948b437 Stop using linear color space on Linux Blade renderer (#38967)

Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/7992
Closes https://github.com/zed-industries/zed/issues/22711

Left is main, right is patched.

* default font

<img width="3862" height="2152" alt="image"
src="https://github.com/user-attachments/assets/c4e3d18a-a0dd-48b8-a1f0-182407655efb"
/>
<img width="3862" height="2152" alt="image"
src="https://github.com/user-attachments/assets/6eea07e7-1676-422c-961f-05bc72677fad"
/>


<img width="3862" height="2152" alt="image"
src="https://github.com/user-attachments/assets/4d9e30dc-6905-48ad-849d-48eac6ebed03"
/>
<img width="3862" height="2152" alt="image"
src="https://github.com/user-attachments/assets/ef20986e-c29c-4fe0-9f20-56da4fb0ac29"
/>


* font size 7

<img width="3862" height="2152" alt="image"
src="https://github.com/user-attachments/assets/8b277e92-9ae4-4415-8903-68566b580f5a"
/>
<img width="3862" height="2152" alt="image"
src="https://github.com/user-attachments/assets/b9140e73-81af-430b-b07f-af118c7e3dae"
/>

<img width="3862" height="2152" alt="image"
src="https://github.com/user-attachments/assets/185f526a-241e-4573-af1d-f27aedeac48e"
/>
<img width="3862" height="2152" alt="image"
src="https://github.com/user-attachments/assets/7a239121-ae13-4db9-99d9-785ec26cd98e"
/>


Release Notes:

- Improved color rendering on Linux

Co-authored-by: Kate <kate@zed.dev>
Co-authored-by: John <john-tur@outlook.com>
Co-authored-by: apricotbucket28 <71973804+apricotbucket28@users.noreply.github.com>

Kirill Bulatov , Kate , John , and apricotbucket28 created

8db24dd docs: Update wording around configuring MCP servers (#38973)

Click to expand commit body
Felt like this could be clarified a bit.

Release Notes:

- N/A

Danilo Leal created

4aac564 JSON Schema URIs (#38916)

Click to expand commit body
Closes #ISSUE

Improves the efficiency of our interactions with the Zed language
server. Previously, on startup and after every workspace configuration
changed notification, we would send >1MB of JSON Schemas to the JSON
LSP. The only reason this had to happen was due to the case where an
extension was installed that would result in a change to the JSON schema
for settings (i.e. added language, theme, etc).

This PR changes the behavior to use the URI LSP extensions of
`vscode-json-language-server` in order to send the server URI's that it
can then use to fetch the schemas as needed (i.e. the settings schema is
only generated and sent when `settings.json` is opened. This brings the
JSON we send to on startup and after every workspace configuration
changed notification down to a couple of KB.

Additionally, using another LSP extension request we can notify the
server when a schema has changed using the URI as a key, so we no longer
have to send a workspace configuration changed notification, and the
schema contents will only be re-requested and regenerated if the schema
is in use.

Release Notes:

- Improved the efficiency of communication with the builtin JSON LSP.
JSON Schemas are no longer sent to the JSON language server in their
full form. If you wish to view a builtin JSON schema in the language
server info tab of the language server logs (`dev: open language server
logs`), you must now use the `editor: open url` action with your cursor
over the URL that is sent to the server.
- Made it so that Zed urls (`zed://...`) are resolved locally when
opened within the editor instead of being resolved through the OS. Users
who could not previously open `zed://*` URLs in the editor can now do so
by pasting the link into a buffer and using the `editor: open url`
action (please open an issue if this is the case for you!).

---------

Co-authored-by: Michael <michael@zed.dev>

Ben Kunkle and Michael created

30b49cf perf: Fixup ordering, fix pathing, docs (#38970)

Click to expand commit body
Release Notes:

- N/A

Nia created

c69912c Forbid `std::process::Command` spawning, replace with `smol` where appropriate (#38894)

Click to expand commit body
std commands can block for an arbitrary duration and so runs risk of
blocking tasks for too long. This replaces all such uses where sensible
with async processes.

Release Notes:

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

Lukas Wirth created

7f14ab2 copilot: Ensure minimum Node version (#38945)

Click to expand commit body
Closes #38918

Release Notes:

- N/A

Smit Barmase created

5ee73d3 Move `settings_macros` to Cargo workspace (#38962)

Click to expand commit body
Release Notes:

- N/A

Marshall Bowers created

d5aa81a Fix up Wild package name and decompression (#38961)

Click to expand commit body
Wild changed in 0.6.0 to using gzip rather than xz, and changed the
format of the package name.

Follows on from and fixes
https://github.com/zed-industries/zed/pull/37717

cc @dvdsk @mati865 

Release Notes:

- N/A

Martin Pool created

21855c1 Disable subpixel shifting for y axis on Linux (#38959)

Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/7992
Port of #38440

<img width="3836" height="2142" alt="zed_nightly_vs_zed_dev_2"
src="https://github.com/user-attachments/assets/66bcbb9a-2159-4790-8a9a-d4814058d966"
/>

Does not change the rendering on Linux, but prepares us for the times
without cosmic-text where this will be needed.

Release Notes:

- N/A

Co-authored-by: Kate <kate@zed.dev>
Co-authored-by: John <john@zed.dev>

Kirill Bulatov , Kate , and John created

1f9279a linux: Add missing linear to sRGB transform in mono sprite rendering (#38944)

Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/7992
Takes
https://github.com/zed-industries/zed/issues/7992#issuecomment-3083871615
and applies its adjusted version on the current state of things

Screenshots (left is main, right is the patch): 

* default font size

<img width="3840" height="2160" alt="image"
src="https://github.com/user-attachments/assets/26fdc42c-12e6-447f-ad3d-74808e4b2562"
/>

<img width="3840" height="2160" alt="image"
src="https://github.com/user-attachments/assets/29829c61-c998-4e77-97c3-0e66e14b236d"
/>


* buffer and ui font size 7 

<img width="3840" height="2160" alt="image"
src="https://github.com/user-attachments/assets/5d0f1d94-b7ed-488d-ab22-c25eb01e6b4a"
/>

<img width="3840" height="2160" alt="image"
src="https://github.com/user-attachments/assets/7020d62e-de65-4b86-a64b-d3eea798c217"
/>


Release Notes:

- Added missing linear to sRGB transform in mono sprite rendering on
Linux

Co-authored-by: Thomas Dagenais <exrok@i64.dev>
Co-authored-by: Kate <work@localcc.cc>

Kirill Bulatov , Thomas Dagenais , and Kate created

da71465 edit_prediction_context: Minor optimization of text similarity + some renames (#38941)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

bcc8149 perf: Fixes (#38935)

Click to expand commit body
Release Notes:

- N/A

Nia created

b152860 settings ui: Add some light design tweaks (#38934)

Click to expand commit body
Release Notes:

- N/A

Danilo Leal created

ee357e8 language_models: Send a header indicating that the client supports xAI models (#38931)

Click to expand commit body
This PR adds an `x-zed-client-supports-x-ai` header to the `GET /models`
request sent to Cloud to indicate that the client supports xAI models.

Release Notes:

- N/A

Marshall Bowers created

0891a71 gpui: Fix incorrect colors comment (#38929)

Click to expand commit body
| Before | After |
| - | - |
| <img width="466" height="207" alt="SCR-20250926-khst"
src="https://github.com/user-attachments/assets/c28a9ea8-3d22-458c-a683-b2fabe275a04"
/> | <img width="480" height="215" alt="SCR-20250926-kgru"
src="https://github.com/user-attachments/assets/cfee6392-804c-46e2-a55a-f72071264d10"
/> |

Release Notes:

- N/A

Floyd Wang created

94fe862 x_ai: Fix `Model::from_id` for Grok 4 (#38930)

Click to expand commit body
This PR fixes `x_ai::Model::from_id`, which was not properly handling
`grok-4`.

Release Notes:

- N/A

Marshall Bowers created

4f91fab language_models: Add xAI support to Zed Cloud provider (#38928)

Click to expand commit body
This PR adds xAI support to the Zed Cloud provider.

Release Notes:

- N/A

Marshall Bowers created

0e0f48d Introduce SettingsField type to the settings UI (#38921)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Ben Kunkle <ben@zed.dev>

Mikayla Maki , Nathan Sobo , Anthony Eid , and Ben Kunkle created

7980dbd Add API docs for RelPath (#38923)

Click to expand commit body
Also reduce the use of `unsafe` in that module.

Release Notes:

- N/A

Max Brunsfeld created

a5683f3 zeta_cli: Add `--output-format both` and `--prompt-format only-snippets` (#38920)

Click to expand commit body
These are options are probably temporary, added for use in some
experimental code

Release Notes:

- N/A

Co-authored-by: Oleksiy <oleksiy@zed.dev>

Michael Sloan and Oleksiy created

67984d5 provider configuration: Use `SingleLineInput` instead of `Editor` (#38814)

Click to expand commit body
Release Notes:

- N/A

Michael Sloan created

d83d7d3 windows: Fix inconsistent separators in buffer headers and breadcrumbs (#38898)

Click to expand commit body
Make `resolve_full_path` use the appropriate separators, and return a
`String`.

As part of fixing the fallout from that type change, this also fixes a
bunch of places in the agent code that were using `std::path::Path`
operations on paths that could be non-local, by changing them to operate
instead on strings and use the project's `PathStyle`.

This clears the way a bit for making `full_path` also return a string
instead of a `PathBuf`, but I've left that for a follow-up.

Release Notes:

- N/A

Cole Miller created

6470443 python: Fix ty archive extraction on Linux (#38917)

Click to expand commit body
Closes #38553 
Release Notes:

- Fixed wrong AssetKind specified on linux for ty 


As discussed in the linked issue. All of the non windows assets for ty
are `tar.gz` files. This change applies that fix.

Derek Nguyen created

5b72dff helix: Streamline mode naming in the UI and in settings (#38870)

Click to expand commit body
Release Notes:

- When `helix_mode = true`, modes are called without the `HELIX_` prefix
in the UI:
  `HELIX_NORMAL` becomes `NORMAL`
  `HELIX_SELECT` becomes `SELECT`
- (breaking change) Helix users should remove `"default_mode":
"helix_normal"` from their settings. This is now the default when
`"helix_mode": true`.

Jakub Konka created

495a7b0 Clean up RelPath API (#38912)

Click to expand commit body
Consolidate constructors and accessors.

Release Notes:

- N/A

---------

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

Max Brunsfeld and Cole Miller created

301e976 Fix inlay hints using status theming instead of syntax theming (#36219)

Click to expand commit body
Release Notes:

- Fixed editor inlay hints incorrectly using status theming when syntax
theming is available

Previously, a theme's `style.syntax.hint` object is completely ignored,
and `style.hint` `style.hint.background` are used instead. However,
these seem to be related to status hints, such as the inline git blame
integration.

For syntax hints (as given by an LSP), the reasonable assumption would
be that the `style.syntax.hint` object is used instead, but it isn't.
This means that defining other style characteristics (`font_style`, for
example) does nothing.

I've fixed the issue in a backward-compatible way, by using the theme
`syntax` `HighlightStyle` as the base for inlay hint styling, and
falling back to the original `status` colors should the syntax object
not contain the color definitions.

 With the following theme settings:
```jsonc
{
  "hint": "#ff00ff",                    // Status hints (git blame, etc.)
  "hint.background": "#ff00ff10",
  "syntax": {
    "hint": {
      "color": "#ffffff",               // LSP inlay hints
      "background_color": "#ffffff10",
      "font_style": "italic",           // Now properly applied
      "font_weight": 700
    }
  }
}
```


Current behavior:
<img width="896" height="201" alt="image"
src="https://github.com/user-attachments/assets/e89d212f-ed7e-4d27-94e4-96d716e229d2"
/>

Italics and font weight are ignored. Uses status colors instead.

Fixed behavior:
<img width="896" height="202" alt="image"
src="https://github.com/user-attachments/assets/f14ed2c3-bb60-4b74-886d-6b409d338714"
/>

Italics and font weight are used properly. Status color is preserved for
the git blame status, but correct syntax colors are used for the inlay
hints.

Lauren Hinchcliffe created

daebc40 settings ui: Implement dynamic navbar based on pages section headers (#38915)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>

Anthony Eid and Ben Kunkle created

ecc35fc acp: Fix `@mentions` when remoting from Windows to Linux (#38882)

Click to expand commit body
Closes #38620

`Url::from_file_path` and `Url::from_directory_path` assume the path
style of the target they were compiled for, so we can't use them in
general. So, switch from `file://` to encoding the absolute path (for
mentions that have one) as a query parameter, which works no matter the
platforms. We'll still parse the old `file://` mention URIs for
compatibility with thread history.

Release Notes:

- windows: Fixed a crash when using `@mentions` in agent threads when
remoting from Windows to Linux or WSL.

Cole Miller created

236006b settings_ui: Small UI improvements (#38911)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

39c4480 terminal: Trace terminal events (#38896)

Click to expand commit body
Tracing terminal events can now be enabled using typical `RUST_LOG`
invocation:

```
RUST_LOG=info,terminal=trace,alacritty_terminal=trace cargo run
```

Release Notes:

- N/A

Jakub Konka created

48aac2a settings_ui: Add dropdown component + other fixes (#38909)

Click to expand commit body
Closes #ISSUE

Release Notes:

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

Ben Kunkle created

ae036f8 Read env vars in TestScheduler::many (#38897)

Click to expand commit body
This allows ITERATIONS and SEED environment variables to override the
hard coded values during testing.

cc @ConradIrwin @as-cii 

Release Notes:

- N/A

---------

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

Nathan Sobo and Conrad Irwin created

de1de25 keymap_editor: Fix filter input element alignment (#38895)

Click to expand commit body
# Why

I have spotted that Keymap Editor filter input (editor) is misaligned
vertically.

# How

Switch the input wrapper to flex layout, use `items_center` to align
editor vertically in center of the wrapper.

Release Notes:

- Fixed Keymap Editor filter input alignment

# Test plan

I have tested the change locally and compared the UI before and after,
to make sure that change does not affect the size of the wrapper
element.

### Before

<img width="1622" height="428" alt="Screenshot 2025-09-25 at 18 18 59"
src="https://github.com/user-attachments/assets/7d09be5c-6caf-4873-8ecf-2542851cb40a"
/>

### After

<img width="1622" height="428" alt="Screenshot 2025-09-25 at 18 07 18"
src="https://github.com/user-attachments/assets/540fcb3e-691d-4fb7-8130-2ed45ddc0adc"
/>

Bartosz Kaszubowski created

18fc951 Fix flaky `test_remote_resolve_path_in_buffer` test (#38903)

Click to expand commit body
Release Notes:

- N/A

Cole Miller created

40138e1 windows: Make `ctrl-n` open a new terminal when in a terminal (#38900)

Click to expand commit body
This is how `ctrl-n` works on macOS. Right now `ctrl-n` on Windows with
the default keymap usually causes a new buffer to open, which is
inconvenient.

Release Notes:

- N/A

Cole Miller created

e7a5c81 Improve media-creation flow in release process (#38902)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

d98175c Update release process docs to reflect new process (#38892)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

bc7d804 remote: Don’t pass `--method=GET` to `wget` (#38771)

Click to expand commit body
BusyBox's off brand `wget` does not have support for the `--method`
argument, which makes `zed` incapable of downloading the remote server
unless the _☙authentic❧_ one is installed. Removing this should fix the
issue. Couldn't find much about guidelines on how the code is supposed
to be formatted, so I opted for commenting the line out with an
explanation.

Closes #38712

Release Notes:

- Fixed remote development on BusyBox

313838373473747564656e74766775 created

50bb8a4 gpui: Add tab group (#38531)

Click to expand commit body
Closes #ISSUE

Co-Authored-By: Mikayla <mikayla@zed.dev>
Co-Authored-By: Anthony <anthony@zed.dev>
Co-Authored-By: Kate <kate@zed.dev>

Release Notes:

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

---------

Co-authored-by: Kate <kate@zed.dev>
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Anthony <anthony@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>

Ben Kunkle , Kate , Mikayla , Anthony , and Mikayla Maki created

b2b90b0 zeta2: Add prompt format option to inspector (#38884)

Click to expand commit body
Adds the new prompt format option to the inspector view


Release Notes:

- N/A

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>

Agus Zubiaga and Bennet Bo Fenner created

c0f56f5 zeta2: Test prediction request (#38794)

Click to expand commit body
Release Notes:

- N/A

---------

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>

Agus Zubiaga and Bennet Bo Fenner created

a9fe18f Revert "gpui: Flash menu in menubar on macOS when action is triggered (#38588)" (#38880)

Click to expand commit body
This reverts commit ed7bd5a8ed6cbda563c4e6f1acb66e13f545718b.

We noticed this PR causes the editor to hang if you hold down any of the
menu item actions like ctrl+z, ctrl+x, etc


Release Notes:

- Fixed macOS menu item actions hanging the editor when their key
combination is held down

Lukas Wirth created

3c5e683 Fix experimental audio, add denoise, auto volume.Prep migration (#38874)

Click to expand commit body
Uses the previously merged denoising crate (and fixes a bug in it that
snug in during refactoring) to add denoising to the microphone input. 

Adds automatic volume control for microphone and output.

Prepares for migrating to 16kHz SR mono:
The experimental audio path now picks the samplerate and channel count depending on a setting. It can handle incoming streams with both the current (future legacy) and new samplerate & channel count. These are url-encoded into the livekit track name

Release Notes:

- N/A

David Kleingeld created

783ba38 Fix script/zed-local on Windows (#38832)

Click to expand commit body
There's a mismatch between the URL used here and the one that's referred
to in `build_zed_cloud_url`, which prevents using the script on Windows.

A previous PR changed the script to use `127.0.0.1` instead of
`localhost` because of supposed URL parsing issues, but we were unable
to reproduce those.

Release Notes:

- N/A

Cole Miller created

e72021a Implement perceptual gamma / contrast correction for Linux font rendering (#38862)

Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/7992
Port of https://github.com/zed-industries/zed/pull/37167 to Linux

When using Blade rendering (Linux platforms and self-compiled builds
with the Blade renderer enabled), Zed reads `ZED_FONTS_GAMMA` and
`ZED_FONTS_GRAYSCALE_ENHANCED_CONTRAST` environment variables for the
values to use for font rendering.

`ZED_FONTS_GAMMA` corresponds to
[getgamma](https://learn.microsoft.com/en-us/windows/win32/api/dwrite/nf-dwrite-idwriterenderingparams-getgamma)
values.
Allowed range [1.0, 2.2], other values are clipped.
Default: 1.8

`ZED_FONTS_GRAYSCALE_ENHANCED_CONTRAST` corresponds to
[getgrayscaleenhancedcontrast](https://learn.microsoft.com/en-us/windows/win32/api/dwrite_1/nf-dwrite_1-idwriterenderingparams1-getgrayscaleenhancedcontrast)
values.
Allowed range: [0.0, ..), other values are clipped.
Default: 1.0

Screenshots (left is Nightly, right is the new code):

* Non-lodpi display

With the defaults:

<img width="2560" height="1600" alt="image"
src="https://github.com/user-attachments/assets/987168b4-3f5f-45a0-a740-9c0e49efbb9c"
/>


With `env ZED_FONTS_GRAYSCALE_ENHANCED_CONTRAST=7777`: 

<img width="2560" height="1600" alt="image"
src="https://github.com/user-attachments/assets/893bc2c7-9db4-4874-8ef6-3425d079db63"
/>


Lodpi, default settings:
<img width="3830" height="2160" alt="image"
src="https://github.com/user-attachments/assets/ec009e00-69b3-4c01-a18c-8286e2015e74"
/>

Lodpi, font size 7:
<img width="3830" height="2160" alt="image"
src="https://github.com/user-attachments/assets/f33e3df6-971b-4e18-b425-53d3404b19be"
/>


Release Notes:

- Implement perceptual gamma / contrast correction for Linux font
rendering

---------

Co-authored-by: localcc <work@localcc.cc>

Kirill Bulatov and localcc created

f25ace6 zeta2 cli: Output raw request (#38876)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Co-authored-by: Oleksiy Syvokon <oleksiy.syvokon@gmail.com>

Agus Zubiaga , Bennet Bo Fenner , and Oleksiy Syvokon created

c627543 assistant_context: Fix `thread_summary_model` not getting used in Text Threads (#38859)

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

Release Notes:

- Fixed an issue in Text Threads where it was using `default_model` even
in case `thread_summary_model` was set.

---------

Signed-off-by: Umesh Yadav <git@umesh.dev>

Umesh Yadav created

f303a46 acp: Use ACP error types in read_text_file (#38863)

Click to expand commit body
- Map path lookup and internal failures to acp::Error 
- Return INVALID_PARAMS for reads beyond EOF

Release Notes:

- acp: Return more informative error types from `read_text_file` to
agents

Ben Brandt created

a9def81 Adjust keymap to not conflict with the french keyboard layout (#38868)

Click to expand commit body
Closes #38382 

Release Notes:

- N/A

localcc created

6580eac auto_update: Unmount update disk image in the background (#38867)

Click to expand commit body
Release Notes:

- Fixed potentially temporarily hanging on macOS when updating the app

Lukas Wirth created