Merge latest upstream Zed (256 commits, 2026-06-02 → 2026-06-12) - #61
Merged
Conversation
…8165) 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#58153 Release Notes: - Agent: Fixed image previews not being displayed after submitting a prompt and then hovering the mentioned image.
…tries#58359) The regression introduced in zed-industries#53453 where selecting a remote branch from the branch picker checked out the remote tracking ref directly, leaving the repository in detached HEAD state. Instead of creating a local branch that set the remote branch as it's upstream. The fix was reverting the old checks we did before zed-industries#53452 was merged to figure out if the branch was valid, remote only, local, or local without the upstream set. Depending on the type of reference it is Zed will check it out, or create/set the branch with remote tracking to its upstream branch. I also added a regression test to prevent this from happening again in the future 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
…ed-industries#58366) ## Context When the "Switch branch" picker is opened from the git commit modal and the user presses Enter, a `\n` character was inserted into the input instead of confirming the branch selection. The `"GitCommit > Editor"` keymap context bound `enter` to `editor::Newline`. This context matches *any* `Editor` descended from `GitCommit` in the element tree, including the single-line search editor inside the branch picker popover. Because a context-path binding is more specific than the global `enter: menu::Confirm` binding, it took precedence and the picker never received the confirm action. The commit message editor uses `EditorMode::AutoHeight` (reported in key context as `mode == auto_height`); the picker's search editor uses `EditorMode::SingleLine`. Narrowing the context to `"GitCommit > Editor && mode == auto_height"` restricts the `editor::Newline` binding to the commit message editor only. Single-line editors inside the same modal now fall through to the global `enter: menu::Confirm`, which correctly confirms the selection. Closes zed-industries#58022 ## How to Review Three identical one-line changes, one per platform keymap (`default-linux.json`, `default-macos.json`, `default-windows.json`): - `"GitCommit > Editor"` → `"GitCommit > Editor && mode == auto_height"` Video of manual test after fix : [Screencast from 2026-06-02 23-16-32.webm](https://github.com/user-attachments/assets/67652cc5-4f8d-42f4-a5a9-ade3499ee880) ## Self-Review Checklist - [x] I've reviewed my own diff for quality, security, and reliability - [ ] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the UI/UX checklist - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - Fixed Enter key inserting a newline instead of selecting a branch in the commit modal branch picker
Closes [zed-industries#58343](<zed-industries#58343>) This crash happened because Helix paste restored selection using the raw clipboard text length, but buffer edits normalize CRLF line endings to LF before inserting. When pasting CRLF text at or near EOF, the restored selection could extend past the normalized snapshot length and panic in `MutableSelectionsCollection::select_ranges`. The fix normalizes the text before measuring it for selection restoration and adds regression coverage for CRLF paste in Helix mode. 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 crash that could occur when pasting at the end of a file in Helix mode
This crash occurred because metion crease were using raw text ranges that were precomputed before calling editor.edit(), and didn't take into account that editor normalizes text inserted The fix is normalizing the text first, then using the normalize text range for the crease 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: - Fix a crash that could occur when adding a crease to the agent panel
…d-industries#55876) ## Summary This PR fixes horizontal jumping of the IME candidate window during text composition. On the shared `selected_bounds` path used by Windows, the candidate window no longer follows the preedit caret character-by-character. Instead, it anchors to the start of the current visual line, which keeps the candidate window stable while typing. Linux Wayland uses a different IME positioning path, so it was not affected by the original implementation in this PR. This PR now also includes a Wayland-specific adjustment so that Wayland uses the same visual-line anchoring behavior. ## Changes 1. **Shared / Windows path** Updated `selected_bounds` in `crates/gpui/src/platform.rs` to use a visual-line-aware anchor for preedit text. This removes the distracting horizontal movement of the candidate window while typing and keeps the anchor aligned with the active visual line. 2. **Linux Wayland path** Updated the Wayland IME area calculation in `crates/gpui_linux/src/linux/wayland/window.rs` to use the same visual-line-start anchoring strategy for preedit text. This brings Linux Wayland in line with the Windows behavior while preserving Wayland's platform-specific IME handling. ## Notes I had previously tried a separate Wayland-specific fix in 5d0c968, but later reverted it in 8cfe7a2 because the behavior was not good enough and it regressed the original positioning behavior. The current Wayland implementation is a new, simpler approach that keeps the original behavior intact while also removing horizontal candidate-window jumping. ## Visuals ### Windows / shared path * **Before the fix:** (The candidate box moves along with the preedit text, which is distracting) <img width="918" height="675" alt="before" src="https://github.com/user-attachments/assets/29cb05e4-3e99-4b54-9ce3-78710b307ce6" /> <img width="478" height="682" alt="before_1" src="https://github.com/user-attachments/assets/cff38b65-96dd-4ed7-b06b-7fbcd448fab9" /> * **After the fix:** (Candidate box stays fixed at the line start during typing, correctly jumps to new lines or follows active segments) <img width="918" height="675" alt="after" src="https://github.com/user-attachments/assets/4f50a710-dc0d-4959-a313-1184122ab759" /> <img width="478" height="683" alt="after_1" src="https://github.com/user-attachments/assets/8e9df121-ffcc-45ad-ba0b-f1ad3cef87bc" /> ### Linux Wayland * **Before / previous behavior** <img width="552" height="796" alt="before" src="https://github.com/user-attachments/assets/e3e84312-c626-41cb-945f-66c13aa96df6" /> * **After / current implementation** <img width="546" height="772" alt="after" src="https://github.com/user-attachments/assets/a01ab6d7-a3b6-4d56-a1cb-b2b112b6b914" /> --- ## 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 * [x] Tests cover the new/changed behavior (manual verification only) * [x] Performance impact has been considered and is acceptable Release Notes: - N/A
…ries#58346) This centralizes some repeated logic across `cloud_api_client`, to map generic request failures (`ConnectionFailed`, 401s) to errors and read response bodies, handling failures there too. Closes CLO-759. Release Notes: - N/A
This change adds metrics for evaluating editable context collectors and the collectors themselves: - `cursor excerpt`: small area around the cursor. - `current-file`: the full file that contains the cursor. - `edit-history`: excerpts around edit history edits. - `edit-history-file`: full files referenced by the edit history. - `git-log`: files related to the cursor file according to recent git co-change history. - `oracle-file`: full files referenced by the expected patches. This is an oracle/evaluation-only source because it uses the target patch. Individual collectors can be enabled by passing a comma-separated list like this: `ep context --type=edit-history,current-file`. There's also a preset, `--type=editable`, which will enable all collectors except oracle. This change also adds the `.prompt_input.related_files[0].excerpts[0].context_source` field. Editable context is only accessible via ep-cli for now. Release Notes: - N/A --------- Co-authored-by: Eric Holk <eric@zed.dev>
Closes zed-industries#46881 Depends on zed-industries#57276. Implements `GoRunnableResolver` to post-process table test matches. The resolver picks the correct string field by comparing against the field used in `t.Run(tc.<field>, ...)`. Release Notes: - Fixed Go table tests not showing run buttons in files with many test cases.
Release Notes: - N/A
…zed-industries#58402) channels_with_threads opened a fresh SQLite connection per release-channel database on every call, and the sidebar called it twice per frame from its render path, blocking the render loop on disk I/O. Run the per-channel checks on a background thread and cache the resulting channel names once at sidebar construction, since the per-channel databases cannot change while this process runs. Release Notes: - Fixed a cause of stutters in the agent panel sidebar rendering
…ndustries#58327) Finally continuing from PR zed-industries#35200: I adapted the fix to the changed find_target() logic and added more tests for version strings like `0.82.46`. This is a different but similar fix compared to zed-industries#47356 for helix mode - not sure if this can and should be unified? 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) (should not affect UI at all) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Closes zed-industries#35193 Release Notes: - Fixed vim's increment (`ctrl-a`) and decrement (`ctrl-x`) commands skipping the number under the cursor in dotted strings like version numbers (e.g. `0.81.46`) and hyphened date strings (e.g. `2015-02-01`) --------- Co-authored-by: Stefan Bethge <kjyv@users.noreply.github.com> Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com> Co-authored-by: dino <dinojoaocosta@gmail.com>
nightly only i believe so no rel notes Release Notes: - N/A or Added/Fixed/Improved ...
Reworked the UI so we can actually see the compaction output. Design pass TBD https://github.com/user-attachments/assets/89108398-476b-493f-a5eb-d20159fc6830 Release Notes: - N/A --------- Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl> Co-authored-by: Richard Feldman <oss@rtfeldman.com>
The `--related-context-limit` param controls how many tokens can we allocate for editable context. Useful for evaluation primarly. Release Notes: - N/A
Pause edit prediction requests for 10 seconds after receiving a 408 timeout response. This should help Cloud to recover from spikes. Release Notes: - N/A
Closes #FR-20 Release Notes: - Fixed Zed provider models remaining available after sign-out
Following up on zed-industries#57644 by @cameron1024, this PR updates `merman` to v0.6. With merman 0.6's new raster-safe SVG pipeline, Zed can move generic `usvg`/`resvg` cleanup passes out of this crate and rely on merman for them instead. **What's moved to merman:** - `foreignObject` fallback text generation - Unsupported CSS cleanup - Invalid SVG attribute cleanup **What's kept in Zed:** - Theme CSS injection and accent color assignment - Zed-specific fallback overlay handling **Integration note:** In merman v0.6, fallback overlay groups are marked with `data-merman-foreignobject="fallback"` and preserve source classes like `node` or `section-*`, so host CSS can still style fallback text. This PR updates Zed's accent tracker to check for this marker, ensuring fallback overlays are not treated as real layout nodes. I also added a render-stage test for the new contract: the SVG output from `render_mermaid` is already raster-safe before Zed-specific post-processing runs. --- ### 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: - Improved rendering of Mermaid diagrams in Markdown previews. ### Tests: - `cargo +1.95 fmt --check -p mermaid_render` - `cargo +1.95 test -p mermaid_render` - `cargo +1.95 clippy -p mermaid_render --all-targets -- -D warnings` - `git diff --check HEAD~1..HEAD` --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Broke the headless builds for evals. Open to cleaner ways of doing this... 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
Closes AI-286 This PR adds a right-click menu to thread items in the sidebar. A big motivation for this addition was surfacing the "regenerate thread title" action. And because this action and the "open thread as markdown" action previously only worked on the already-loaded agent panel, there was a load of plumbing needed to make that work even for threads in workspaces that haven't been loaded, mostly using the thread metadata store. At the end of the day, the title regeneration feature is only possible for the Zed agent, so this is gated from external agents. But I believe it's now in a slightly nicer spot due to some refactors to better expose the state in which the title regeneration can fall into. Release Notes: - Agent: Added a right-click menu to thread items in the sidebar, allowing to regenerate a thread title, rename a thread title, open the thread as markdown, and archive it. --------- Co-authored-by: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com> Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
…es#58404) While browsing themes in theme selector, the currently active theme will always be marked with a check icon so you can always have a reference of where you started from. 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 Here's a preview: <img width="950" height="806" alt="Screenshot 2026-06-03 at 13 09 46" src="https://github.com/user-attachments/assets/2081d9ec-b56d-4542-be58-e59e3569bc7a" /> <img width="958" height="818" alt="Screenshot 2026-06-03 at 13 09 52" src="https://github.com/user-attachments/assets/134d933f-c9de-4b2c-80f5-ed5be4fb2844" /> Release Notes: - Improved the theme and icon selectors to display a check next to the active theme --------- Co-authored-by: dino <dinojoaocosta@gmail.com>
I was a silly goose didn't notice my `git push` failed, so merged zed-industries#57967 without a critical commit, and some follow-ups. This PR just cherry-picks those commits. Release Notes: - N/A or Added/Fixed/Improved ...
We've been doing it manually when the stalebot keeps coming back to deep-sitting bugs that we'll pretty much never fix accidentally / in passing, now we're automating it: the stalebot will lay off the bugs that have already gone through the cycle of “reported — stalebot asks to confirm — the users confirm” once. This might need to be complemented with a yearly sweep of the `never stale` issues as a sanity check, but first we just shed the manual work. Release Notes: - N/A
…ustries#58425) Mainly around ensuring the section dividers are visible and placing the link/share button in the same place as the other items in the regular/main settings UI page. <img width="600" alt="Screenshot 2026-06-03 at 11 57@2x" src="https://github.com/user-attachments/assets/69233da6-e743-435b-911a-6dd70c079560" /> Release Notes: - N/A
Release Notes: - N/A Co-authored-by: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
Release Notes: - N/A Co-authored-by: Richard Feldman <oss@rtfeldman.com>
…industries#58432) The parser stores emitted byte offsets between partial tool-call parses. Because partial JSON can be repaired differently as more bytes arrive, a byte offset that was valid in an earlier string can land inside a multibyte character in a later string. We now normalize those offsets with `find_char_boundary` before slicing. Added property tests covering boundary-sensitive write/edit streaming sequences to prevent regressions. Fixes Sentry ZED-8Y1 / 7523469866. 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 crash that could occur while streaming agent edits containing multibyte characters.
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 #ISSUE Release Notes: - N/A or Added/Fixed/Improved ... --------- Co-authored-by: Oleksiy <oleksiy@zed.dev>
…#58435) Very often, I'd wake up, to which point there's a new Nightly release out, and the update button would be stuck in the "Downloading..." step. It'd only immediately change its state to "Restart" once I quit the app and re-open it again. Turns out we were just missing a cx.notify in the callback to trigger a re-render. Release Notes: - Fixed a bug where the update version button would be stuck in the "Downloading..." step.
Release Notes: - N/A
## Summary Exposes the existing recursive pane-size reset as a command-palette action, so it can be invoked outside of vim mode. The center pane grid's sizes can already be evened out by double-clicking a divider, or via `vim::ResetPaneSizes` (`ctrl-w =`) when vim mode is on, but there is no general action for it — so users not in vim mode have no discoverable way to undo a drifted split layout in one step. ## How it works `workspace::ResetPaneSizes` (palette: "workspace: reset pane sizes") calls the existing `Workspace::reset_pane_sizes`, which resets every `PaneAxis` in the center pane group to equal flexes, recursing into nested splits. The split structure is preserved — no panes are added, removed, or rearranged, only their sizes are equalized. This is the same path the vim `ctrl-w =` binding and the divider double-click already use. ## Out of scope - Docks (left/right/bottom panels) — they keep their existing `Reset Active Dock Size` / `Reset Open Docks Size` actions. - The terminal panel's internal splits — it is a separate panel, not part of the center pane group. - No default keybinding (palette-only); vim users keep `ctrl-w =`. ## Testing Added `test_reset_pane_sizes`: builds a nested split (a horizontal axis of three panes whose last child is a vertical split), skews every axis's flexes, dispatches the action, and asserts every axis returns to uniform sizes. Release Notes: - Added a `workspace: reset pane sizes` command that equalizes the sizes of all panes in the center group
## Summary - add an editor action for selecting the contents of the innermost enclosing bracket pair - register the action without assigning a default key binding - cover cursor, selection, nested bracket, no-op, and multi-cursor cases ## Tests - cargo fmt --check - cargo test -p editor test_select_inside_enclosing_bracket --lib - cargo test -p editor test_move_to_enclosing_bracket --lib Release Notes: - Added action to select the contents enclosed by brackets
…dustries#59002) This PR fixes some cases where scrolling is choppy due to a user inputting a scroll event while a list state is going through a remeasure. Currently, the list state would ignore the user's scroll and fall back to the pending scroll position, this PR fixes this by rebasing the pending scroll onto the user's new scroll position. Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - agent_panel: Improve scroll smoothness while a response is streaming
…ies#58981) On transparent or blurred window backgrounds, several agent panel surfaces and the multibuffer header rendered drop shadows and fade gradients that have no opaque surface to blend into, so they showed up as dark halos or colored patches: - agent message boxes and the activity bar (drop shadows) - diff-hunk Reject/Keep controls (drop shadow) - the diff review pane (double-painted `editor_background`) - agent thread-list rows, the conversation title edit affordance, and sidebar project headers (fade gradient) - the multibuffer buffer header (`editor_subheader_background` + sticky shadow) These are skipped when `window_background_appearance` isn't `Opaque`. Opaque windows are unchanged; on transparent windows the elements stay delineated by their borders and truncate text with an ellipsis instead of fading. ## Screenshots Before: <img width="1920" height="1200" alt="Screenshot 2026-06-09 at 3 26 26 PM" src="https://github.com/user-attachments/assets/7dc9c76c-7de9-4c50-8719-05957d091706" /> After: <img width="1728" height="1117" alt="Screenshot 2026-06-09 at 3 26 29 PM" src="https://github.com/user-attachments/assets/889a53ad-9f11-41b9-9f51-ffcbd5c37821" /> Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - Fixed dark shadow and gradient artifacts in the agent panel and multibuffer headers when using a transparent or blurred window background
…ed-industries#58649) 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 Closes zed-industries#58653 Release Notes: - Fix "Loading Commit History..." message in History tab stuck on projects with empty or no repositories
…ies#58537) Allows contents to update without dropping the permission (caused by claude subagents) Closes agentclientprotocol/claude-agent-acp#708 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: Fix failed permissions requests for external agents
…ies#58365) ## Summary Add keyboard shortcut for macOS, in the ACP Permission dialog, for "Always Allow", following what is available in both Linux and Windows. ### Self-Review Checklist - [x] I've reviewed my own diff for quality, security, and reliability - [ ] 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 - [ ] Performance impact has been considered and is acceptable Release Notes: - Added missing `AllowAlways` keybinding on macOS (`cmd-alt-y`). --------- Co-authored-by: dino <dinojoaocosta@gmail.com>
…ies#59114) Sometimes, landing in the archive view at first, particularly after importing ACP threads, can be confusing as there's not an immediately available "create new thread" button users can click on. Release Notes: - N/A
We recently changed this given some new models (e.g., Fable) don't allow turning thinking off. In those cases, we are not rendering the split button anymore, but we should still display the thinking icon, so they look a bit more consistent. Release Notes: - N/A
Audited the AI documentation against the implementation
## Changes
- **tool-permissions**: `skill` tool patterns match the absolute
`SKILL.md` path, not the skill name (fixed the table, example pattern,
and added a clarifying note).
- **external-agents**: Gemini CLI receives Zed's Google AI key when no
env key is set; extension-provided agents are deprecated in favor of the
ACP registry.
- **inline-assistant**: alternatives run alongside the inline assistant
model (not just the default model); fixed a broken anchor and
`gpt-4-mini` → `gpt-5-mini` model id typos.
- **mcp**: corrected the extensions menu item name ("Install New
Servers…"), the remote server `url` example, and removed the nonexistent
`thinking` tool from the profile example.
- **agent-panel**: "New From Summary" lives in the New Thread menu;
corrected the `@`-mention type list (no "instruction files"; added Fetch
and Branch Diff).
- **use-api-access**: DeepSeek default `api_url` includes `/v1`.
- **skills**: folder name is a convention not a requirement; long
descriptions warn rather than fail (measured in bytes); hidden skills
are also `@`-mentionable; dropped the unenforced consecutive-hyphen
rule; reconciled the no-remote-registry note with GitHub import.
- **edit-prediction**: `alt-tab` and `alt-l` are bound across platforms;
predictions are throttled rather than fired on every keystroke.
- **getting-started, windows-and-projects, parallel-agents**: Panel
Layout lives in the title-bar user menu, with
`workspace::UseAgenticLayout`/`UseClassicLayout` action references.
Release Notes:
- N/A
---------
Co-authored-by: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
…ndustries#59128) Wrap the fds returned by `create_pipe` and `open_dev_null` in `std::fs::File` earlier, so that they are closed if we return early due to an error. Includes a regression test. Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - Fixed a file descriptor leak on macOS. --------- Co-authored-by: Marshall Bowers <git@maxdeviant.com>
…ed-industries#59126) When the agent panel's thread is empty, the toolbar no longer shows the labeled agent dropdown on the far left. Instead, it uses the same layout as an active thread: a stable plus icon button on the far right, and the left slot displays a muted "New {agent} Thread" placeholder title — matching the sidebar's draft thread item. As soon as you type into the message editor, the title shows your prompt text instead, reusing the sidebar's draft label truncation logic. Release Notes: - Improved the agent panel's empty-state toolbar to show a "New {agent} Thread" placeholder title (or your draft prompt as you type), with a stable new-thread button on the right.
…yle (zed-industries#56771) This PR fixes an issue where font properties like bolds and italics would be lost when falling back to a fallback font. The problem we identified was that when loading the fallback fonts, we were just loading them by name. This meant that when the original font had a different font weight (e.g., bold) or style applied to it this would not cascade to the fallback font. To reproduce the problem, we used the following text in a Markdown file: ```md **한글 bold** ``` With the following font configuration in Zed: ```json "buffer_font_family": "Victor Mono", "buffer_font_fallbacks": [ "D2Coding" ] ``` The fonts can be obtained from their respective locations: - [Victor Mono](https://rubjo.github.io/victor-mono/) - [D2Coding](https://github.com/naver/d2codingfont) #### Before <img width="168" height="46" alt="Screenshot 2026-05-14 at 1 15 15 PM" src="https://github.com/user-attachments/assets/f6883e4b-8f2b-4285-a110-0e18d562c51d" /> #### After <img width="176" height="53" alt="Screenshot 2026-05-14 at 1 16 04 PM" src="https://github.com/user-attachments/assets/88d67207-6711-473b-8027-e0acfa58c258" /> Closes zed-industries#51460. Release Notes: - macOS: Fixed fallback fonts missing weight/style. --------- Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
…ed-industries#59130) This change is motivated by user feedback where we saw some confusion where they didn't know that you could create either a worktree or branch through simply typing in their respective picker's editor. Hopefully, this new placeholder in each of them will help communicate that. Release Notes: - Improved placeholder copywriting in both the branch and worktree pickers to communicate it's possible to type-to-create each. Co-authored-by: María Craig <maria@zed.dev>
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#57092 Before: <img width="3400" height="2210" alt="image" src="https://github.com/user-attachments/assets/0056817e-4826-46c1-85d4-e84c9c8d80f1" /> After: <img width="1700" height="1105" alt="image" src="https://github.com/user-attachments/assets/0ed86e42-20d7-41a0-90b6-102dfb57cc33" /> Release Notes: - Add notebook cell stop button. --------- Co-authored-by: Martin Ye <martin@zed.dev> Co-authored-by: Yara <git@yara.blue>
## Context GPUI API change only: - added `.alpha(a: f32)` method to `RGBA` - added `.opacity(factor: f32)` method to `RGBA` - added documentation for both new methods - added test coverage for both methods These implementations already exist for the `HSLA` struct and were missing for `RGBA`. > [!NOTE] > In my opinion, a trait implementation could be beneficial here. Let me know what you think about that idea before I end up making unwanted changes. ## How to Review Just added the new methods, including documentation and test coverage. ## Self-Review Checklist <!-- Check before requesting review: --> - [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: - Added `gpui::Rgba::alpha` and `gpui::Rgba::opacity` methods for setting and scaling a color's alpha channel, matching the existing `gpui::Hsla` API --------- Co-authored-by: dino <dinojoaocosta@gmail.com>
I asked Claude Fable 5 to review our macOS process spawning layer, and it found two notable bugs: - We didn't mark stdio descriptors as inherited when the `Inherit` option was passed. This means they would be closed in the child due to `POSIX_SPAWN_DEFAULT_CLOEXEC`. Now we correctly mark them as inherited. - Child processes were inheriting Rust's default `SIG_IGN` disposition for `SIGPIPE`. `std::process::Command` resets the disposition to `SIG_DFL` for children, and this PR makes us do that too, with a regression test. Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <git@maxdeviant.com>
…industries#58576) Opening a new git worktree of a repository that has a dev container configuration re-prompted you to reopen in a dev container, even after you'd clicked "Don't Show Again" in another worktree of the same repo. The dismissal was keyed on each worktree's own absolute path, so sibling worktrees never saw the stored choice. This keys the dismissal on the repository's common Git directory instead, which is shared across all linked git worktrees of the same repo, so dismissing in one worktree now suppresses the prompt in the others. Projects that aren't Git repositories fall back to the worktree path as before. Closes AI-357 Release Notes: - Fixed the "Reopen in Dev Container" suggestion re-appearing in new git worktrees after choosing "Don't Show Again"
Replaces the verbose struct-literal construction of `gpui::BoxShadow` with a builder API: - `BoxShadow::new(offset_x, offset_y, color)` takes the required fields, with arguments ordered to match the CSS `box-shadow` property. - `.blur_radius(_)`, `.spread_radius(_)`, and `.inset()` set the optional fields. All in-tree call sites are migrated, including the Tailwind-style `shadow_xs`..`shadow_2xl` helpers in `gpui_macros`, the `ElevationIndex` shadows in `ui`, and various widgets across `editor`, `workspace`, `agent_ui`, and `ai_onboarding`. The fields on `BoxShadow` remain public, so external code using struct-literal construction continues to work. 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
…d-industries#59140) Mermaid diagrams with long node labels rendered as an unreadable jumble: each label was painted as one long line over a box sized for wrapped text, overflowing into neighboring nodes. With this change, labels wrap to the box width the layout computed. **Root cause:** mermaid's default `htmlLabels: true` makes merman emit labels as HTML inside `<foreignObject>`, which resvg cannot rasterize. merman's resvg-safe pipeline replaces each one with a single-line `<text>` fallback that only honors explicit `<br>` breaks, so soft-wrapped labels collapse onto one long line — while the node boxes were laid out for the wrapped text. **Fix:** disable HTML labels in the site config (both the top-level key, which merman reads for node labels, and `flowchart.htmlLabels`, which it reads for edge labels). merman then emits native SVG `<text>`/`<tspan>` labels wrapped to the same measured width the layout used, and the foreignObject fallback never runs for these diagrams. One behavior preserved deliberately: a literal `\n` in label text used to become a line break as a side effect of the foreignObject fallback (`fallback.rs` converts `\n` when flattening HTML labels). `render_mermaid` now normalizes `\n` to `<br/>` before rendering so the native path keeps that behavior; the existing `backslash_n_converted_to_line_break` test covers it. Side effect: class diagram member text also switches from the lossy fallback to native SVG text; the accent-class test was updated accordingly (accent classes now land directly on `text`/`tspan` elements). Verified with `cargo nextest run -p mermaid_render`, `-p markdown`, `script/clippy -p mermaid_render`, and `cargo fmt --check`. Release Notes: - Fixed mermaid diagram labels overflowing and overlapping nodes when long labels wrap --------- Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Follow up to zed-industries#59126 where seeing the typed-prompt in the agent panel's toolbar felt really busy. With that change, I'd be seeing the prompt I'm writing in three different stops, which felt overwhelming. Toning that down a little bit in here. Release Notes: - N/A
# Objective Give a bit more structure to contributors so that each (potentially new) contributor doesn't have to come up with their own structure on-the-fly. ## Solution Update the PR template to include sections for describing - what the PR is trying to achieve - how it decided to achieve the goal - how reviewers can test the work - demos of the new functionality ## Testing I used the PR template for this PR, so reviewers can evaluate if they think the structure is useful. ## Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable ## Showcase <details> <summary>Click to view showcase</summary> ### Before <img width="1082" height="572" alt="image" src="https://github.com/user-attachments/assets/bc72b8ab-f5ec-4270-b1ec-546456525e92" /> ### After <img width="1241" height="945" alt="image" src="https://github.com/user-attachments/assets/088d90e4-2cb1-42cd-9f8f-0b2783ab7fe4" /> </details> --- Release Notes: - N/A
zed-industries#50381) Release Notes: - Added Anthropic-compatible provider support in settings 1. add anthropic-compatible provider via menu https://github.com/user-attachments/assets/14b33d59-ae08-4215-b05f-9f3896a4a6f2 2. use anthropic-compatible https://github.com/user-attachments/assets/8bc7f1c5-644e-4528-942e-29150c35fed0 --------- Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com> Co-authored-by: Anant Goel <anant@zed.dev> Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
…ndustries#58807) Release Notes: - Pressing up in an empty agent message editor now brings back the last queued message for editing if there is one
Release Notes: - Fixed an issue where the close button could overflow within a workspace error popup. --------- Co-authored-by: Lukas Wirth <lukas@zed.dev> Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
zed-industries#57097) Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [ ] 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#56748 ## Summary Block / column selection (Shift+Ctrl+drag on Linux, Shift+Cmd+drag on macOS) anchored its rectangle on a single byte column applied to every row in the dragged range. On a row whose text contained a multi-byte character before that column (for example `ã`), the same byte offset mapped to a different visual `x`, so the per-row cursor drifted off the column. `select_columns` now anchors the rectangle in `x` pixels via `x_for_display_point` and resolves each row's byte column with `display_column_for_x` — the same pair of helpers already used by vertical cursor motion and Vim VisualBlock. ## Before / After **Before** — cursor on the `ã` row drifts one column to the left: <img width="1068" height="366" alt="image" src="https://github.com/user-attachments/assets/0559ef89-852e-40f3-9d43-f5f44277f99e" /> **After** — rectangle stays visually aligned across rows: <img width="866" height="408" alt="image" src="https://github.com/user-attachments/assets/bce13c1a-1ddb-4fd6-8216-2c0e902f6668" /> ## Test plan - `cargo test -p editor test_columnar_selection_with_multibyte_chars` (new regression test covers the buggy case past the `ã` byte boundary, plus a control case where old and new logic agree). - Manual: Shift+Ctrl+drag down a five-line buffer where row 3 contains `ã` — selection rectangle stays aligned (see screenshots). - Manual: Shift+Alt+drag (`FromSelection` branch) over the same buffer — same result. - Manual: drag past EOL on the `ã` row — each row extends to its own EOL with no panic. Release Notes: - Fixed misalignment of column selection on rows that contain multi-byte characters --------- Co-authored-by: Tom Houlé <tom@tomhoule.com>
…e-latest-zed # Conflicts: # .github/workflows/run_cron_unit_evals.yml # .github/workflows/run_unit_evals.yml # .github/workflows/slack_notify_first_responders.yml # crates/language_model/src/model/mod.rs # crates/recent_projects/src/dev_container_suggest.rs # crates/title_bar/src/title_bar.rs Spec-Ref: helix-specs@119ecb38b:002077_merge-latest-zed
Spec-Ref: helix-specs@78bf2b31b:002077_merge-latest-zed
Spec-Ref: helix-specs@93d0976c3:002077_merge-latest-zed
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.
Summary
Brings the Helix fork of Zed up to date with
zed-industries/zedHEAD (992f395c3d), absorbing 256 upstream commits over 10 days. Clean merge — only 6 trivial conflicts (5 workflow/deletion + 1 import-block), zero Helix-side signature-drift repairs needed, build green on first attempt, full E2E green for bothzed-agentandclaudepersonalities.This is the first upstream merge since 002029 that required zero "Pre-existing Breakage Repaired" entries.
Changes
Merge remote-tracking branch 'upstream/main'(b2993c0b01) — 256 upstream commits including the compaction cluster (built-in/compactslash command,auto_compactsetting),d7ac5e6cf4"Preserve waiting tool call status on updates" (+602 lines),215ca2fb0b"Typed workspace errors",116e4bc184"Inherit source agent without draft content",27191913e9"Cumulative token usage",56b71271c4"Enable ACP session usage and deletion features",620ceaaaca"Flush thread content to database on app quit", anda98485809b"Return typed completion errors from Cloud provider" (which deletedcrates/language_model/src/model/entirely).docs(porting): add Merge 002077 entry (256 upstream commits, 0 breakage)(38d4f86809) — new## Merge 002077 (2026-06-12)section inportingguide.mddocumenting all 6 conflicts, the auto-merge survival check, and the risks that turned out to be non-issues.Conflicts resolved
.github/workflows/run_cron_unit_evals.yml,run_unit_evals.yml—git rm(upstream deletion; Helix doesn't use Zed's CI)..github/workflows/slack_notify_first_responders.yml—--theirs.crates/language_model/src/model/mod.rs— accept upstream deletion (entiremodel/directory removed;CloudModelrelocated tolanguage_model_core+language_models/src/provider/cloud.rs). No Helix surface referenced it.crates/recent_projects/src/dev_container_suggest.rs— kept Helix'suse settings::Settings;(Helixsuggest_dev_containerguard) + upstream's newuse std::path::Path;(new parameter type).crates/title_bar/src/title_bar.rs— import block: kept Helix'scloud_api_types::Plan+ cfg-gatedexternal_websocket_sync::{...}AND added upstream's newcommand_palette_hooks::CommandPaletteFilter.Helix surface — auto-merge survival check
All Helix critical fixes and load-bearing patches survived the merge cleanly with no manual conflict in any Helix-touched source file (
agent.rs,acp_thread.rs,agent_panel.rs,conversation_view.rs,workspace.rs,agent_servers/src/acp.rs,zed/src/main.rs,extensions_ui.rs,feature_flags/src/flags.rs):session_creation_chain+_settings_subscription— intact.EntryUpdatedemit — intact (survivedd7ac5e6cf4's 602-line tool-call-status rewrite).UserCreatedThread— intact.BaseView::Uninitialized.ede_diagnosticretry loop — intact (no upstream churn inthread_service.rsthis window).Planning-time risks that turned out to be non-issues
d7ac5e6cf4"Preserve waiting tool call status" — auto-merged; PR Restore lost streaming reveal-emit + add e2e Phase 15 cadence test #55 emit site survived.grep "compact\|cumulative_token_usage" crates/external_websocket_sync/returns nothing).215ca2fb0btyped workspace errors — auto-merged; Helix surface has zeroWorkspace::show_errorcall sites, so the typed-error migration is not needed.116e4bc184source-agent inheritance — auto-merged; Fix 1b's first-statement position survives.620ceaaacaflush-on-quit — auto-merged; no interaction with WS-authoritative store.56b71271c4ACP session usage/deletion stabilisation — auto-merged; no HelixAcpConnectionoverride needed.Validation
./stack build-zed dev: green (8m 14s, 0 errors, 3 unused-import warnings — all in upstream code).ActiveView/set_active_view/draft_threads/background_threads/selected_agent_type/smol::Timer/ non-tupleStopped/Workspace::show_errorin Helix surface /cumulative_token_usage-in-WS /compact-in-WS): all zero hits or only expected matches.zed-agentonly: PASSED (full phase suite; store validation 14 interactions / 0 interrupted/cancelled / 4 sessions / response entries isolation PASSED / thread title sync PASSED).zed-agent,claude: PASSED (both personalities green; store validation PASSED).Test plan
./stack build-zed dev(green)zed-agent(green)zed-agent,claude(green — both personalities)sandbox-versions.txtZED_COMMITbumped to the new merge HEAD (38d4f86809) in companionhelixml/helixPRRelease Notes:
🔗 Open in Helix
📋 Spec:
🚀 Built with Helix