feat(ci): upload loopover-ui bundle stats to Codecov - #5961
Conversation
Tracks JS bundle-size regressions for the deployed marketing/product site on every PR. Uses @codecov/bundle-analyzer's standalone CLI against the built dist/client directly, since @codecov/vite-plugin's latest release doesn't yet support Vite 8 (this repo's Vite runs on rolldown internally, so @codecov/rollup-plugin doesn't fit either). Fork-excluded and non-blocking (continue-on-error): unlike coverage, nothing gates a merge on bundle size, so an upload hiccup must never fail CI. loopover-miner-ui is intentionally excluded -- it's a self-hosted operator dashboard with no build step in this CI job.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5961 +/- ##
=======================================
Coverage 95.15% 95.15%
=======================================
Files 589 589
Lines 46695 46695
Branches 14902 14902
=======================================
Hits 44434 44434
Misses 1511 1511
Partials 750 750
Flags with carried forward coverage won't be shown. Click here to find out more. |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ LoopOver review result - manual review recommendedReview updated: 2026-07-15 02:07:50 UTC
⏸️ Suggested Action - Manual Review Review summary Blockers
Nits — 6 non-blocking
Concerns raised — review before merging
📋 Copy for AI agents — paste into your coding agent
Review context
Contributor next steps
Signal definitions
[BETA] Chat with GittensoryAsk Gittensory a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
Summary
apps/loopover-ui(the deployed marketing/product site) so JS bundle-size regressions surface on every PR, the same way patch coverage already does.@codecov/bundle-analyzer's standalone CLI against the already-builtdist/clientdirectory rather than a bundler-plugin hook:@codecov/vite-plugin's latest release (2.0.1) declarespeerDependencies: { vite: '4.x || 5.x || 6.x' }, and this repo is on Vite 8 (which runs onrolldowninternally, not classicrollup, so@codecov/rollup-plugindoesn't fit either). Verified with a real dry-run install -- hardERESOLVEconflict, not just a warning. Will revisit wiring the plugin in directly once upstream adds Vite 8 support.ci.yml, placed right after "UI build": fork-excluded (github.event.pull_request.head.repo.fork != true, same boundary as the existing coverage-upload steps) andcontinue-on-error: true-- unlike coverage, nothing gates a merge on bundle size, so an upload hiccup must never fail CI.apps/loopover-miner-uiis intentionally NOT included: it's a self-hosted operator dashboard (deployed viasystemd/loopover-miner-ui.service.example, run locally by AMS miners), not something we deploy to Cloudflare -- its production build has no step in this CI job at all (an existing test asserts this deliberately), so there's nothing to hook bundle analysis into automatically, and the bandwidth/load-time value proposition doesn't really apply to a local tool anyway.Test plan
npx bundle-analyzer ./dist/client --bundle-name=loopover-ui --dry-runagainst a real local build -- produces a valid reporttest/unit/codecov-policy.test.tsasserting the CI step wiring (placement, fork exclusion, non-blocking, env) and the package.json scriptnpm run actionlintcleannpm audit --audit-level=moderateclean on the new dependencynpm run test:cigate green locallyNote on the package-lock.json
@loopover/engineversion changesThe lockfile diff also shows
@loopover/engine's recorded range dropping from^3.1.1to^1.0.0(forpackages/loopover-mcp) and^3.0.0(forpackages/loopover-miner). This is not a regression from this PR -- both packages' ownpackage.jsonfiles already declare those exact ranges onmaintoday (unrelated to bundle analysis, untouched by this diff).main's committed lockfile was already out of sync with that -- it recorded^3.1.1for both, matching neither package.json. Installing@codecov/bundle-analyzerinapps/loopover-uitriggered a full lockfile re-resolution, which incidentally corrected this pre-existing drift back to what the package.json files have always said. Reverting it would just reintroduce the mismatch. Confirmed viagit show origin/main:package-lock.jsonvs.git show origin/main:packages/loopover-m{cp,iner}/package.json.