Repository navigation
WIP: compare branches - #1
Draft
Echsecutor wants to merge 45 commits into
Draft
Echsecutor wants to merge 45 commits into
Echsecutor wants to merge 45 commits into
Conversation
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
…ries#55091) Cherry-pick of zed-industries#55089 into Preview Release Notes: - N/A
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>
… (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>
…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>
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
aiming to improve zed-industries#55085