Skip to content

build(deps): run on gpui-fast instead of the gpui-pre snapshots - #555

Merged
Tryanks merged 6 commits into
mainfrom
chore/gpui-fast
Sep 30, 2026
Merged

Tryanks merged 6 commits into
mainfrom
chore/gpui-fast

Conversation

@Tryanks

@Tryanks Tryanks commented Sep 30, 2026 •

Copy link
Copy Markdown
Owner

Change

  • The root [patch.crates-io] points gpui-pre, -macros, -platform, -reqwest-client, -sum-tree and -web at gpui-fast's compat crates. GPUI Kit and Tcode now resolve to the same gpui-fast gpui. The crate declarations in the workspace are unchanged.
  • gpui-fast has no gpui-pre-wgpu stand-in, so gpui-ios and gpui-android depend on gpui-fast's gpui_wgpu directly. Its WgpuRenderer::gpu_specs returns GpuSpecs rather than Option, and both backends wrap the result.
  • ReqwestClient::from takes gpui-fast's zed-reqwest client, so tcode-ui builds that same client (same rev, still rustls-tls-webpki-roots).
  • Cargo.lock keeps gpu-allocator on windows 0.62, as on main. Resolving gpui-fast had moved it to 0.58, whose D3D12 types wgpu-hal 29 cannot pass on Windows.
  • The backend READMEs and crate docs now name gpui-fast.

Tests adjusted to gpui-fast

gpui-fast draws a view again only when something marked it dirty. None of the test failures after the switch reflects a behaviour difference in the app. They came from two test-side assumptions:

  • Reading debug_bounds from a frame that reused views. In test-support builds, gpui-fast keeps every debug bound of the previous frame in any frame that reuses a view. An element that is no longer painted is therefore still found: a dismissed toast, a hidden jump-to-latest pill (the chat view rendered it hidden), a palette row scrolled away, or a finished navigation page. The chat, shell, palette and overlay tests now draw full frames through one draw helper per test module. This replaces the eight identical closures in the chat tests.
  • A spring on the wall clock. The flat sidebar's row spring runs on Instant::now(), which the test executor does not advance. On gpui-fast the spring keeps its state across a reorder, so rows are still moving when positions are read. The order test sets reduced motion.

Checks run (macOS arm64)

  • cargo fmt --all --check, cargo clippy --workspace --all-targets --locked -- -D warnings, cargo machete: pass.
  • cargo nextest run --workspace --locked: all pass. tcode-traverse transport tests sometimes time out at 20s on this machine; they don't depend on GPUI and pass on rerun.
  • cargo check -p tcode-ios --target aarch64-apple-ios-sim --locked and cargo check -p tcode-web --target wasm32-unknown-unknown --locked with RUSTFLAGS=-D warnings: pass. wgpu-hal checks for x86_64-pc-windows-msvc.
  • The desktop binary starts with a throwaway TCODE_DATA_DIR and stays running. It was not inspected visually, and the phone layout was not run on a device.

🤖 Generated with Claude Code

gpui-fast's compat crates (longbridge/gpui-fast#23) carry the gpui-pre
names, so a crates-io patch moves GPUI Kit and Tcode onto gpui-fast
together. The mobile backends take gpui-fast's gpui_wgpu directly, whose
renderer reports GpuSpecs unconditionally, and the HTTP client is built
with the zed-reqwest that gpui-fast's reqwest_client wraps.

Flat-list row springs keep their state across a reorder on gpui-fast and
run on the wall clock, so the sidebar order test reads rows with reduced
motion.
gpui-fast draws a view again only when something marked it dirty, so a
view that asked for an animation frame waits for the frame callbacks the
platform delivers before each draw. The shell tests now deliver them;
without that the compact navigation stack never retired a finished page.

gpui-fast also carries every debug bound of the previous frame into one
that reuses a view, so the overlay tests draw a full frame to find only
what was painted.
@Tryanks
Tryanks marked this pull request as ready for review September 30, 2026 13:33
Resolving gpui-fast moved gpu-allocator's windows range down to 0.58,
which wgpu-hal 29 cannot pass its D3D12 types to on Windows.
gpui-fast keeps every debug bound of the previous frame in a frame that
reuses any view, so an element no longer painted is still found. The
chat, shell and palette tests draw full frames through one helper per
module; the shell helper no longer needs to deliver frame callbacks,
since a full frame draws every view again.
@Tryanks
Tryanks merged commit c7dbac8 into main Sep 30, 2026
7 checks passed
@Tryanks
Tryanks deleted the chore/gpui-fast branch September 30, 2026 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant