{"collection":{"slug":"js-toolchain","name":"JavaScript Runtimes & Tooling"},"digest":{"id":"cwd_R6-Y1XSnA0ttkTSeCPQbr","weekStart":"2026-11-02","title":"Vitest gets selective about what runs, and pnpm cleans up its installs","intro":"Vitest added test filtering that skips everything that passed last time, while pnpm tightened workspace installs, deploy, and agent skills, and Turborepo made lockfile creation roughly 10x faster.","body":"### Rerun only what broke\n\nThe headline of the week is [Vitest's new test filtering](/release/rel_2bYPlxckjku-IkUfyatZi-vitest-v5-1-0-adds-last-failed-and-since-last-run-test-filtering): a `--last-failed` flag that reruns only the tests that failed on the prior run, plus `--since-last-run` to limit a run to tests touched since the last execution. Together they turn \"run the suite again\" into \"run what's plausibly broken,\" which is the difference between a tolerable and an intolerable edit-test loop on a large codebase. The same update rounds out the debugging surface: fake timer support now covers `node:timers` and `node:timers/promise`, `Temporal.Instant` and `Temporal.ZonedDateTime` work with `vi.setSystemTime()`, and failed snapshots can be reviewed interactively. Two filtering bugs got fixed along the way — setup files not rerunning after `--changed` filtering, and mock factories that only form cycles later — and browser mode moved its default port to 23315, so anyone hardcoding the old one will want to update their config.\n\n### pnpm tidies the edges of the install graph\n\npnpm's week was mostly about making workspaces behave under stress. Its [platform-variant support on pnpr registries](/release/rel_m0Ef_oH6VfvHQlksXhm7i-pnpm-12-18-0) now covers packing, publishing, and installing; `pnpm store add` makes offline installs from downloaded tarballs possible; and agent skills gained per-skill approval, which matters as more projects ship machine-facing instructions alongside their code. The bigger win for monorepo users is quieter: repeat installs and `verifyDepsBeforeRun` no longer read `package.json` for workspace projects that haven't changed, so the check stops costing what a full resolve costs. Peer dependency resolution got several bug fixes in the same pass.\n\nThe patch line then swept through the awkward cases. A [frozen install with `excludeLinksFromLockfile`](/release/rel_U5rba9TRMJ52G7wbttCmO-pnpm-11-28-11) no longer fails, `pnpm link` behaves inside workspaces, `pnpm deploy` keeps dangling symlinks in the project instead of dying with `ENOENT` — useful when a build legitimately points at a `node_modules` directory that was removed — and `verifyDepsBeforeRun` no longer kicks off needless installs. None of it is glamorous, but each item is the kind of failure a CI pipeline hits once and then works around forever; this week those workarounds are less necessary.\n\n### Faster lockfiles in the background\n\nTurborepo's contribution is a quick perf note: [creating turbo.lock is roughly 10x faster](/release/rel_hG-eEPi5hDQkD3rB9p1xS-turborepo-v2-11-11-canary-2-makes-creating-turbo-lock-about-10x-faster), and prefix environment matching got faster too. The canary also moves managed tool installs into a shared content-addressed store under `~/.local/share` on macOS, so multiple projects stop duplicating the same toolchain, and restores shell completion. Toolchain setup is the least interesting part of a build and the most annoying to wait on — this is churn worth taking, though nothing here changes how you use Turborepo.\n\nTaken together, the week was about making the boring loop faster and less annoying: Vitest so you don't rerun what already passed, pnpm so installs don't touch what didn't change, and Turborepo so the setup step costs less before the build even starts.","releaseIds":["rel_2bYPlxckjku-IkUfyatZi","rel_m0Ef_oH6VfvHQlksXhm7i","rel_U5rba9TRMJ52G7wbttCmO","rel_hG-eEPi5hDQkD3rB9p1xS"],"releaseCount":4,"generatedAt":"2026-11-09T06:18:26.765Z","releases":[{"id":"rel_2bYPlxckjku-IkUfyatZi","title":"Vitest v5.1.0 adds --last-failed and --since-last-run test filtering","path":"/release/rel_2bYPlxckjku-IkUfyatZi-last-failed-and-since-last-run-flags-browser-port-now-23315","url":"https://github.com/vitest-dev/vitest/releases/tag/v5.1.0","org":{"slug":"vitest","name":"Vitest","avatarUrl":"https://media.releases.sh/orgs/vitest.jpg","githubHandle":"vitest-dev"},"product":null,"importance":4,"composition":{"bugs":18,"features":15,"enhancements":1},"publishedAt":"2026-11-02T16:03:20.000Z"},{"id":"rel_m0Ef_oH6VfvHQlksXhm7i","title":"pnpm 12.18.0","path":"/release/rel_m0Ef_oH6VfvHQlksXhm7i-pnpm-12-18-0","url":"https://pnpm.io/blog/releases/12.18.0","org":{"slug":"pnpm","name":"pnpm","avatarUrl":"https://media.releases.sh/orgs/pnpm.svg","githubHandle":"pnpm"},"product":null,"importance":null,"composition":null,"publishedAt":"2026-11-05T00:00:00.000Z"},{"id":"rel_U5rba9TRMJ52G7wbttCmO","title":"pnpm 11.28.11","path":"/release/rel_U5rba9TRMJ52G7wbttCmO-pnpm-11-28-11","url":"https://pnpm.io/blog/releases/11.28.11","org":{"slug":"pnpm","name":"pnpm","avatarUrl":"https://media.releases.sh/orgs/pnpm.svg","githubHandle":"pnpm"},"product":null,"importance":null,"composition":null,"publishedAt":"2026-11-05T00:00:00.000Z"},{"id":"rel_hG-eEPi5hDQkD3rB9p1xS","title":"Turborepo v2.11.11-canary.2 makes creating turbo.lock about 10x faster","path":"/release/rel_hG-eEPi5hDQkD3rB9p1xS-turbo-lock-creation-10x-faster-shell-completion-restored","url":"https://github.com/vercel/turborepo/releases/tag/v2.11.11-canary.2","org":{"slug":"vercel","name":"Vercel","avatarUrl":"https://media.releases.sh/orgs/vercel.png","githubHandle":"vercel"},"product":{"slug":"turborepo","name":"Turborepo"},"importance":2,"composition":{"bugs":3,"features":5,"enhancements":5},"publishedAt":"2026-11-06T15:08:15.000Z"}],"sections":[{"heading":"Rerun only what broke","anchor":"rerun-only-what-broke","lede":"The headline of the week is Vitest's new test filtering: a --last-failed flag that reruns only the tests that failed on the prior run, plus --since-last-run to limit a run to tests touched since the last execution.","releaseIds":["rel_2bYPlxckjku-IkUfyatZi"],"releases":[{"id":"rel_2bYPlxckjku-IkUfyatZi","title":"Vitest v5.1.0 adds --last-failed and --since-last-run test filtering","path":"/release/rel_2bYPlxckjku-IkUfyatZi-last-failed-and-since-last-run-flags-browser-port-now-23315","url":"https://github.com/vitest-dev/vitest/releases/tag/v5.1.0","org":{"slug":"vitest","name":"Vitest","avatarUrl":"https://media.releases.sh/orgs/vitest.jpg","githubHandle":"vitest-dev"},"product":null,"importance":4,"composition":{"bugs":18,"features":15,"enhancements":1},"publishedAt":"2026-11-02T16:03:20.000Z"}]},{"heading":"pnpm tidies the edges of the install graph","anchor":"pnpm-tidies-the-edges-of-the-install-graph","lede":"pnpm's week was mostly about making workspaces behave under stress.","releaseIds":["rel_m0Ef_oH6VfvHQlksXhm7i","rel_U5rba9TRMJ52G7wbttCmO"],"releases":[{"id":"rel_m0Ef_oH6VfvHQlksXhm7i","title":"pnpm 12.18.0","path":"/release/rel_m0Ef_oH6VfvHQlksXhm7i-pnpm-12-18-0","url":"https://pnpm.io/blog/releases/12.18.0","org":{"slug":"pnpm","name":"pnpm","avatarUrl":"https://media.releases.sh/orgs/pnpm.svg","githubHandle":"pnpm"},"product":null,"importance":null,"composition":null,"publishedAt":"2026-11-05T00:00:00.000Z"},{"id":"rel_U5rba9TRMJ52G7wbttCmO","title":"pnpm 11.28.11","path":"/release/rel_U5rba9TRMJ52G7wbttCmO-pnpm-11-28-11","url":"https://pnpm.io/blog/releases/11.28.11","org":{"slug":"pnpm","name":"pnpm","avatarUrl":"https://media.releases.sh/orgs/pnpm.svg","githubHandle":"pnpm"},"product":null,"importance":null,"composition":null,"publishedAt":"2026-11-05T00:00:00.000Z"}]},{"heading":"Faster lockfiles in the background","anchor":"faster-lockfiles-in-the-background","lede":"Turborepo's contribution is a quick perf note: creating turbo.lock is roughly 10x faster, and prefix environment matching got faster too.","releaseIds":["rel_hG-eEPi5hDQkD3rB9p1xS"],"releases":[{"id":"rel_hG-eEPi5hDQkD3rB9p1xS","title":"Turborepo v2.11.11-canary.2 makes creating turbo.lock about 10x faster","path":"/release/rel_hG-eEPi5hDQkD3rB9p1xS-turbo-lock-creation-10x-faster-shell-completion-restored","url":"https://github.com/vercel/turborepo/releases/tag/v2.11.11-canary.2","org":{"slug":"vercel","name":"Vercel","avatarUrl":"https://media.releases.sh/orgs/vercel.png","githubHandle":"vercel"},"product":{"slug":"turborepo","name":"Turborepo"},"importance":2,"composition":{"bugs":3,"features":5,"enhancements":5},"publishedAt":"2026-11-06T15:08:15.000Z"}]}]}}