build(deps): run on gpui-fast instead of the gpui-pre snapshots - #555
Merged
Merged
Conversation
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
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.
# Conflicts: # Cargo.toml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Change
[patch.crates-io]pointsgpui-pre,-macros,-platform,-reqwest-client,-sum-treeand-webat gpui-fast's compat crates. GPUI Kit and Tcode now resolve to the same gpui-fastgpui. The crate declarations in the workspace are unchanged.gpui-pre-wgpustand-in, sogpui-iosandgpui-androiddepend on gpui-fast'sgpui_wgpudirectly. ItsWgpuRenderer::gpu_specsreturnsGpuSpecsrather thanOption, and both backends wrap the result.ReqwestClient::fromtakes gpui-fast'szed-reqwestclient, sotcode-uibuilds that same client (same rev, stillrustls-tls-webpki-roots).Cargo.lockkeepsgpu-allocatoronwindows0.62, as onmain. Resolving gpui-fast had moved it to 0.58, whose D3D12 typeswgpu-hal29 cannot pass on Windows.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:
debug_boundsfrom a frame that reused views. Intest-supportbuilds, 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 onedrawhelper per test module. This replaces the eight identical closures in the chat tests.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-traversetransport 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 --lockedandcargo check -p tcode-web --target wasm32-unknown-unknown --lockedwithRUSTFLAGS=-D warnings: pass.wgpu-halchecks forx86_64-pc-windows-msvc.TCODE_DATA_DIRand stays running. It was not inspected visually, and the phone layout was not run on a device.🤖 Generated with Claude Code