Skip to content

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

Merged
hmziqrs merged 1 commit into
freeoxide:masterfrom
hmziqagent:fix/ci-restore-vendored-gpui-form
Aug 22, 2026
Merged

fix(ci): git-source gpui-form; patch gpui-query release build; clear lint drift#4
hmziqrs merged 1 commit into
freeoxide:masterfrom
hmziqagent:fix/ci-restore-vendored-gpui-form

Conversation

@hmziqagent

@hmziqagent hmziqagent commented Aug 18, 2026

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)

🤖 Generated with Claude Code

…build

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.

Manifest
- Restore crates/gpui-form* (v0.5.1, byte-identical to 3bcacd5 - the set
  CI last built green in PR freeoxide#3) as workspace members with relative path
  deps. They inherit master's pinned gpui/gpui-component revs via
  workspace = true, keeping the graph unified. Published crates.io 0.5.1
  is an older architecture (no component/schema/codegen crates) and
  cannot compile form_page.rs; vendoring is the only CI-buildable source
  until the 0.5.x set is published.
- Cargo.lock reconciled: 7x 0.5.2->0.5.1 + trybuild/target-triple
  dev-deps; cargo metadata --locked passes.

gpui-query release build (would have stayed red behind the manifest fix)
- cargo check --release 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 - no release build of this
  pinned graph has ever run. Vendor the published 0.1.4 source at
  crates/gpui-query with a cfg-gated one-line import fix, patched in
  permanently via [patch.crates-io].
- scripts/toggle-gpui-query.sh rewritten: the marker block now holds
  exactly one active line (vendored default <-> standalone checkout);
  two active gpui-query keys would be a TOML duplicate-key error.

Clippy / fmt
- #[allow(clippy::double_must_use)] on NotificationBackend - new
  nightly lint on #[async_trait]'s generated must_use wrappers.
- cargo fmt --all over the audit-sweep drift (20 files; those commits
  never saw a fmt check - CI died before reaching it).

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 - the
  heredoc escape kept the default hard-coded, 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/ was
  silently skipped).

Validation (local, nightly 2026-08-16, mirrors CI exactly):
check / check --release / clippy -- -D warnings / fmt --all --check /
test -p gpui-starter --lib (187 passed) - all green.
@hmziqrs
hmziqrs merged commit 56909b5 into freeoxide:master Aug 22, 2026
4 of 6 checks passed
@hmziqagent hmziqagent changed the title fix(ci): restore vendored gpui-form crates; patch gpui-query release build fix(ci): git-source gpui-form; patch gpui-query release build; clear lint drift Aug 22, 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.

2 participants