fix(ci): drop the two orphaned gitlinks that break every checkout - #5474
CodeGhost21 wants to merge 2 commits into
Conversation
`refactor(tauri): replace CEF runtime with upstream Wry` (1843706) removed the `tauri-cef` and `tauri-plugin-notification` stanzas from `.gitmodules` but left both gitlinks in the tree: 160000 commit 455b47de… app/src-tauri/vendor/tauri-cef 160000 commit … app/src-tauri/vendor/tauri-plugin-notification `actions/checkout`'s recursive submodule pass then walks a gitlink it has no url for and aborts the whole checkout step: fatal: No url found for submodule path 'app/src-tauri/vendor/tauri-cef' in .gitmodules The process '/usr/bin/git' failed with exit code 128 That is every job with `submodules:` on every branch and every PR, before a line of code is read — Detect Changed Areas, Feature Forwarding Gate, Orchestration IP Gate and the tauri-cef pin guard fail, PR CI Gate fails as their aggregator, and the whole ci-lite graph that `needs:` Detect Changed Areas (Frontend Checks, both Rust coverage jobs, Feature-Gate Smoke, Test Inventory) degrades to `skipping`, so the coverage gate silently stops running rather than failing. `main`'s own runs are red the same way (31302258624). Git reports only the first orphan and aborts, so fixing `tauri-cef` alone leaves checkout failing on `tauri-plugin-notification` with an identical error. Rather than fix one and re-run, both were found by diffing every gitlink in the tree against the paths declared in `.gitmodules`; those two are the only orphans, and no declared submodule is missing its gitlink. Both are genuinely dead, not merely undeclared: `app/src-tauri` builds on upstream Wry (`tauri = { features = ["wry"] }`), `tauri-plugin-notification` is a plain crates.io dependency (`= "2"`) with no `[patch]` or path entry pointing at the vendored copy, and nothing else declares a path dependency on either tree. The only survivors are stale comments and CEF cache paths in workflows — noise, not breakage, and left for the rest of the Wry cleanup. Also removes the tauri-cef pin guard and `.github/tauri-cef-expected-sha`. The guard asserts `git ls-tree HEAD app/src-tauri/vendor/tauri-cef` matches the expected SHA; with the gitlink gone it reads empty and the job fails permanently. It existed to stop an accidental revert of the pin carrying the AppImage glibc/NSS exclusion fixes (tinyhumansai#1996, tinyhumansai#2032, tinyhumansai#2154/tinyhumansai#2088), which the CEF runtime removal has already made unreachable — there is no pin left to guard. CONTRIBUTING.md told contributors both vendored trees "are part of the current desktop toolchain" and that builds fail without them, which is now false and sends new contributors into a `git submodule update --init --recursive` that aborts. Replaced with what the submodules are actually for. Verified by reproducing the failure and the fix on a scratch clone: `git submodule foreach --recursive` exits 128 on 8774fe4 and 0 here. Does not address the second, independent CI break: ci-lite pulls `ghcr.io/tinyhumansai/openhuman_ci:rust-1.96.1`, but only `rust-1.93.0` and `latest` are published, so the container jobs die at `Initialize containers` with `manifest unknown`. The image has to be published — reverting the tag is not an option, since `rust-toolchain.toml` requires 1.96.1 for rusqlite 0.40's `cfg_select!`. Note the ordering: `Build CI Image` itself checks out with `submodules: recursive`, so it cannot run until this lands.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
💤 Files with no reviewable changes (1)
📝 WalkthroughWalkthroughThe change removes vendored Tauri CEF and notification sources, deletes the related SHA pin and guard workflow, and updates contribution documentation for the current dependency sources. ChangesTauri source cleanup
Estimated code review effort: 1 (Trivial) | ~3 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
tinysweeper found nothing blocking. Approving.
$0.0006 · 7,161 in / 1,871 out · 5,120 cached (71%) · z-ai/glm-5.2
critique: $0.0002 · 1,981 in / 565 out · 1,451 cached (73%) · z-ai/glm-5.2
description: $0.0004 · 5,180 in / 1,306 out · 3,669 cached (71%) · z-ai/glm-5.2
What this change touches5 files, +2 -56 across 4 components. The code graph knows nothing about these files yet — normal for newly added files, and a cold index otherwise. flowchart LR
n0[".github/workflows<br/>1 file +0 -47"]:::changed
n1["root<br/>1 file +2 -6"]:::changed
n2["app/src-tauri/vendor<br/>2 files +0 -2"]:::changed
n3[".github<br/>1 file +0 -1"]:::changed
classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Green: changed. Grey: untouched, reached through an import or a call. Orange: has findings. Red: has a finding that blocks the merge.
Changed files
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CONTRIBUTING.md`:
- Line 152: Remove or rewrite the CEF-specific setup block near the
architecture/toolchain instructions, including the x86_64-apple-darwin
installation justified by universal CEF builds. Keep the CONTRIBUTING.md setup
guidance aligned with the upstream Wry-based desktop shell and retain only
requirements still needed by the current build.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 1ae27c04-21cb-4c83-8820-2715011e03b4
📒 Files selected for processing (5)
.github/tauri-cef-expected-sha.github/workflows/tauri-cef-pin-guard.ymlCONTRIBUTING.mdapp/src-tauri/vendor/tauri-cefapp/src-tauri/vendor/tauri-plugin-notification
💤 Files with no reviewable changes (4)
- app/src-tauri/vendor/tauri-cef
- .github/tauri-cef-expected-sha
- app/src-tauri/vendor/tauri-plugin-notification
- .github/workflows/tauri-cef-pin-guard.yml
| - `app/src-tauri/vendor/tauri-plugin-notification` | ||
|
|
||
| Those vendored trees are part of the current desktop toolchain. If they are missing, desktop builds and Tauri CLI setup will fail. | ||
| The two Tauri trees this list used to name — `vendor/tauri-cef` and `vendor/tauri-plugin-notification` — are gone. The desktop shell builds on upstream Wry and takes `tauri-plugin-notification` from crates.io. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Remove the remaining CEF setup instructions.
Line 152 says CEF is gone, but Lines 134-135 still instruct contributors to install x86_64-apple-darwin because “CEF builds a universal binary.” Delete or rewrite that CEF-specific block so the setup matches the Wry-based desktop shell.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CONTRIBUTING.md` at line 152, Remove or rewrite the CEF-specific setup block
near the architecture/toolchain instructions, including the x86_64-apple-darwin
installation justified by universal CEF builds. Keep the CONTRIBUTING.md setup
guidance aligned with the upstream Wry-based desktop shell and retain only
requirements still needed by the current build.
There was a problem hiding this comment.
Split this one — took the part that is this PR's own fact, deferred the rest.
Taken (835fc37): the requirements-table row Tauri vendored sources | Git submodules under app/src-tauri/vendor/ | Required for the CEF-aware Tauri CLI and notification plugin patches. After this change that directory has no submodules at all, so the row names a prerequisite a contributor cannot satisfy. Removed.
Deferred, with reason: the Ninja / cef-dll-sys requirements row, rustup target add x86_64-apple-darwin ("CEF builds a universal binary"), the dev:app / dev:app:win "configures the CEF environment" descriptions, and the MSVC C4819 note. Those are about build tooling, not submodules, and I cannot say from this diff what the Wry shell still needs — whether Ninja is still required on Windows, whether the x86_64 target is still needed on Apple Silicon now that nothing builds a universal Chromium. Answering that means reading the current build scripts, and getting it wrong sends contributors either to install something unnecessary or to skip something still required.
Same stale-CEF surface lives outside this file too — build-desktop.yml's libcef.so/cef-dll-sys prewarm, the CEF cache paths across ci-lite.yml and e2e-reusable.yml, gitbooks/developing/cef.md, and the "Vendored CEF-aware tauri-cli" note in AGENTS.md. Cleaning one file's worth of it inside a CI unblock would leave the docs half-migrated and make this diff harder to justify reverting if it ever needs to be. It is listed under Follow-up PR(s) in the description.
Worth noting the whole class exists because 1843706c3 changed the runtime without the docs; a scoped Wry-docs PR is the right shape for it.
There was a problem hiding this comment.
@CodeGhost21, agreed. Commit 835fc379 removes the obsolete submodule prerequisite. The remaining CEF-specific build instructions need verification against the current desktop build scripts. They should stay out of this CI-unblock PR.
I will keep this finding unresolved for the scoped Wry documentation cleanup. If no tracked follow-up exists yet, would you like me to open a GitHub issue for it?
✏️ Learnings added
Learnt from: CodeGhost21
Repo: tinyhumansai/openhuman PR: 5474
File: CONTRIBUTING.md:151-151
Timestamp: 2026-08-10T07:29:26.245Z
Learning: For the OpenHuman repository, removal of the orphaned `app/src-tauri/vendor/tauri-cef` and `app/src-tauri/vendor/tauri-plugin-notification` gitlinks does not by itself establish that remaining CEF-specific build-tool instructions are obsolete. Verify current build scripts before changing `CONTRIBUTING.md` guidance for Ninja, `cef-dll-sys`, `rustup target add x86_64-apple-darwin`, desktop command environment setup, or MSVC C4819 troubleshooting. Broader stale-CEF cleanup is intended for a separate scoped Wry documentation follow-up.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
You are interacting with an AI system.
|
CI on this PR confirms the fix, and cleanly separates the two breakages. Now passing, all four of which failed in Still failing: Rust Quality, Rust Feature-Gate Smoke, Test Inventory, Coverage Matrix Sync, PR Submission Checklist — every one in Three findings on that second cause, since I dug into it:
The drift guard cannot catch this class of break. I cannot dispatch the build. So the sequence is: merge this → dispatch Build CI Image → the container jobs go green. Happy to open the drift-guard registry check as a follow-up if that seems worth having. |
…submodules `app/src-tauri/vendor/` has no submodules left after this change, so the "Tauri vendored sources … required for the CEF-aware Tauri CLI and notification plugin patches" row names a prerequisite that cannot be satisfied and is not needed. The other CEF references in this file (the Ninja / cef-dll-sys row, the `x86_64-apple-darwin` universal-build target, the `dev:app` CEF-env descriptions, the MSVC C4819 note) are about build tooling rather than submodules. Each needs checking against what the Wry shell actually requires now, which is the separate Wry-cleanup follow-up, not this CI unblock.
Summary
.gitmodulesentries —app/src-tauri/vendor/tauri-cefandapp/src-tauri/vendor/tauri-plugin-notification— which abortactions/checkouton every branch and every PR in the repo, includingmain..github/tauri-cef-expected-shawith them: the guard asserts a SHA on a gitlink that no longer exists, so it fails permanently once the gitlink goes.main(the unpublishedopenhuman_ci:rust-1.96.1image) — see Impact.Problem
1843706c3("refactor(tauri): replace CEF runtime with upstream Wry") removed the[submodule …]stanzas for both vendored Tauri trees from.gitmodules, but left the gitlinks themselves in the tree:actions/checkout's recursive submodule pass walks a gitlink it has no url for and aborts the entire checkout step:This is every job that sets
submodules:, before a line of code is read. On PR #5431's head: Detect Changed Areas, Feature Forwarding Gate, Orchestration IP Gate and Verify tauri-cef submodule pin all fail inCheckout; PR CI Gate then fails purely as their aggregator.The quieter half is worse. Everything that
needs:Detect Changed Areas — Frontend Checks, both Rust coverage jobs, Rust Feature-Gate Smoke, Test Inventory — reportsskipping, notfailure. The ≥80% diff-coverage merge gate has therefore not been running, rather than failing, for as long as this has been broken.Not PR-specific:
main's own latest ci-lite run (31302258624) is red on exactly the same four jobs plus the gate.Solution
Drop both gitlinks (
git rm --cached), the dead guard, and the stale doc claim.Both orphans, not just the reported one. Git reports the first orphan and aborts, so fixing
tauri-cefalone leaves checkout failing identically ontauri-plugin-notification— which is what a scratch-clone check of the first draft of this change actually did. Rather than fix-and-re-run, the full set was found by diffing every gitlink in the tree against the declared paths:Those two are the only orphans, and no declared submodule is missing its gitlink.
Both trees are genuinely dead, not merely undeclared.
app/src-tauribuilds on upstream Wry (tauri = { features = ["wry"] });tauri-plugin-notificationis a plain crates.io dependency (= "2") with no[patch]or path entry pointing at the vendored copy; nothing else declares a path dependency on either. The only survivors are stale comments and CEF cache paths in workflows — noise rather than breakage, left for the rest of the Wry cleanup rather than widened into this diff.The pin guard has to go with the gitlink. It runs
git ls-tree HEAD app/src-tauri/vendor/tauri-cefand compares against.github/tauri-cef-expected-sha; with the gitlink removed that reads empty and the job fails on every PR forever. It existed to stop an accidental revert of the pin carrying the AppImage glibc/NSS exclusion fixes (#1996, #2032, #2154/#2088) — the CEF runtime removal already made that unreachable, so there is no pin left to protect.Submission Checklist
diff-coverhas nothing to measure. (Note this gate has not been running at all — it is one of theskippingjobs this PR restores.)## Related— no matrix rows are involved.Closes #NNN— no issue is open for this; found while investigating red CI on Surface the feedback quality tier in the composer #5431.Impact
CI plumbing and one doc paragraph. No Rust, no TypeScript, no RPC, no schema change, and no effect on a built app.
Anyone with an existing clone keeps a now-untracked
app/src-tauri/vendor/tauri-cef/tauri-plugin-notificationdirectory on disk. Harmless, andgit clean -ffdxor a manualrm -rfclears it; no action is required for builds.This is only half of the CI outage. The second break is independent and still open after this merges: ci-lite pulls
ghcr.io/tinyhumansai/openhuman_ci:rust-1.96.1, but that package publishes onlyrust-1.93.0andlatest, so Coverage Matrix Sync and PR Submission Checklist die atInitialize containerswithmanifest unknown.The image needs publishing — reverting the tag is not an option, since
rust-toolchain.tomlpins 1.96.1 and needs it for rusqlite 0.40 / libsqlite3-sys 0.38'scfg_select!. Ordering matters:Build CI Imageisworkflow_dispatch-only and checks out withsubmodules: recursive, so it cannot even run until this PR lands. Merge this first, then dispatch it — I do not have permissions to dispatch it myself.Related
ghcr.io/tinyhumansai/openhuman_ci:rust-1.96.1(dispatch Build CI Image after this merges).ci-lite.yml,e2e-reusable.yml,build-desktop.yml,gitbooks/developing/cef.mdand the CLAUDE.md/AGENTS.md "Vendored CEF-awaretauri-cli" note.1843706c3(refactor(tauri): replace CEF runtime with upstream Wry)AI Authored PR Metadata (required for Codex/Linear PRs)
Linear Issue
Commit & Branch
fix/orphaned-tauri-cef-gitlinkValidation Run
pnpm --filter openhuman-app format:check— N/A, no formatted source touched (one Markdown paragraph).pnpm typecheck— N/A, no TypeScript in the diff.actions/checkoutfails on:8774fe4a(current main):git submodule foreach --recursive→ exit 128,fatal: No url found for submodule path 'app/src-tauri/vendor/tauri-cef' in .gitmodulestauri-cefremoved: exit 128, same error fortauri-plugin-notification— which is how the second orphan was found807ebc473(this branch): exit 0, empty stderr, and the orphan diff above reports none in either directionValidation Blocked
command:Build CI Image(workflow_dispatch)error:cannot dispatch — no write access; and it would fail at checkout anyway until this PR lands, since it usessubmodules: recursiveimpact:the container-image half of the CI outage stays open after this merges; a maintainer needs to dispatch itBehavior Changes
actions/checkoutsucceeds again for every job that requests submodules.skipping— including the ≥80% diff-coverage gate — start running again, so PRs may now go red on real failures that were being silently skipped.Parity Contract
vendor/tiny*submodules are untouched and still init recursively; the diff removes only entries with no.gitmodulesdeclaration.Duplicate / Superseded PR Handling
cef/submodule/gitmodules.Summary by CodeRabbit
Chores
Documentation