4.0 KiB
4.0 KiB
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 takesgpui-pre =0.3.8, a snapshot of Zed at279fe07, 109 commits on. Two sources make two crates, and their elements do not mix. Ely ongpui-pre0.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
initwins. - An app has one asset source. Of Ely's 306 icons, Kit's source holds 290 paths, 289 with the same drawing;
credit-carddiffers by one stroke (Lucide 1.48 against 1.43). Ely'sinitchecked one icon, so Kit's source alone passed and Ely's other files went missing later. - Kit's
initinstalls its inspector in debug builds; Ely'sinstall_inspectorreplaces it when called after. - Kit's main branch adds a
gpui-fastengine, unreleased in 0.7.1; at the owner's word, Ely follows Kit's default gpui alone.
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
- 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 ofinit - K03 Assets:
initchecks 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, inscripts/check.shand CI - K05 Docs: README, the site's guide, AGENTS.md
- K06 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-presplit leak detection fromtest-support, so this crate'stest-supportturns ongpui/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. - K02:
FocusScopesets the key contextElyFocus, andinitbinds Tab and Shift-Tab under it. A host's Tab in a deeper context wins whatever the order ofinit(a test binds the host's first, the order that lost: 0 indents before, 1 after); Ely's terminal, editor, traps and the inspector's scope behave as before. Review: 1 round. - K03:
initloads every file Ely bundles (318, Plex among them) through the app's source and fails naming the first it cannot; an icons-only source like Kit's passed the old one-icon check and fails now.Assets::before(other)serves Ely's paths first and the rest fromother, its errors passing through. Docs and AGENTS.md say so. Review: 1 round. - K04:
compat/kit, its own workspace, opens Ely's root scope inside Kit'sRootand tests Tab through both libraries in eachinitorder (red with K02 undone), Kit's dialog from an Ely button by key and by pointer, Ely's dialog over Kit's fields, and one asset source for both.check.shresolves it afresh and holdsgpui-kitto the newest release, so a Kit release on another gpui fails resolution naminggpui-pre(shown with Kit 0.7.0). Review: 2 rounds. - K05: the site's GPUI Kit guide (
/docs/gpui-kit): dependencies, the start in four steps, focus, two themes, the inspector; the README points to it.compat/kit/examples/start.rsis a whole app, compiled bycheck.shand run on Windows, where both libraries draw in one window. The guide says an app's Cargo keeps the newest Kit that shares Ely's GPUI, and names no unreleased Kit feature. Review: 2 rounds.