NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3828 most downloaded on npm
Browser running for Vitest
Last release 3 days ago
15 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
237 releases · first in 2022
One column per quarter.
Remove minWorkers and set it automatically to 0 in non watch mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8454 (2c2d1)
minWorkers and set it automatically to 0 in non watch mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8454 <samp>(2c2d1)</samp>getGlobalTestNamePattern method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8438 <samp>(bdb70)</samp>locator.element() returns HTMLElement or SVGElement - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8440 <samp>(c1ac1)</samp>vitest:coverage-transform plugin - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8477 <samp>(ff517)</samp>process.title - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8453 <samp>(0a766)</samp>@vitest/expect - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8461 <samp>(cc98c)</samp>Remove deprecated APIs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8428 (a1cb9)
enableCoverage and disableCoverage methods - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8412 <samp>(61eb7)</samp>Expose experimental_parseSpecifications - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8408 (fdeb2)
experimental_parseSpecifications - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8408 <samp>(fdeb2)</samp>trackUnhandledErrors option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8386 <samp>(c0ec0)</samp>stacks property in Node.js context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8392 <samp>(b825e)</samp>reporter: Remove deprecated APIs - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8223 (149f8)
oxc instead of esbuild on rolldown-vite - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8378 <samp>(e922e)</samp>config.include option with config.browser.instances[].include option if it is specified - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8260 <samp>(010fc)</samp>Use module-runner instead of vite-node - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8208 (9be01)
todo if no function is passed down to test or describe - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8346 <samp>(1a81c)</samp>Add qwik to the vitest init cli command - by @thejackshelton in https://github.com/vitest-dev/vitest/issues/8330 (1638b)
vitest init cli command - by @thejackshelton in https://github.com/vitest-dev/vitest/issues/8330 <samp>(1638b)</samp>toMatchScreenshot for Visual Regression Testing - by @macarie in https://github.com/vitest-dev/vitest/issues/8041 <samp>(d45f9)</samp>--changed flag support to vitest list command - by @haakonjackfloat in https://github.com/vitest-dev/vitest/issues/8270 and https://github.com/vitest-dev/vitest/issues/8272 <samp>(e71a5)</samp>browser - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8334 <samp>(0417a)</samp>Remove deprecated workspace option in favor of projects - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8218 (76fb7)
workspace option in favor of projects - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8218 <samp>(76fb7)</samp>--standalone when CLI filename filter is used - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8262 <samp>(013bf)</samp>toBeInViewport utility method to assert element is in viewport or not - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8234 <samp>(ceed5)</samp>toBeNullable expect function to check provided value is nullish - by @Shinyaigeek and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8294 <samp>(eeec5)</samp>automocker entry - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8301 <samp>(e9c92)</samp>test.extend - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8278 <samp>(43977)</samp>objectContaining expect utility to have more compatibility to jest's one - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8241 <samp>(480be)</samp>--project filter - by @gtbuchanan in https://github.com/vitest-dev/vitest/issues/7885 <samp>(761be)</samp>regexpHoistable to allow whitespace before parentheses - by @cszhjh in https://github.com/vitest-dev/vitest/issues/8231 <samp>(a0f9a)</samp>vitest --standalone - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8248 <samp>(37cc2)</samp>Remove deprecated types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8203 (66bee)
onUnhandledError callback - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8162 <samp>(924cb)</samp>Remove deprecated getSourceMap - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8194 (ff934)
'basic' reporter - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7884 <samp>(82fcf)</samp>vitest/node exports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8197 <samp>(dc848)</samp>vitest/node instead - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8200 <samp>(1e60c)</samp>.all, reworked include/exclude by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7837 <samp>(41a111c)</samp>browser : Check fs access in builtin commands [backport to v3] - by @hi-ogawa , Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10679 (b795e)
Pin last supported vite-node version - by @sheremet-va (16f12)
api: Add allowWrite and allowExec options to api [backport to v3] - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10445 (af88b
allowWrite and allowExec options to api [backport to v3] - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10445 <samp>(af88b)</samp>cdp API when allowWrite/allowExec: false [backport to v3] - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10456 <samp>(385a1)</samp>Use correct path for optimisation of strip-literal - by @mrginglymus in https://github.com/vitest-dev/vitest/issues/8139 (44940)
vitest run --watch should be watch-mode - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8128 <samp>(657e8)</samp>--shard x/<count> exceeds count of test files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8112 <samp>(8a18c)</samp>minWorkers when only maxWorkers specified - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8110 <samp>(14dc0)</samp>task.meta should be available in custom reporter's errors - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8115 <samp>(27df6)</samp>browser: Use base url instead of __vitest__ - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8126 (1d8eb)
expect.any return type - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8129 <samp>(47514)</samp>process.send() - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8125 <samp>(dfe81)</samp>Support rolldown-vite - by @sheremet-va and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7509 (c8d62)
createTesters call on the main thread - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8101 <samp>(142c7)</samp>vitest-browser-* packages - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8103 <samp>(247ef)</samp>toEqual - by @dubzzz in https://github.com/vitest-dev/vitest/issues/8094 <samp>(02ec8)</samp>dot reporter to work in non interactive terminals - by @bstephen1 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7994 <samp>(6db9f)</samp>Use sha1 instead of md5 for hashing - by @sheremet-va (e4c73)
DeeplyAllowMatchers - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8078 <samp>(30ab4)</samp>Deprecate workspace in favor of projects - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7923 (41beb)
ctx.signal - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7878 <samp>(e761f)</samp>test.name - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7809 <samp>(4af5d)</samp>vi.mockObject to automock any object - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/7761 <samp>(465bd)</samp>watchTriggerPatterns option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7778 <samp>(a0675)</samp>workspace in favor of projects - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7923 <samp>(41beb)</samp>sequence.groupOrder option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7852 <samp>(d1a1d)</samp>connect option for playwright browser provider - by @egfx-notifications and @sheremet-va in https://github.com/vitest-dev/vitest/issues/7915 <samp>(029c0)</samp>screenshot.save option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7777 <samp>(d9f51)</samp>onWritePath option to github-actions - by @nwalters512 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8015 <samp>(abd3b)</samp>micromatch with picomatch - by @sapphi-red in https://github.com/vitest-dev/vitest/issues/7951 <samp>(df076)</samp>any types to AsymmetricMatcher<unknown>, with DeeplyAllowMatchers<T> - by @JoshuaKGoldberg in https://github.com/vitest-dev/vitest/issues/7016 <samp>(8ec44)</samp>stack properties - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7995 <samp>(330f9)</samp>toJSON serialisation - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8053 <samp>(3bdf0)</samp>upload files relative to the project root - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8042 <samp>(b9a31)</samp>this type to locators.extend - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8069 <samp>(70fb0)</samp>--silent values properly - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8055 <samp>(8fad7)</samp>@types/chai - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7937 <samp>(525f5)</samp>vitest list command - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7933 <samp>(ba6da)</samp>__vite_ssr_exportName__ - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7925 <samp>(76091)</samp>getWorkerMemoryLimit priority for vmForks - by @pengooseDev in https://github.com/vitest-dev/vitest/issues/7960 <samp>(5a91e)</samp>Initial support for Temporal equality - by @dirkluijk in https://github.com/vitest-dev/vitest/issues/8007 (52bd7)
onWritePath option to github-actions - by @nwalters512 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8015 <samp>(abd3b)</samp>stack properties - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7995 <samp>(330f9)</samp>upload files relative to the project root - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8042 <samp>(b9a31)</samp>__vite_ssr_exportName__ - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7925 <samp>(76091)</samp>[!NOTE]
playwrightandpreviewstill scale it for better DX, but webdriver has fundamental issues with it. We are looking for a solution that works across all providers
Explicit Resource Management support in mocked functions - by @EskiMojo14 in https://github.com/vitest-dev/vitest/issues/7927 (b67d3)
sequence.groupOrder option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7852 <samp>(d1a1d)</samp>screenshot.save option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7777 <samp>(d9f51)</samp>micromatch with picomatch - by @sapphi-red in https://github.com/vitest-dev/vitest/issues/7951 <samp>(df076)</samp>any types to AsymmetricMatcher<unknown>, with DeeplyAllowMatchers<T> - by @JoshuaKGoldberg in https://github.com/vitest-dev/vitest/issues/7016 <samp>(8ec44)</samp>@types/chai - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7937 <samp>(525f5)</samp>vitest list command - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7933 <samp>(ba6da)</samp>getWorkerMemoryLimit priority for vmForks - by @pengooseDev in https://github.com/vitest-dev/vitest/issues/7960 <samp>(5a91e)</samp>Deprecate workspace in favor of projects - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7923 (41beb)
ctx.signal - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7878 <samp>(e761f)</samp>test.name - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7809 <samp>(4af5d)</samp>vi.mockObject to automock any object - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/7761 <samp>(465bd)</samp>watchTriggerPatterns option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7778 <samp>(a0675)</samp>workspace in favor of projects - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7923 <samp>(41beb)</samp>connect option for playwright browser provider - by @egfx-notifications and @sheremet-va in https://github.com/vitest-dev/vitest/issues/7915 <samp>(029c0)</samp>Apply browser CLI options only if the project has the browser set in the config already - by @sheremet-va in https://github.com/vitest-dev/vitest/issu
Correctly resolve vitest import if inline: true is set - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7856 (a83f3)
inline: true is set - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7856 <samp>(a83f3)</samp>--merge-reports to show each total run times - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7877 <samp>(d613b)</samp>Add global chai variable in vitest/globals (fix: #7474) - by @Jay-Karia in https://github.com/vitest-dev/vitest/issues/7771 and https://github.com/vit
chai variable in vitest/globals (fix: #7474) - by @Jay-Karia in https://github.com/vitest-dev/vitest/issues/7771 and https://github.com/vitest-dev/vitest/issues/7474 <samp>(d9297)</samp>test.exclude when same object passed in coverage.exclude - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7774 <samp>(c3751)</samp>envionmentOptions - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7795 <samp>(67430)</samp>await profiler calls - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7763 <samp>(795a6)</samp>Report tests in correct order - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7752 (b166e)
Introduce %$ option to add number of the test to its title - by @kemuridama in https://github.com/vitest-dev/vitest/issues/7412 (df347)
%$ option to add number of the test to its title - by @kemuridama in https://github.com/vitest-dev/vitest/issues/7412 <samp>(df347)</samp>diff.maxDepth option and set non-Infinity value as a default to reduce crash - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7481 <samp>(eacab)</samp>test.each/for title formatting - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7522 <samp>(ea3d6)</samp>--configLoader CLI option - by @Carnageous and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7574 <samp>(2a852)</samp>vitest-browser-lit to vitest init browser and docs - by @EskiMojo14 and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7705 <samp>(5659a)</samp>and, or and filter locators - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7463 <samp>(63949)</samp>--silent=passed-only to log failed tasks only - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7530 <samp>(f9e1c)</samp>test.scoped to override test.extend fixtures per-suite - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7233 <samp>(e5851)</samp>context.skip(boolean) - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7659 <samp>(6adec)</samp>diff.expand: false as default - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7697 <samp>(f3420)</samp>--hideSkippedTests should hide suites too - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7695 <samp>(ba9b5)</samp>Add "configureVitest" plugin hook - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7349 (20a5d)
and, or and filter locators - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7463 <samp>(63949)</samp>test.scoped to override test.extend fixtures per-suite - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7233 <samp>(e5851)</samp>--hideSkippedTests should hide suites too - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7695 <samp>(ba9b5)</samp>Introduce %$ option to add number of the test to its title - by @kemuridama in https://github.com/vitest-dev/vitest/issues/7412 (df347)
%$ option to add number of the test to its title - by @kemuridama in https://github.com/vitest-dev/vitest/issues/7412 <samp>(df347)</samp>diff.maxDepth option and set non-Infinity value as a default to reduce crash - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7481 <samp>(eacab)</samp>test.each/for title formatting - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7522 <samp>(ea3d6)</samp>--silent=passed-only to log failed tasks only - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7530 <samp>(f9e1c)</samp>context.skip(boolean) - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7659 <samp>(6adec)</samp>Typings of ctx.skip() as never - by @sirlancelot in https://github.com/vitest-dev/vitest/issues/7608 (09f35)
ctx.skip() as never - by @sirlancelot in https://github.com/vitest-dev/vitest/issues/7608 <samp>(09f35)</samp>resolveConfig API - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7623 <samp>(db14a)</samp>toHaveBeenCalledWith(asymmetricMatcher) with undefined arguments - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7624 <samp>(0fb21)</samp>getState().testPath during collection with no isolation - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7640 <samp>(3fb3f)</samp>coverage.all - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7597 <samp>(422ba)</samp>buildStart - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7652 <samp>(29f5a)</samp>removeEventListener is bound to worker - by @joelgallant in https://github.com/vitest-dev/vitest/issues/7631 <samp>(ff42b)</samp>Fix fetch cache multiple writes - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7546 (1a8b4)
@vitest/spy - by @mrginglymus in https://github.com/vitest-dev/vitest/issues/7575 <samp>(7f7ff)</samp>beforeEach/All cleanup callback timeout - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7500 <samp>(0c292)</samp>Task.suite initialization - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7414 <samp>(ca9ff)</samp>buildStart on Vite 6 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7480 <samp>(c0f47)</samp>browser: Support webdriverio 9 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7553 (b1949)
Fix getMockedSystemTime for useFakeTimer - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7405 (03912)
getMockedSystemTime for useFakeTimer - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7405 <samp>(03912)</samp>queueMicrotask from default fake timers to not break node fetch - by @hi-ogawa in https://github.com/vitest-dev/vitest/pull/7505 <samp>(167a9)</samp>tinyglobby instead of fast-glob - by @benmccann in https://github.com/vitest-dev/vitest/issues/7504 <samp>(b62ac)</samp>toHaveClass typing - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7383 <samp>(7ef23)</samp>maxWorkers - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7483 <samp>(adbb2)</samp>vite-node to pass correct execution wrapper offset - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7417 <samp>(1f2e5)</samp>inspect related cli options - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7373 <samp>(ed15b)</samp>Remote Code Execution when accessing a malicious website while Vitest API server is listening | CVE-2025-24964
This release includes security patches for:
Browser mode serves arbitrary files | CVE-2025-24963
This release includes security patches for:
development|production condition on Vites 6 by @hi-ogawa and @sheremet-va (#7301) <samp>(ef146)</samp>/__screenshot-error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7340 <samp>(ed9ae)</samp>Don't throw a validation error if v8 coverage is used with filtered instances - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7306 (f
Don't await an empty timeout after every test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7281 (ef1aa)
expect().resolves/rejects chain typings - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7273 <samp>(fa415)</samp>Revert "fix: re-apply default conditions if using vite 6 or later (https://github.com/vitest-dev/vitest/issues/7071)" - by @sheremet-va in https://git
Vitest 3 is here! There are a few breaking changes, but we expect the migration to be smooth. This release page lists all changes made to the project…
Vitest 3 is here! There are a few breaking changes, but we expect the migration to be smooth. This release page lists all changes made to the project during the beta. For the migration guide, please refer to the documentation.
spy.mockReset changes - by @Lordfirespeed in https://github.com/vitest-dev/vitest/issues/6426 <samp>(db7a8)</samp>describe(..., { shuffle: boolean }) and inherit from parent suite - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6670 <samp>(aa1da)</samp>retry and repeats - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6817 <samp>(e8ce9)</samp>diff options and support printBasicPrototype - by @hi-ogawa, @sheremet-va and Michał Grzegorzewski in https://github.com/vitest-dev/vitest/issues/6740 <samp>(39186)</samp>ctx.skip() dynamically - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6805 <samp>(697c3)</samp>vitest/node entry point and statically on Vitest - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7029 <samp>(be8d4)</samp>diff.printBasicPrototype: false by default - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7043 <samp>(2b5c5)</samp>describe.for - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7253 <samp>(0ad28)</samp>actionTimeout as playwright provider options - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6984 <samp>(e2c29)</samp>userEvent.copy, cut, paste - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6769 <samp>(843a6)</samp>--project=!pattern - by @haines in https://github.com/vitest-dev/vitest/issues/6924 <samp>(ebfe9)</samp>thresholds to support maximum uncovered items - by @jonahkagan in https://github.com/vitest-dev/vitest/issues/7061 <samp>(bde98)</samp>toHaveBeenCalledExactlyOnceWith expect matcher - by @jacoberdman2147 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/6894 <samp>(ff662)</samp>toHaveBeenCalledAfter and toHaveBeenCalledBefore utility - by @Barbapapazes and @sheremet-va in https://github.com/vitest-dev/vitest/issues/6056 <samp>(85e6f)</samp>toSatisfy asymmetric matcher - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7022 <samp>(f691a)</samp>toBeOneOf matcher - by @zirkelc and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6974 <samp>(3d742)</samp>summary option for verbose and default reporters - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6893 <samp>(511b7)</samp>provide - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6813 <samp>(85c64)</samp>config to resolveSnapshotPath - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6800 <samp>(746d8)</samp>coverageMap in json report - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6606 <samp>(9c8f7)</samp>onTestsRerun method to global setup context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6803 <samp>(e26e0)</samp>cacheDir when optimizer is enabled - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6910 <samp>(0b08b)</samp>finally in case there is an error to avoid it getting stuck - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6951 <samp>(02194)</samp>Custom type internally - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7032 <samp>(7957f)</samp>cancelCurrentRun awaits runningPromise - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7168 <samp>(1dbf5)</samp>getMockImplementation to return "once" implementation - by @chaptergy in https://github.com/vitest-dev/vitest/issues/7033 <samp>(39125)</samp>capturePrintError logger duplicate event handlers - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7197 <samp>(e89c3)</samp>vitest/reporters entrypoint - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7241 <samp>(aec0b)</samp>forks pool - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7090 <samp>(8cab9)</samp>VitestRunner type from vitest/runners - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7240 <samp>(9b218)</samp>vitest list - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7257 <samp>(1c2b2)</samp>log-update - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7019 <samp>(6d23f)</samp>vi.mock is present - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6810 <samp>(8d179)</samp>entries in the browser mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7167 <samp>(423d6)</samp>console.time with fake timers - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7207 <samp>(903f3)</samp>isolate: false is used - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6957 <samp>(426ce)</samp>dot reporter without log-update - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6943 <samp>(be969)</samp>--hideSkippedTests in base reporter - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6988 <samp>(721a5)</samp>retry and repeats counts - by @AriPerkkio and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7004 <samp>(3496a)</samp>describe.todo as 'todo' - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7171 <samp>(1d458)</samp>toMatchFileSnapshot - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7156 <samp>(a437b)</samp>toMatchSnapshot("...") - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7126 <samp>(ac9ba)</samp>@ts-expect-error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7125 <samp>(27d34)</samp>extends: true correctly inherits all root config properties - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7232 <samp>(798c0)</samp>deps: Update fake-timers to v14.0.0 - by @xxzefgh and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7097 (c98b4)
userEvent.copy, cut, paste - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6769 <samp>(843a6)</samp>cancelCurrentRun awaits runningPromise - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7168 <samp>(1dbf5)</samp>getMockImplementation to return "once" implementation - by @chaptergy in https://github.com/vitest-dev/vitest/issues/7033 <samp>(39125)</samp>log-update - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7019 <samp>(6d23f)</samp>entries in the browser mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7167 <samp>(423d6)</samp>describe.todo as 'todo' - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7171 <samp>(1d458)</samp>toMatchFileSnapshot - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7156 <samp>(a437b)</samp>toMatchSnapshot("...") - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7126 <samp>(ac9ba)</samp>@ts-expect-error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7125 <samp>(27d34)</samp>Support Vite v6 in mocker package - by @cexbrayat in https://github.com/vitest-dev/vitest/issues/7058 (96f47)
thresholds to support maximum uncovered items - by @jonahkagan in https://github.com/vitest-dev/vitest/issues/7061 <samp>(bde98)</samp>toBeOneOf matcher - by @zirkelc and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6974 <samp>(3d742)</samp>expect: Check more properties for error equality - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/5876 (10023)
vitest/node entry point and statically on Vitest - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7029 <samp>(be8d4)</samp>diff.printBasicPrototype: false by default - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7043 <samp>(2b5c5)</samp>toSatisfy asymmetric matcher - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7022 <samp>(f691a)</samp>isolate: false is used - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6957 <samp>(426ce)</samp>Print a deprecation warning if suite or test uses object as the third argument - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7031 (…
We decided to skip Vitest 2.2 and release Vitest 3 with support for Vite 6 instead. There will be no more Vitest 2 versions. Vitest 3 is the first version that supports Vite 6 (excluding 2.1.6). We aim to have a stable release in January.
Vitest 3 is our first step to standardising the public Node.js API. We plan to remove the experimental tag from the current APIs in Vitest 3.1 - the API will follow semver after that.
spy.mockReset changes - by @Lordfirespeed in https://github.com/vitest-dev/vitest/issues/6426 <samp>(db7a8)</samp>describe(..., { shuffle: boolean }) and inherit from parent suite - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6670 <samp>(aa1da)</samp>retry and repeats - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6817 <samp>(e8ce9)</samp>diff options and support printBasicPrototype - by @hi-ogawa, @sheremet-va and Michał Grzegorzewski in https://github.com/vitest-dev/vitest/issues/6740 <samp>(39186)</samp>ctx.skip() dynamically - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6805 <samp>(697c3)</samp>actionTimeout as playwright provider options - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6984 <samp>(e2c29)</samp>--project=!pattern - by @haines in https://github.com/vitest-dev/vitest/issues/6924 <samp>(ebfe9)</samp>toHaveBeenCalledExactlyOnceWith expect matcher - by @jacoberdman2147 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/6894 <samp>(ff662)</samp>toHaveBeenCalledAfter and toHaveBeenCalledBefore utility - by @Barbapapazes and @sheremet-va in https://github.com/vitest-dev/vitest/issues/6056 <samp>(85e6f)</samp>summary option for verbose and default reporters - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6893 <samp>(511b7)</samp>provide - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6813 <samp>(85c64)</samp>config to resolveSnapshotPath - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6800 <samp>(746d8)</samp>coverageMap in json report - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6606 <samp>(9c8f7)</samp>onTestsRerun method to global setup context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6803 <samp>(e26e0)</samp>cacheDir when optimizer is enabled - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6910 <samp>(0b08b)</samp>finally in case there is an error to avoid it getting stuck - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6951 <samp>(02194)</samp>Custom internally - by @sheremet-va <samp>(46fc5)</samp>vi.mock is present - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6810 <samp>(8d179)</samp>dot reporter without log-update - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6943 <samp>(be969)</samp>--hideSkippedTests in base reporter - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6988 <samp>(721a5)</samp>retry and repeats counts - by @AriPerkkio and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7004 <samp>(3496a)</samp>reporter: Add support for function type to classname option in the junit reporter - by @jpleclerc, Jean-Philippe Leclerc and @hi-ogawa in https://gith
summary option for verbose and default reporters - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6893 <samp>(511b7)</samp>cacheDir when optimizer is enabled - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6910 <samp>(0b08b)</samp>Support inline diff options and support printBasicPrototype - by @hi-ogawa, @sheremet-va and Michał Grzegorzewski in https://github.com/vitest-dev/vit
diff options and support printBasicPrototype - by @hi-ogawa, @sheremet-va and Michał Grzegorzewski in https://github.com/vitest-dev/vitest/issues/6740 <samp>(39186)</samp>ctx.skip() dynamically - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6805 <samp>(697c3)</samp>toHaveBeenCalledExactlyOnceWith expect matcher - by @jacoberdman2147 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/6894 <samp>(ff662)</samp>toHaveBeenCalledAfter and toHaveBeenCalledBefore utility - by @Barbapapazes and @sheremet-va in https://github.com/vitest-dev/vitest/issues/6056 <samp>(85e6f)</samp>provide - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6813 <samp>(85c64)</samp>config to resolveSnapshotPath - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6800 <samp>(746d8)</samp>coverageMap in json report - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6606 <samp>(9c8f7)</samp>onTestsRerun method to global setup context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6803 <samp>(e26e0)</samp>vi.mock is present - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6810 <samp>(8d179)</samp>Browser mode serves arbitrary files | CVE-2025-24963
This release includes security patches for:
/__screenshot-error - by @hi-ogawa in https://github.com/vitest-dev/vitest/pull/7343Support Node 21 - by @sheremet-va (92f7a)
This introduced some breaking changes (https://github.com/vitest-dev/vitest/issues/6992). We will enable support for it later. In the meantime, you ca…
pnpm.overrides or yarn resolutions to override the vite version in the vitest package - the APIs are compatible.## 🚀 Features - Support Vite 6 ##### View changes on GitHub
dangerouslyIgnoreUnhandledErrors without base reporter - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6808 (0bf0a)
dangerouslyIgnoreUnhandledErrors without base reporter - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6808 <samp>(0bf0a)</samp>unhandledRejection even when base reporter is not used - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6812 <samp>(8878b)</samp>sequence.concurrent from the RuntimeConfig type - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6880 <samp>(6af73)</samp>.poll, .element, .rejects/.resolves, and locator.* weren't awaited - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6877 <samp>(93b67)</samp>enter or 'a' - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6848 <samp>(487c8)</samp>_This patch release includes a non-breaking feature for the experimental Browser Mode that doesn't follow SemVer. If you want to avoid picking up rele
This patch release includes a non-breaking feature for the experimental Browser Mode that doesn't follow SemVer. If you want to avoid picking up releases like this, make sure to pin the Vitest version in your package.json. See npm's documentation about semver for more information.
transformIndexHtml - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6725 <samp>(16902)</samp>v= queries to setup files imports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6759 <samp>(b8258)</samp>toThrowError with empty string parameter - by @shulaoda in https://github.com/vitest-dev/vitest/issues/6710 <samp>(a6129)</samp>test.extend type exports - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6707 <samp>(e5c38)</samp>hash to replace createHash - by @btea in https://github.com/vitest-dev/vitest/issues/6703 <samp>(5d07b)</samp>Deprecate UserConfig in favor of ViteUserConfig - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6626 (496bd)
toBeNaN, toBeUndefined, toBeNull, toBeTruthy, toBeFalsy - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6697 <samp>(e0027)</samp>/mockServiceWorker.js instead of /__vitest_msw__ - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6687 <samp>(4b2ce)</samp>toMatchObject diff - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6620 <samp>(d289e)</samp><empty line> logs when interleaving console.log/error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6644 <samp>(9ece3)</samp>fast-glob instead of tinyglobby in Vitest - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6688 <samp>(70baa)</samp>Move Vitest.setServer to post configureServer hook to enable import analysis for workspace config loading - by @hi-ogawa in https://github.com/vitest-
Vitest.setServer to post configureServer hook to enable import analysis for workspace config loading - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6584 <samp>(e7f35)</samp>BenchmarkResult.samples array to reduce memory usage - by @hi-ogawa and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6541 <samp>(a6407)</samp>data: protocol on preview provider file upload - by @userquin in https://github.com/vitest-dev/vitest/issues/6501 <samp>(e9821)</samp>*.astro by default - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6565 <samp>(f8ff7)</samp>cleanOnRerun: false to invalidate previous results - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6592 <samp>(88bde)</samp>toBeDefined with expect.poll - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6562 <samp>(f7da6)</samp>--cpu-prof and --heap-prof not working by default - by @AriPerkkio in https://github.com/vitest-dev/vitest/pull/6555 <samp>(2e4d894)</samp>beforeAll failed - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6524 <samp>(fb797)</samp>onTestFinished and onTestFailed during retry and repeats - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6609 <samp>(c5e29)</samp>--standalone - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6577 <samp>(d0bf8)</samp>Make example test callbacks async - by @aqandrew in https://github.com/vitest-dev/vitest/issues/6484 (16aa7)
This release makes another big change to the Browser Mode by introducing locators API:
This release makes another big change to the Browser Mode by introducing locators API:
test('renders blog posts', async () => {
const screen = page.render(<Blog />)
await expect.element(screen.getByRole('heading', { name: 'Blog' })).toBeInTheDocument()
const [firstPost] = screen.getByRole('listitem').all()
await firstPost.getByRole('button', { name: 'Delete' }).click()
expect(screen.getByRole('listitem').all()).toHaveLength(3)
})
You can use either vitest-browser-vue, vitest-browser-svelte or vitest-browser-react to render components and make assertions using locators. Locators are also available on the page object from @vitest/browser/context.
vitest.config.ts or vite.config.ts inside the folder)projects/* will match anything inside the projects folder. If it's a folder, we try to find the config inside that folder (if there is none, it is still treated as a project with the default config). If it's a file, it will be treated as a Vitest config. projects/**/* previously would assume that you only wanted to have folders as projects, but now it will match every single file insideprojects.userEvent.upload in playwright provider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6442 <samp>(cf148)</samp>--inspect - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6433 <samp>(0499a)</samp>--inspect-brk - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6434 <samp>(7ab0f)</samp>--exclude-after-remap - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6309 <samp>(5932a)</samp>{ spy: true } instead of a factory - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6289 <samp>(95f02)</samp>vi.advanceTimersToNextFrame - by @bnjm and @sheremet-va in https://github.com/vitest-dev/vitest/issues/6347 <samp>(8ff63)</samp>fast-glob to tinyglobby - by @SuperchupuDev in https://github.com/vitest-dev/vitest/pull/6274 <samp>(c321a)</samp>index file - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6266 <samp>(081cf)</samp>expect.getState().testPath always returns correct path - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6472 <samp>(ac698)</samp>vitest and @vitest/* versions don't match - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6317 <samp>(e662c)</samp>vitenode for uncovered files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6044 <samp>(da52d)</samp>performance.now instead of Date.now for duration - by @LuciNyan in https://github.com/vitest-dev/vitest/issues/6382 <samp>(fe489)</samp>toMatchInlineSnapshot updates at the same location - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6332 <samp>(1606f)</samp>typecheck.include overlaps with include - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6256 <samp>(153ff)</samp>Support userEvent.upload in playwright provider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6442 (cf148)
userEvent.upload in playwright provider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6442 <samp>(cf148)</samp>--inspect - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6433 <samp>(0499a)</samp>--inspect-brk - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6434 <samp>(7ab0f)</samp>{ spy: true } instead of a factory - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6289 <samp>(95f02)</samp>performance.now instead of Date.now for duration - by @LuciNyan in https://github.com/vitest-dev/vitest/issues/6382 <samp>(fe489)</samp>Make spec into a class instead of a tuple - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6355 (874a1)
--exclude-after-remap - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6309 <samp>(5932a)</samp>vi.advanceTimersToNextFrame - by @bnjm and @sheremet-va in https://github.com/vitest-dev/vitest/issues/6347 <samp>(8ff63)</samp>vitenode for uncovered files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6044 <samp>(da52d)</samp>toMatchInlineSnapshot updates at the same location - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6332 <samp>(1606f)</samp>typecheck.include overlaps with include - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6256 <samp>(153ff)</samp>vitest: Add "provide" option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6253 (4409d)
@testing-library/framework packages <samp>(d79511)</samp>
testing-library that relies solely on querySelector and closest.click/.fill and other userEvent methodsvitest and @vitest/* versions don't match - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/6317 <samp>(e662c)</samp>browser: Keep querying elements even if locator is created with elementLocator, add pubic @vitest/browser/utils - by @sheremet-va in https://github.co
browser: Use documentElement as the root for selector - by @sheremet-va (d8077)
*No significant changes* ##### View changes on GitHub
No significant changes
Move page.config to server.config, add more docs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6252 (af2b8)
index file - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6266 <samp>(081cf)</samp>Your coding agent can read these notes before it upgrades. Set up the MCP server →