Skip to content

WIP: compare branches - #1

Draft
Echsecutor wants to merge 45 commits into
european-epc-competence-center:fixing_reasoning_contextfrom
infused-kim:fork
Draft

Echsecutor wants to merge 45 commits into
european-epc-competence-center:fixing_reasoning_contextfrom
infused-kim:fork

Conversation

@Echsecutor

Copy link
Copy Markdown
Member

aiming to improve zed-industries#55085

JosephTLyons and others added 13 commits April 28, 2026 09:39
Updates `crates/zed/RELEASE_CHANNEL` from `dev` to `preview` to activate
the `v1.1.x` branch as the new preview release channel.

Release Notes:

- N/A
…) (zed-industries#55184)

Cherry-pick of zed-industries#55155 to preview

----
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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable


Release Notes:

- N/A

Co-authored-by: Agus Zubiaga <agus@zed.dev>
…(cherry-pick to preview) (zed-industries#55192)

Cherry-pick of zed-industries#55079 to preview

----
Starting ~3 weeks ago, `output` no longer contains the cursor marker,
cloud strips it on parsing. Instead, it should return a cursor offset.


Release Notes:

- Fixed moving the cursor to a predicted position in Zeta 2

Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
…rry-pick to preview) (zed-industries#55193)

Cherry-pick of zed-industries#55152 to preview

----
We already enabled the feature flag, but that only applies to logged in
users. Going to make sure that everyone gets the new tool as long as the
model supports it.

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- agent: Improve edit tool performance for models that support streaming
tool calls.

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
…s#55166) (cherry-pick to preview) (zed-industries#55196)

Cherry-pick of zed-industries#55166 to preview

----
Self-Review Checklist:

- [ ] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [ ] Performance impact has been considered and is acceptable

Release Notes:

- N/A

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
…y-pick to preview) (zed-industries#55327)

Cherry-pick of zed-industries#55323 to preview

----
We were storing a cursor hidden boolean in the window state, but that
state is actually global to the application.

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable


Release Notes:

- N/A

Co-authored-by: Agus Zubiaga <agus@zed.dev>
…cherry-pick to preview) (zed-industries#55410)

Cherry-pick of zed-industries#55288 to preview

----
gpt-5.5 likes to call the `now` tool with upper-case "UTC", leading to
this error:

> Failed to receive tool input: tool input was not fully received


Release Notes:

- N/A

Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
… (cherry-pick to preview) (zed-industries#55499)

Cherry-pick of zed-industries#55498 to preview

----
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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- Fixed an issue where agent failed to apply edits in some cases

Co-authored-by: Agus Zubiaga <agus@zed.dev>
…erry-pick to preview) (zed-industries#55511)

Cherry-pick of zed-industries#55510 to preview

----
zed-industries#53609 introduced a regression where Git Graph keybindings could take
precedence over the search bar. As a result, typing characters like `j`
or `k` in the search field could move the table selection instead of
updating the search query.

This PR fixes that regression by scoping Vim table navigation bindings
away from the search bar. It also adds dedicated `tab` and `shift-tab`
handling for Git Graph focus traversal, with the search bar and graph
table participating as separate tab groups.

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- N/A

Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
@Echsecutor Echsecutor self-assigned this May 4, 2026
@Echsecutor
Echsecutor marked this pull request as draft May 4, 2026 10:16
zed-zippy Bot and others added 6 commits May 4, 2026 11:21
… (cherry-pick to preview) (zed-industries#55627)

Cherry-pick of zed-industries#55608 to preview

----
Fixes ZED-73F

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>
…ustries#55604) (cherry-pick to preview) (zed-industries#55628)

Cherry-pick of zed-industries#55604 to preview

----
Fixes ZED-72Z

Release Notes:

- Fixed a panic in edit predictions

Co-authored-by: Lukas Wirth <lukas@zed.dev>
zed-industries#55610) (cherry-pick to preview) (zed-industries#55626)

Cherry-pick of zed-industries#55610 to preview

----
Fixes ZED-73M

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>
…one" (zed-industries#55144) (cherry-pick to preview) (zed-industries#55633)

Cherry-pick of zed-industries#55144 to preview

----
Reverts zed-industries#54899

Release notes:

- Reverted the "none" keymap to be literally nothing

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
…herry-pick to preview) (zed-industries#55638)

Cherry-pick of zed-industries#55629 to preview

----
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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- Fixed excerpts not matching in the agent diff when in the split view.

Co-authored-by: Cole Miller <cole@zed.dev>
…(cherry-pick to preview) (zed-industries#55647)

Cherry-pick of zed-industries#55644 to preview

----
We check `is_valid` by seeking to the first excerpt that is `>=` the
anchor, and comparing the anchor to the excerpt's start and end. But we
were missing a check for the case where seeking puts us on an excerpt
for a different buffer, for example when the anchor to be checked is
past the end of the context range for its buffer's last excerpt.

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- Fixed a panic in multibuffers.

Co-authored-by: Cole Miller <cole@zed.dev>
zed-zippy Bot and others added 7 commits May 4, 2026 16:47
…ry-pick to preview) (zed-industries#55679)

Cherry-pick of zed-industries#55667 to preview

----
Avoid reading the source debugger pane during SubView drop handling
because it may be the Pane currently being updated. Use the DraggedTab
item handle to validate the drop and capture the item id, leaving
source-pane reads to the deferred move. Add a regression test for a
stale SubView host pane during tab drop.

Fixes ZED-74F

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>
…iew) (zed-industries#55680)

Cherry-pick of zed-industries#55153 to preview

----
Fixes zed-industries#54830

This fixes a bugs where
* when there's no main worktree, we treated the first linked worktree as
main
* the titlebar and sidebar showed two different things when opening a
linked wortree directly

When there's no main worktree, our "project group key" will be the bare
repo path. For displaying this to the user, we try to present something
meaningful:
* If the bare repo is `foo.git`, we'll say "foo"
* If the bare repo is "bar/.bare", we'll "bar"

Release Notes:

- Fixed bugs in Zed's sidebar and titlebar when editing in git worktrees
created from bare repositories.

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
… (cherry-pick to preview) (zed-industries#55685)

Cherry-pick of zed-industries#51536 to preview

----
Closes zed-industries#50880 

When a git worktree linked via a `.git` file (e.g. `gitdir:
/repo/.git/worktrees/my-worktree`) was opened in Zed, entries in
`.git/info/exclude` were not respected. This is now fixed.

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Fixed `.git/info/exclude` not being respected when opening a secondary
git worktree



https://github.com/user-attachments/assets/f38df5dc-96eb-40a8-a77c-0932a2c8575b

---------

Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>

Co-authored-by: Fanteria <jiri.alexandrovic@gmail.com>
Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
…industries#55402) (cherry-pick to preview) (zed-industries#55686)

Cherry-pick of zed-industries#55402 to preview

----
Closes zed-industries#54824

Previously, we always assumed that `gitdir` was an absolute path. Also,
we did not correctly handle custom gitignore files that were configured
via separate git directories.

Release Notes:

- Fixed failure to recognize git repositories where `gitdir` was
expressed as a relative path.
- Fixed handling of gitignores in git repositories that use a separate
git dir.

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
…tries#55605) (cherry-pick to preview) (zed-industries#55694)

Cherry-pick of zed-industries#55605 to preview

----
We will not have any debug data for these anyways (and usually this
indicates someone else made a built that somehow points to our sentry
endpoint ...)

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>
…55664) (cherry-pick to preview) (zed-industries#55718)

Cherry-pick of zed-industries#55664 to preview

----
Instead of manually handing hiding the cursor on keyboard input at the
editor level, GPUI will now take care of it.

This makes it significantly easier to handle the edge cases, and allows
delegating the cursor restoration to the platform itself in the macOS
case. On Linux and Windows, we still have to restore the cursor on
movement ourselves, but this now happens at the platform-specific level.

Bugs fixed by this change:
- No cursor when "Unsaved edits" prompt appears
- Cursor disappears when clicking a panel button if it contains a search
bar (e.g. collab panel)

### Setting rename

The `hide_mouse` setting value `"on_typing_and_movement"` has been
renamed to `"on_typing_and_action"` to better reflect what it actually
does — it hides the cursor when a keystroke resolves to an action (e.g.
cursor movement, deletion). Existing settings are migrated
automatically.

### Tested platforms
- [x] macOS
- [x] Wayland
- [x] X11
- [x] Windows
- [x] Web

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- Renamed the `hide_mouse` setting value `on_typing_and_movement` to
`on_typing_and_action` to better describe its behavior (existing
settings are auto-migrated)
- Fixed a few situations where the mouse cursor would be incorrectly
hidden

Co-authored-by: Agus Zubiaga <agus@zed.dev>
zed-zippy Bot and others added 19 commits May 5, 2026 05:26
…es#55674) (cherry-pick to preview) (zed-industries#55729)

Cherry-pick of zed-industries#55674 to preview

----
Fixes ZED-687

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>
…ies#55715) (cherry-pick to preview) (zed-industries#55740)

Cherry-pick of zed-industries#55715 to preview

----
* Perform grouping even for repositories that have no main worktree
* Enable grouping for remote projects
* Delete entire project groups when deleting via the recent project
picker

Release Notes:

- Fixed a bug where each linked worktree appeared as its own entry in
recent projects for repositories without main worktrees
- Fixed a bug where deleting projects from the recent projects sometimes
appeared to have no effect.

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
…ies#55757) (cherry-pick to preview) (zed-industries#55765)

Cherry-pick of zed-industries#55757 to preview

----
Previously, we weren't waiting on the status future early enough so we
would just hang if we weren't able to start the agent process.

I also added the recent stderr logs in there to help the user debug the
issue, since it is likely relevant in these cases.

<img width="902" height="226" alt="image"

src="https://github.com/user-attachments/assets/204e42ff-4c9b-49e7-8a6d-ecf7b022fbd0"
/>


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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- acp: Improve error messages if the ACP agent fails to start.

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
…rry-pick to preview) (zed-industries#55772)

Cherry-pick of zed-industries#54880 to preview

----
Leftovers after zed-industries#53651

Updated models:
- **Zen**: GPT 5.5 and GPT 5.5 Pro - not tested because I don't have a
Zen subscription and I stubbornly refuse to get one
- **Go**: DeepSeek V4 Pro and DeepSeek V4 Flash - failing due to
anomalyco/opencode#24224
- **Go**: MiMo V2.5 and MiMo V2.5 Pro - tested, confirmed working
- **Free**: Ling 2.6 Flash, [available for "a limited
time"](https://x.com/opencode/status/2046717718028513694) - tested,
confirmed working
- **Free**: Hy3 Preview, [available until May
8](https://x.com/opencode/status/2047328981435756824) - tested,
confirmed working

When testing the new models and comparing with OpenCode CLI, I realized
the
[variants](https://opencode.ai/docs/models/#built-in-variants)/thinking
effort configuration was not supported by the Zed Agent implementation.
I added that for OpenCode Go models, after manually checking what each
model supports in OpenCode. Reasoning levels and everything seems to
work (UI looks good, model works) but I have no idea how to specifically
test reasoning levels without doing a full benchmark 🤷
I did not add the same thing for OpenCode Zen models because I could not
figure out a way to get the supported variants.
@benbrandt let me know if you want me to take this out of this PR and to
keep just the model updates!

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:
- OpenCode: add new models (GPT 5.5, DeepSeek V4, MiMo V2.5, Ling 2.6,
Hy3)
- OpenCode Go: add support for configurable reasoning effort levels

---------

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

Co-authored-by: Vlad Ionescu <Vlaaaaaaad@users.noreply.github.com>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
… (cherry-pick to preview) (zed-industries#55775)

Cherry-pick of zed-industries#55770 to preview

----
Lots of people are using `min-release-age` in their .npmrc files these
days.

I saw two options:

1. Force min-release-age=0 so we can always install the latest
2. Be more lenient in what we allow

I opted for 2, which means we convert `package@0.1.2` to
`package@<=0.1.2`. This means npm can find the latest version we can
that meets the user's requirements.

The downside is, the registry args/env may or may not work with the
resolved version, but that should at least surface better thanks to
zed-industries#55757

There is also the issue that npm will cache package metadata and an
older version it has cached would still resolve. However, once the
metadata is updated, npm does use the newer tarball at least, so it will
update eventually.

It's a tradeoff, but I'd rather start with this until we have a better
solution on the ACP registry, rather than have users be upset becaue we
installed packages in a way they didn't want.

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Closes
agentclientprotocol/claude-agent-acp#516

Release Notes:

- acp: Better support min-release-age settings for npx-based agents from
the registry

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
…ies#55574) (cherry-pick to preview) (zed-industries#55777)

Cherry-pick of zed-industries#55574 to preview

----
OpenCode API endpoints for DeepSeek were [moved from
Anthropic-compatible to
OpenAI-compatible](anomalyco/opencode#24500) and
DeepSeek requires interleaved reasoning enabled to work. I ran a
_"rename this variable to potato"_ test and I can confirm DeepSeek V4
Flash and Pro both work now 🎉

Some other OpenCode Go models were marked [on

models.dev](https://github.com/anomalyco/models.dev/tree/dev/providers/opencode-go/models)
as supporting `interleaved_reasoning` so they too got that enabled. Kimi
K2.5 and Kimi K2.6 continue to fail with
zed-industries#51743
(zed-industries#55085 seems to hint at this
being [an OpenCode

issue](zed-industries#51743 (comment))?),
but all other models seem to work fine both with `interleaved_reasoning`
and without it 🤷 I assume it's better to have that turned on? Again, the
intersection of OpenAI Chat Completions API, different models, different
inference providers, how they all work together is something I know
nothing about!

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [X] Performance impact has been considered and is acceptable

Release Notes:
- OpenCode Go: use correct DeepSeek endpoints
- OpenCode: add support for interleaved_reasoning

Co-authored-by: Vlad Ionescu <Vlaaaaaaad@users.noreply.github.com>
…55783) (cherry-pick to preview) (zed-industries#55786)

Cherry-pick of zed-industries#55783 to preview

----
We had a regression where the labels were being rendered as markdown,
which is usually not what you want on a command

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- N/A

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
… (cherry-pick to preview) (zed-industries#55785)

Cherry-pick of zed-industries#55780 to preview

----
Pasting text or an image into a queued-message editor used to be a
silent no-op for text and a panic for images.

This change makes pasting into a queued message behave like typing into
one: the queued message is promoted into the main editor at the cursor
position, and the paste is then applied there.

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Closes zed-industries#55521

Release Notes:

- Fixed a crash when pasting an image into a queued message

Co-authored-by: Agus Zubiaga <agus@zed.dev>
…d-industries#55053) (cherry-pick to preview) (zed-industries#55790)

Cherry-pick of zed-industries#55053 to preview

----
## Summary

Fixes the `git: worktree` popup showing no worktrees when a project is
opened at the parent of a `.bare` directory (the common
bare-clone-with-sibling-worktrees layout).

## What's fixed

- `crates/git/src/repository.rs`
- New `git_binary_for_worktree_list` helper that uses
`repository.path()` as the working directory when `workdir()` is `None`.
  - `worktrees()` switched to the new helper.
- `parse_worktrees_from_str` accepts bare entries without a `HEAD` line.
  
- Tests
- Unit test: parser handles a bare entry with no `HEAD` followed by a
normal worktree entry.
- Integration test: full `.git`-file → `.bare` + sibling worktrees
layout (`main`, `feature-a`, `feature-b`) is listed correctly via the
real `git` binary.

UI rendering already gates on empty sha (`worktree_picker.rs` uses
`.when(!sha.is_empty(), ...)`), so the bare entry's empty sha renders
without artifacts.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments — N/A, no `unsafe`
- [x] The content is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable — same
single `git worktree list --porcelain` invocation, no extra work

#### Closes zed-industries#54824

Video 

[Screencast from 2026-04-28

09-43-45.webm](https://github.com/user-attachments/assets/e414d546-eb61-4cb2-857e-3c392f416f96)


Release Notes:

- Fixed the `git: worktree` popup listing no worktrees when a project
was opened at the parent of a `.bare` directory
(bare-clone-with-sibling-worktrees layout).

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>

Co-authored-by: Om Chillure <omchillure4@gmail.com>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
…iew) (zed-industries#55812)

Cherry-pick of zed-industries#55611 to preview

----
Pulls in latest cranelift and wasmtime to address security and bug fixes
(to hopefully address some panics on windows in wasmtime)

Release Notes:

- N/A

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
…iew) (zed-industries#55817)

Brings in backported fixes to solve some panics we've been seeing

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- N/A
…ries#55630) (cherry-pick to preview) (zed-industries#55859)

Cherry-pick of zed-industries#55630 to preview

----
Fixes ZED-5K1

Release Notes:

- Fixed a panic on windows when a monitor disappears from windows
monitor enumeration

---------

Co-authored-by: John Tur <john-tur@outlook.com>

Co-authored-by: Lukas Wirth <lukas@zed.dev>
Co-authored-by: John Tur <john-tur@outlook.com>
…g callback handlers (zed-industries#55683) (cherry-pick to stable) (zed-industries#55942)

Cherry-pick of zed-industries#55683 to stable

----
In zed-industries#54481, the `handle_event` function was altered to check for an
`Access` event after the callbacks were acquired via a global state
lock. The lock/Vec-collect has enough overhead (or maybe there's enough
lock contention?) that the handler isn't performant enough to keep up
with the volume of inotify events, and its queue fills up, resulting in
[a rescan event getting

emitted](https://github.com/notify-rs/notify/blob/79007aefb41d9f853d00656eb768600e3ea41ee0/notify/src/inotify.rs#L304-L306),
which presumably results in *more* access events for the file as it's
rescanned, which further serve to fill up the inotify queue.

Moving the check for an `Access` event and returning before doing
anything remotely expensive seems to resolve the issues I've been having
lately. Not sure if it addresses the original issue in zed-industries#53480 though.

Longer-term, it might be prudent to do the event handler's heavy-lifting
in a separate thread with its own event queue, and let the handler
passed to the `notify` crate be just a dumb `tx` sender.

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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Related to zed-industries#53480
Fixes zed-industries#55829 

Release Notes:

- Fixed inotify event queue overflows on linux

Co-authored-by: Josh Robson Chase <josh@robsonchase.com>
…(cherry-pick to stable) (zed-industries#55947)

Cherry-pick of zed-industries#55938 to stable

----
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 is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

zed-industries#55770 changed the npm package version spec to `package@<=1.2.3`. On
Windows this fails with `The system cannot find the file specified.`
because:

- `npm` resolves to `npm.cmd`, a batch file. Windows runs `.cmd` files
via cmd.exe, which parses the invocation and treats unquoted `<` as
input redirection.
- The single quotes our shell builder emits around args are PowerShell
string-literal syntax that PS strips during parsing. PS only re-adds
CRT-style transport quotes around native command args containing
whitespace, so `package@<=0.25.3` reaches `npm.cmd` bare and cmd.exe
fails before the batch body even runs.

Switch to npm's hyphen-range syntax (`0.0.0 - <version>`, equivalent to
`<=<version>`), which has no `<`.

Closes zed-industries#55921

Release Notes:

- Fixed ACP agents failing to launch on Windows with "The system cannot
find the file specified"

Co-authored-by: Agus Zubiaga <agus@zed.dev>
)

commit 31b75fc
Author: Kim Streich <kim@infusedinsight.com>
Date:   Sun May 3 21:18:43 2026 -0600

    Do not send max output tokens

commit 7f13aad
Author: Kim Streich <kim@infusedinsight.com>
Date:   Sun May 3 20:18:27 2026 -0600

    Use Codex-style localhost OAuth callback

commit e17f0c9
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Tue Apr 7 00:21:49 2026 -0400

    Address code review: shared OAuth callback server, auth lifecycle fixes, token counting

    - Extract OAuth callback server into http_client crate for reuse
    - HTML-escape oauth_callback_page parameters, add error styling
    - Update context_server to delegate to shared OAuth callback server
    - Rewrite openai_subscribed OAuth flow: ephemeral port, browser opens after listener
    - Add auth_generation counter to prevent stale refresh writes after sign-out
    - Make do_sign_out awaitable, cancel in-flight work immediately
    - Distinguish fatal (400/401/403) vs transient (5xx) refresh errors
    - Clear credentials on fatal refresh, keep on transient
    - Make authenticate() await initial credential load
    - Surface auth errors in ConfigurationView UI
    - Implement real token counting via tiktoken
    - Add tests for fatal/transient refresh, sign-out during refresh, authenticate-awaits-load

commit e7e0480
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 15:48:14 2026 -0400

    Show "Sign Out" instead of "Reset Key" for ChatGPT subscription

    The default ConfiguredApiCard button label is "Reset Key" which
    makes sense for API key providers but not for an OAuth session.

commit 77a1699
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 15:33:37 2026 -0400

    Add tests for credential refresh deduplication

    Three tests covering get_fresh_credentials:
    - test_concurrent_refresh_deduplicates: two concurrent callers with
      expired credentials only trigger one HTTP refresh call
    - test_fresh_credentials_skip_refresh: fresh credentials return
      immediately with no HTTP call
    - test_no_credentials_returns_no_api_key: missing credentials return
      the correct error variant

commit 5cc2619
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 15:24:45 2026 -0400

    Delegate model capabilities instead of hardcoding them

    The into_open_ai_response call was hardcoding
    supports_parallel_tool_calls=true and supports_prompt_cache_key=false
    instead of asking the model. This meant reasoning models like GPT-5
    Codex variants would incorrectly send parallel_tool_calls=true,
    which could cause API errors. Add the missing methods to ChatGptModel
    and delegate like the standard OpenAI provider does.

commit 1c83272
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 15:20:06 2026 -0400

    Remove section separator comments

commit c239aa3
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:51:54 2026 -0400

    Use gpui executor timer instead of disallowed smol::Timer

    smol::Timer::after is banned by a project-wide clippy lint. Pass
    the AsyncApp through to await_oauth_callback so it can use
    cx.background_executor().timer() instead.

commit 13633d8
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:47:07 2026 -0400

    Run cargo fmt on open_ai.rs

commit 52c2fcf
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:16:03 2026 -0400

    Share styled OAuth callback page between providers

    Add http_client::oauth_callback_page() that generates a nicely styled
    HTML page with Zed branding for OAuth callback responses. Use it in
    both the ChatGPT subscription provider and the MCP context server
    OAuth flow, replacing the unstyled inline HTML in both places.

    The template is parameterized on title and message so both callers
    get consistent styling that updates in one place.

commit 9fa174d
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:09:40 2026 -0400

    Update Cargo.lock for url dependency

commit a5d5c00
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:08:06 2026 -0400

    Read OAuth callback in a loop to handle TCP fragmentation

    A single read() could miss query parameters if the browser's HTTP
    request is split across TCP segments. Read in a loop until the
    header terminator is found.

commit 70397b9
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:07:08 2026 -0400

    Log error instead of silently returning 0 in now_ms

    If the system clock is before the UNIX epoch, the silent unwrap_or(0)
    would cause broken credential expiry behavior. Now the error is
    visible in logs.

commit 8cf2b99
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:06:29 2026 -0400

    Log warning when credential deserialization fails

    Previously a schema change or corruption would silently show the
    user as signed out. Now a log::warn helps diagnose the issue.

commit 9a37fde
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:05:50 2026 -0400

    Replace hand-rolled percent encoding with url crate

    The hand-rolled percent_decode was incorrect for multi-byte UTF-8
    (decoded each byte as an independent char). Use url::Url for building
    the auth URL and form_urlencoded::parse for decoding the callback
    query string. Remove both hand-rolled functions.

commit 3e95005
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:04:17 2026 -0400

    Extract email from JWT claims for display in config view

    The ConfigurationView shows 'Signed in as {email}' but the email
    was never populated. OpenAI's token endpoint doesn't include email
    at the top level — it's in the JWT id_token claims. Refactor
    extract_account_id into extract_jwt_claims that parses the JWT once
    and returns both account_id and email.

commit fc01fcd
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 14:02:22 2026 -0400

    Extract do_sign_in and do_sign_out free functions

    The ConfigurationView was duplicating sign-out logic (missing the
    sign_in_task cancellation) and constructing a throwaway provider for
    sign-in. Extract both into free functions so the provider and the
    view share the same implementation.

commit 6d34693
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 13:59:33 2026 -0400

    Cancel in-flight sign-in task on sign-out

    Dropping sign_in_task prevents a completing OAuth flow from writing
    credentials back into state after the user has signed out.

commit 1bf4149
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 13:59:03 2026 -0400

    Guard sign_in against concurrent invocations

    Early-return if a sign-in task is already in progress. Without this,
    a second call would drop the existing task (cancelling it while port
    1455 may still be bound) and the new task could fail to bind.

commit d8b786b
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 13:58:27 2026 -0400

    Use url::form_urlencoded for OAuth form body encoding

    Replace hand-rolled format! string interpolation with
    url::form_urlencoded::Serializer in exchange_code and refresh_token.
    The previous code didn't percent-encode the code, verifier, or
    refresh_token values, which would break if they contained &, =, or +.

commit 3909563
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 13:57:18 2026 -0400

    Add 2-minute timeout to OAuth callback listener

    If the user starts the sign-in flow but never completes it in the
    browser, the TCP listener on port 1455 would block forever. Race
    the accept against a 2-minute timer so the port is released and the
    UI gets a meaningful error.

commit c7e717c
Author: Richard Feldman <oss@rtfeldman.com>
Date:   Mon Apr 6 13:56:18 2026 -0400

    Deduplicate concurrent credential refresh with shared task

    Multiple concurrent stream_completion calls seeing expired credentials
    would all independently call refresh_token(). With OAuth rotating
    refresh tokens, the first refresh invalidates the old token, causing
    all subsequent concurrent refreshes to fail.

    Add a Shared<Task> to State so the first caller to notice expiry
    spawns the refresh task and subsequent callers join the same future.

commit e5bc197
Author: Richard Feldman <richard@zed.dev>
Date:   Mon Apr 6 14:01:06 2026 -0400

    openai_subscribed: Default to GPT-5.4

commit 6eca86f
Author: Richard Feldman <richard@zed.dev>
Date:   Mon Apr 6 14:00:27 2026 -0400

    openai_subscribed: Curate model list for Codex backend

    The Codex backend (chatgpt.com/backend-api/codex) only supports a subset
    of OpenAI models. Replace the open_ai::Model::iter() approach with a
    dedicated ChatGptModel enum listing only the models that work through
    the Codex backend, based on Roo Code's Codex model catalog:

    - gpt-5.4, gpt-5.4-mini
    - gpt-5.3-codex, gpt-5.3-codex-spark
    - gpt-5.2-codex, gpt-5.2
    - gpt-5.1-codex-max, gpt-5.1-codex, gpt-5.1-codex-mini, gpt-5.1
    - gpt-5-codex, gpt-5-codex-mini, gpt-5

    Older models (gpt-3.5-turbo, gpt-4, o1, o3, etc.) and the deprecated
    codex-mini-latest are removed since they aren't available through this
    backend.

commit 87771b3
Author: Richard Feldman <richard@zed.dev>
Date:   Mon Apr 6 13:45:25 2026 -0400

    openai_subscribed: Show all OpenAI models in ChatGPT Subscription provider

    - Replace the hardcoded CodexModel enum (3 models) with open_ai::Model,
      so all standard OpenAI models appear in the dropdown after signing in.
    - Add o4-mini as a proper variant in open_ai::Model.
    - Keep codex-mini-latest as a Custom model entry.
    - Add instructions field to responses::Request and extract system
      messages into it for the Codex backend (fixes 'Instructions are
      required' error).
    - Delegate to open_ai::Model for supports_images, max_output_tokens,
      count_tokens, and supports_parallel_tool_calls instead of hardcoding.

commit 48a9196
Author: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
Date:   Sat Apr 4 21:01:30 2026 +0000

    Autofix

commit 6d4d9d0
Author: morgankrey <morgan@zed.dev>
Date:   Sat Apr 4 15:42:40 2026 -0500

    Fix fmt: collapse single-line struct literal

commit 36b2d5f
Author: morgankrey <morgan@zed.dev>
Date:   Sat Apr 4 15:39:57 2026 -0500

    Fix clippy and fmt warnings in openai_subscribed provider

commit 49f4093
Author: morgankrey <morgan@zed.dev>
Date:   Sat Apr 4 15:16:53 2026 -0500

    Fix auth state reliability issues in ChatGPT subscription provider

    - Propagate refreshed credentials to in-memory State immediately after
      persisting, so subsequent requests don't redundantly refresh again
    - Clear sign_in_task when keychain write fails during OAuth, so the
      UI doesn't get stuck in a permanent "Signing in..." state

commit 30a776a
Author: morgankrey <morgan@zed.dev>
Date:   Sat Apr 4 14:26:28 2026 -0500

    Add ChatGPT subscription provider via OAuth 2.0 PKCE

    Adds a new language model provider that authenticates users with their
    ChatGPT Plus/Pro subscription using OpenAI's Codex CLI OAuth client,
    then routes requests to chatgpt.com/backend-api/codex/responses.

    - New openai_subscribed provider with OAuth PKCE sign-in flow
    - Stores credentials in the system keychain (access + refresh tokens)
    - Auto-refreshes tokens within 5 minutes of expiry
    - Exposes codex-mini-latest, o4-mini, and o3 models
    - Adds `store` field and `extra_headers` param to Responses API client
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants