c34b24b
open_ai: Fix issues with OpenAI compatible APIs (#32982)
Click to expand commit body
Ran into this while adding support for Vercel v0s models:
- The timestamp seems to be returned in Milliseconds instead of seconds
so it breaks the bounds of `created: u32`. We did not use this field
anywhere so just decided to remove it
- Sometimes the `choices` field can be empty when the last chunk comes
in because it only contains `usage`
Release Notes:
- N/A
Bennet Bo Fenner
created
05f944b
Add up and down global bindings for `menu::SelectNext` and `menu::SelectPrevious` (#32981)
Click to expand commit body
Closes https://github.com/zed-industries/zed/discussions/32587
Release Notes:
- Fixed Linux keybindings not having up/down keys bound for menu
navigation
Kirill Bulatov
created
629bd42
agent: Add ability to change the API base URL for OpenAI via the UI (#32979)
Click to expand commit body
The `api_url` setting is one that most providers already support and can
be changed via the `settings.json`. We're adding the ability to change
it via the UI for OpenAI specifically so it can be more easily connected
to v0.
Release Notes:
- agent: Added ability to change the API base URL for OpenAI via the UI
---------
Co-authored-by: Bennet Bo Fenner <53836821+bennetbo@users.noreply.github.com>
Danilo Leal
and
Bennet Bo Fenner
created
ab189b8
vim: Fix escape key switching back to default mode instead of normal mode (#31843)
Click to expand commit body
Closes #31728
This PR introduced new setting `"helix_mode"`. Enabling which will
enable the `vim_mode` along with `helix` behavior.
This solves issue where `vim`'s `default_mode` was being used to switch
between mode instead of opening in `default_mode`.
When `helix_mode` is enabled switcing to `Normal mode` will now switch
to `HelixNormal`
Release Notes:
- Fixed - escape key not switching to normal mode when default_mode is
insert
- Added - `helix_mode` setting to enable/disable helix key bindings
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Related to #32888, but will not fix the issue.
Turns out these assertions are wrong (Not sure if they were correct at
some point).
I tested with this code:
```
request = LanguageModelRequest {
messages: vec![
LanguageModelRequestMessage {
role: Role::User,
content: vec![MessageContent::Text("Give me 10 jokes".to_string())],
cache: false,
},
LanguageModelRequestMessage {
role: Role::Assistant,
content: vec![MessageContent::Text("Sure, here are 10 jokes:".to_string())],
cache: false,
},
],
..request
};
```
The API happily accepted this and Claude proceeded to tell me 10 jokes.
Release Notes:
- N/A
Bennet Bo Fenner
created
72a3292
Add a small script to make debugging the CLI easier (#32971)
Document the `lsp.rust-analyzer.binary.arguments` setting (currently
incorrectly referred to as `args`)
Verify:
https://github.com/zed-industries/zed/blob/99215f7660a722461792e49cb920bfda5c801286/crates/extension_api/wit/since_v0.1.0/settings.rs#L24-L29
Question: can such inconsistencies be avoided by automatically
documenting the config using a preprocessor?
Release Notes:
- N/A
Artem Zhurikhin
created
fdd307c
collab: Add automatic install of minio deb or rpm to script/bootstrap (#32968)
Click to expand commit body
Release Notes:
- N/A
Michael Sloan
created
c1d0d72
Fix a bug where --diff wouldn't open the diff (#32962)
Click to expand commit body
Release Notes:
- Fixed a bug where `zed --diff A B` wouldn't open a diff
- **debugger: Add debugger onboarding modal (wip)**
- **woops**
Release Notes:
- debugger: Added the onboarding modal.
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Julia Ryan <p1n3appl3@users.noreply.github.com>
Piotr Osiewicz
,
Danilo Leal
, and
Julia Ryan
created
99215f7
debugger: Run debug scenarios from package.json (#32958)
Click to expand commit body
Release Notes:
- New session modal for a debugger will now show tasks from package.json
as debuggable scenarios
---------
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Piotr Osiewicz
,
Remco Smits
, and
Anthony Eid
created
73fee01
docs: Remove beta tag from Debugger (#32950)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
74aa227
Wait for source maps when setting TypeScript breakpoints (#32954)
Click to expand commit body
Closes #ISSUE
Release Notes:
- debugger: Fix setting breakpoints in typescript code when debugging
compiled javascript
Conrad Irwin
created
d0e909e
Add Anthropic ZDR to AI improvement documentation (#32955)
aa9daca
editor: Log error instead of panic on index out of bounds for line layouts (#32953)
Click to expand commit body
Closes #30191
`line_ix` should never exceed the bounds of `line_layouts`, but a panic
happens on out-of-bounds for this, which seems weird. I couldn’t
reproduce this panic at all. Since this is for displaying inline blame,
we now log an error if this occurs instead of panicking.
Release Notes:
- N/A
Todo:
* [x] Open diffed files as regular buffers
* [x] Update diff when buffers change
* [x] Show diffed filenames in the tab title
* [x] Investigate why syntax highlighting isn't reliably handled for old
text
* [x] remove unstage/restore buttons
Release Notes:
- Adds `zed --diff A B` to show the diff between the two files
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Co-authored-by: Agus Zubiaga <agus@zed.dev>
Conrad Irwin
,
Max Brunsfeld
,
Ben Brandt
, and
Agus Zubiaga
created
2f52e2d
debugger: Fix a few issues with JS debugging (#32918)
Click to expand commit body
- Don't assume all located tasks come from our test runnables
- Run tests from the right working directory
- Scope forking behavior customization for jest and vitest more tightly,
to just our test runnables
- Standardize on `$PACKAGE_MANAGER exec -- $TEST_LIBRARY ...` to fix
runnables not working with npm
Release Notes:
- Debugger Beta: Fixed issues with debugging tasks from package.json and
test runnables.
This PR releases v0.6.0 of the Zed extension API.
Support for this version of the extension API will land in Zed v0.192.x.
Release Notes:
- N/A
Marshall Bowers
created
8e40318
debugger: Show child sessions as indented and ensure they're next to the parent session (#32939)
Click to expand commit body
Closes #ISSUE
Release Notes:
- debugger: Tweaked how child sessions are shown in the session list.
Piotr Osiewicz
created
131f285
editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928)
Click to expand commit body
Closes #32756
- Uses `filter_text` from LSP source to filter items in completion list.
This fixes noisy lists like on typing `await` in Rust, it would suggest
`await.or`, `await.and`, etc., which are bad suggestions. Fallbacks to
label.
- Add `penalize_length` flag to fuzzy matcher, which was the default
behavior across. Now, this flag is set to `false` just for code
completion fuzzy matching. This fixes the case where if the query is
`unreac` and the completion items are `unreachable` and
`unreachable!()`, the item with a shorter length would have a larger
score than the other one, which is not right in the case of
auto-complete context. Now these two items will have the same fuzzy
score, and LSP `sort_text` will take over in finalizing its ranking.
- Updated test to be more utility based rather than example based. This
will help to iterate/verify logic faster on what's going on.
Before/After:
await:
<img width="600" alt="before-await"
src="https://github.com/user-attachments/assets/384138dd-a90d-4942-a430-6ae15df37268"
/>
<img width="600" alt="after-await"
src="https://github.com/user-attachments/assets/d05a10fa-bae5-49bd-9fe7-9933ff215f29"
/>
iter:
<img width="600" alt="before-iter"
src="https://github.com/user-attachments/assets/6e57ffe9-007d-4b17-9cc2-d48fc0176c8e"
/>
<img width="600" alt="after-iter"
src="https://github.com/user-attachments/assets/a8577a9f-dcc8-4fd6-9ba0-b7590584ec31"
/>
opt:
<img width="600" alt="opt-before"
src="https://github.com/user-attachments/assets/d45b6c52-c9ee-4bf3-8552-d5e3fdbecbff"
/>
<img width="600" alt="opt-after"
src="https://github.com/user-attachments/assets/daac11a8-9699-48f8-b441-19fe9803848d"
/>
Release Notes:
- Improved code completion filtering to provide fewer and more accurate
suggestions.
Smit Barmase
created
65067da
debugger: Add breakpoint list to the empty state of debug panel (#32930)
Click to expand commit body

Release Notes:
- Debugger: Added breakpoint list to the empty debug panel
Piotr Osiewicz
created
d8eb341
Fix bug where prior LSP completions can be displayed after trigger char (#32927)
Click to expand commit body
Bug in #31872
Closes #32774
Release Notes:
- Fixed a bug in LSP completions caching where prior completions may be
used when they should not, after typing a trigger char like `.`
Michael Sloan
created
70aab39
docs: Add light formatting changes to the Debugger page (#32919)
Click to expand commit body
Just some tiny little formatting improvement opportunities I stumbled
upon while working on the marketing stuff for the debugger.
Release Notes:
- N/A
Danilo Leal
created
bfffc29
debugger: Parse and highlight text with ANSI escape sequences (#32915)
Click to expand commit body
Relanding #32817 with an improved approach, bugs fixed, and a test.
Release Notes:
- N/A
Cole Miller
created
4da5818
windows: Fix client area is treated as non-client area when window is fullscreen (#32916)
For me this is a panic that started occurring today in my use of Zed.
The repro is to type `ctrl-x` to start a pending key sequence and then
close the collab side panel with the mouse. The issue is that
dispatching the action based on pending keystrokes uses the same
`DispatchNodeId` as when the 1 second timer was started.
`DispatchNodeId` is not stable across frames. This also means that the
wrong `DispatchNodeId` can be used in the non-panicing case, potentially
causing the action to not occur.
The mystery here is why did this only start happening now in my use of
Zed, and why isn't it showing up in the panics dashboard / issue
reports.
Panic looks like
```
{
"thread": "main",
"payload": "index out of bounds: the len is 467 but the index is 1861",
"location_data": {
"file": "crates/gpui/src/key_dispatch.rs",
"line": 519
},
"backtrace": [
"zed::reliability::init_panic_hook::{{closure}}::he1d8257b19b16eec+155265758",
"std::panicking::rust_panic_with_hook::h33b18b24045abff4+128544307",
"std::panicking::begin_panic_handler::{{closure}}::hf8313cc2fd0126bc+128543530",
"std::sys::backtrace::__rust_end_short_backtrace::h57fe07c8aea5c98a+128537145",
"__rustc[95feac21a9532783]::rust_begin_unwind+128542669",
"core::panicking::panic_fmt::hd54fb667be51beea+9456688",
"core::panicking::panic_bounds_check::h1a9bf3d94de0fc80+9457170",
"gpui::key_dispatch::DispatchTree::dispatch_path::hce77d277881569bf+73992023",
"gpui::app::App::spawn::{{closure}}::hb1e79bbbdead3012+73687056",
"async_task::raw::RawTask<F,T,S,M>::run::hd13f66f99bb24bbd+70694231",
"<gpui::platform::linux::x11::client::X11Client as gpui::platform::linux::platform::LinuxClient>::run::h5a92ddaaf9a06dd1+74465138",
"gpui::platform::linux::platform::<impl gpui::platform::Platform for P>::run::hd19ac52b2d94268e+74064525",
"gpui::app::Application::run::hee83110c717a5af0+151862692",
"zed::main::hca7e2265584c4139+153307630",
"std::sys::backtrace::__rust_begin_short_backtrace::h2e04f4034c2d82c5+153146899",
"std::rt::lang_start::{{closure}}::h91cf1ca0eeae23ae+154454121",
"std::rt::lang_start_internal::h418648f91f5be3a1+128467809",
"main+153326748",
"__libc_start_call_main+25056432783818",
"__libc_start_main_impl+25056432784011",
"_start+12389486"
],
"app_version": "0.190.6",
"app_commit_sha": "9a2dcbbe244407fed51d61f38e4a4a59ec1cccc6",
"release_channel": "stable",
"target": "x86_64-unknown-linux-gnu",
"os_name": "Linux X11",
"os_version": "ubuntu 24.04",
"architecture": "x86_64",
"panicked_on": 1750185799233,
"system_id": "abae7201-61fb-442b-922b-202071ae81c0",
"installation_id": "69a0fb9a-11a2-4065-ad8c-b281e68525ad",
"session_id": "bc5b5f2f-e4c3-44a8-948e-c0550a2e2ef2"
}
```
Release Notes:
- Fixed a rare panic / potential incorrect action dispatch when a
pending keysequence is applied after the 1 second timer elapsing.
Continuing this work from a while back in #21079, now greatly aided by
agent + sonnet 4. With this change, there are now only a few spots that
explicitly panic, though errors during initialization will panic.
Motivation was this recent user panic in `handle_event`, figured fixing
all this use of unwrap was a great use of the agent.
> called `Result::unwrap()` on an `Err` value: X11 GetProperty for
_NET_WM_STATE failed.
Release Notes:
- N/A
Closes #21700
Release Notes:
- Added caps lock support and show a warning if the user is entering an
SSH password with Caps Lock enabled
---------
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: 张小白 <364772080@qq.com>
Maxim Zaks
,
Mikayla Maki
,
Mikayla Maki
, and
张小白
created
Updates google_ai to use latest model information from the respective
model cards: https://ai.google.dev/gemini-api/docs/models
Release Notes:
- google: Update to latest Gemini 2.5 models
Release Notes:
- debugger: Now available for everyone!
Conrad Irwin
created
8883885
debugger: Improve debugger panel empty state (#32889)
Click to expand commit body
Before:

After:

Release Notes:
- N/A (Beta: Improved the debugger panel when there are no currently
active sessions)
Nate Butler
created
dbc4ccd
vim: Implement `[ e` and `] e` from vim-unimpaired (#32851)
Click to expand commit body
From [this
discussion](https://github.com/zed-industries/zed/discussions/30757).
The default vim keymap already implements some of [vim-unimpaired
keymaps](https://github.com/tpope/vim-unimpaired). I thought I could add
this one as well to move lines up and down.
Since the keymaps are in a plugin and not by default in vim, this might
be out of the scope. If you feel like this is the case, just close the
PR :)
Release Notes:
- vim: Added `[ e` and `] e` key bindings to move lines up and down.
Alejandro Fernández Gómez
created
6223d04
docs: Add note about enabling Copilot models in GitHub settings (#32885)
Click to expand commit body
Seen this in a bunch of issues now, so hopefully this will help.
Release Notes:
- N/A
Bennet Bo Fenner
created
c7dad1c
Use more conservative settings for the minimap display (#32878)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/31390
Release Notes:
- N/A
5405c2c
Standardize on u64 for token counts (#32869)
Click to expand commit body
Previously we were using a mix of `u32` and `usize`, e.g. `max_tokens:
usize, max_output_tokens: Option<u32>` in the same `struct`.
Although [tiktoken](https://github.com/openai/tiktoken) uses `usize`,
token counts should be consistent across targets (e.g. the same model
doesn't suddenly get a smaller context window if you're compiling for
wasm32), and these token counts could end up getting serialized using a
binary protocol, so `usize` is not the right choice for token counts.
I chose to standardize on `u64` over `u32` because we don't store many
of them (so the extra size should be insignificant) and future models
may exceed `u32::MAX` tokens.
Release Notes:
- N/A
Richard Feldman
created
a391d67
supermaven_api: Ensure downloaded Supermaven binary has executable permissions set (#32576)
Click to expand commit body
Closes #32068
Closes #15653
Not entirely sure that it fixes the latter issue, but I am fairly
certain given the comments in #32068 and the available logs in the
issue.
This PR fixes an issue where the Supermaven provider would not leave the
"Initializing" stage. This happened due to the downloaded binary missing
executable permissions. The change here ensures that freshly downloaded
binaries as well as existing binaries downloaded by Zed have executable
permissions set. I decided on also adding this for the latter since
existing downloads would continue to be broken and Supermaven does not
seem to change versions often given the logs provided by users.
While I was at it, I also added a `make_file_executable` to the util
crate mirroring the method of the `zed_extensions_api` and refactored
existing usages where possible to use that method instead. This makes
the code slightly more readable in my opinion, yet adds a method to
non-unix systems that practically does nothing. I can revert this should
that be preferred.
Release Notes:
- Fixed an issue where the Supermaven completion provider would not
leave the "Initializing" stage.
---------
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Finn Evers
and
Bennet Bo Fenner
created
dd850dc
Add note on Opus prompt consumption (#32872)
in #30347 bump blade version, recently I found in my windows platform,
after using zed some hours, whole system UI become hang, must reboot.
So I try bump blade and then recompile, I found this problem disappear,
I really don't known why.
Release Notes:
- N/A