Repository navigation
Releases
v2.0.0
What's Changed
- Watch the git info directory for exclude changes by @kjanat in #226
- Generate JSON schemas for extension manifests by @kjanat in #227
- Continue Claude's resolution until check passes by @kjanat in #229
- Merge upstream 28d0a35 by @kjanat in #230
- Dismiss a server's prompts when it stops by @kjanat in #231
- Route early and supplementary LSP logs to the log by @kjanat in #233
- Merge upstream by @kjanat in #232
- Prevent mouse selection swallowing by @kjanat in #235
- Open the path prompt from the Recent Projects menu by @kjanat in #236
- Batch diff base reads across files by @kjanat in #238
- Add global lsp env by @kjanat in #234
- Stop endless diff hunk queries scans by @kjanat in #239
- Watch extensions dir only after existence by @kjanat in #245
- Load requested diff first by @kjanat in #237
- Thread notify agent plugin load failures by @kjanat in #241
- Rebase edits during buffer format by @kjanat in #240
- Render wide preview tables as entries by @kjanat in #242
- Don't shape invisible rows by @kjanat in #243
- FUCKING FIX by @kjanat in #254
- Install git extensions by @kjanat in #244
Full Changelog: v1.8.0...v2.0.0
v1.8.0
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_promptswasfalse(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::OpenWithoutDismisson 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
RenderOncechildren 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,capabilityandact_asbefore 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_modalbuilds the modal in a deferred update and returnsTask<Option<Entity<V>>>.on_before_dismissruns with only the modal leased. The newModalView::on_dismissedhook runs after the modal layer drops the modal (kjanat/zed-editor#218). - Pickers, panels and completions.
Picker::newcomputes 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_completionsandapply_additional_edits_for_completiontake&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-20offering thinking levels and failing onthinkingLevel. 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-previewoffers 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.10comes beforegemini-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
- Added Gemini 4 Argon (zed-industries/zed#65565). The Google provider loads models from Google's model catalog (zed-industries/zed#65572).
- Fixed Gemini models failing after a tool call returned an image (zed-industries/zed#65576).
- Added Claude Sonnet 5.5 and Haiku 5.5 (zed-industries/zed#65555).
- Jumping to a location unfolds the folded sections around it. This covers go to line, go to definition, symbol and outline pickers, multibuffer results and navigation history (zed-industries/zed#65217).
- Added the
tab_switcher.show_file_previewsetting. The tab switcher keeps its selection when the mouse hovers an entry (zed-industries/zed#56235, zed-industries/zed#65546). - Added Open SVG Preview to the project panel context menu. Open Markdown Preview now appears for files opened on their own (zed-industries/zed#65539).
- Fixed the remote server failing to start on a Windows host over SSH (zed-industries/zed#55292).
- Fixed archiving an agent thread doing nothing and keeping a CPU core busy when its worktree folder was deleted (zed-industries/zed#65578).
Full Changelog: v1.7.0...v1.8.0
v1.7.0
This release keeps environment variable values, such as API tokens and database URLs, out of logs, error messages, process command lines and crash dumps. It also brings the fork up to upstream Zed as of 2026-10-10 (zed-industries@93d7456688).
Fork changes
Environment values stay private
These fixes cover the environment of language servers, terminals, tasks, debug adapters, agents and MCP servers. Its values come from your shell and direnv environment, terminal.env, debug configurations and dev containers.
- Logs and errors. Spawn errors name the program, its arguments and its folder. That covers the failed language server status, which Zed also sends to collaborators in a shared project. Log redaction keeps the values of a short list of diagnostic names such as
PATH,HOMEandLANGand hides every other value,DATABASE_URL,*_DSNand lowercasehttp_proxyincluded. It also hides the value of a secret-named option such as--password, credentials in URLs andAuthorizationheaders (kjanat/zed-editor#209). - Debug views and bug report output. The DAP log, the failed launch message,
dev: copy debug adapter argumentsand the ACP log view hide values underenv,envs,environmentandheaders(kjanat/zed-editor#209). - Remote command lines. Fixed SSH, WSL and Docker terminals and debug adapters putting their environment in the arguments of
ssh,wsl.exeanddocker exec, where any user on the machine can read it withps. Zed hands the command to the remote server, the remote server stores it in a file only you can read, and the command line carries just its id. When the remote cannot store it, the launch fails with the remote's error (kjanat/zed-editor#210). Windows SSH hosts and Windows containers still receive the environment on the command line. - Docker and Podman.
docker execreceives its variables through an--env-filethat only you can read. Its arguments carry the file's path (kjanat/zed-editor#212). - Crash dumps. Fixed Linux minidumps that sent the whole startup environment of Zed to the crash endpoint. The crash handler clears the environment and every copy of it from a dump before it keeps the file. A dump that fails to scrub is deleted, and only scrubbed dumps are uploaded (kjanat/zed-editor#211).
Settings
Reset to Default in the settings UI removes the setting from the open settings file. Your user settings or the Zed default then apply. The reset button appears only for a value set in the open file, and on a language page it removes only that language's value (kjanat/zed-editor#207).
Deno
Fixed go to definition into a cached remote module or a built-in declaration opening an empty buffer. Zed loads the source from Deno into a read-only tab. Hover, definitions and diagnostics work inside that tab, and it follows Deno across restarts (kjanat/zed-editor#202).
Builds
The Nix tests are formatted with nixfmt, which the shared formatting check now requires (kjanat/zed-editor#213).
From upstream
- Fixed the markdown preview font settings showing no fonts in the settings UI (zed-industries/zed#65437).
- Fixed Git panel commit editor buttons changing opacity when hovering empty space (zed-industries/zed#65448).
Full Changelog: v1.6.1...v1.7.0
v1.6.1
This release brings the fork up to upstream Zed as of 2026-10-09 (zed-industries@687d662a0b) and sends every report that went to Zed's servers to this fork's Sentry.
Fork changes
Reports go to this fork's Sentry
Telemetry, hang reports, edit prediction reports and feedback go to this fork's Sentry project, and Zed's servers receive none of them (kjanat/zed-editor#200).
- Telemetry events arrive as Sentry Logs, each with its properties, release, channel and OS. The
telemetry.metricssetting turns them off. - Hangs each become a Sentry issue named after the longest-running work and grouped by that work and the hang's trigger. The
telemetry.diagnosticssetting turns them off, together with crash reports. - Edit prediction reports for accepted, rejected and settled Zeta predictions arrive as Sentry Logs under
telemetry.metrics. - Feedback from rating an agent thread, commenting on that rating or rating an edit prediction arrives as Sentry user feedback, with the thread or prediction attached as
feedback.json.
Sign-in, extensions, and Zed-hosted AI and edit prediction requests still use Zed's servers.
Builds and releases
- The pacman package's update prompt names the package,
zed-kjanat, and givessudo pacman -Syu zed-kjanatas the command (kjanat/zed-editor#199). - A release published by hand also gets its Sentry release (kjanat/zed-editor#199).
From upstream
- Bedrock adds Claude Opus 5.5 (zed-industries/zed#64685), Claude Fable 5.1 and GPT-6 Astra (zed-industries/zed#64201), and the docs cover custom Bedrock endpoints (zed-industries/zed#64103). The fork keeps its cap on fixed thinking budgets (kjanat/zed-editor#198).
- ACP agents get session notices and compaction (zed-industries/zed#65414).
- Fixed navigating back to the markdown preview tab (zed-industries/zed#65299), crashes on tab-indented markdown code blocks (zed-industries/zed#65398), and links on wrapped lines in markdown preview tables that were partly unclickable (zed-industries/zed#65366).
- Fixed hover popovers flickering or closing early with language servers that send no hover range (zed-industries/zed#64032).
- Fixed blurred window backgrounds on macOS 27 (zed-industries/zed#65361).
- Fixed the text finder in regex mode treating a query taken from the selection as a regular expression (zed-industries/zed#65321).
- Fixed edit predictions for organizations without a subscription (zed-industries/zed#65301), and edit predictions holding on to single-file worktrees (zed-industries/zed#65386).
Full Changelog: v1.6.0...v1.6.1
v1.6.0
This release brings the fork up to upstream Zed as of 2026-10-08 (zed-industries@b47a4ca595).
Fork changes
Language servers in background projects
With several projects open in one window, the language servers of a background project could restart every few hundred milliseconds without end. Each restart leaked a handle into every extension that the servers called, and after a few minutes every call into those extensions failed with "resource table has no free keys". kjanat/zed-editor#194 fixes both and makes the LSP menu show every server that is not running.
- No restart loop. An editor in a suspended project no longer resumes it for document highlights, code actions or linked edits. Hover, completions, formatting and the other requests you make still resume the project.
- Extension handles. Each call into an extension frees the worktree, project and key-value store handles it lent, on success and on error, and dropping an HTTP response stream frees it too.
- Reload extensions.
zed: reload extensionsreloads every installed extension, so each one starts again with an empty resource table.
LSP menu
- A server that failed to start keeps a red row with its error under its worktree, and a stopped server keeps a grey row with Start Server. Each worktree gets its own row, so a server stopped in one worktree stays visible while it runs in another. (kjanat/zed-editor#194)
- Start Server after Stop All Servers starts only that server, and the others stay stopped. A language opened later starts its server as usual. (kjanat/zed-editor#194)
- Start Server and Restart Server stay disabled until a file of the server's languages is open in its worktree, and the menu says so. (kjanat/zed-editor#194)
- SSH projects list their stopped and failed servers, and Restart All Servers restarts them on the host. Collab guests, including guests of a shared SSH project, see the host's running, stopped and failed servers and its restarts. (kjanat/zed-editor#194)
Displays
- Fixed a crash on Windows when a display change arrived while Zed was inside an app update. (kjanat/zed-editor#191)
- On X11, a resolution or rotation change from
xrandrreaches Zed. (kjanat/zed-editor#191) - On macOS and Windows, a window that moves to another display reads that display's current refresh rate. (kjanat/zed-editor#191)
Builds and releases
- The pacman packages of this release were built outside GitHub Actions and carry no build provenance attestation.
From upstream
- Fixed text duplication when converting case with multiple cursors in one word (zed-industries/zed#65291).
- Fixed a crash on Linux when EGL failed without reporting an error (zed-industries/zed#65329).
- Fixed transparent Threads Sidebar backgrounds in some themes (zed-industries/zed#65343).
- The debugger terminal panel supports search (zed-industries/zed#56863).
- The branch picker explains what deleting a remote-tracking branch does (zed-industries/zed#61793).
- Markdown aligns images in HTML blocks (zed-industries/zed#63166), and a code block's scrollbar track stays inside its rounded corners (zed-industries/zed#64978).
- Agent elicitations are cancelled when the agent disconnects (zed-industries/zed#65282), and threads that cannot restore checkpoints no longer create them (zed-industries/zed#65304).
Full Changelog: v1.5.1...v1.6.0
v1.5.1
This release brings the fork up to upstream Zed as of 2026-10-07 (zed-industries@a34a062bb7).
Fork changes
Push toast
After a push to the remote's default branch, the git panel's push toast shows "View Log". Pushes to any other branch keep "Create Pull Request". (kjanat/zed-editor#189, closes kjanat/zed-editor#188)
- Pushed branch. The check uses the remote branch that received the push, which is the tracked upstream branch when there is one.
- Pull request links. A pull or merge request link that the remote prints only shows for pushes off the default branch.
- Default branch lookup. Zed reads
refs/remotes/<remote>/HEAD. When that ref is missing, or the remote pushes to a separatepushurl, Zed asks the push destination withgit ls-remote --symref. The query uses stored credentials only, never shows a prompt, and gives up after five seconds. When it fails, and for remotes with several push URLs, the toast keeps "Create Pull Request". - Remote projects. Projects over SSH get the same check. Collaborators in a shared project cannot start the query.
Fixes to the upstream changes
- Switching from a Pro to a Free organization shows the Free plan notice for edit predictions.
- Audio output errors that arrive after a call ends, and inlay hint refreshes that finish after nobody waits for them, are logged.
- FreeBSD hosts report their OS version to remote telemetry again.
Builds and releases
- CI saves its caches from
masteronly, and the test suites on one OS share one cache.
From upstream
- Zed's hosted edit predictions are part of the Pro plan only. Free plan users who accepted predictions this billing period see a notice once (zed-industries/zed#65258).
- Remote agent secrets stay out of the launcher's command-line arguments (zed-industries/zed#65174).
- Connecting to an SSH host runs its three environment queries as one command (zed-industries/zed#65065).
- Double-click an inlay hint, or run
editor: accept inlay hint, to apply its edit (zed-industries/zed#64789). - The release binary is about a third smaller on macOS, over a quarter smaller on Windows and 7% smaller on Linux (zed-industries/zed#65168).
- Faster startup with custom icon themes (zed-industries/zed#65173) and when restoring many selections (zed-industries/zed#65171).
- The settings sidebar follows the content as it scrolls (zed-industries/zed#65172).
- Notification sounds recover after an audio output failure, and the audio thread stops on errors (zed-industries/zed#65158).
Full Changelog: v1.5.0...v1.5.1
v1.5.0
This release brings the fork up to upstream Zed as of 2026-10-07 (zed-industries@eb466341a6).
Fork changes
GPUI update boundaries and tab actions
Re-entering an entity or global while it is being updated aborts Zed. kjanat/zed-editor#173 gives GPUI an enforced boundary against that class of crash, tracked in kjanat/zed-editor#172, and moves the Pane tab click onto it first.
- Lease registry.
Apprecords every active entity and global update with its caller. Reading or updating a target that is already being updated panics with the colliding access, the update it collided with and every active update, in release builds too, so a crash report locates both sides. Every global accessor checks the registry. - Typed tab actions.
Item::tab_actionsreturns oneTabActionslist that builds the tab's context menu and marks at most one entry as the double-click action. A second mark does not compile. The query takes&App, and Pane asks it with the pane released, so a tab may read its own pane while it answers. It replacestab_extra_context_menu_actionsand the lookup of a"Rename"entry, and the terminal's Rename comes from one place. - Render-aware dispatch.
FocusHandle::dispatch_actioncalled during an update runs the action after the update and its effects settle. It then routes on the last drawn frame when the window has not changed, and otherwise waits for its target, for at most eight frames. An action for a tab that is not drawn yet runs exactly once, so a double-click renames an inactive terminal tab.FocusHandle::try_dispatch_action_nowkeeps the synchronous form and reports whether the target received the action. - Post-render callbacks.
Window::on_next_renderruns a callback after the next frame is drawn and requests that frame.on_next_frameruns before the draw, and its documentation says so. - Handle listeners.
Context::entity_listenerpasses its callback the entity's handle whereContext::listenerpasses a mutable reference, for event handlers that call other entities or open code. - Unwind safety. Updates, draws and callbacks put back what they took from the app or the window when they panic: leases, update depth, subscribers, listeners, the input handler, draw state and pending frame callbacks. State stays consistent for code that catches the panic.
- Global updates.
update_globaloutside another update applies its effects when it ends, andremove_globalnotifies observers after it removed the global.
Language servers
- When a server's
initializetimes out or fails, its last stderr lines reach the status and the log. (kjanat/zed-editor#171, closes kjanat/zed-editor#170)
Builds and releases
- The Windows Arm bundle builds again.
mise.lockhad nowindows-arm64entries and stopped its tool install. rustls0.23.45, a security update. (kjanat/zed-editor#183)- With
telemetry.diagnosticson, crash reports go to the fork's Sentry project with the end ofZed.log, and each release uploads its debug symbols there. (kjanat/zed-editor#178)
Upstream sync
- A sync run reports its outcome in the run summary and fails when it ends without a sync PR. kjanat/zed-editor#185 merges the last upstream commits by hand and closes kjanat/zed-editor#184.
From upstream
- Lower memory and CPU use while the agent responds in long threads (zed-industries/zed#65244).
- Terminal tabs can be dragged into the Agent Panel (zed-industries/zed#60582).
- Fixed crashes when syntax parsing hit a multibyte character (zed-industries/zed#65273) and when editing during an inlay hint request (zed-industries/zed#65193).
- Fixed remote project search hanging (zed-industries/zed#65257).
- Fixed emoji, symbol and non-Latin fonts rendering as empty boxes on Linux (zed-industries/zed#65269).
.envfiles get their own Env language, soshellcheckstops flagging every line (zed-industries/zed#64242).- Create a Git tag from the commit context menus (zed-industries/zed#65194).
- Markdown preview shows task lists (zed-industries/zed#53699) and supports pane splits (zed-industries/zed#65136). New
mermaid_font_familysetting (zed-industries/zed#63430). - New
extension_suggestionssetting to turn off extension suggestions (zed-industries/zed#65109). - The debugger colors variable values by type (zed-industries/zed#64111) and loads
envFilefor Python (zed-industries/zed#52933). - Package-level test gutter for Go (zed-industries/zed#56699).
- Faster startup (zed-industries/zed#65170) and smaller Linux binaries (zed-industries/zed#65169).
Full Changelog: v1.4.13...v1.5.0
v1.4.13
This release has the same upstream base as v1.4.12, upstream Zed as of 2026-10-03 (zed-industries@a84689073d).
Fork changes
Fixed
- Zed crashing when you double-clicked a tab. Since zed-industries/zed#65081, which v1.4.12 brought in, an editor tab reads its pane to build its extra context menu actions. The double-click handler asked for those actions while it was still updating that pane, and gpui aborted the process. Markdown preview tabs did the same. Zed now looks up the actions after the click handler finishes. (kjanat/zed-editor#169, closes kjanat/zed-editor#168)
script/uninstall.shdeleting the wrong paths when$HOMEcontains a space. WithHOME=/Users/John Doe,rm -rfreceived/Users/JohnandDoe/.zed_serveras two paths. The script now quotes the path.
Language servers
- When a language server writes plain text to stdout and exits, the error in the status and the log includes up to 512 characters of that text after
Server reset the connection:. A misconfigured wrapper, such asmise task -- roslynprinting task info, showed onlyServer reset the connectionbefore. (kjanat/zed-editor#169) - When a server drops the connection during
initialize, Zed waits up to 2s for its stdout and stderr to finish before reporting the failure, so stderr from that window reaches the failure status. Stderr after aninitializetimeout or error response can still be lost, tracked in kjanat/zed-editor#170. (kjanat/zed-editor#169) - Zed skips the
shutdownrequest for a server whose stdout already closed. After a failed start, the log has noShutdown request failureerrors. (kjanat/zed-editor#169)
Builds and releases
- Each release includes debug symbols for every platform. They turn crash dumps and stack traces into function names and line numbers. The release workflow attests them like the other assets. (kjanat/zed-editor#169)
zed-windows-<arch>.dbg.zip: PDB files for Zed, the CLI, the auto-update helper, the Explorer context menu handler and the remote server.zed-linux-<arch>.dbg.tar.gz: DWARF for Zed and the remote server (zed.dbg,remote_server.dbg).zed-macos-<arch>.dwarf.tar.gz: DWARF for Zed and the remote server (zed.dwarf,remote_server.dwarf).
- The LLVM 23.1.2 release
ld.lldneeds ICU 70, which only GitHub's Ubuntu 24.04 amd64 image installs. The FreeBSD and Linux bundle jobs now install Ubuntu 22.04'slibicu70, pinned by SHA-512. - A dispatched release run reuses the tag's draft release and creates one only when none exists.
CI and scripts
script/release-notes/linkify.pyrewrites issue, pull request and commit references in release notes as explicit links, which Zed's in-app release notes view needs. It asks GitHub whether each number is an issue or a pull request, and links a bare SHA to upstream when upstream's default branch contains it.script/release-notes/publish.bashlinkifies a notes file, sets it as the release body and uploads the matchingnotes.json.script/mitm-proxy.shstops its mitmproxy container on every exit, including a failingcargo runor closed stdin.script/upstream-sync/test_resolve.pyaccepts any pinned commit SHA for the resolver's actions, and an action pin bump passessync_security.- Every script with a shebang is executable, among them
script/pacman/zed.shand the GitHub triage scripts underscript/.
Full Changelog: v1.4.12...v1.4.13
v1.4.12
This release brings the fork up to upstream Zed as of 2026-10-03 (zed-industries@a84689073d).
Fork changes
Fixed
- Self-hosted Git hosting providers losing their instance's path, such as
/gitlabinhttps://git.example.com/gitlab. Commit and file permalinks, pull request links and API requests pointed at the host root, and the owner parsed from an HTTPS remote under that path included the path. Zed now appends paths to the configuredbase_urland strips its path from HTTPS remotes for GitHub, GitLab, Gitea, Forgejo, Bitbucket, SourceHut, Tangled, Gerrit and Gitiles, and commit avatars from GitLab, Gitea, Forgejo and Bitbucket Server load through the path as well. (kjanat/zed-editor#167) - Gerrit HTTPS remotes losing a leading
a/from the project name. Gerrit marks authenticated remotes with a single/a/prefix, and Zed removed every leadinga/, so a project nameda/projectbecameproject. Zed now strips exactly one. (kjanat/zed-editor#167) "provider": "sourcehut"ingit_hosting_providersbeing rejected, although the docs and the setting's description use that name. Zed now acceptssourcehutand keepssource_hutas an alias. The Git docs and the settings reference list all nine providers,gerritincluded, and say thatbase_urlmay include a path. (kjanat/zed-editor#167)- Arrow keys doing nothing in the tabular data preview of release builds. The default keymaps bind them to
tabular_data::MoveFocusedCell, but its handler returned early outside debug builds. The arrow keys now move the focused cell in every build. (kjanat/zed-editor#167)
Changed
- The settings editor shows
markdown_preview.heading_font_weight, new from upstream in this release, under both user and project settings, like the fork's othermarkdown_previewsettings. (kjanat/zed-editor#167)
Builds and releases
- The Linux builds need glibc 2.43 or newer. The release workflow now builds them on Ubuntu 26.04 runners, and both Linux
zed-editorbinaries import math functions such asacosfandsinhfatGLIBC_2.43. Thebin/zedCLI still needs only glibc 2.39, and the Linux remote servers are static musl builds. - The x86_64 Windows installer builds on
windows-2025-vs2026, and the aarch64 installer now builds natively on a Windows 11 Arm runner.bundle-windows.ps1finds Visual Studio throughvswhere. - The release workflow installs its build tools through
mise, including LLVM 23 for the Linux bundles and the FreeBSD remote server and cargo-about 0.9.2 for the bundled third-party license list. On Windows, license generation now fails on a missing license or when cargo-about writes to stderr, as it does on Linux, macOS and FreeBSD.
CI and upstream sync
fork_upstream_syncresolves more conflicts on its own. mergiraf merges the remaining files by syntax tree, Markdown merges at the fork's 80-column wrapping, and the fork's file deletions win over upstream changes to those files.- Conflicts left after those stages go to a sandboxed
resolvejob, and theverifyjob checks its merge on a clean runner withdprint check, a workspacecargo check, clippy and the conflicted crates' tests beforeopen-sync-pr.pyopens the PR. When a check fails,open-sync-pr.pyupdates theUpstream sync conflictissue with the failed check and its output. - The sync run keeps the unfinished merge, a patch of the checkout and the job logs as artifacts for 30 days. The
resolvejob runs its export command once before its long step, andprepareskips the job while a sync PR is open or when the samemastercommit already failed. - kjanat/zed-editor#167 merges 48 upstream commits and keeps the fork's directory watch handling in
worktree, which also unwatches a directory whenread_dirfails. Upstream's regression tests for zed-industries/zed#61372 run against the fork's version, and a follow-up commit updates the fork's Bedrock test for upstream's optionaldefault_temperature. (kjanat/zed-editor#167, closes kjanat/zed-editor#166) fork_ciandfork_releaseinstall node, nextest, cargo-about, the WASI SDK, Python, the Linux apt packages and Postgres throughmise, with versions pinned in.mise.toml, and run the repository's scripts asmise runtasks.- CodeQL scans pushes to
masterand runs once a week, and pull request pushes skip the scan. CI, CodeQL and the sync workflow run onubuntu-26.04andwindows-2025-vs2026runners, and the workflows pintaiki-e/install-action2.87.22 andvmactions/freebsd-vm1.5.9.
From upstream
Git
- Create a tag at HEAD from the command palette (zed-industries/zed#61973).
- Reworked Git graph (zed-industries/zed#59839).
- Collapse the commit message editor in the Git panel, and the metadata and message sections of Git graph commit details (zed-industries/zed#63236).
- File counts in Git panel section headers (zed-industries/zed#65028).
- Git panel file actions apply to every selected file (zed-industries/zed#64640).
- Side-by-side view for
zed --diffof directories (zed-industries/zed#64967). - New
gitilesandgerrithosting providers for permalinks (zed-industries/zed#63996, zed-industries/zed#53832). - The Git panel offers
git initonly for folder projects, where it can succeed (zed-industries/zed#64948).
Editor and files
- Files created in a directory that was deleted and immediately recreated, for example by a build step, now appear without reloading the workspace (zed-industries/zed#61372).
- The file finder pre-fills its query with the selected text (zed-industries/zed#64946).
- The minimap thumb moves in step with the cursor (zed-industries/zed#62087).
- Fixed a stack overflow in encoding detection (zed-industries/zed#65102).
Markdown preview
- New
markdown_preview.heading_font_weightsetting (zed-industries/zed#64421). - "Show Source" in the preview tab's context menu. "Open Markdown Preview" and "Open SVG Preview" appear only on the active tab's menu (zed-industries/zed#65081).
Agent
- Better custom model support for Amazon Bedrock (zed-industries/zed#64953).
- ChatGPT Subscription models stay available when the model catalog takes more than 5 seconds to load (zed-industries/zed#64925).
- Context added before an agent thread finishes loading is kept (zed-industries/zed#64252).
- Fixed the "Awaiting Confirmation" row jumping while it animates (zed-industries/zed#64952) and the radio indicator alignment in elicitation forms (zed-industries/zed#63885).
Keybindings, extensions and settings
- The which-key popup and pending keystroke indicator hide bindings disabled with
nullorzed::Unbind(zed-industries/zed#64935). - Backspace and Delete have distinct icons in the keymap editor (zed-industries/zed#65037).
- Language server extensions can choose which of their servers are enabled by default (zed-industries/zed#65030).
- The Copilot enterprise URI moved to the top-level
copilot.enterprise_urisetting. Existing settings migrate automatically (zed-industries/zed#65082).
Full Changelog: v1.4.11...v1.4.12
v1.4.11
Synced with upstream Zed as of 2026-09-30 (zed-industries@40180d9c40).
Fork changes
Fixed
- Language server requests acting on a stale cursor position, and inlay hints and other pull-style requests being answered twice when issued while a server started. Zed deferred every request, and a request that waited for a starting server, or for a project's servers to suspend or resume as its workspace moved to the background and back, still used the position from when it was made. Completions, hover, signature help, go to definition, references and on-type formatting could then answer for text that later edits had moved.
LspStorenow keeps one runtime state for its language servers, runs a request immediately when no transition or startup is pending, and anchors the position of a request it has to defer. Pull-style requests skip the wait for a starting server, because the editor refreshes them when the server registers, and an inlay hint fetch queries only the servers it records. (kjanat/zed-editor#161) - Rejecting an agent's file deletion, and agent edits that recreate a deleted file, failing with a save conflict. Zed treats a save over a file that is gone from disk as a conflict, and both saves now confirm the deletion they observed and write the file.
CI and upstream sync
fork_cinow lints and tests the packages whose files changed and every package that depends on them, and runs the whole workspace whenCargo.toml,Cargo.lock, the toolchain or the CI scripts change. The test jobs get four hours, a Postgres container for the collab database tests, Mesa's software Vulkan driver for the headless wgpu tests, the WASI SDK and a prebuilt test extension.- The full-workspace runs exposed broken tests, which now pass. The extension host's platform linker test checks every extension API version against its own platform interface, the Save As test puts the dirty destination in its own pane, the Windows
utilPATH test and theagentandremote_servertests compile, and theagent_uithread recency test passes. - Tests that failed on the CI runners now pass. GPUI animations read the executor clock, the GPUI bench test identifies leaked setup work by its start time, fake-filesystem worktree tests reconcile directories only while the fake filesystem can miss events, each macOS test pasteboard gets a per-process name and starts empty, and
test_large_buffer_inlay_requests_splitgets 300 seconds. - Clippy passes on the whole workspace.
Cargo.lockpinscocoa-foundationto 0.2.0 like upstream, since 0.2.1 marks the modulesgpui_macosuses as deprecated, andtitle_bardrops itself from its own dev-dependencies. - kjanat/zed-editor#161 merges upstream through zed-industries@40180d9c40 by hand. It keeps the fork's FreeBSD, Bun and Deno runtime checks on upstream's
SystemNode::MIN_VERSION, moves the fork'sWaitForLanguageServersmessage to proto id 496 next to upstream's terminal shell messages, and keeps the fork's agent thread recency tracking. (kjanat/zed-editor#161, closes kjanat/zed-editor#159, kjanat/zed-editor#163) auto_resolve.shand a written procedure cover resolving anupstream-sync-conflictissue by hand, from the first read of the issue to the sync PR that closes it. The script applies the sync automation's resolutions to a local merge againstorigin/masterand lists the files left for a person.- Every fork workflow job stops within a minute of cancellation, and
fork_releaseshares its checkout, attestation, upload and tag settings through YAML anchors and shows the published release in its own step. - The repository's Python scripts share a root
uvworkspace on Python 3.14 with one lockfile, which carriesurllib32.8.0. (kjanat/zed-editor#162)
From upstream
terminal.shellapplies in remote sessions (zed-industries/zed#61451).- Zed Cloud connects through TLS-inspecting proxies that use the system trust store (zed-industries/zed#63686).
- Installed extensions show while offline (zed-industries/zed#64766).
- Faster project search over misclassified binary files (zed-industries/zed#64549).
- Language server formatting that replaces the whole buffer keeps the scroll position (zed-industries/zed#57269).
- Files in symlinked directories stay in their worktree when a language server reports their canonical path (zed-industries/zed#64895).
- Auto-closing brackets stay out of comments and strings at the end of a file (zed-industries/zed#64840).
- Fixes for OpenAI tool calls with optional MCP fields (zed-industries/zed#64920) and stale agent responses clearing newer prompts (zed-industries/zed#64917). GPT-6.1 Sol support (zed-industries/zed#64968).
Full Changelog: v1.4.10...v1.4.11