sync: gpui-component -> 5a5e2ab (main), float zed git deps - #4
Merged
Conversation
- gpui-component / gpui-component-assets: e416af7 -> 5a5e2ab (current longbridge main HEAD). - gpui / gpui_platform / gpui_macros / reqwest_client: drop the zed rev pins and float, matching how gpui-component@main declares its own zed deps. Pinning ANY zed rev here while downstream workspaces float (as gpui-starter now does) splits the graph into two gpui 0.2.2 copies and every cross-copy trait/method call fails — it looks like a giant API port but is a source-ID split. Lockfiles freeze the resolved commit. - date_picker/file_picker: StyledExt::focused_border was removed at gpui-component 5a5e2ab; use ThemeStyled::focus_ring_style(window, cx), the same idiom the framework's own inputs use (3 call sites). This is the exact dependency shape gpui-starter consumes on its master (freeoxide/gpui-starter@2ec309f, CI green on all lanes); this branch makes the fork's master build it natively instead of via a fork pin. Validated: cargo check of all seven consumed crates (nightly 2026-08-16).
gpui-component 5a5e2ab removed the dock/DockItem declarative builders and redesigned the Panel trait; the vendored gpui-storybook gallery (5 crates), gpui-form-component-story, and the storybook-driven demo (examples/some-lib-forms) target the removed API and cannot compile against it. They leave workspace members (-> exclude) but stay in-tree for a future re-vendor from an upstream that tracks mainline gpui-component. default-members moves to examples/some-lib, which has no storybook dependency. Also clears the remaining CI lanes: - cargo fmt --all (pre-existing drift, e.g. gpui-form-codegen/src/ components.rs) so the fmt lane is green. - machete: remove genuinely unused deps (es-fluent from gpui-form-derive, icu_locale_core from component-story) and add a [package.metadata.cargo-machete] ignore for gpui-form's serde — it is feature-gated (the 'serde' feature), which cargo-machete cannot see; removing it breaks some-lib's feature request. cargo check --workspace --all-features: clean.
…test The CI test lane builds with --all-features, which enables gpui-form's serde feature chain; the GpuiForm-generated code then bounds select enums by Serialize/Deserialize. The test's local Region enum needs the derives, the workspace serde needs the derive feature, and some-lib needs serde as a dev-dependency. cargo check --workspace --all-features --all-targets: clean.
Two defects, both failing since the lane was added (master is red on it): - examples/some-lib/i18n.toml pointed assets_dir at '../i18n' — outside the crate root AND nonexistent in the repo's entire history, so the CLI rejected it before the --ignore filter applies (discovery loads every i18n.toml first). Now 'i18n' (inside the root); the crate never had FTL assets, so runtime behavior is unchanged. - The workflow passed 'all: true', an input the action no longer knows (renamed 'all_locales'); the unknown input was silently ignored, downgrading the check to fallback-only. Now all_locales: true. Verified with the same CLI build the action pins (git master, es-fluent-cli v0.18.1): cargo-es-fluent check --path . --all-locales --ignore some-lib -> 'No issues found'.
Moving assets_dir from the nonexistent '../i18n' to the in-root 'i18n'
unblocked the FTL check but changed es-fluent's treatment of the crate
from unmanaged to managed — and the embedded-manager macro in
src/i18n.rs then requires the fallback-locale directory to exist.
examples/some-lib/i18n/en/ now carries an intentionally empty bundle
(the crate never had translations in this repo's history); runtime
behavior is identical to the previous unmanaged state.
Verified both affected surfaces: cargo check --workspace --all-features
--all-targets (0 errors) and cargo-es-fluent check --path .
--all-locales --ignore some-lib ('No issues found') with the same CLI
build the CI action pins.
hmziqrs
pushed a commit
to freeoxide/gpui-starter
that referenced
this pull request
Aug 26, 2026
freeoxide/gpui-form#4 (the ecosystem sync: gpui-component 5a5e2ab, floating zed, focused_border port) is merged — master 7f971b39 is content-identical to the hmziqagent fork rev this workspace pinned through the bump. Same code, canonical source; the fork branch is retired.
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.
What this syncs
After #3 reverted the 0.6.0 stayhydated port, this puts the fork's 0.5.2 line on the current mainline ecosystem — the same dependency shape gpui-starter's master already consumes (freeoxide/gpui-starter@
2ec309f, CI green on all six lanes).e416af75a5e2ab(longbridge main HEAD)1d217eePlus the one real API port in the consumed crates:
StyledExt::focused_borderwas removed at gpui-component 5a5e2ab →ThemeStyled::focus_ring_style(window, cx)at the 3 call sites (date_picker ×2, file_picker ×1), the same idiom the framework's own inputs use.Why the zed deps must FLOAT (not just bump)
gpui-component@main declares its zed deps without revs. If this repo pins any zed rev while a downstream workspace floats, cargo resolves two different source IDs → two gpui 0.2.2 packages in one graph → hundreds of phantom "missing method / trait bound / From not implemented" errors at every boundary. It masquerades as a massive API port; it is a graph split (diagnosis signature: "there are multiple different versions of crate gpui in the dependency graph"). Floating matches the ecosystem's own convention; each consumer's Cargo.lock freezes the resolved commit.
CI: storybook gallery scoped out of the workspace
gpui-component 5a5e2ab removed the dock API the vendored gallery is built on (
DockItem::tabs/v_split/panel,set_left_dock) and redesigned thePaneltrait — the vendored gpui-storybook (5 crates),gpui-form-component-story, and the storybook demo (examples/some-lib-forms) cannot compile against it. This PR moves them out of workspacemembers(→exclude, still in-tree for a future re-vendor from a mainline-tracking upstream) and pointsdefault-membersatexamples/some-lib, which has no storybook dependency.Also clears lanes that were failing before this PR (master is red on fmt/machete/test/es-fluent):
cargo fmt --allover the pre-existing drift (codegen, calendar, i18n, …)es-fluentfrom gpui-form-derive,icu_locale_corefrom component-story); added[package.metadata.cargo-machete] ignored = ["serde"]for gpui-form's feature-gated serde (machete can't see feature-gated deps; deleting it breakssome-lib'sserdefeature request)Validation
cargo check --workspace --all-features— clean (scoped members)cargo checkof all seven crates gpui-starter consumes — clean on nightly 2026-08-16🤖 Generated with Claude Code