mirror of
https://github.com/dohooo/helmor.git
synced 2026-09-22 16:40:02 +08:00
a40a2e9694
* ci: consolidate PR workflows into one path-gated ci.yml
Merge quality/test/build/windows into a single CI workflow with one
`changes` job (dorny/paths-filter@v4, inline filters) and exactly one
`if: needs.changes.outputs.<x> == 'true'` gate per job, so a change only
runs the suites it can affect:
- Rust-only change runs Clippy + Rust Test + Windows Rust Test, skips
frontend/sidecar/e2e/build lanes
- frontend/sidecar/marketing changes never trigger cargo clippy or Rust tests
- marketing-only or docs-only PRs run just Biome (the marketing site builds
on its own Vercel preview)
Filters compose via YAML anchors (paths-filter flattens nested lists): the
`global` category (CI config, lockfile, root tool/build config, scripts) is
folded into every filter, so a cross-cutting tooling change force-runs the
full suite and can never silently skip a lane.
Also split the old combined lint into Biome (fast, no Rust toolchain) and
Clippy (Rust toolchain + sidecar staging, Rust-gated).
main has no branch protection, so skipped jobs don't block merges.
* ci: close filter gaps found in deep audit
Three coverage gaps against pre-consolidation behavior, all verified by
simulating the filters with the real picomatch engine ({dot: true}, same
recursive flatten as paths-filter):
- biome: gate on every Biome-parseable extension repo-wide instead of
enumerating directories — biome.json includes ["**"], so the old
per-PR lint also covered e2e/**, playwright.config.ts, .announcements/,
.changeset/config.json etc. An e2e-only lint error could previously
have landed and failed every subsequent PR's Biome job.
- typecheck: add playwright.config.ts — root tsc checks it through the
tsconfig.node.json project reference.
- rust: add sidecar/package.json + sidecar/bun.lock — agent SDK bumps
change the event shape the Rust accumulator parses; AGENTS.md requires
pipeline snapshot tests on every claude-code bump.
19-scenario simulation passes: frontend-only runs no Rust lane, rust-only
runs no frontend/sidecar/e2e lane, docs-only runs nothing, SDK bumps run
both sidecar and Rust suites.