Skip to content

fix(ci): git-source gpui-form; patch gpui-query release build; clear lint drift - #6

Closed
hmziqagent wants to merge 2 commits into
freeoxide:masterfrom
hmziqagent:fix/ci-restore-vendored-gpui-form
Closed

fix(ci): git-source gpui-form; patch gpui-query release build; clear lint drift#6
hmziqagent wants to merge 2 commits into
freeoxide:masterfrom
hmziqagent:fix/ci-restore-vendored-gpui-form

Conversation

@hmziqagent

Copy link
Copy Markdown
Contributor

Why master CI is red

Both failing runs (29828508874, 30356195053) died at workspace-manifest load on every job:

error: failed to load manifest for workspace member ...
Caused by: failed to load manifest for dependency `gpui-form`
Caused by: failed to read `/Users/hmziq/fo/form/crates/gpui-form/Cargo.toml`

bb628cb pointed the seven gpui-form* deps at absolute local paths; 2c3e5c2 deleted the vendored crates/. No runner (or other dev machine) can even run cargo metadata.

The fix — external sources, nothing vendored

gpui-form → git deps

All seven crates from freeoxide/gpui-form @ 8a373a9 (single checkout, no vendored files in this repo). That repo pins the identical zed gpui (1d217ee) and gpui-component (e416af7) revs as this workspace → one unified graph (verified in the lock), resolving to 0.5.2 — the exact version master's Cargo.lock always carried. crates.io is not an option: only the older 0.5.1 architecture is published there, and -schema / -component* / -codegen were never published at all.

gpui-query release build — second blocker hiding behind the first

cargo check --release (the Check job runs it; so does every release build) fails inside published gpui-query 0.1.4 — also 0.2.0 and upstream master: hook/query_hooks.rs's release-only #[cfg(not(debug_assertions))] fallback calls cx.new() without importing gpui::AppContext. Dev builds never compile that branch — which is how every green run masked it. The app cannot ship a release as-is.

Fix: [patch.crates-io]hmziqagent/gpui-query @ f84eac4 (= tag v0.1.4 + the one-line cfg-gated import fix). Upstream PR: freeoxide/gpui-query#11 — once a fixed release ships, delete the patch line. scripts/toggle-gpui-query.sh now enforces exactly-one-active-line in the marker block (default git rev ↔ standalone Mac checkout; two active keys = TOML error).

Clippy / fmt (audit-sweep drift, never validated by CI)

  • #[allow(clippy::double_must_use)] on NotificationBackend — new nightly lint on #[async_trait]'s generated #[must_use] wrappers.
  • cargo fmt --all over 20 files of drift.

Release pipeline (ships broken artifacts; not exercised by CI runs)

  • gen-pkgbuild.sh: bake the releasing repo into the PKGBUILD's ${REPO:-…} default — release.yml's REPO env was dead code (heredoc escaping), so fork-cut releases ship PKGBUILDs whose source= URL 404s.
  • gen-pkgbuild.sh package(): prefix paths with gpui-starter/ to match the tarball's nested layout (install was hitting the directory; lib/ was silently skipped).

Validation (local, nightly 2026-08-16 — mirrors every CI job)

CI job Local equivalent Result
Check (dev) cargo check
Check (release) cargo check --release ✅ (was ❌ pre-patch)
Clippy ×2 cargo clippy -- -D warnings ✅ (was ❌ pre-fix)
Formatting cargo fmt --all -- --check ✅ (was ❌ pre-fix)
Test (lib) cargo test -p gpui-starter --lib ✅ 187 passed, 0 failed

Lock verified: single gpui-component rev, single es-fluent family, gpui-form* all 0.5.2 from one git checkout, gpui-query 0.1.4+fix from the pinned patch rev.

Known residuals (documented, deliberately not "fixed" here)

Replaces #4 (GitHub failed to move that PR's head after a force-push; content is identical, branch tip 12aa294).

🤖 Generated with Claude Code

…lint drift

master CI has been red since 2026-07-21 (runs 29828508874, 30356195053):
every job died at workspace-manifest load because Cargo.toml pointed the
seven gpui-form* deps at absolute local paths (/Users/hmziq/fo/form/...),
which exist on no runner or other dev machine.

gpui-form -> git deps (no vendoring, no absolute paths)
- All seven crates from freeoxide/gpui-form @ 8a373a9 (one checkout).
  That repo pins the identical zed gpui (1d217ee) + gpui-component
  (e416af7) revs as this workspace -> single unified graph; resolves to
  0.5.2, the exact version master's Cargo.lock always carried. crates.io
  is not an option: only the older 0.5.1 architecture is published there
  and the -schema/-component*/-codegen crates were never published.

gpui-query release build (second blocker hiding behind the first)
- cargo check --release fails INSIDE published gpui-query 0.1.4 (also
  0.2.0 and upstream master): the release-only #[cfg(not(debug_assertions))]
  fallback in hook/query_hooks.rs calls cx.new() without importing
  gpui::AppContext. Dev builds never compile that branch, which masked
  it; no release build of this pinned graph had ever run. Patch to
  hmziqagent/gpui-query @ f84eac4 (v0.1.4 + the one-line cfg-gated
  import fix; PRred upstream as freeoxide/gpui-query#11 - drop the patch
  once a fixed release ships).
- scripts/toggle-gpui-query.sh: marker block now holds exactly one
  active line (default git rev <-> standalone Mac checkout); two active
  gpui-query keys would be a TOML duplicate-key error.

Clippy / fmt (audit-sweep drift, never validated by CI)
- #[allow(clippy::double_must_use)] on NotificationBackend - new nightly
  lint on #[async_trait]'s generated must_use wrappers.
- cargo fmt --all over 20 files of drift.

Release pipeline (ships broken artifacts; not exercised by CI runs)
- gen-pkgbuild.sh: bake the releasing repo into the PKGBUILD's
  ${REPO:-...} default. release.yml's REPO env was dead code (heredoc
  escaping), so fork-cut releases ship PKGBUILDs whose source URL 404s.
- gen-pkgbuild.sh package(): prefix paths with gpui-starter/ to match
  the tarball's nested layout (install hit the directory; lib/ silently
  skipped).

Validation (local, nightly 2026-08-16, mirrors every CI job): check /
check --release / clippy -- -D warnings / fmt --all --check /
test -p gpui-starter --lib (187 passed) - all green.
@hmziqagent hmziqagent closed this Aug 22, 2026
@hmziqagent hmziqagent reopened this Aug 22, 2026
The test lane does full codegen of the zed git graph; any Cargo.lock
change invalidates the rust-cache key and the cold rebuild at -j2 needs
60-100+ min. PR freeoxide#6's first run was cancelled by the 30-min cap at
30m17s with rustc mid-compile (all other jobs green). Warm runs stay
far under the cap.
hmziqrs pushed a commit that referenced this pull request Aug 23, 2026
gpui-component e416af7 -> 5a5e2ab (main HEAD); zed gpui/gpui_platform/
gpui_macros now FLOAT (rev-less git deps, frozen by the lockfile) —
pinning a zed rev in this workspace while gpui-component@main declares
its zed deps unpinned splits the graph into two gpui 0.2.2 copies and
every cross-copy trait/method call fails (Styled, FluentBuilder,
ElementId From, ClickEvent closures, SharedString). The version =
selectors on the zed deps stay: the zed repo root carries 0.0.0 stub
packages that otherwise make cargo abort with "resolved to more than
one candidate". Resolves to a single gpui (zed#fd82517).

gpui-form pins move to hmziqagent/gpui-form@47e296a (bump/gpui-ecosystem
branch): same float discipline + the one real API port —
StyledExt::focused_border was removed upstream; date_picker/file_picker
now use ThemeStyled::focus_ring_style(window, cx), the same idiom the
framework's own inputs use.

App-side renames (the only two genuine June->Aug breaks):
- gpui_component::scroll::ScrollbarShow -> ScrollbarMode; Theme
  .scrollbar_show -> .scrollbar_mode. The persisted config field keeps
  its scrollbar_show name and the variants are unchanged, so existing
  config files still deserialize.
- TextViewStyle gained inline_code: HighlightStyle — defaulted (its
  background falls back to the theme accent).

Also raises the CI test-job timeout 30 -> 120 min: any Cargo.lock change
invalidates the rust-cache key and the cold rebuild needs 60-100+ min at
-j2 (PR #6's first run was cancelled by the 30-min cap mid-compile).

Validation (local, nightly 2026-08-16, mirrors every CI job): check /
check --release (26m) / clippy -- -D warnings / fmt --all --check /
test -p gpui-starter --lib (187 passed) — all green.
@hmziqagent

Copy link
Copy Markdown
Contributor Author

Closing as superseded — all of this PR's content landed on master via #7 (its branch was stacked on this one; the timeout commit's change is content-identical in #7's bump commit: ci.yml diff between this branch and master is empty). Master tip: 2ec309f.

@hmziqagent hmziqagent closed this Aug 23, 2026
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