This repository is a standalone, selective hard fork of GPUI from
zed-industries/zed. It preserves APIs and renderer and
platform behavior that do not exist upstream while periodically importing compatible GPUI work.
- Historical README marker:
24f62484e936aa355c72f2009313bbe2898a9fd5(2026-04-29). - Current audited target:
2c4e44704c37ee87e59ac84e3e17388178b28545(2026-07-09). - Audited range: 1,493 Zed commits, including 117 commits touching GPUI-family code and 126 GPUI-family files.
- Fork implementation range: commits after local baseline
510dedc3b44fcf80c791ab17e59530ae66e80558.
The historical marker was only a lower-bound provenance note. Earlier fork commits b373e0b and
8164718 had already imported some later upstream work. Neither upstream SHA is a byte-identical
fork baseline or a suitable Git merge base for this fork; the current target is an audit cursor.
The 2026-07 sync compared behavior and paths, then imported or adapted changes in reviewable local
commits. It did not merge the Zed repository or copy its root manifests and lockfile.
| Area | Local commits | Upstream references and result |
|---|---|---|
| Preservation contracts | 800c73a |
Locked overlay, rounded blur, element backdrop blur, retained-layer, accessibility, scheduler, and device-recovery behavior before importing changes. |
| Approved local pending fixes | e8bceee |
Ported reviewed semantic fixes from the fork-local, previously unmerged ed805ad; this is not attributed to the audited upstream range. |
| Standalone foundation and dependencies | 6ad4ac9, 6cc040c |
Rust 1.95 foundation, standalone assets, dependency updates, gpui_util boundary, and crates.io WGPU 29.0.4. |
| Runtime and scheduling | e4fc606 |
Reconciled b14229f1a0, 74798c68d5, ee571d3c69, and 2c4e44704c: embedded application handles, system wake, lazy test scheduling, and shutdown fixes while retaining fork panic and Send-only output contracts. |
| View model | 2186631 |
Ported 74b5207744 View/ViewElement semantics and macro support while retaining fork accessibility and retained-layer invalidation. |
| Profiling and benchmarks | bb2ea30, 256ff6c |
Reconciled aa6f03bedd, 297c4a4d78, 39f7849a0f, and 48511e0b9c; profiling remains default-off and benchmarks cover CPU scene construction, backdrop blur, and retained layers. |
| Accessibility | 38ee1a8 |
Reconciled 777e16dd1f, 83d4847462, and follow-ups: current roles/properties, synthetic nodes, active descendants, root titles, and wasm example while retaining stable IDs, rollback, mutation-safe listeners, and main-thread macOS ownership. |
| Rendering and GPU resources | 92e3e78, a2ea0ed, 1120c02 |
Reconciled 34cd17ff5e, 0d8a4d4292, f281770034, fbd911ed3e, f791aa57d7, and 56009f39b: padded GPU booleans, atlas reclamation, SVG caps, box-shadow builders, WGPU recovery, and presented-frame reporting. |
| Remaining platform-neutral GPUI | 075969c through 7737056 |
Reconciled color, text wrapping, tooltip lifecycle, list scrolling, flex APIs, animation parenting, drag/hover cleanup, TypeId collections, prompt labels, and bounds/mouse refresh through the audited target. |
| Popups and input regions | e9e548d, 2a8b7b2, a551412, 66835b0, 5d9a7a7, cd0a58f, 434dd20 |
Ported 546a16d64f, a29c0d41f4, 35eaeb94a7, and 737f55a1a1: the core AnchoredPopup/typed-error contract, generic input regions, initial app IDs, IME candidate bounds, Wayland implementation, and concrete unsupported-platform rejections. Anchored popups remain distinct from overlays. |
| Linux | 66835b0 |
Reconciled 26 audited Linux commits, including 923f315f26 presented-frame commits, Wayland popup lifecycle/grabs, a29c0d41f4 input regions, bda5ac3 clipboard timeout, 35eaeb94a7 app IDs, 7c3160b activation tokens, f4364d8 headless windows, and 961f4f2 X11 mouse refresh. |
| macOS | 7c107e9, 5d9a7a7 |
Reconciled traffic lights (137eeea67b), font fallback/PostScript fixes (20a93f6195, 61ad9ebfcd, 486cf9ef3c, aa16a3bf9d), and per-window cursor rectangles (1eba1ca72e, 96165ec626, a03729b6c0) across both windows and panels. |
| Windows | cd0a58f |
Reconciled 23c0080d1d, 7194f987a7, 5aa6e8a0b3, ee571d3c69, 9ac117693b, 5c0b33f72e, 7d19e89988, and related current behavior: composition safety, controls, credentials, wake, hit testing, priority, and device recovery while retaining fork HostBackdrop and overlays. |
| Web and examples | 434dd20 |
Reconciled 546a16d64f, a03729b6c0, and 74b5207744: explicit popup degradation and the View/a11y examples while retaining standalone web cursor and font behavior. |
| Verification and CI | 2e589cf, a207892, 0330be6, 55a253c |
Added strict quality gates plus macOS, Windows, isolated Wayland/X11, and nightly wasm jobs. |
- The standalone toolchain is Rust 1.95.0 with rustfmt, Clippy, rust-analyzer, rust-src, and wasm
targets recorded in
rust-toolchain.toml. - WGPU moved from the fork's git revision to crates.io
29.0.4; custom backdrop-blur, retained-layer, recovery, and COPY_SRC paths were revalidated against that release. - The sync adopted
ashpd0.13,wayland-backend0.3.15,resvg/usvg0.46,accesskit_windows0.33.1, andzed-font-kitrevision94b0f28166665e8fd2f53ff6d268a14955c82269where the standalone extraction uses them. - Dependency declarations were migrated individually and the fork lockfile was regenerated locally. No upstream root manifest or lockfile was copied.
Future syncs must preserve these unless an explicit project decision changes them:
OverlaySurfaceOptions,OverlayInputMode, andApp::open_overlay_surfaceare display-oriented overlay contracts. They are not aliases for parent-relativeWindowKind::AnchoredPopup.WindowBackgroundAppearance::Blurred { corner_radius }controls native compositor blur geometry. A zero radius is rectangular; a positive radius clips native blur and must survive resize, scale, and device recovery.Styled::backdrop_bluris an element effect that samples already-painted GPUI content. It is separate from native window blur.- Retained compositor layers, retained-layer exclusions around backdrop blur, transform-aware hitboxes, easing bounds, public shadow painting, and inset shadows remain available.
- Overlay windows retain their platform-specific level, nonactivation, click-through, and
all-spaces behavior. On Windows, zero-radius blur remains acrylic and positive-radius blur uses
HostBackdrop. On macOS, overlays remain
NSPanelinstances. - Fork accessibility keeps stable IDs, snapshot rollback, live-node sweeping, listener precedence and mutation safety, semantic keyboard click behavior, and macOS main-thread adapter ownership.
- Dedicated scheduler output only needs
Send; thread and child panics must remain observable and must not stop later dedicated work.
- Native anchored popups are implemented on Wayland. X11, macOS, Windows, and web return the typed
PopupNotSupportedErrorso callers can choose an in-window fallback. - Wayland's generic input region was adapted into persistent, explicit precedence state so it can
coexist with
OverlayInputMode; copying upstream's transient setter would let later window updates erase the fork's overlay policy. - The upstream Metal headless renderer was not copied into the fork renderer because it does not
model the fork's retained-layer and backdrop-blur state.
current_headless_renderertherefore reportsNone, and the benchmark harness uses deterministic CPU scene construction. - Upstream async fallback
952119de41was rejected because the fork deliberately panics when anAsyncWindowContextis bound to a closed window. That contract has focused tests. f482f9e18cand2301e61d2adepend on an unextracted proptest feature;ccf4058b7ais a Zed-specific keymap test; the relevant GPUI hunk of84b753cb51is whitespace-only;2882636c06was reverted upstream.- Zed application features and changes outside GPUI and the standalone dependency graph are out of
scope. No Zed root
Cargo.toml,Cargo.lock, workflow, or product assets are copied wholesale. - Rounded native blur on pre-macOS 12 uses the legacy CGS path, which cannot apply the modern mask API and therefore degrades to rectangular blur. Wayland compositors without the KDE blur protocol and X11/web degrade to transparency rather than emulating native blur.
The completed local matrix passed:
cargo fmt --all -- --checkcargo metadata --locked --format-version 1cargo check --locked --workspace --all-targetscargo clippy --locked --workspace --all-targets --all-features -- --deny warningscargo test --locked -p scheduler(36 tests)cargo test --locked -p gpui --features test-support(253 unit and 3 integration tests)- all GPUI examples, GPUI benches, and GPUI WGPU benches
- macOS platform tests (8 tests)
- isolated Linux no-default, Wayland, X11, and combined checks with warnings denied
- nightly wasm build-std checks for
gpui_platform,a11y, andview_example
Rounded native window blur and animated element backdrop-blur cards were visually confirmed on
macOS. The workflow is configured to run native Windows compilation/HLSL validation and repeat the
cross-platform matrix, but this branch has not been pushed and no remote CI result exists yet.
Live Wayland/X11 popup, input-region and compositor blur behavior; Windows
HostBackdrop/device-loss; macOS legacy-CGS blur, Retina/non-Retina resizing and retained/backdrop
Metal behavior; and multi-GPU recovery remain hardware/session-only validation risks. Stable wasm
is not the supported gate because wasm_thread requires nightly; CI uses nightly build-std with
atomics enabled.
- Clone or update Zed in
/tmp/zed; never overwrite tracked fork files with an upstream tree. - Set
BASE=2c4e44704c37ee87e59ac84e3e17388178b28545and the new auditedTARGET. - Inventory
BASE..TARGETforcrates/gpui*,crates/scheduler, required extracted utilities, shaders, examples, and platform manifests. Also compare the target trees semantically so an old README marker cannot hide a pre-existing gap. - Classify every relevant change as already integrated, fork-modified, missing, competing, or excluded. Record exact paths and upstream SHAs before editing.
- Run the preservation tests first. Import compatible behavior in dependency-ordered, reviewable commits; adapt conflicts around the invariants above instead of replacing whole files.
- Run focused tests after each slice, then the full CI matrix and available native visual smokes.
- Update the audited target here and in README only after the selective sync and independent review are complete. Do not describe the result as a Git merge unless a real merge was performed.