Skip to content

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 11:14
489d3af

This release fixes four crashes where Zed updated a menu, panel or modal from inside that same element's update. Pane and Workspace now call into items, toolbars, panels, modals, pickers and completion providers outside their own updates. Gemini models from Google's model catalog get thinking settings that match each model, and the catalog fetch retries and reports its failures. The fork is up to date with upstream Zed as of 2026-10-14 (zed-industries@c403bc6af6).

Fork changes

Crashes from reentrant updates

GPUI aborts Zed when code reads or updates an element such as a menu, pane or workspace while that element is in the middle of its own update. kjanat/zed-editor#172 tracks the audit of these sites.

  • Fixed Enter and Ctrl-Enter on Open Worktrees, Move Up, Move Down and Remove in the sidebar's project header menu crashing Zed. The context menu runs a keyboard-selected entry the way it runs a clicked one (kjanat/zed-editor#218).
  • Fixed Open Local Folders in the Recent Projects actions menu crashing Zed when you chose it with Enter and use_system_path_prompts was false (kjanat/zed-editor#218).
  • Fixed a stash action from a key binding crashing Zed while the Commit modal was open (kjanat/zed-editor#218).
  • Fixed file_finder::OpenWithoutDismiss on a channel match crashing Zed (kjanat/zed-editor#218).

Zed now makes these calls with nothing leased:

  • Tabs and toolbar. Pane renders tabs, tab tooltips and toolbar key context in RenderOnce children after its own render ends. Toolbar items receive the active item in a deferred call (kjanat/zed-editor#218).
  • Item hooks. The functions of Pane and Workspace that open, save, focus, close, move, split and join items take the entity handle. They call item hooks such as project_path, is_dirty, capability and act_as before they update the pane or workspace (kjanat/zed-editor#220). This is the class of the tab double-click crash in kjanat/zed-editor#169.
  • Modals. Workspace::toggle_modal builds the modal in a deferred update and returns Task<Option<Entity<V>>>. on_before_dismiss runs with only the modal leased. The new ModalView::on_dismissed hook runs after the modal layer drops the modal (kjanat/zed-editor#218).
  • Pickers, panels and completions. Picker::new computes its first matches in a deferred update, and panel activation is deferred. Edit prediction refresh and editor completion providers run in spawned tasks. CompletionProvider::completions, resolve_completions and apply_additional_edits_for_completion take &mut App (kjanat/zed-editor#218).
  • Tests. Every rewritten site has a test whose item, panel, modal or provider reads its container from the hook (kjanat/zed-editor#218, kjanat/zed-editor#220).

SerializableItem::serialize, Item::added_to_workspace and ProjectItem::for_project_item still receive a leased Workspace or Pane (kjanat/zed-editor#172).

Gemini

These changes apply to the Google provider with your own API key unless a line says otherwise (kjanat/zed-editor#224).

  • Fixed versioned Gemini 2.5 models such as gemini-2.5-flash-preview-05-20 offering thinking levels and failing on thinkingLevel. Zed reads the version from the model ID to choose the thinking controls and the tool media format.
  • Fixed Gemini 2.5 Flash-Lite returning no reasoning with thinking on. A Gemini 2.5 request with thinking on and no budget asks for dynamic thinking.
  • Thinking levels follow Google's table. gemini-3-pro-preview offers Low and High and defaults to High. Gemini 3.1 Flash-Lite defaults to Minimal.
  • Fixed responses failing to parse when Gemini sent a thought signature on a part without text.
  • Fixed Zed-hosted Gemini models failing when the thread's effort level was missing from the model's list, such as Medium for gemini-3-pro-preview. The request now uses the model's default level.
  • The model catalog fetch retries transient failures, honours Retry-After and stops after a fixed number of attempts. A permanent failure, such as an invalid key, appears under the API key in settings with a Retry button.
  • The default model is the newest by version number, so gemini-3.10 comes before gemini-3.9.

External agents

  • Config options that an agent announces after the session starts now appear in the agent panel in place of the fallback selectors, and receive your configured defaults (kjanat/zed-editor#219).
  • Session info updates reach the session list after the thread closes (kjanat/zed-editor#219).

Worktrees

Fixed a deleted file that was opened on its own reporting its deletion again on every change in its folder while an agent thread held the buffer. Zed reports the deletion once and watches the file again when it returns (kjanat/zed-editor#216, kjanat/zed-editor#204).

Builds

  • Release builds upload debug symbols only to the fork's Sentry project, and a bundle script stops before building when a Sentry token comes without an organization and project (kjanat/zed-editor#214).
  • Windows clippy in fork CI fails when cargo fails, and each platform's tests check reports only its own suites (kjanat/zed-editor#218, kjanat/zed-editor#224).

From upstream

Full Changelog: v1.7.0...v1.8.0