Kit · K01: gpui from gpui-pre =0.3.8, Kit's pin; test-support keeps leak detection

This commit is contained in:
ZacharyZhang-NY committed 2026-10-07 12:27:17 -04:00
1 parent 083ef85696
commit c61a5b22b0
8 files changed
+391 -238

No files matched your search

+3 -2
View File
@@ -5,7 +5,7 @@ Ely GPUI Component. A component library for GPUI, in light and dark.
## Stack
- Rust 1.95, edition 2024. One crate: `ely-gpui-component`.
- gpui and gpui_platform from Zed's repo by git at 1a28cff, the code gpui-pre 0.3.7 republishes. gpui takes `stacker`, which keeps deep layouts off the stack's end; gpui_platform takes `font-kit`, without which macOS draws no text. Feature `runtime_shaders`, on by default, turns on gpui_platform's: machines without Xcode lack the Metal compiler.
- gpui, gpui_platform and gpui_web from crates.io's `gpui-pre` snapshots at `=0.3.8`, Zed at 279fe07, the pin GPUI Kit 0.7.1 holds; each keeps its crate name through `package`. gpui takes `stacker`, which keeps deep layouts off the stack's end; gpui_platform takes `font-kit`, without which macOS draws no text. Feature `runtime_shaders`, on by default, turns on gpui_platform's: machines without Xcode lack the Metal compiler.
- Assets, embedded with `rust-embed`: Lucide 1.48.0 icons (ISC), Inter 4.1 (regular, medium, semibold, italic), JetBrains Mono 2.304 and IBM Plex Sans Regular (OFL). Plex sits unmodified, its name reserved, where gpui's svg renderer loads it: gpui_web answers `.SystemUIFont` with it, and svg text falls back to it on the web.
- Catalog data: `emojis` (Unicode emoji), `isolang` (ISO 639, native names), `isocountry` (ISO 3166), `iso_currency` (ISO 4217, also minor units for money).
- Codes: `qrcode` (QR) and `barcoders` (Code 128, EAN-13), both MIT OR Apache-2.0, default features off. `rqrr` 0.11 ((MIT OR Apache-2.0) AND ISC, default features off) reads QR codes from the host's frames.
@@ -80,7 +80,7 @@ Ely GPUI Component. A component library for GPUI, in light and dark.
- `TextInput::bounds_for` reads the last layout. Text changed this frame clamps to the laid-out end until the next paint.
- The harness types with `dispatch_keystroke` through `AnyWindowHandle`, which leaves the root view free to redraw.
- The macOS open panel runs out of process too. Escape does not reach it; the harness sends it `cancel:`.
- gpui's `test-support` stays behind this crate's `test-support` feature and is never on for the gallery: it tracks every entity handle for leaks and records every `debug_selector`'s bounds each frame.
- gpui's `test-support` and `leak-detection` stay behind this crate's `test-support` feature and are never on for the gallery: one records every `debug_selector`'s bounds each frame, the other tracks every entity handle, so a test that leaks one fails (`tests::a_leaked_entity_fails_its_test`).
- A tracked `FocusHandle` is a Tab stop only when built with `.tab_stop(true)`. `tab_index` on the div reaches only handles gpui makes itself. `primitives::tab_stop` keeps one per id.
- Floating lists go below their anchor, or above when only above has room (`forms::options::float`). gpui's own switch keeps the anchor point, so a flipped list would cover its trigger. An option list is at least its trigger's width and at most the window's less `window_margin` each side, so gpui can snap it inside and its rows end in an ellipsis; wider, gpui pins it left and the rest runs off.
- A trigger that opens a list goes through `forms::select::listing`: toggle, keys, blur and popup live there, for Select, TabOverflowMenu and Breadcrumb alike. A field that suggests as you type floats its rows through `forms::select::Picker` and `forms::options::Popup`, as Combobox and TagInput do.
@@ -268,3 +268,4 @@ Ely GPUI Component. A component library for GPUI, in light and dark.
- 2026-10-05: `TemplatePicker`'s list is one Tab stop: up, down, Home and End move the highlight, Enter uses it; rows are list items with name, selection, place and count; its search placeholder, All chip, Use button and empty line read from the builtin catalog in English and Chinese. Before, the rows were reachable by mouse alone and anonymous in the AX tree.
- 2026-10-05: `SelectableList` is a list in the AX tree, named by `label`; each `ListItem` is a list item with its title as name, its description, its selection, and, in a selectable list, its place and count (`ListItem::place`). Before, the rows had no role and were missing from the AX tree.
- 2026-10-05: `NumberInput::blank` shows a placeholder, not a number, as for a mixed selection; Enter or blur on the empty field commits nothing, a typed number commits as usual. Before, a mixed field held a real number the owner had to invent, and Enter sent it. `ScrubInput` moved to `number/scrub.rs`.
- 2026-10-07: gpui comes from crates.io's `gpui-pre` at the exact snapshot GPUI Kit pins, not from Zed's git. Two sources build two gpui crates whose types do not mix, so Ely and Kit could not share a window. The code is still Zed's; the publisher is not. This replaces the 2026-09-28 choice of Zed's git, and the pin moves when Kit's does.
Generated
+338 -225
View File
@@ -731,16 +731,6 @@ dependencies = [
"piper",
]
[[package]]
name = "borsh"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a"
dependencies = [
"bytes",
"cfg_aliases",
]
[[package]]
name = "bstr"
version = "1.13.1"
@@ -1006,16 +996,6 @@ dependencies = [
"unicode-width",
]
[[package]]
name = "collections"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"gpui_util",
"indexmap",
"rustc-hash 2.1.3",
]
[[package]]
name = "color_quant"
version = "1.1.0"
@@ -1468,16 +1448,6 @@ dependencies = [
"unicode-xid",
]
[[package]]
name = "derive_refineable"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.119",
]
[[package]]
name = "digest"
version = "0.10.7"
@@ -1502,11 +1472,11 @@ dependencies = [
[[package]]
name = "dirs"
version = "6.0.0"
version = "5.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
dependencies = [
"dirs-sys",
"dirs-sys 0.4.1",
]
[[package]]
@@ -1515,7 +1485,19 @@ version = "7.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d57d423b3c82e89b9a24ca3091fee61f456a26edbd28d26c65906f4bc1dcd8f"
dependencies = [
"dirs-sys",
"dirs-sys 0.5.0",
]
[[package]]
name = "dirs-sys"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
dependencies = [
"libc",
"option-ext",
"redox_users 0.4.6",
"windows-sys 0.48.0",
]
[[package]]
@@ -1526,7 +1508,7 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
dependencies = [
"libc",
"option-ext",
"redox_users",
"redox_users 0.5.3",
"windows-sys 0.61.2",
]
@@ -1657,9 +1639,9 @@ dependencies = [
"emojis",
"env_logger",
"futures",
"gpui",
"gpui_platform",
"gpui_web",
"gpui-pre",
"gpui-pre-platform",
"gpui-pre-web",
"image",
"iso_currency",
"isocountry",
@@ -2312,7 +2294,7 @@ dependencies = [
"log",
"presser",
"thiserror 2.0.21",
"windows 0.57.0",
"windows 0.62.2",
]
[[package]]
@@ -2336,9 +2318,10 @@ dependencies = [
]
[[package]]
name = "gpui"
version = "0.2.2"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7f0bc3ebba070f8981b3f8e905a12f47d27794a30d029e59cdb9edf7a4b3360"
dependencies = [
"accesskit",
"anyhow",
@@ -2348,7 +2331,6 @@ dependencies = [
"bindgen",
"bitflags 2.13.2",
"chrono",
"collections",
"core-video",
"ctor",
"derive_more",
@@ -2357,14 +2339,20 @@ dependencies = [
"futures",
"futures-concurrency",
"getrandom 0.3.4",
"gpui_macros",
"gpui_shared_string",
"gpui_util",
"gpui-pre-collections",
"gpui-pre-http-client",
"gpui-pre-macros",
"gpui-pre-refineable",
"gpui-pre-scheduler",
"gpui-pre-shared-string",
"gpui-pre-sum-tree",
"gpui-pre-util",
"gpui-pre-util-macros",
"heapless",
"http_client",
"image",
"inventory",
"itertools 0.14.0",
"libc",
"log",
"lyon",
"num_cpus",
@@ -2379,10 +2367,8 @@ dependencies = [
"proptest",
"rand 0.9.5",
"raw-window-handle",
"refineable",
"regex",
"resvg",
"scheduler",
"schemars",
"seahash",
"serde",
@@ -2392,13 +2378,11 @@ dependencies = [
"spin 0.10.1",
"stacksafe",
"strum 0.28.0",
"sum_tree",
"taffy",
"thiserror 2.0.21",
"ttf-parser",
"url",
"usvg",
"util_macros",
"uuid",
"waker-fn",
"web-time",
@@ -2407,43 +2391,94 @@ dependencies = [
]
[[package]]
name = "gpui_apple"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-apple"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfdd914311cd12894367c8b9908947bb0c27fd42f8b9a5ff7a0730551a83fa4c"
dependencies = [
"anyhow",
"async-task",
"block2 0.6.2",
"cbindgen",
"cocoa 0.26.0",
"core-foundation 0.10.0",
"core-graphics 0.24.0",
"core-video",
"derive_more",
"dispatch2",
"etagere",
"foreign-types",
"gpui",
"gpui-pre",
"gpui-pre-util",
"image",
"libc",
"log",
"mach2",
"metal",
"objc",
"objc2 0.6.4",
"objc2-foundation 0.3.2",
"objc2-quartz-core 0.3.2",
"parking_lot",
]
[[package]]
name = "gpui_linux"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-collections"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c060863025dc3b8e90febad2d1f4ffd23a5d0dcedba39d3f6b7820ea2fdd3a0"
dependencies = [
"gpui-pre-util",
"indexmap",
"rustc-hash 2.1.3",
]
[[package]]
name = "gpui-pre-derive-refineable"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc834f30f5f49791e214f1fde01a009c7de91c9cd0a9f31dabfed130ba39e6cf"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.119",
]
[[package]]
name = "gpui-pre-http-client"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d2935cf82333da3f41774e5757837756408f01356197b41c817ad2666034453"
dependencies = [
"anyhow",
"async-compression",
"bytes",
"derive_more",
"futures",
"http",
"http-body",
"log",
"parking_lot",
"serde",
"serde_json",
"serde_urlencoded",
"url",
]
[[package]]
name = "gpui-pre-linux"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1131746fad5c87b5de74dc9c73105655b0c820a2dd4bb247586573e7cf5720e"
dependencies = [
"accesskit",
"accesskit_unix",
"anyhow",
"bytemuck",
"calloop",
"collections",
"futures",
"gpui",
"gpui_util",
"http_client",
"gpui-pre",
"gpui-pre-collections",
"gpui-pre-http-client",
"gpui-pre-util",
"libc",
"log",
"notify-rust",
@@ -2458,33 +2493,33 @@ dependencies = [
]
[[package]]
name = "gpui_macos"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-macos"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d756813ff1cd741a502af60fd18869e0677795936d7349642b41c49f43120c0"
dependencies = [
"accesskit",
"accesskit_macos",
"anyhow",
"async-task",
"block2 0.6.2",
"cocoa 0.26.0",
"collections",
"core-foundation 0.10.0",
"core-foundation-sys",
"core-graphics 0.24.0",
"core-text",
"core-video",
"ctor",
"dispatch2",
"foreign-types",
"futures",
"gpui",
"gpui_apple",
"gpui_util",
"gpui-pre",
"gpui-pre-apple",
"gpui-pre-collections",
"gpui-pre-scheduler",
"gpui-pre-util",
"image",
"itertools 0.14.0",
"libc",
"log",
"mach2",
"objc",
"objc2 0.6.4",
"objc2-app-kit 0.3.2",
@@ -2504,34 +2539,75 @@ dependencies = [
]
[[package]]
name = "gpui_macros"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-macros"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2ad26ca759364694cb55487bebff4c1b7dd6accab49990ff3cda6f7a818a9f4"
dependencies = [
"heck 0.5.0",
"proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.119",
]
[[package]]
name = "gpui_platform"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-perf"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fcb288a506a476b6cbf97e6ec1cc0118db43f0ca91087588afa1c2d8cd4f842"
dependencies = [
"anyhow",
"console_error_panic_hook",
"gpui",
"gpui_linux",
"gpui_macos",
"gpui_web",
"gpui_windows",
"gpui-pre-collections",
"serde",
"serde_json",
]
[[package]]
name = "gpui_shared_string"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-platform"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e200b7b78836f1a0fc70767d971768e88f29d8b91b697285c15fb8e373635a3e"
dependencies = [
"anyhow",
"console_error_panic_hook",
"gpui-pre",
"gpui-pre-linux",
"gpui-pre-macos",
"gpui-pre-web",
"gpui-pre-windows",
]
[[package]]
name = "gpui-pre-refineable"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4042345bb5bd3ecbc5d15b21ed128154f462a992058d7038cd397631f5462338"
dependencies = [
"gpui-pre-derive-refineable",
]
[[package]]
name = "gpui-pre-scheduler"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4acd73345bc3c09f1b98c1b21eb4459ad8336f89bb2edcef619e11c5a08456e"
dependencies = [
"async-task",
"backtrace",
"chrono",
"flume",
"futures",
"parking_lot",
"rand 0.9.5",
"wasm_thread",
"web-time",
]
[[package]]
name = "gpui-pre-shared-string"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "477529fd5aa90bff969785ee9a3938484d94aa5101cdf7b84719629c0345f98a"
dependencies = [
"schemars",
"serde",
@@ -2539,9 +2615,23 @@ dependencies = [
]
[[package]]
name = "gpui_util"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-sum-tree"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ec0ec176d576b82aed716cf47185856b54ea9528caaf9d01787024689bfd824"
dependencies = [
"gpui-pre-ztracing",
"heapless",
"log",
"rayon",
"tracing",
]
[[package]]
name = "gpui-pre-util"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1635ae7d0b05400bfa211ddef6c67dc8d9f223c463022c2b3bf2c1c14c6044f"
dependencies = [
"anyhow",
"log",
@@ -2549,21 +2639,33 @@ dependencies = [
]
[[package]]
name = "gpui_web"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-util-macros"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01486fce7722e5d7d7e7bb71c719dfdcc6ed917112bdc7c56d0556fdb60d10ab"
dependencies = [
"gpui-pre-perf",
"quote",
"syn 2.0.119",
]
[[package]]
name = "gpui-pre-web"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "184776d0763e6889dd2842dcb1204c15055945f2bdfe926b5ef57bdbd1952a65"
dependencies = [
"anyhow",
"console_error_panic_hook",
"futures",
"gpui",
"gpui_wgpu",
"http_client",
"gpui-pre",
"gpui-pre-http-client",
"gpui-pre-scheduler",
"gpui-pre-wgpu",
"js-sys",
"log",
"parking_lot",
"raw-window-handle",
"scheduler",
"smallvec",
"unicode-properties",
"unicode-script",
@@ -2577,17 +2679,18 @@ dependencies = [
]
[[package]]
name = "gpui_wgpu"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-wgpu"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439c5421cafe1a7cf68d0c0ae5cc82b26fad6b0e6345ac98d20acaf1f2463914"
dependencies = [
"anyhow",
"bytemuck",
"collections",
"cosmic-text",
"etagere",
"gpui",
"gpui_util",
"gpui-pre",
"gpui-pre-collections",
"gpui-pre-util",
"itertools 0.14.0",
"log",
"parking_lot",
@@ -2602,19 +2705,21 @@ dependencies = [
]
[[package]]
name = "gpui_windows"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
name = "gpui-pre-windows"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "371f9bb13f97e3bea2f8b8e5e81232bb74d735153c244ae67f7400e743925b1c"
dependencies = [
"accesskit",
"accesskit_windows",
"anyhow",
"collections",
"dunce",
"etagere",
"futures",
"gpui",
"gpui_util",
"gpui-pre",
"gpui-pre-collections",
"gpui-pre-scheduler",
"gpui-pre-util",
"image",
"itertools 0.14.0",
"log",
@@ -2629,6 +2734,36 @@ dependencies = [
"windows-registry",
]
[[package]]
name = "gpui-pre-zlog"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3bbe5b98630ef4bfed5a7105ec1062e78d571912bc491388f07ea22f2457c18b"
dependencies = [
"anyhow",
"chrono",
"gpui-pre-collections",
"log",
]
[[package]]
name = "gpui-pre-ztracing"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f806400f6bda1fdd9fc627e158c0e44fb0c4b7767582a3621efcf92f4a850db7"
dependencies = [
"gpui-pre-zlog",
"gpui-pre-ztracing-macro",
"tracing",
"tracing-subscriber",
]
[[package]]
name = "gpui-pre-ztracing-macro"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d337c9acf058238e45ce0570d8a5958439242889492f91ae2d8e324211a61ccd"
[[package]]
name = "half"
version = "2.7.1"
@@ -2789,26 +2924,6 @@ dependencies = [
"http",
]
[[package]]
name = "http_client"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"anyhow",
"async-compression",
"bytes",
"derive_more",
"futures",
"http",
"http-body",
"log",
"parking_lot",
"serde",
"serde_json",
"serde_urlencoded",
"url",
]
[[package]]
name = "hybrid-array"
version = "0.4.15"
@@ -2830,7 +2945,7 @@ dependencies = [
"js-sys",
"log",
"wasm-bindgen",
"windows-core 0.57.0",
"windows-core 0.62.2",
]
[[package]]
@@ -3746,7 +3861,7 @@ version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
"windows-sys 0.59.0",
"windows-sys 0.61.2",
]
[[package]]
@@ -4411,16 +4526,6 @@ version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "perf"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"collections",
"serde",
"serde_json",
]
[[package]]
name = "phf"
version = "0.11.3"
@@ -4719,8 +4824,9 @@ dependencies = [
[[package]]
name = "proptest"
version = "1.10.0"
source = "git+https://github.com/proptest-rs/proptest?rev=3dca198a8fef1b32e3a66f1e1897c955b4dc5b5b#3dca198a8fef1b32e3a66f1e1897c955b4dc5b5b"
version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744"
dependencies = [
"bit-set 0.8.0",
"bit-vec 0.8.0",
@@ -4739,7 +4845,8 @@ dependencies = [
[[package]]
name = "proptest-macro"
version = "0.5.0"
source = "git+https://github.com/proptest-rs/proptest?rev=3dca198a8fef1b32e3a66f1e1897c955b4dc5b5b#3dca198a8fef1b32e3a66f1e1897c955b4dc5b5b"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efaa288b896cb2b345da7b7f2110ab19e51565b83495b56fcec98a62f8b1f33e"
dependencies = [
"convert_case 0.11.0",
"proc-macro2",
@@ -5068,6 +5175,17 @@ dependencies = [
"bitflags 2.13.2",
]
[[package]]
name = "redox_users"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [
"getrandom 0.2.17",
"libredox",
"thiserror 1.0.69",
]
[[package]]
name = "redox_users"
version = "0.5.3"
@@ -5098,14 +5216,6 @@ dependencies = [
"syn 3.0.6",
]
[[package]]
name = "refineable"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"derive_refineable",
]
[[package]]
name = "regex"
version = "1.13.1"
@@ -5329,22 +5439,6 @@ dependencies = [
"winapi-util",
]
[[package]]
name = "scheduler"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"async-task",
"backtrace",
"chrono",
"flume",
"futures",
"parking_lot",
"rand 0.9.5",
"wasm_thread",
"web-time",
]
[[package]]
name = "schemars"
version = "1.2.2"
@@ -5739,7 +5833,6 @@ version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523"
dependencies = [
"borsh",
"serde_core",
]
@@ -5897,18 +5990,6 @@ version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "sum_tree"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"heapless",
"log",
"rayon",
"tracing",
"ztracing",
]
[[package]]
name = "sval"
version = "2.22.0"
@@ -6594,16 +6675,6 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "util_macros"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"perf",
"quote",
"syn 2.0.119",
]
[[package]]
name = "uuid"
version = "1.26.1"
@@ -6807,7 +6878,8 @@ dependencies = [
[[package]]
name = "wasm_thread"
version = "0.3.3"
source = "git+https://github.com/zed-industries/wasm_thread?rev=0cf96c7708dfb97ccf3da50347e25edcf75d6937#0cf96c7708dfb97ccf3da50347e25edcf75d6937"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7516db7f32decdadb1c3b8deb1b7d78b9df7606c5cc2f6241737c2ab3a0258e"
dependencies = [
"futures",
"js-sys",
@@ -7384,6 +7456,15 @@ dependencies = [
"windows-targets 0.42.2",
]
[[package]]
name = "windows-sys"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
"windows-targets 0.48.5",
]
[[package]]
name = "windows-sys"
version = "0.59.0"
@@ -7417,6 +7498,21 @@ dependencies = [
"windows_x86_64_msvc 0.42.2",
]
[[package]]
name = "windows-targets"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
"windows_aarch64_gnullvm 0.48.5",
"windows_aarch64_msvc 0.48.5",
"windows_i686_gnu 0.48.5",
"windows_i686_msvc 0.48.5",
"windows_x86_64_gnu 0.48.5",
"windows_x86_64_gnullvm 0.48.5",
"windows_x86_64_msvc 0.48.5",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
@@ -7466,6 +7562,12 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
@@ -7478,6 +7580,12 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
@@ -7490,6 +7598,12 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
@@ -7508,6 +7622,12 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
@@ -7520,6 +7640,12 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
@@ -7532,6 +7658,12 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
@@ -7544,6 +7676,12 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
@@ -7825,14 +7963,15 @@ dependencies = [
[[package]]
name = "zed-font-kit"
version = "0.14.1-zed"
source = "git+https://github.com/zed-industries/font-kit?rev=94b0f28166665e8fd2f53ff6d268a14955c82269#94b0f28166665e8fd2f53ff6d268a14955c82269"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3898e450f36f852edda72e3f985c34426042c4951790b23b107f93394f9bff5"
dependencies = [
"bitflags 2.13.2",
"byteorder",
"core-foundation 0.10.0",
"core-graphics 0.24.0",
"core-text",
"dirs 6.0.0",
"dirs 5.0.1",
"dwrote",
"float-ord",
"freetype-sys",
@@ -7849,7 +7988,8 @@ dependencies = [
[[package]]
name = "zed-scap"
version = "0.0.8-zed"
source = "git+https://github.com/zed-industries/scap?rev=4afea48c3b002197176fb19cd0f9b180dd36eaac#4afea48c3b002197176fb19cd0f9b180dd36eaac"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6b338d705ae33a43ca00287c11129303a7a0aa57b101b72a1c08c863f698ac8"
dependencies = [
"anyhow",
"cocoa 0.25.0",
@@ -7973,39 +8113,12 @@ version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112"
[[package]]
name = "zlog"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"anyhow",
"chrono",
"collections",
"log",
]
[[package]]
name = "zmij"
version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
[[package]]
name = "ztracing"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
dependencies = [
"tracing",
"tracing-subscriber",
"zlog",
"ztracing_macro",
]
[[package]]
name = "ztracing_macro"
version = "0.1.0"
source = "git+https://github.com/zed-industries/zed?rev=1a28cff4b409169bac058bca40dfbfeb7621d19b#1a28cff4b409169bac058bca40dfbfeb7621d19b"
[[package]]
name = "zune-core"
version = "0.5.3"
+4 -4
View File
@@ -11,15 +11,15 @@ publish = false
[features]
default = ["runtime_shaders"]
runtime_shaders = ["gpui_platform/runtime_shaders"]
test-support = ["gpui/test-support"]
test-support = ["gpui/test-support", "gpui/leak-detection"]
[dependencies]
anyhow = "1"
barcoders = { version = "2", default-features = false, features = ["std"] }
emojis = "0.9"
futures = "0.3"
gpui = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b", default-features = false, features = ["stacker"] }
gpui_platform = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b", features = ["font-kit"] }
gpui = { package = "gpui-pre", version = "=0.3.8", default-features = false, features = ["stacker"] }
gpui_platform = { package = "gpui-pre-platform", version = "=0.3.8", features = ["font-kit"] }
image = { version = "0.25", default-features = false }
iso_currency = { version = "0.7", features = ["iterator"] }
isocountry = "0.3"
@@ -61,7 +61,7 @@ rustix = { version = "1", default-features = false, features = ["std", "fs"] }
env_logger = "0.11"
[target.'cfg(target_family = "wasm")'.dev-dependencies]
gpui_web = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b" }
gpui_web = { package = "gpui-pre-web", version = "=0.3.8" }
js-sys = "0.3"
wasm-bindgen = "0.2"
web-sys = { version = "0.3", features = ["Location", "UrlSearchParams", "Window"] }
+2 -2
View File
@@ -12,8 +12,8 @@ Status: early. `TASKS.md` tracks every component, chapter by chapter. To help, s
```toml
[dependencies]
ely-gpui-component = { git = "https://github.com/ZacharyZhang-NY/Ely-GPUI-Components" }
gpui = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b" }
gpui_platform = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b", features = ["font-kit"] }
gpui = { package = "gpui-pre", version = "=0.3.8" }
gpui_platform = { package = "gpui-pre-platform", version = "=0.3.8", features = ["font-kit"] }
```
```rust
+1
View File
@@ -188,6 +188,7 @@ Per-component lines live in `tasks/`. Tags there:
- [x] T51 Showcase · an apps page fed by a public repo — `tasks/showcase.md`
- [x] T52 Logo · an isometric mark for the header, favicon and OG image — `tasks/logo.md`
- [x] T53 Panics · handlers move into `new`, live states log and show, asserts audited — `tasks/panics.md`
- [ ] T54 GPUI Kit · Ely and Kit share one app and one window — `tasks/kit.md`
## T00 detail
+5 -5
View File
@@ -8,19 +8,19 @@
## Add the dependencies
Ely is not on crates.io. Depend on it by git, with GPUI from Zed's repository at the revision Ely pins:
Ely is not on crates.io. Depend on it by git, with GPUI at the snapshot Ely pins. `gpui-pre` republishes Zed's GPUI on crates.io, and GPUI Kit pins the same one:
```toml
[dependencies]
ely-gpui-component = { git = "https://github.com/ZacharyZhang-NY/Ely-GPUI-Components" }
gpui = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b" }
gpui_platform = { git = "https://github.com/zed-industries/zed", rev = "1a28cff4b409169bac058bca40dfbfeb7621d19b", features = ["font-kit"] }
gpui = { package = "gpui-pre", version = "=0.3.8" }
gpui_platform = { package = "gpui-pre-platform", version = "=0.3.8", features = ["font-kit"] }
```
| Line | Why |
| --- | --- |
| `ely-gpui-component` | The library. `Cargo.lock` records the commit; add `rev = "<commit>"` to hold it in `Cargo.toml` as well. |
| `gpui` | The same revision as Ely's. Another revision builds a second GPUI, and its types do not match the ones Ely takes. |
| `gpui` | The same snapshot as Ely's, under the name `gpui`. Another builds a second GPUI, and its types do not match the ones Ely takes. |
| `gpui_platform` | Opens windows on each platform. Without `font-kit`, macOS falls back to GPUI's no-op text system and draws no text. |
## Shaders
@@ -45,5 +45,5 @@ A window opens with a counter and a Press button. From a clone of the repository
| `init` error: `ely: asset source failed` | The app's asset source returned an error. The error carries it. |
| `init` error: `ely: embedded fonts failed to register` | GPUI's text system refused Ely's fonts. File a bug with the log. |
| Windows open with no text on macOS | `gpui_platform` lacks the `font-kit` feature. |
| `mismatched types`, with the note ``there are multiple different versions of crate `gpui` in the dependency graph`` | `gpui` points at a revision other than Ely's. Use `1a28cff4b409169bac058bca40dfbfeb7621d19b`. |
| `mismatched types`, with the note ``there are multiple different versions of crate `gpui` in the dependency graph`` | `gpui` names another snapshot or a git source. Use `gpui-pre` at `=0.3.8`. |
| `metal shader compilation failed` | Default features are off and Xcode's Metal compiler is missing. Keep `runtime_shaders`. |
+11
View File
@@ -85,3 +85,14 @@ fn setup(cx: &mut App) {
terminal::bind_keys(cx);
documents::bind_keys(cx);
}
#[cfg(all(test, feature = "test-support"))]
mod tests {
use gpui::{AppContext, TestAppContext};
#[gpui::test]
#[should_panic(expected = "leaked handles")]
fn a_leaked_entity_fails_its_test(cx: &mut TestAppContext) {
std::mem::forget(cx.new(|_| ()));
}
}
+27
View File
@@ -0,0 +1,27 @@
# GPUI Kit
Started 2026-10-07. Ely and Longbridge's GPUI Kit (`gpui-kit` on crates.io) share one app and one window. Measured before work:
- Ely took gpui from Zed's git at `1a28cff`; Kit 0.7.1 takes `gpui-pre =0.3.8`, a snapshot of Zed at `279fe07`, 109 commits on. Two sources make two crates, and their elements do not mix. Ely on `gpui-pre` 0.3.8 builds and passes all 1,685 tests.
- Actions and key contexts do not collide: Ely's namespaces and contexts all start with `ely`/`Ely`.
- Ely binds Tab with no context, which gpui ranks at the deepest level. In a Kit code editor inside an Ely scope, Tab ties with Kit's indent, and the later `init` wins.
- An app has one asset source. Of Ely's 306 icons, Kit's source holds 290 paths, 289 with the same drawing; `credit-card` differs by one stroke (Lucide 1.48 against 1.43). Ely's `init` checked one icon, so Kit's source alone passed and Ely's other files went missing later.
- Kit's `init` installs its inspector in debug builds; Ely's `install_inspector` replaces it when called after.
- Kit can run on `gpui-fast` instead; Ely could not follow.
Rules: the work order follows dependencies, since the PRD has no chapter for it. Each item passes `scripts/check.sh` and a codex review (`gpt-6.1-sol`, effort `high`) in a herdr split, five rounds at most, then commits and pushes.
## Items
- [x] K01 gpui from `gpui-pre =0.3.8`, Kit's pin: crate, gallery, web build, docs, CI
- [ ] K02 Tab and Shift-Tab bound under `FocusScope`'s own context, so a deeper context's Tab wins whatever the order of `init`
- [ ] K03 Assets: `init` checks every embedded file through the app's source; one source serves Ely's files and another's
- [ ] K04 `compat/kit`: a crate on the newest Kit that runs both libraries in one window, in `scripts/check.sh` and CI
- [ ] K05 `gpui-fast`: Ely builds and tests on Kit's other engine, or the item records why not
- [ ] K06 Docs: README, the site's guide, AGENTS.md
- [ ] K07 Acceptance table
## Log
One line per item: what changed, what stayed and why, review rounds.
- K01: gpui, gpui_platform and gpui_web come from `gpui-pre` `=0.3.8`; the lock holds no git source and one copy of each. `gpui-pre` split leak detection from `test-support`, so this crate's `test-support` turns on `gpui/leak-detection`, and a test that leaks on purpose proves it. The check, the wasm check, the web build (20.0 MB), a headless Chromium shot and the site build pass. README and the install guide name the snapshot. Review: 2 rounds.