intent(test-ownership): move tests into website/server/tests/ so they collocate with the code under test and stop reaching up through three parents; reviewer follow-up wanted dedicated coverage and the root vs. website/server package boundary makes collocation the right long-term layout
decision(vitest-config): give website/server its own vitest.config.ts + `test` script; root's existing tests/**/*.test.ts include no longer catches server tests since they moved outside that tree, so the two test runs stay independent
decision(tsconfig-test): add tsconfig.test.json extending the build config and lift lint-tsc to `-p tsconfig.test.json` — the build tsconfig's rootDir: "./src" excludes tests/, so a single lint command wouldn't have type-checked them
learned(valibot-instanceof): with tests now resolving valibot from the same website/server/node_modules as validateRequest, the cause-check can go back to `instanceof v.ValiError` — the duck-type workaround was only needed when the root harness and server pulled different valibot copies
constraint(ci-website): added a `test-website-server` job that links the local repomix build the same way lint-website-server does; tests don't actually import repomix today, but colocation means they easily could later and the link step keeps parity
Add JUnit XML reporting to the test-coverage job and upload results
via codecov/test-results-action. This enables Test Analytics features
(test run times, failure rates, flaky test detection, and PR comments
with failed test summaries).
Also update the README Codecov badge URL to include the graph token,
following Codecov's new recommended badge format.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Trigger the performance benchmark history workflow on pushes to
perf/auto-perf-tuning in addition to main, and publish its results to
a dedicated gh-pages directory so the chart lives independently from
main's history.
Why: perf/auto-perf-tuning is an experimental branch that gets
force-pushed, and we want to observe its performance over time without
disturbing the main performance dashboard at dev/bench/.
How to apply: the name and benchmark-data-dir-path passed to
github-action-benchmark are now branched on github.ref:
- main -> "Repomix Performance" under dev/bench/ (unchanged)
- perf/auto-perf-tuning -> "Repomix Performance (auto-perf-tuning)"
under dev/bench/auto-perf-tuning/
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ci-browser.yml: Add .tool-versions to paths so Node version bumps
trigger browser lint/test
- ci-website.yml: Add src/**, package.json, package-lock.json, and
.tool-versions to paths since website-server jobs depend on root
repomix build
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Split the CI workflow into focused files with appropriate path filters:
- ci.yml: Core lint, test, and build (paths-ignore website/, browser/)
- ci-website.yml: Website client/server lint and bundle (paths: website/**)
- ci-browser.yml: Browser extension lint and test (paths: browser/**)
- ci-quality.yml: actionlint, zizmor, typos (broad paths-ignore)
This reduces unnecessary job execution by ~40 jobs when only a subset
of the codebase changes, and improves workflow readability.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Revert path filter changes to all workflows except ci.yml to keep
the change minimal and maintainable.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Skip unnecessary CI runs when only documentation or unrelated files
change. Benchmarks, schema generation, CodeQL, and Docker builds now
trigger only on source code changes. CI, autofix, and pack-repository
use paths-ignore to skip docs-only changes. Docker workflow push/PR
path filters are unified.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Prevent running benchmark jobs from being cancelled when new commits
are pushed to the same PR. Queued runs will now wait instead.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Extract inline benchmark script to bench-run-history.mjs
- Increase measurement runs from 10/20/10 to 20/30/20 to match
perf-benchmark.yml for consistency
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Switch from sequential (all PR then all main) to interleaved execution
(PR→main alternating) so both branches experience similar runner load
conditions, reducing variance in the measured difference
- Increase measurement runs from 10/20/10 to 20/30/20 for better
statistical stability
- Extract inline Node.js scripts from YAML into separate .mjs files
under .github/scripts/perf-benchmark/ for maintainability
- Use sparse-checkout for jobs that only need the scripts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>