Skip to content

sync: gpui-component -> 5a5e2ab (main), float zed git deps - #4

Merged
hmziqrs merged 5 commits into
freeoxide:masterfrom
hmziqagent:sync/gpui-ecosystem
Aug 26, 2026
Merged

sync: gpui-component -> 5a5e2ab (main), float zed git deps#4
hmziqrs merged 5 commits into
freeoxide:masterfrom
hmziqagent:sync/gpui-ecosystem

Conversation

@hmziqagent

@hmziqagent hmziqagent commented Aug 23, 2026

Copy link
Copy Markdown

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).

Dep From To
gpui-component (+assets) e416af7 5a5e2ab (longbridge main HEAD)
gpui / gpui_platform / gpui_macros / reqwest_client rev 1d217ee rev-less (floating) — see below

Plus the one real API port in the consumed crates: StyledExt::focused_border was 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 the Panel trait — 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 workspace members (→ exclude, still in-tree for a future re-vendor from a mainline-tracking upstream) and points default-members at examples/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):

  • fmt: cargo fmt --all over the pre-existing drift (codegen, calendar, i18n, …)
  • machete: removed genuinely unused deps (es-fluent from gpui-form-derive, icu_locale_core from 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 breaks some-lib's serde feature request)
  • es-fluent: still failing — broken on master independently (action/FTL-level); not addressed here

Validation

  • cargo check --workspace --all-featuresclean (scoped members)
  • cargo check of all seven crates gpui-starter consumes — clean on nightly 2026-08-16
  • The identical dependency content is proven end-to-end downstream: gpui-starter CI (check/clippy/fmt/test × macOS+Linux) ran green against exactly these pins

🤖 Generated with Claude Code

- 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
hmziqrs merged commit 7f971b3 into freeoxide:master Aug 26, 2026
5 checks passed
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.
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.

2 participants