Actions in this repo are SHA-pinned via pinact, so Renovate classifies
SHA bumps as `digest` (and the initial pinning as `pin`). Without
adding them to matchUpdateTypes, those updates would skip the group and
land as individual PRs, defeating the grouping.
Extend the manager-based grouping to dockerfile and nix so base image
bumps across the four Dockerfiles and flake.nix updates each batch into
a single PR per update channel.
Add packageRules for the github-actions manager so workflow dependency
bumps are grouped into one PR per update channel, mirroring how the
package.json updates are already batched.
The composite action hard-coded `setup-node` to Node 24, so the
`test-action.yml` matrix `[22, 24, 26]` silently ran every job under
Node 24 — the 22 and 26 cells did not actually exercise those Node
versions.
Add a `node-version` input to the action (default `"24"` to preserve
current behavior for downstream consumers) and pass `${{
matrix.node-version }}` from each `test-action.yml` invocation so the
matrix tests what its name implies.
- Migrate the build-and-run job in ci.yml to `node --run build --
--sourceMap --declaration` so the inline command matches the
`node --run` style of the test job (claude review round 2 #1)
- Update the hi github-actions.md matrix example from `[22, 24]` to
`[22, 24, 26]` so the doc mirrors the project's actual CI matrix
(gemini-code-assist / coderabbitai inline comment)
- Bump the stale "(Node 20+)" baseline in reviewer-performance.md to
"(Node 22+)" to track the new engines floor (claude review round 2
minor)
Now that the minimum supported Node.js version is 22, `node --run` is
available everywhere. It avoids the npm process-spawn overhead and
matches the style already used in package.json scripts.
Affects all GitHub Actions workflows that invoke npm scripts and the
website/server Dockerfile bundle step. `npm ci` is left as-is since it
is npm-specific.
Node.js 20 reaches end-of-life on 2026-04-30, so raise the minimum
supported version to 22 (the next active LTS) and add Node.js 26 to the
CI matrix as the current release line.
- Bump engines.node to >=22.0.0 in package.json and scripts/memory
- Update CI matrix to [22.x, 24.x, 26.x] (drop 20.x and 25.x; 25.x EOL 2026-06)
- Update test-action.yml matrix to [22, 24, 26]
- Drop the obsolete `node --run` workaround comment in ci.yml since
`node --run` is supported on all matrix versions
- Update Node.js version mentions in English docs, llms-install.md,
configShard, bug report template, and code samples in hi/vi
github-actions guides
Dockerfile (node:22-slim) is intentionally left at the minimum supported
version so the published image confirms Repomix runs on the floor.
Performance-focused release: packing the Repomix repository drops from
~3.3s (v1.13.1) to ~1.4s (v1.14.0), a 58% reduction (~2.4× faster) from
the cumulative effect of dozens of optimizations. Notes cover the
biggest contributors: tiktoken→gpt-tokenizer migration, child-process
removal, wrapper-extraction fast path, pipeline overlap, lazy loading,
worker/IPC tuning, and the @secretlint/profiler overhead removal.
The "What's New" section highlights monorepo-aware tech stack detection
in --skill-generate.
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>