Author SHA1 Message Date
argoyleandClaude Opus 5.5 0f7610d03f fix: make the nginx config readable by the unprivileged user
schemas-app / build (pull_request) Successful in 4m9s
schemas-app / deploy-prod-frostmoln (pull_request) Skipped
COPY keeps the source file's mode; a 600 file (local checkouts) left
uid 101 unable to read it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ma8eHhW59hLAJuLzBnLvUu
2026-10-14 22:26:30 +02:00
argoyleandClaude Opus 5.5 1646ee1bc3 feat: deploy to Frostmoln production
The AWS deploy-prod job has failed since CI left AWS (no k8s.unbound.se
context on the runners). Deploys now go to the Frostmoln production
cluster (namespace schemas), the way the sites do.

Frostmoln enforces restricted Pod Security: the pod runs as the image's
non-root user with a matching securityContext. The prod-only manifests
move to the prod-frostmoln target; the ALB ingress becomes a Traefik one
with a Let's Encrypt certificate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ma8eHhW59hLAJuLzBnLvUu
2026-10-14 22:15:38 +02:00
renovate acf6f8df62 chore(deps): update nginx docker tag to v1.31.7 (#390)
schemas-app / build (push) Successful in 22s
schemas-app / deploy-prod (push) Failing after 10s
2026-10-14 19:41:31 +00:00
renovate f85171ce54 chore(deps): update dependency @vitejs/plugin-vue to v6.0.10 (#389)
schemas-app / build (push) Failing after 4s
schemas-app / deploy-prod (push) Skipped
2026-10-13 09:32:11 +00:00
renovate f67e1bf784 fix(deps): update dependency nuxt to v4.6.1 (#388)
schemas-app / build (push) Successful in 7m39s
schemas-app / deploy-prod (push) Failing after 10s
2026-10-13 06:04:32 +00:00
renovate 06193f2d96 chore(deps): update graphqlcodegenerator monorepo (#387)
schemas-app / build (push) Successful in 24m21s
schemas-app / deploy-prod (push) Failing after 8s
2026-10-13 05:37:16 +00:00
renovate 88f675760c chore(deps): update dependency @graphql-codegen/cli to v7.4.5 (#386)
schemas-app / build (push) Successful in 15m22s
schemas-app / deploy-prod (push) Failing after 2m22s
2026-10-10 15:22:40 +00:00
renovate fbb0d555eb fix(deps): update dependency nuxt to v4.6.0 (#385)
schemas-app / deploy-prod (push) Failing after 18s
schemas-app / build (push) Successful in 50s
2026-10-08 23:25:05 +00:00
renovate df6943512f chore(deps): update dependency typescript-eslint to v8.71.1 (#384)
schemas-app / build (push) Successful in 1m2s
schemas-app / deploy-prod (push) Failing after 20s
2026-10-08 18:22:39 +00:00
renovate 30190b678d chore(deps): update graphqlcodegenerator monorepo (#383)
schemas-app / build (push) Successful in 1m30s
schemas-app / deploy-prod (push) Failing after 17s
2026-10-08 16:23:31 +00:00
renovate 8281ede8e0 chore(deps): update dependency jsdom to v30.1.2 (#382)
schemas-app / build (push) Successful in 46s
schemas-app / deploy-prod (push) Failing after 18s
2026-10-07 10:23:34 +00:00
renovate 5489b2a617 chore(deps): update pre-commit hook pre-commit/mirrors-eslint to v10.12.0 (#381)
schemas-app / build (push) Successful in 36s
schemas-app / deploy-prod (push) Successful in 1m9s
2026-10-06 15:21:58 +00:00
renovate 471deee94e chore(deps): update nginx:1.31.6 docker digest to 9a54e7e (#380)
schemas-app / build (push) Successful in 38s
schemas-app / deploy-prod (push) Failing after 55s
2026-10-06 04:38:33 +00:00
renovate f095c6c979 chore(deps): update dependency eslint to v10.12.0 (#379)
schemas-app / build (push) Successful in 40s
schemas-app / deploy-prod (push) Successful in 1m6s
2026-10-05 22:18:47 +00:00
renovate 640fc9ef3b chore(deps): update dependency stylelint to v17.16.0 (#378)
schemas-app / build (push) Successful in 56s
schemas-app / deploy-prod (push) Successful in 1m9s
2026-10-04 11:12:56 +00:00
renovate 3851de6879 chore(deps): update vitest monorepo to v5.0.3 (#377)
schemas-app / build (push) Successful in 39s
schemas-app / deploy-prod (push) Successful in 1m9s
2026-10-03 12:13:33 +00:00
argoyle b477fed57d chore(k8s): take the image reference from build-tools (#376)
schemas-app / build (push) Successful in 47s
schemas-app / deploy-prod (push) Successful in 1m15s
## Summary

`k8s/deploy.yaml` takes the image from build-tools: `image: ${IMAGE}` instead of the hard-coded `oci.unbound.se/unboundsoftware/schemas-app:${COMMIT}`.

`deploy` substitutes `${IMAGE}` with `<registry>/<owner>/<name>:<tag>`, where the registry comes from the build-tools config and the tag is the value `${COMMIT}` gets today. The rendered reference is unchanged. Moving off `oci.unbound.se` later becomes one change in infra.

Validated on shiny/time-service#864: merged and deployed to AWS staging and Frostmoln staging with the same image. Prerequisites, all merged:
- unboundsoftware/infra#1808: registry in `BUILDTOOLS_FROSTMOLN_STAGING`
- shiny/acctest#952: acctest pins build-tools to the Gitea registry

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #376
2026-10-02 22:40:09 +00:00
renovate 519554ae0e chore(deps): update dependency @graphql-codegen/typescript-operations to v6.1.9 (#375)
schemas-app / build (push) Successful in 38s
schemas-app / deploy-prod (push) Successful in 1m7s
2026-10-02 15:15:47 +00:00
renovate 842403b109 chore(deps): update dependency typescript-eslint to v8.71.0 (#374)
schemas-app / build (push) Successful in 56s
schemas-app / deploy-prod (push) Successful in 1m24s
2026-10-01 19:17:54 +00:00
renovate eb13f78944 fix(deps): update dependency @auth0/auth0-vue to v2.11.0 (#373)
schemas-app / build (push) Successful in 1m52s
schemas-app / deploy-prod (push) Successful in 1m33s
2026-10-01 14:15:11 +00:00
renovate 6d9911ce4b chore(deps): update graphqlcodegenerator monorepo (#372)
schemas-app / build (push) Successful in 2m27s
schemas-app / deploy-prod (push) Successful in 1m18s
2026-10-01 14:15:02 +00:00
renovate 00fed95fd7 chore(deps): update vitest monorepo to v5.0.2 (#371)
schemas-app / build (push) Successful in 34s
schemas-app / deploy-prod (push) Successful in 1m17s
2026-09-28 10:17:33 +00:00
renovate aea131d565 fix(deps): update dependency graphql-ws to v6.3.0 (#370)
schemas-app / build (push) Successful in 37s
schemas-app / deploy-prod (push) Successful in 1m17s
2026-09-27 19:16:52 +00:00
renovate 0b8eabc073 chore(deps): update dependency @graphql-codegen/cli to v7.4.3 (#369)
schemas-app / build (push) Successful in 37s
schemas-app / deploy-prod (push) Successful in 1m15s
2026-09-27 15:15:34 +00:00
renovate 39d2776401 chore(deps): update dependency eslint-plugin-vue to v10.11.1 (#368)
schemas-app / build (push) Successful in 34s
schemas-app / deploy-prod (push) Successful in 1m17s
2026-09-27 02:16:01 +00:00
renovate ca70118877 chore(deps): update dependency jsdom to v30.1.1 (#367)
schemas-app / build (push) Successful in 1m5s
schemas-app / deploy-prod (push) Successful in 1m6s
2026-09-25 04:13:27 +00:00
renovate 3c8628897a chore(deps): update dependency typescript-eslint to v8.70.1 (#366)
schemas-app / build (push) Successful in 39s
schemas-app / deploy-prod (push) Successful in 1m15s
2026-09-24 18:15:58 +00:00
renovate 88883e21e6 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.27.0 (#365)
schemas-app / build (push) Successful in 1m25s
schemas-app / deploy-prod (push) Successful in 1m11s
2026-09-23 19:31:51 +00:00
renovate ab17e4fbeb chore(deps): update graphqlcodegenerator monorepo (#364)
schemas-app / build (push) Successful in 58s
schemas-app / deploy-prod (push) Successful in 1m7s
2026-09-23 06:14:30 +00:00
renovate e66a8d8616 chore(deps): update commitlint monorepo to v21.2.3 (#363)
schemas-app / build (push) Successful in 59s
schemas-app / deploy-prod (push) Successful in 1m17s
2026-09-22 19:31:21 +00:00
renovate d6813456b7 chore(deps): update pre-commit hook pre-commit/mirrors-eslint to v10.11.0 (#362)
schemas-app / build (push) Successful in 44s
schemas-app / deploy-prod (push) Successful in 1m11s
2026-09-22 14:21:16 +00:00
renovate bb66632e4e chore(deps): update dependency eslint to v10.11.0 (#361)
schemas-app / build (push) Successful in 31s
schemas-app / deploy-prod (push) Successful in 1m8s
2026-09-21 22:19:56 +00:00
renovate f9695c55ee fix(deps): update dependency @auth0/auth0-vue to v2.10.0 (#360)
schemas-app / build (push) Successful in 2m25s
schemas-app / deploy-prod (push) Successful in 1m12s
2026-09-20 10:17:41 +00:00
renovate 05f6c09bf0 fix(deps): update dependency vue to v3.5.43 (#359)
schemas-app / build (push) Successful in 2m45s
schemas-app / deploy-prod (push) Successful in 1m12s
2026-09-20 10:17:23 +00:00
renovate 874fa1eb36 chore(deps): update dependency jsdom to v30.1.0 (#358)
schemas-app / build (push) Successful in 30s
schemas-app / deploy-prod (push) Successful in 1m5s
2026-09-20 02:19:17 +00:00
renovate e6ccbcc9ae fix(deps): update dependency graphql-ws to v6.2.2 (#357)
schemas-app / build (push) Successful in 2m58s
schemas-app / deploy-prod (push) Successful in 1m21s
2026-09-19 15:36:44 +00:00
renovate 9a64ba985f chore(deps): update dependency @vue/test-utils to v2.5.1 (#356)
schemas-app / build (push) Successful in 35s
schemas-app / deploy-prod (push) Successful in 1m17s
2026-09-19 10:19:11 +00:00
renovate 488f996390 chore(deps): update nginx:1.31.6 docker digest to 8e1fce8 (#355)
schemas-app / build (push) Successful in 33s
schemas-app / deploy-prod (push) Successful in 1m8s
2026-09-19 02:17:07 +00:00
renovate 924d0aee21 chore(deps): update vitest monorepo to v5.0.1 (#354)
schemas-app / build (push) Successful in 38s
schemas-app / deploy-prod (push) Successful in 1m19s
2026-09-18 09:18:30 +00:00
renovate fc030da514 chore(deps): update dependency @vitejs/plugin-vue to v6.0.9 (#353)
schemas-app / build (push) Successful in 1m31s
schemas-app / deploy-prod (push) Successful in 1m33s
2026-09-17 07:42:49 +00:00
renovate 0831783818 chore(deps): update nginx docker tag to v1.31.6 (#352)
schemas-app / build (push) Successful in 1m2s
schemas-app / deploy-prod (push) Successful in 1m12s
2026-09-16 01:15:40 +00:00
renovate ab74e029a9 chore(deps): update dependency @graphql-codegen/cli to v7.4.1 (#351)
schemas-app / build (push) Successful in 41s
schemas-app / deploy-prod (push) Successful in 1m19s
2026-09-13 15:13:10 +00:00
renovate ea3a2a7ce0 chore(deps): update dependency typescript-eslint to v8.70.0 (#350)
schemas-app / build (push) Successful in 51s
schemas-app / deploy-prod (push) Successful in 1m37s
2026-09-10 20:14:07 +00:00
renovateandargoyle bafceab447 chore(deps): update vitest monorepo to v5 (#345)
schemas-app / build (push) Successful in 2m11s
schemas-app / deploy-prod (push) Successful in 1m15s
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@vitest/coverage-v8](https://vitest.dev/guide/coverage) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8)) | [`4.1.11` → `5.0.0`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-v8/4.1.11/5.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fcoverage-v8/5.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fcoverage-v8/4.1.11/5.0.0?slim=true) |
| [vitest](https://vitest.dev) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`4.1.11` → `5.0.0`](https://renovatebot.com/diffs/npm/vitest/4.1.11/5.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/5.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.1.11/5.0.0?slim=true) |

---

### Release Notes

<details>
<summary>vitest-dev/vitest (@&#8203;vitest/coverage-v8)</summary>

### [`v5.0.0`](https://github.com/vitest-dev/vitest/releases/tag/v5.0.0)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.11...v5.0.0)

Vitest 5 is officially out! This release focuses on performance and brings a lot of new features while fixing long-standing bugs. See our [blog post](https://vitest.dev/blog/vitest-5.html) for the official announcement.

#####    🚨 Breaking Changes

- Replace `loupe.inspect` with pretty-format  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Claude Opus 5 (1M context)** and **OpenAI Codex** in [#&#8203;9609](https://github.com/vitest-dev/vitest/issues/9609) [<samp>(3f802)</samp>](https://github.com/vitest-dev/vitest/commit/3f802da4b)
- Remove quotes from string values in `test.for/each` title `$` variable (take 2)  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10170](https://github.com/vitest-dev/vitest/issues/10170) [<samp>(04d37)</samp>](https://github.com/vitest-dev/vitest/commit/04d37e9d7)
- Default `attachmentsDir` from `.vitest-attachements/` to `.vitest/attachments/`  -  by [@&#8203;MdSadiqMd](https://github.com/MdSadiqMd) in [#&#8203;10186](https://github.com/vitest-dev/vitest/issues/10186) [<samp>(1ba73)</samp>](https://github.com/vitest-dev/vitest/commit/1ba7338c3)
- Remove `sequential` test/suite options in favor of `concurrent`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10198](https://github.com/vitest-dev/vitest/issues/10198) [<samp>(9229f)</samp>](https://github.com/vitest-dev/vitest/commit/9229f2edc)
- Represent locator as an object instead of a string  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10212](https://github.com/vitest-dev/vitest/issues/10212) [<samp>(80f07)</samp>](https://github.com/vitest-dev/vitest/commit/80f07edf6)
- Inline `expect` package  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10221](https://github.com/vitest-dev/vitest/issues/10221) [<samp>(ad162)</samp>](https://github.com/vitest-dev/vitest/commit/ad16223e7)
- Remove deprecated entry points  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10222](https://github.com/vitest-dev/vitest/issues/10222) [<samp>(994c6)</samp>](https://github.com/vitest-dev/vitest/commit/994c6ddb9)
- Require Node.js 22 and Vite 6.4  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10178](https://github.com/vitest-dev/vitest/issues/10178) [<samp>(38762)</samp>](https://github.com/vitest-dev/vitest/commit/3876283e8)
- Fail `expect.poll` when function didn't resolve in time  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10233](https://github.com/vitest-dev/vitest/issues/10233) [<samp>(4df04)</samp>](https://github.com/vitest-dev/vitest/commit/4df048c11)
- Throw an error if hoistable methods are outside the top level scope  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10460](https://github.com/vitest-dev/vitest/issues/10460) [<samp>(d0b4f)</samp>](https://github.com/vitest-dev/vitest/commit/d0b4fddcb)
- `toHaveTextContent` is strict, add `toMatchTextContent` as alternative  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10473](https://github.com/vitest-dev/vitest/issues/10473) [<samp>(18f30)</samp>](https://github.com/vitest-dev/vitest/commit/18f303079)
- Don't lookup config file from ancestor directories  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **OpenAI Codex** and **Hiroshi Ogawa** in [#&#8203;10428](https://github.com/vitest-dev/vitest/issues/10428) [<samp>(945d9)</samp>](https://github.com/vitest-dev/vitest/commit/945d9090e)
- Inline `@vitest/runner` package, do not publish it anymore  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10511](https://github.com/vitest-dev/vitest/issues/10511) [<samp>(6d6e4)</samp>](https://github.com/vitest-dev/vitest/commit/6d6e46b1e)
- Allow mutating happy-dom/jsdom window object  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#&#8203;10373](https://github.com/vitest-dev/vitest/issues/10373) [<samp>(206e8)</samp>](https://github.com/vitest-dev/vitest/commit/206e8cff8)
- Expose `concurrencyId`/`workerId` on TestModule's diagnostics, make id 1-based  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10516](https://github.com/vitest-dev/vitest/issues/10516) [<samp>(bdd98)</samp>](https://github.com/vitest-dev/vitest/commit/bdd985433)
- Add `screenshotDirectory` config to `browser.expect.toMatchScreenshot`  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;10592](https://github.com/vitest-dev/vitest/issues/10592) [<samp>(a60de)</samp>](https://github.com/vitest-dev/vitest/commit/a60ded0fb)
- Update `@sinonjs/fake-timers` and support mocking `Temporal`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10654](https://github.com/vitest-dev/vitest/issues/10654) [<samp>(f8b15)</samp>](https://github.com/vitest-dev/vitest/commit/f8b1532fe)
- Remove webdriverio package  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10675](https://github.com/vitest-dev/vitest/issues/10675) [<samp>(5fed6)</samp>](https://github.com/vitest-dev/vitest/commit/5fed68f72)
- Clear mocks by default before each test  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10613](https://github.com/vitest-dev/vitest/issues/10613) [<samp>(0f646)</samp>](https://github.com/vitest-dev/vitest/commit/0f6463bf2)
- Don't emit localStorage warnings on Node 26, fail gracefully when worker fails to start  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10293](https://github.com/vitest-dev/vitest/issues/10293) [<samp>(334ed)</samp>](https://github.com/vitest-dev/vitest/commit/334edef92)
- Separate config resolution from the server creation  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10554](https://github.com/vitest-dev/vitest/issues/10554) [<samp>(1c0ec)</samp>](https://github.com/vitest-dev/vitest/commit/1c0ec3444)
- Inline projects extend the root config by default  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10750](https://github.com/vitest-dev/vitest/issues/10750) [<samp>(fec00)</samp>](https://github.com/vitest-dev/vitest/commit/fec001ad3)
- Enable mocking Temporal without fake timers  -  by [@&#8203;fabon-f](https://github.com/fabon-f), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10757](https://github.com/vitest-dev/vitest/issues/10757) [<samp>(ac2d4)</samp>](https://github.com/vitest-dev/vitest/commit/ac2d46b42)
- Support nested projects  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10846](https://github.com/vitest-dev/vitest/issues/10846) [<samp>(ec367)</samp>](https://github.com/vitest-dev/vitest/commit/ec367cf2a)
- Use `>` as separator in `-t`, calculate `only` once  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10686](https://github.com/vitest-dev/vitest/issues/10686) [<samp>(a0b20)</samp>](https://github.com/vitest-dev/vitest/commit/a0b20bc86)
- Fail the test when an asynchronous assertion is not awaited  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10868](https://github.com/vitest-dev/vitest/issues/10868) [<samp>(86d4a)</samp>](https://github.com/vitest-dev/vitest/commit/86d4a9da9)
- Share the Vite server between inline projects  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10848](https://github.com/vitest-dev/vitest/issues/10848) [<samp>(d87c9)</samp>](https://github.com/vitest-dev/vitest/commit/d87c96ee4)
- Parse files statically in vitest list by default  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11088](https://github.com/vitest-dev/vitest/issues/11088) [<samp>(51e94)</samp>](https://github.com/vitest-dev/vitest/commit/51e949416)
- **benchmark**:
  - Rewrite the public API  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10113](https://github.com/vitest-dev/vitest/issues/10113) [<samp>(19f6e)</samp>](https://github.com/vitest-dev/vitest/commit/19f6e8947)
- **browser**:
  - Iframe scale  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9745](https://github.com/vitest-dev/vitest/issues/9745) [<samp>(b6398)</samp>](https://github.com/vitest-dev/vitest/commit/b639852cc)
  - Enable `locators.exact` by default  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10430](https://github.com/vitest-dev/vitest/issues/10430) [<samp>(e2032)</samp>](https://github.com/vitest-dev/vitest/commit/e203202f9)
  - Require `sessionId` for orchestrator html request  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#&#8203;10522](https://github.com/vitest-dev/vitest/issues/10522) [<samp>(79b7d)</samp>](https://github.com/vitest-dev/vitest/commit/79b7d8fcc)
  - Save failure screenshots in `attachmentsDir`  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;10917](https://github.com/vitest-dev/vitest/issues/10917) [<samp>(3b5bb)</samp>](https://github.com/vitest-dev/vitest/commit/3b5bbd8b4)
- **coverage**:
  - `include/exclude` globs too eager  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9818](https://github.com/vitest-dev/vitest/issues/9818) [<samp>(edacb)</samp>](https://github.com/vitest-dev/vitest/commit/edacb0fd4)
  - Allow `thresholds.perFile` to accept an object  -  by [@&#8203;vladlenskiy](https://github.com/vladlenskiy) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10190](https://github.com/vitest-dev/vitest/issues/10190) [<samp>(13b78)</samp>](https://github.com/vitest-dev/vitest/commit/13b78d98b)
- **expect**:
  - Fix `toThrow("")` behavior by reverting [#&#8203;6710](https://github.com/vitest-dev/vitest/issues/6710)  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9643](https://github.com/vitest-dev/vitest/issues/9643) and [#&#8203;6710](https://github.com/vitest-dev/vitest/issues/6710) [<samp>(6c3e4)</samp>](https://github.com/vitest-dev/vitest/commit/6c3e4bdbf)
- **mocker**:
  - Deserialize automock as automock  -  by [@&#8203;nami8824](https://github.com/nami8824) in [#&#8203;10192](https://github.com/vitest-dev/vitest/issues/10192) [<samp>(2f892)</samp>](https://github.com/vitest-dev/vitest/commit/2f892712d)
- **reporters**:
  - `blob` reporter and `--merge-reports` default to `.vitest/blob/`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10232](https://github.com/vitest-dev/vitest/issues/10232) [<samp>(d22b0)</samp>](https://github.com/vitest-dev/vitest/commit/d22b029ae)
  - Write json and junit reporter output files to `.vitest` by default  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10621](https://github.com/vitest-dev/vitest/issues/10621) [<samp>(58577)</samp>](https://github.com/vitest-dev/vitest/commit/58577290a)
- **spy**:
  - Preserve class mock prototype methods on instances  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10910](https://github.com/vitest-dev/vitest/issues/10910) [<samp>(6093d)</samp>](https://github.com/vitest-dev/vitest/commit/6093d764a)
- **types**:
  - Add better promise support in expects and matchers  -  by [@&#8203;samchungy](https://github.com/samchungy) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8266](https://github.com/vitest-dev/vitest/issues/8266) [<samp>(41f55)</samp>](https://github.com/vitest-dev/vitest/commit/41f551bce)
- **ui**:
  - Harden UI API access  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#&#8203;10583](https://github.com/vitest-dev/vitest/issues/10583) [<samp>(4c26d)</samp>](https://github.com/vitest-dev/vitest/commit/4c26d7675)
  - Change html reporter default output to `.vitest`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **Hiroshi Ogawa** in [#&#8203;10620](https://github.com/vitest-dev/vitest/issues/10620) [<samp>(29c36)</samp>](https://github.com/vitest-dev/vitest/commit/29c364d50)

#####    🚀 Features

- Add `createReport` and `.vitest` report directory convention  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9993](https://github.com/vitest-dev/vitest/issues/9993) [<samp>(72a6d)</samp>](https://github.com/vitest-dev/vitest/commit/72a6dc257)
- Expose default reporters through `configDefaults.reporters`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **Claude Opus 5 (1M context)** in [#&#8203;10219](https://github.com/vitest-dev/vitest/issues/10219) [<samp>(083f6)</samp>](https://github.com/vitest-dev/vitest/commit/083f6bdd6)
- Support merge reports for non-sharded multi-environment runs (take 2)  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Claude Opus 5 (1M context)**, **OpenAI Codex** and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10031](https://github.com/vitest-dev/vitest/issues/10031) [<samp>(e60b2)</samp>](https://github.com/vitest-dev/vitest/commit/e60b2f49e)
- Add `logger.formatError`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10268](https://github.com/vitest-dev/vitest/issues/10268) [<samp>(2c5f3)</samp>](https://github.com/vitest-dev/vitest/commit/2c5f3ee2f)
- Support typescript build mode  -  by [@&#8203;lishaduck](https://github.com/lishaduck) in [#&#8203;9870](https://github.com/vitest-dev/vitest/issues/9870) [<samp>(106da)</samp>](https://github.com/vitest-dev/vitest/commit/106da5896)
- Add toggable `injectCjsGlobals` option  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10709](https://github.com/vitest-dev/vitest/issues/10709) [<samp>(82671)</samp>](https://github.com/vitest-dev/vitest/commit/826714ece)
- Promote fsModuleCache to a top-level option  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10734](https://github.com/vitest-dev/vitest/issues/10734) [<samp>(78ed7)</samp>](https://github.com/vitest-dev/vitest/commit/78ed73afd)
- Support non-ascii characters in `for/each` title placeholders  -  by [@&#8203;k-yle](https://github.com/k-yle) in [#&#8203;10773](https://github.com/vitest-dev/vitest/issues/10773) [<samp>(15e0a)</samp>](https://github.com/vitest-dev/vitest/commit/15e0af953)
- Report the duration breakdown as percentages  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10820](https://github.com/vitest-dev/vitest/issues/10820) [<samp>(c67d2)</samp>](https://github.com/vitest-dev/vitest/commit/c67d296f4)
- Promote parseSpecifications out of experimental  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11087](https://github.com/vitest-dev/vitest/issues/11087) [<samp>(b628c)</samp>](https://github.com/vitest-dev/vitest/commit/b628cb680)
- Promote clearCache out of experimental  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11086](https://github.com/vitest-dev/vitest/issues/11086) [<samp>(d4fe1)</samp>](https://github.com/vitest-dev/vitest/commit/d4fe1986f)
- **api**:
  - Expose logs recorded during the test  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10277](https://github.com/vitest-dev/vitest/issues/10277) [<samp>(cba20)</samp>](https://github.com/vitest-dev/vitest/commit/cba2036a1)
- **benchmark**:
  - Add pluggable benchmark provider API  -  by [@&#8203;GuillaumeLagrange](https://github.com/GuillaumeLagrange) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10799](https://github.com/vitest-dev/vitest/issues/10799) [<samp>(86c70)</samp>](https://github.com/vitest-dev/vitest/commit/86c700ed8)
- **browser**:
  - Export aria tree utils  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10171](https://github.com/vitest-dev/vitest/issues/10171) [<samp>(c3423)</samp>](https://github.com/vitest-dev/vitest/commit/c3423014c)
  - Support dom snapshot trace view  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Claude Opus 5 (1M context)** and **OpenAI Codex** in [#&#8203;10102](https://github.com/vitest-dev/vitest/issues/10102) [<samp>(7eddd)</samp>](https://github.com/vitest-dev/vitest/commit/7eddd273d)
  - Provide project reference in `ToMatchScreenshotResolvePath`  -  by [@&#8203;macarie](https://github.com/macarie) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10138](https://github.com/vitest-dev/vitest/issues/10138) [<samp>(16654)</samp>](https://github.com/vitest-dev/vitest/commit/166544e39)
  - Show aria tree on locator element error  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10257](https://github.com/vitest-dev/vitest/issues/10257) [<samp>(04f04)</samp>](https://github.com/vitest-dev/vitest/commit/04f04cdd1)
  - Support custom `kind` in `page.mark`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10302](https://github.com/vitest-dev/vitest/issues/10302) [<samp>(053e8)</samp>](https://github.com/vitest-dev/vitest/commit/053e8b0d1)
  - Live update trace view on watch UI  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10296](https://github.com/vitest-dev/vitest/issues/10296) [<samp>(78c11)</samp>](https://github.com/vitest-dev/vitest/commit/78c1169cf)
  - Add `context.mark` for custom command tracing  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10329](https://github.com/vitest-dev/vitest/issues/10329) [<samp>(aa514)</samp>](https://github.com/vitest-dev/vitest/commit/aa5140e76)
  - Show trace view steps in editor panel  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10404](https://github.com/vitest-dev/vitest/issues/10404) [<samp>(8c4b6)</samp>](https://github.com/vitest-dev/vitest/commit/8c4b6da02)
  - Display nested mark trace in UI  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#&#8203;10437](https://github.com/vitest-dev/vitest/issues/10437) [<samp>(86ffc)</samp>](https://github.com/vitest-dev/vitest/commit/86ffc8ac6)
- **cli**:
  - Add `--repeats` CLI option  -  by [@&#8203;todor-a](https://github.com/todor-a) in [#&#8203;10504](https://github.com/vitest-dev/vitest/issues/10504) [<samp>(ee48b)</samp>](https://github.com/vitest-dev/vitest/commit/ee48b959e)
  - Support -p shorthand for --project  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10826](https://github.com/vitest-dev/vitest/issues/10826) [<samp>(1addd)</samp>](https://github.com/vitest-dev/vitest/commit/1adddde12)
- **coverage**:
  - V8 to track `node:child_process` and `node:worker_threads` contexts  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9976](https://github.com/vitest-dev/vitest/issues/9976) [<samp>(9baa5)</samp>](https://github.com/vitest-dev/vitest/commit/9baa5faba)
  - `thresholds.autoUpdate` to receive previous threshold as argument  -  by [@&#8203;wouterkroes](https://github.com/wouterkroes) in [#&#8203;10495](https://github.com/vitest-dev/vitest/issues/10495) [<samp>(04f81)</samp>](https://github.com/vitest-dev/vitest/commit/04f81854f)
  - Switch to `@vitest/istanbuljs` packages  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11053](https://github.com/vitest-dev/vitest/issues/11053) [<samp>(5f6a5)</samp>](https://github.com/vitest-dev/vitest/commit/5f6a5e84a)
- **junit-reporter**:
  - Add jest-junit-compatible naming options  -  by [@&#8203;neumaennl](https://github.com/neumaennl), **neumaennl**, **Martin Neumann** and **Copilot** in [#&#8203;10189](https://github.com/vitest-dev/vitest/issues/10189) [<samp>(27393)</samp>](https://github.com/vitest-dev/vitest/commit/273933440)
- **reporter**:
  - Support html reporter single file output  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **OpenAI Codex** and **Claude Opus 5 (1M context)** in [#&#8203;10235](https://github.com/vitest-dev/vitest/issues/10235) [<samp>(f757e)</samp>](https://github.com/vitest-dev/vitest/commit/f757ec5e6)
  - Add custom GitHub Actions summary title  -  by [@&#8203;heyJonBray](https://github.com/heyJonBray) and [@&#8203;macarie](https://github.com/macarie) in [#&#8203;10891](https://github.com/vitest-dev/vitest/issues/10891) [<samp>(4363c)</samp>](https://github.com/vitest-dev/vitest/commit/4363cdb49)
- **ui**:
  - Highlight editor source locations  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;11004](https://github.com/vitest-dev/vitest/issues/11004) [<samp>(bce2d)</samp>](https://github.com/vitest-dev/vitest/commit/bce2d3c2f)
  - Navigate trace steps with keyboard and remove indirect editor focus  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;11005](https://github.com/vitest-dev/vitest/issues/11005) [<samp>(6816f)</samp>](https://github.com/vitest-dev/vitest/commit/6816f3b17)
  - Persist trace view selection in URL  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10981](https://github.com/vitest-dev/vitest/issues/10981) [<samp>(3069e)</samp>](https://github.com/vitest-dev/vitest/commit/3069e5927)
  - Toggle trace target highlight  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;11049](https://github.com/vitest-dev/vitest/issues/11049) [<samp>(cd63e)</samp>](https://github.com/vitest-dev/vitest/commit/cd63e9e43)
  - Add link to open playwright trace  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;11059](https://github.com/vitest-dev/vitest/issues/11059) [<samp>(58f02)</samp>](https://github.com/vitest-dev/vitest/commit/58f02ae36)
- **vitest**:
  - Create `vi.when()`  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;10174](https://github.com/vitest-dev/vitest/issues/10174) [<samp>(3900e)</samp>](https://github.com/vitest-dev/vitest/commit/3900e6349)
- **vm**:
  - Support `require(esm)` in vm pools  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10829](https://github.com/vitest-dev/vitest/issues/10829) [<samp>(01298)</samp>](https://github.com/vitest-dev/vitest/commit/01298e5b3)

#####    🐞 Bug Fixes

- Global `sequence.concurrent: true` with top-level `test(..., { concurrent: false })` + depreacte `sequential` test API and options  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **OpenAI Codex** and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10194](https://github.com/vitest-dev/vitest/issues/10194) [<samp>(9387f)</samp>](https://github.com/vitest-dev/vitest/commit/9387f57cf)
- Test `tags` options should overwrite inherited suite options + inherit suite options in `task` API  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10216](https://github.com/vitest-dev/vitest/issues/10216) [<samp>(457db)</samp>](https://github.com/vitest-dev/vitest/commit/457db297b)
- Udpate optimize deps config  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10223](https://github.com/vitest-dev/vitest/issues/10223) [<samp>(95dc6)</samp>](https://github.com/vitest-dev/vitest/commit/95dc6e3f1)
- Shell injection safety via github.ref\_name in publish workflow  -  by [@&#8203;lloyd-c137](https://github.com/lloyd-c137) and **lloyd-c137** in [#&#8203;10327](https://github.com/vitest-dev/vitest/issues/10327) [<samp>(dd020)</samp>](https://github.com/vitest-dev/vitest/commit/dd0207f4d)
- Make `attachmentsDir` root only config  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10334](https://github.com/vitest-dev/vitest/issues/10334) [<samp>(fab1b)</samp>](https://github.com/vitest-dev/vitest/commit/fab1b6020)
- Apply cjs interop for truthy `__esModule`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10363](https://github.com/vitest-dev/vitest/issues/10363) [<samp>(2b135)</samp>](https://github.com/vitest-dev/vitest/commit/2b13547a5)
- Preserve `vi.defineHelper` callsite for async error stack  -  by [@&#8203;macayu17](https://github.com/macayu17) and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10415](https://github.com/vitest-dev/vitest/issues/10415) [<samp>(ac697)</samp>](https://github.com/vitest-dev/vitest/commit/ac6971ca2)
- Respect `disableConsoleIntercept` in browser mode  -  by [@&#8203;Copilot](https://github.com/Copilot), **Hiroshi Ogawa**, [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10391](https://github.com/vitest-dev/vitest/issues/10391) [<samp>(66110)</samp>](https://github.com/vitest-dev/vitest/commit/66110d271)
- ForceRerunTriggers uses directory globs against files  -  by [@&#8203;Patrick-Clausen](https://github.com/Patrick-Clausen) and **Patrick Clausen** in [#&#8203;10421](https://github.com/vitest-dev/vitest/issues/10421) and [#&#8203;10420](https://github.com/vitest-dev/vitest/issues/10420) [<samp>(4fee2)</samp>](https://github.com/vitest-dev/vitest/commit/4fee2e303)
- Unify typechecking and ast collection  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10449](https://github.com/vitest-dev/vitest/issues/10449) [<samp>(af993)</samp>](https://github.com/vitest-dev/vitest/commit/af993b66b)
- Don't print typecheck warning more than once  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10461](https://github.com/vitest-dev/vitest/issues/10461) [<samp>(15275)</samp>](https://github.com/vitest-dev/vitest/commit/152750ec0)
- Correct collumn when parsing tests  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10467](https://github.com/vitest-dev/vitest/issues/10467) [<samp>(7c2fc)</samp>](https://github.com/vitest-dev/vitest/commit/7c2fc133e)
- Fix mixed stdout/stderr log timestamps in `onUserConsoleLog`  -  by [@&#8203;Copilot](https://github.com/Copilot), **Hiroshi Ogawa**, [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10308](https://github.com/vitest-dev/vitest/issues/10308) [<samp>(62756)</samp>](https://github.com/vitest-dev/vitest/commit/627565475)
- Fix `importOriginal` with optimizer and query import  -  by [@&#8203;davidxharris](https://github.com/davidxharris), **David Harris**, [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#&#8203;10469](https://github.com/vitest-dev/vitest/issues/10469) [<samp>(6a3bb)</samp>](https://github.com/vitest-dev/vitest/commit/6a3bb02e0)
- Correct transform time calculation in merged report  -  by [@&#8203;potatomatoooo](https://github.com/potatomatoooo) and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10570](https://github.com/vitest-dev/vitest/issues/10570) and [#&#8203;10578](https://github.com/vitest-dev/vitest/issues/10578) [<samp>(b7897)</samp>](https://github.com/vitest-dev/vitest/commit/b78972892)
- Fix `setImmediate` await in detect-async-leak  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **Hiroshi Ogawa** in [#&#8203;10608](https://github.com/vitest-dev/vitest/issues/10608) [<samp>(dd62b)</samp>](https://github.com/vitest-dev/vitest/commit/dd62b84e0)
- Fix per-project `sequence` config  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10659](https://github.com/vitest-dev/vitest/issues/10659) [<samp>(40cdc)</samp>](https://github.com/vitest-dev/vitest/commit/40cdc7fd6)
- Add handshake timeout to iframe communication  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10656](https://github.com/vitest-dev/vitest/issues/10656) [<samp>(3545f)</samp>](https://github.com/vitest-dev/vitest/commit/3545fe78f)
- Don't print column in test names when `includeTaskLocation` is enabled  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10681](https://github.com/vitest-dev/vitest/issues/10681) [<samp>(bd9cc)</samp>](https://github.com/vitest-dev/vitest/commit/bd9cc9d8d)
- Disable server HMR before plugins read it in their config hook  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10731](https://github.com/vitest-dev/vitest/issues/10731) [<samp>(e060b)</samp>](https://github.com/vitest-dev/vitest/commit/e060b8fa9)
- Close the pool before the Vite servers  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10725](https://github.com/vitest-dev/vitest/issues/10725) [<samp>(96fa6)</samp>](https://github.com/vitest-dev/vitest/commit/96fa6d73d)
- Remove listeners in the typecheck worker's `off`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10741](https://github.com/vitest-dev/vitest/issues/10741) [<samp>(d758b)</samp>](https://github.com/vitest-dev/vitest/commit/d758b4755)
- Keep per-file isolation in vm pools when maxWorkers is 1  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10743](https://github.com/vitest-dev/vitest/issues/10743) [<samp>(83ab9)</samp>](https://github.com/vitest-dev/vitest/commit/83ab9a44f)
- Node.js 20 deprecation warning for `ci.yml`  -  by [@&#8203;hirehamir](https://github.com/hirehamir) in [#&#8203;10759](https://github.com/vitest-dev/vitest/issues/10759) [<samp>(2127f)</samp>](https://github.com/vitest-dev/vitest/commit/2127fa6ce)
- Prevent node builtins double prefix  -  by [@&#8203;malobre](https://github.com/malobre) in [#&#8203;10630](https://github.com/vitest-dev/vitest/issues/10630) and [#&#8203;10767](https://github.com/vitest-dev/vitest/issues/10767) [<samp>(22d35)</samp>](https://github.com/vitest-dev/vitest/commit/22d353a80)
- Set non-zero exit code when teardown throws during close  -  by [@&#8203;zakcutner](https://github.com/zakcutner) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10794](https://github.com/vitest-dev/vitest/issues/10794) [<samp>(22116)</samp>](https://github.com/vitest-dev/vitest/commit/22116feb7)
- Don't race the typechecker spawn grace period on windows  -  by [@&#8203;xevrion](https://github.com/xevrion) in [#&#8203;10814](https://github.com/vitest-dev/vitest/issues/10814) [<samp>(b19e5)</samp>](https://github.com/vitest-dev/vitest/commit/b19e5ece9)
- Coalesce concurrent watch-mode restarts, deflake the pool stderr fixture  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10822](https://github.com/vitest-dev/vitest/issues/10822) [<samp>(a31f8)</samp>](https://github.com/vitest-dev/vitest/commit/a31f86af7)
- Prevent `vitest --typecheck` from reporting a false success when the `tsc` process crashes  -  by [@&#8203;hitenkalda](https://github.com/hitenkalda) and **Hiten Kalda** in [#&#8203;10705](https://github.com/vitest-dev/vitest/issues/10705) [<samp>(a1b05)</samp>](https://github.com/vitest-dev/vitest/commit/a1b0565c9)
- Collect in-source tests when the module is cached  -  by [@&#8203;koutaro-masaki](https://github.com/koutaro-masaki) in [#&#8203;10577](https://github.com/vitest-dev/vitest/issues/10577) and [#&#8203;10589](https://github.com/vitest-dev/vitest/issues/10589) [<samp>(a7bf2)</samp>](https://github.com/vitest-dev/vitest/commit/a7bf2b2c8)
- Swap replace() arguments so timeout error stack shows the real message  -  by [@&#8203;lazerg](https://github.com/lazerg) in [#&#8203;10875](https://github.com/vitest-dev/vitest/issues/10875) [<samp>(aba0f)</samp>](https://github.com/vitest-dev/vitest/commit/aba0f9b7b)
- Stale mock metadata breaks automocking with isolate:false  -  by [@&#8203;kade-robertson](https://github.com/kade-robertson) in [#&#8203;10145](https://github.com/vitest-dev/vitest/issues/10145) and [#&#8203;10541](https://github.com/vitest-dev/vitest/issues/10541) [<samp>(8e210)</samp>](https://github.com/vitest-dev/vitest/commit/8e2108dda)
- Don't lose worker output on teardown, deflake timing-sensitive tests  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10842](https://github.com/vitest-dev/vitest/issues/10842) [<samp>(1216b)</samp>](https://github.com/vitest-dev/vitest/commit/1216b5af9)
- Revive global concurrency limit for test lifecycle  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10928](https://github.com/vitest-dev/vitest/issues/10928) [<samp>(cf917)</samp>](https://github.com/vitest-dev/vitest/commit/cf9176bfc)
- Own the post-restart rerun, keep `process.exit` disabled in workers  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10963](https://github.com/vitest-dev/vitest/issues/10963) [<samp>(5e69a)</samp>](https://github.com/vitest-dev/vitest/commit/5e69aba65)
- Preserve correct root during resolve config  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10909](https://github.com/vitest-dev/vitest/issues/10909) [<samp>(210ba)</samp>](https://github.com/vitest-dev/vitest/commit/210ba00cb)
- Combine multiple --project filters correctly  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10988](https://github.com/vitest-dev/vitest/issues/10988) [<samp>(66c1c)</samp>](https://github.com/vitest-dev/vitest/commit/66c1cbb53)
- Fix `recordArtifact` location with `vi.defineHelper`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;11047](https://github.com/vitest-dev/vitest/issues/11047) [<samp>(c2186)</samp>](https://github.com/vitest-dev/vitest/commit/c21865dfd)
- Invalidate resolved setup files  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11073](https://github.com/vitest-dev/vitest/issues/11073) and [#&#8203;11081](https://github.com/vitest-dev/vitest/issues/11081) [<samp>(488c0)</samp>](https://github.com/vitest-dev/vitest/commit/488c04680)
- Accept awaited value in vi.when thenResolve  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11084](https://github.com/vitest-dev/vitest/issues/11084) [<samp>(c10a1)</samp>](https://github.com/vitest-dev/vitest/commit/c10a12900)
- Ignore computed member calls in static collection  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11085](https://github.com/vitest-dev/vitest/issues/11085) [<samp>(130f7)</samp>](https://github.com/vitest-dev/vitest/commit/130f79b8b)
- Don't duplicte `oxc.target` if user provides a custom array  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11095](https://github.com/vitest-dev/vitest/issues/11095) [<samp>(848d7)</samp>](https://github.com/vitest-dev/vitest/commit/848d7243e)
- Propagate --maxWorkers to projects  -  by [@&#8203;Gaurav1112](https://github.com/Gaurav1112) in [#&#8203;11102](https://github.com/vitest-dev/vitest/issues/11102) [<samp>(2122f)</samp>](https://github.com/vitest-dev/vitest/commit/2122ffdfb)
- Apply queued mocks from doMock() in queue order  -  by [@&#8203;juliandescottes](https://github.com/juliandescottes) and **Claude Opus 5 (1M context)** in [#&#8203;10706](https://github.com/vitest-dev/vitest/issues/10706) and [#&#8203;11127](https://github.com/vitest-dev/vitest/issues/11127) [<samp>(f08ce)</samp>](https://github.com/vitest-dev/vitest/commit/f08ce4b71)
- Add a warning if inline project has duplicate plugins due to unexpected `extends: true`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11120](https://github.com/vitest-dev/vitest/issues/11120) [<samp>(584cf)</samp>](https://github.com/vitest-dev/vitest/commit/584cf3084)
- Treat test.describe as a suite during static collection  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11128](https://github.com/vitest-dev/vitest/issues/11128) [<samp>(d46a7)</samp>](https://github.com/vitest-dev/vitest/commit/d46a74722)
- **browser**:
  - Fix trace highlight of shadow dom on webdriverio  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10227](https://github.com/vitest-dev/vitest/issues/10227) [<samp>(b01af)</samp>](https://github.com/vitest-dev/vitest/commit/b01afd26c)
  - Simplify orchestrator otel carrier  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10283](https://github.com/vitest-dev/vitest/issues/10283) [<samp>(3514f)</samp>](https://github.com/vitest-dev/vitest/commit/3514f9fa1)
  - Remove orphaned Playwright route when same module is mocked via multiple ids  -  by [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH) in [#&#8203;9957](https://github.com/vitest-dev/vitest/issues/9957) and [#&#8203;10267](https://github.com/vitest-dev/vitest/issues/10267) [<samp>(41db6)</samp>](https://github.com/vitest-dev/vitest/commit/41db6ce28)
  - Skip `wrapDynamicImport` transform on ssr environment  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10355](https://github.com/vitest-dev/vitest/issues/10355) [<samp>(d3c96)</samp>](https://github.com/vitest-dev/vitest/commit/d3c964bfc)
  - Fix stale source map on watch mode  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10389](https://github.com/vitest-dev/vitest/issues/10389) [<samp>(6d772)</samp>](https://github.com/vitest-dev/vitest/commit/6d772c800)
  - Escape inline orchestrator scripts  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10412](https://github.com/vitest-dev/vitest/issues/10412) [<samp>(c22cf)</samp>](https://github.com/vitest-dev/vitest/commit/c22cfb656)
  - Disable client `cdp` API when `allowWrite/allowExec: false`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10444](https://github.com/vitest-dev/vitest/issues/10444) [<samp>(63e3b)</samp>](https://github.com/vitest-dev/vitest/commit/63e3b2eee)
  - Wait for orchestrator readiness before resolving browser sessions  -  by [@&#8203;soconnor-seeq](https://github.com/soconnor-seeq) in [#&#8203;10397](https://github.com/vitest-dev/vitest/issues/10397) [<samp>(fe5ed)</samp>](https://github.com/vitest-dev/vitest/commit/fe5ed6bc7)
  - Wait for iframe tester readiness before preparing  -  by [@&#8203;soconnor-seeq](https://github.com/soconnor-seeq) in [#&#8203;10497](https://github.com/vitest-dev/vitest/issues/10497) [<samp>(f2655)</samp>](https://github.com/vitest-dev/vitest/commit/f26552c63)
  - Encode iframeId in tester iframe URL  -  by [@&#8203;Pduhard](https://github.com/Pduhard), **Pduhard** and **Claude Opus 5 (1M context)** in [#&#8203;10520](https://github.com/vitest-dev/vitest/issues/10520) and [#&#8203;10521](https://github.com/vitest-dev/vitest/issues/10521) [<samp>(c8bf1)</samp>](https://github.com/vitest-dev/vitest/commit/c8bf19f66)
  - Always derive a positive locator action timeout  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10626](https://github.com/vitest-dev/vitest/issues/10626) [<samp>(5b864)</samp>](https://github.com/vitest-dev/vitest/commit/5b8642120)
  - Resize the browser ui only if it's not headless  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10662](https://github.com/vitest-dev/vitest/issues/10662) [<samp>(b5c61)</samp>](https://github.com/vitest-dev/vitest/commit/b5c613051)
  - Check fs access in builtin commands  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10674](https://github.com/vitest-dev/vitest/issues/10674) [<samp>(33f96)</samp>](https://github.com/vitest-dev/vitest/commit/33f96a145)
  - Preserve pre-transform request defaults  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10748](https://github.com/vitest-dev/vitest/issues/10748) [<samp>(b6060)</samp>](https://github.com/vitest-dev/vitest/commit/b60605ca7)
  - Fix error stacktrace location off-by-one  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10724](https://github.com/vitest-dev/vitest/issues/10724) [<samp>(62b8d)</samp>](https://github.com/vitest-dev/vitest/commit/62b8d3b36)
  - Inlined awaited import should not trigger syntax error after transform  -  by [@&#8203;smeng9](https://github.com/smeng9), **Shaoyu Meng** and **Claude Opus 5 (1M context)** in [#&#8203;10784](https://github.com/vitest-dev/vitest/issues/10784) [<samp>(51acd)</samp>](https://github.com/vitest-dev/vitest/commit/51acd5778)
  - Mock window\.print to avoid hanging  -  by [@&#8203;aaravjaichand](https://github.com/aaravjaichand) in [#&#8203;7375](https://github.com/vitest-dev/vitest/issues/7375) and [#&#8203;10798](https://github.com/vitest-dev/vitest/issues/10798) [<samp>(66d95)</samp>](https://github.com/vitest-dev/vitest/commit/66d95af84)
  - Ignore channel events in a tester opened as a top-level window  -  by [@&#8203;simshanith](https://github.com/simshanith) in [#&#8203;9379](https://github.com/vitest-dev/vitest/issues/9379) and [#&#8203;9381](https://github.com/vitest-dev/vitest/issues/9381) [<samp>(46a3c)</samp>](https://github.com/vitest-dev/vitest/commit/46a3cf750)
  - Resolve `connectTimeout` from the project config  -  by [@&#8203;lazerg](https://github.com/lazerg) in [#&#8203;10879](https://github.com/vitest-dev/vitest/issues/10879) and [#&#8203;10880](https://github.com/vitest-dev/vitest/issues/10880) [<samp>(62c79)</samp>](https://github.com/vitest-dev/vitest/commit/62c795d63)
  - Prebundle vite module runner with vitest  -  by [@&#8203;lebovvskii](https://github.com/lebovvskii) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10836](https://github.com/vitest-dev/vitest/issues/10836) and [#&#8203;10856](https://github.com/vitest-dev/vitest/issues/10856) [<samp>(37c24)</samp>](https://github.com/vitest-dev/vitest/commit/37c240158)
  - Restore dependency reload warning  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10913](https://github.com/vitest-dev/vitest/issues/10913) [<samp>(90d69)</samp>](https://github.com/vitest-dev/vitest/commit/90d696d44)
  - Configure internal optimizer dependencies  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10915](https://github.com/vitest-dev/vitest/issues/10915) [<samp>(a72f4)</samp>](https://github.com/vitest-dev/vitest/commit/a72f46eac)
  - Trigger playwright/chromium gc on lower disk availability  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10912](https://github.com/vitest-dev/vitest/issues/10912) [<samp>(032d3)</samp>](https://github.com/vitest-dev/vitest/commit/032d31892)
  - Disallow filter-only options in getBy\* locators  -  by **Arjun** in [#&#8203;10295](https://github.com/vitest-dev/vitest/issues/10295) and [#&#8203;10933](https://github.com/vitest-dev/vitest/issues/10933) [<samp>(9b4df)</samp>](https://github.com/vitest-dev/vitest/commit/9b4df4b05)
  - Fail instead of hanging when the browser stops responding  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10956](https://github.com/vitest-dev/vitest/issues/10956) [<samp>(c496c)</samp>](https://github.com/vitest-dev/vitest/commit/c496c2e33)
  - Exit gracefully when the browser disconnects during cancellation  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10962](https://github.com/vitest-dev/vitest/issues/10962) [<samp>(67e84)</samp>](https://github.com/vitest-dev/vitest/commit/67e848564)
  - Don't redirect vitest in client environment  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10975](https://github.com/vitest-dev/vitest/issues/10975) [<samp>(aeb67)</samp>](https://github.com/vitest-dev/vitest/commit/aeb672095)
  - Don't hang when `ui: true` in projects  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10994](https://github.com/vitest-dev/vitest/issues/10994) [<samp>(9f710)</samp>](https://github.com/vitest-dev/vitest/commit/9f710d304)
  - Preserve trace popover state  -  by [@&#8203;liuluochen6-af](https://github.com/liuluochen6-af), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10906](https://github.com/vitest-dev/vitest/issues/10906) and [#&#8203;11021](https://github.com/vitest-dev/vitest/issues/11021) [<samp>(1bbc2)</samp>](https://github.com/vitest-dev/vitest/commit/1bbc278c2)
  - Report the action error when a task times out  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11101](https://github.com/vitest-dev/vitest/issues/11101) [<samp>(dc10f)</samp>](https://github.com/vitest-dev/vitest/commit/dc10f5f8f)
- **cache**:
  - Improve `fsModuleCache` resiliency during external modifications  -  by [@&#8203;jszumski](https://github.com/jszumski) in [#&#8203;10869](https://github.com/vitest-dev/vitest/issues/10869) [<samp>(5eb35)</samp>](https://github.com/vitest-dev/vitest/commit/5eb3570e8)
- **cli**:
  - Respect `FORCE_COLOR` over agent detection  -  by [@&#8203;dokson](https://github.com/dokson) in [#&#8203;10272](https://github.com/vitest-dev/vitest/issues/10272) [<samp>(7e66b)</samp>](https://github.com/vitest-dev/vitest/commit/7e66bc726)
  - Exit on `CTRL+c` even when `globalSetup` runs blocked code  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10863](https://github.com/vitest-dev/vitest/issues/10863) [<samp>(d568f)</samp>](https://github.com/vitest-dev/vitest/commit/d568f8ce3)
- **coverage**:
  - `exclude` to not inherit negation globs from `test.include`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10299](https://github.com/vitest-dev/vitest/issues/10299) [<samp>(28685)</samp>](https://github.com/vitest-dev/vitest/commit/286851ea2)
  - Avoid matching sibling project roots  -  by [@&#8203;innoprej](https://github.com/innoprej), **Shin JaeHee** and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10311](https://github.com/vitest-dev/vitest/issues/10311) [<samp>(e30dd)</samp>](https://github.com/vitest-dev/vitest/commit/e30dd9cf6)
  - Non-awaited module imports cause wrong offsets  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10643](https://github.com/vitest-dev/vitest/issues/10643) [<samp>(c4090)</samp>](https://github.com/vitest-dev/vitest/commit/c40901479)
  - Fail fast when `coverage.reportsDirectory` conflicts between concurrent runs  -  by [@&#8203;jgamaraalv](https://github.com/jgamaraalv) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10466](https://github.com/vitest-dev/vitest/issues/10466) [<samp>(833f0)</samp>](https://github.com/vitest-dev/vitest/commit/833f0936c)
  - V8 to ignore Vite SSR's generated import bindings  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11023](https://github.com/vitest-dev/vitest/issues/11023) [<samp>(c6174)</samp>](https://github.com/vitest-dev/vitest/commit/c6174a6cf)
  - Prevent crash on `/@fs/` prepended virtual files  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11119](https://github.com/vitest-dev/vitest/issues/11119) [<samp>(c4473)</samp>](https://github.com/vitest-dev/vitest/commit/c4473e48e)
- **deps**:
  - Update ivya to fix empty aria tree snapshot  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10218](https://github.com/vitest-dev/vitest/issues/10218) [<samp>(f7822)</samp>](https://github.com/vitest-dev/vitest/commit/f7822ebf6)
  - Update fake-timers to 15.3.2. support `toNotFake`  -  by [@&#8203;BPScott](https://github.com/BPScott), [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10043](https://github.com/vitest-dev/vitest/issues/10043) [<samp>(bbf2f)</samp>](https://github.com/vitest-dev/vitest/commit/bbf2f0df3)
  - Update all non-major dependencies  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9958](https://github.com/vitest-dev/vitest/issues/9958) [<samp>(7faa7)</samp>](https://github.com/vitest-dev/vitest/commit/7faa7b04a)
  - Update all non-major dependencies  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10861](https://github.com/vitest-dev/vitest/issues/10861) [<samp>(0188c)</samp>](https://github.com/vitest-dev/vitest/commit/0188c8135)
  - Update all non-major dependencies  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10898](https://github.com/vitest-dev/vitest/issues/10898) [<samp>(61c4b)</samp>](https://github.com/vitest-dev/vitest/commit/61c4b8024)
  - Update all non-major dependencies  -  in [#&#8203;10966](https://github.com/vitest-dev/vitest/issues/10966) [<samp>(65263)</samp>](https://github.com/vitest-dev/vitest/commit/65263d74e)
  - Update all non-major dependencies  -  in [#&#8203;11043](https://github.com/vitest-dev/vitest/issues/11043) [<samp>(732df)</samp>](https://github.com/vitest-dev/vitest/commit/732df2c2b)
- **expect**:
  - Allow readonly arrays and sets in toBeOneOf  -  by [@&#8203;YBJ0000](https://github.com/YBJ0000) in [#&#8203;10264](https://github.com/vitest-dev/vitest/issues/10264) and [#&#8203;10374](https://github.com/vitest-dev/vitest/issues/10374) [<samp>(fed11)</samp>](https://github.com/vitest-dev/vitest/commit/fed1125b0)
  - Handle nullish toHaveProperty values  -  by [@&#8203;liyimil](https://github.com/liyimil) in [#&#8203;10735](https://github.com/vitest-dev/vitest/issues/10735) and [#&#8203;10811](https://github.com/vitest-dev/vitest/issues/10811) [<samp>(99e59)</samp>](https://github.com/vitest-dev/vitest/commit/99e596d33)
- **junit**:
  - Include unhandled errors in JUnit XML report  -  by [@&#8203;gbleu](https://github.com/gbleu) and **Claude Opus 5 (1M context)** in [#&#8203;10244](https://github.com/vitest-dev/vitest/issues/10244) [<samp>(6f74e)</samp>](https://github.com/vitest-dev/vitest/commit/6f74e5e9d)
- **mocker**:
  - Skip hoist transform without ast mock calls  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10410](https://github.com/vitest-dev/vitest/issues/10410) [<samp>(0468e)</samp>](https://github.com/vitest-dev/vitest/commit/0468e1572)
  - Hoist vi.mock() for vite-plus/test imports  -  by [@&#8203;Brooooooklyn](https://github.com/Brooooooklyn) and **Claude Opus 5 (1M context)** in [#&#8203;10489](https://github.com/vitest-dev/vitest/issues/10489) [<samp>(88376)</samp>](https://github.com/vitest-dev/vitest/commit/8837664a4)
  - Restrict redirect mocks to the fs allowlist  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10972](https://github.com/vitest-dev/vitest/issues/10972) [<samp>(8ff9b)</samp>](https://github.com/vitest-dev/vitest/commit/8ff9b9a9e)
- **pool**:
  - Prevent test run hang on worker crash  -  by [@&#8203;jaxalo](https://github.com/jaxalo) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10543](https://github.com/vitest-dev/vitest/issues/10543) [<samp>(40878)</samp>](https://github.com/vitest-dev/vitest/commit/4087802b5)
  - Improve error message when worker exits unexpectedly  -  by [@&#8203;filmaj](https://github.com/filmaj) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10587](https://github.com/vitest-dev/vitest/issues/10587) [<samp>(76139)</samp>](https://github.com/vitest-dev/vitest/commit/76139c5a0)
  - Vm pools to respect cgroupsv2 memory limit  -  by [@&#8203;milas](https://github.com/milas) in [#&#8203;10721](https://github.com/vitest-dev/vitest/issues/10721) [<samp>(3923c)</samp>](https://github.com/vitest-dev/vitest/commit/3923cab3d)
  - Worker init to handle queued synchronous messages  -  by [@&#8203;lazerg](https://github.com/lazerg) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10932](https://github.com/vitest-dev/vitest/issues/10932) [<samp>(76096)</samp>](https://github.com/vitest-dev/vitest/commit/76096c769)
  - Report the worker exit instead of a pipe error that raced it  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10964](https://github.com/vitest-dev/vitest/issues/10964) [<samp>(59a03)</samp>](https://github.com/vitest-dev/vitest/commit/59a037354)
- **reporter**:
  - Guard against non-finite slowTestThreshold in summary reporter  -  by [@&#8203;OfekDanny](https://github.com/OfekDanny), **Ofek Danny**, **Claude Opus 5 (1M context)** and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10202](https://github.com/vitest-dev/vitest/issues/10202) [<samp>(f362f)</samp>](https://github.com/vitest-dev/vitest/commit/f362f96db)
  - Fix non-existing import subpath module blob serialization  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10318](https://github.com/vitest-dev/vitest/issues/10318) [<samp>(29cb0)</samp>](https://github.com/vitest-dev/vitest/commit/29cb06b35)
- **reporters**:
  - Fix blob file name with label  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10346](https://github.com/vitest-dev/vitest/issues/10346) [<samp>(c5e2e)</samp>](https://github.com/vitest-dev/vitest/commit/c5e2e7530)
  - `summary` to intercept logger's streams even when they are not `process.std*` streams  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10340](https://github.com/vitest-dev/vitest/issues/10340) [<samp>(f79e7)</samp>](https://github.com/vitest-dev/vitest/commit/f79e7db90)
  - Fix missing `testModules` in `onTestRunEnd` when merging blobs from different root directory test runs  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10348](https://github.com/vitest-dev/vitest/issues/10348) [<samp>(745b3)</samp>](https://github.com/vitest-dev/vitest/commit/745b30b64)
  - Print parent describe suites when the passed-test list is hidden  -  by [@&#8203;ChihebBENCHEIKH1](https://github.com/ChihebBENCHEIKH1), **Chiheb Bencheikh** and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10606](https://github.com/vitest-dev/vitest/issues/10606) and [#&#8203;10768](https://github.com/vitest-dev/vitest/issues/10768) [<samp>(658af)</samp>](https://github.com/vitest-dev/vitest/commit/658affeb3)
  - Display `test.name` in GitHub Actions reporter summary header  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;10887](https://github.com/vitest-dev/vitest/issues/10887) [<samp>(49e24)</samp>](https://github.com/vitest-dev/vitest/commit/49e24fa38)
- **runner**:
  - Propagate chainable flags in describe.for  -  by [@&#8203;DoriAlagem](https://github.com/DoriAlagem), **Dor Alagem** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10187](https://github.com/vitest-dev/vitest/issues/10187) [<samp>(db678)</samp>](https://github.com/vitest-dev/vitest/commit/db67831d7)
  - Limit concurrency per task branch in addition to per leaf callbacks  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10179](https://github.com/vitest-dev/vitest/issues/10179) [<samp>(3112a)</samp>](https://github.com/vitest-dev/vitest/commit/3112abea2)
  - Remove AbortSignal listener leak in withCancel  -  by [@&#8203;tomohiro86](https://github.com/tomohiro86) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10265](https://github.com/vitest-dev/vitest/issues/10265) [<samp>(ab098)</samp>](https://github.com/vitest-dev/vitest/commit/ab09822a4)
  - Don't fail collection when accessing `error.stack` throws  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10839](https://github.com/vitest-dev/vitest/issues/10839) [<samp>(202e2)</samp>](https://github.com/vitest-dev/vitest/commit/202e27f3d)
- **snapshot**:
  - Fail test when snapshot assertion is used with `test.fails`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10090](https://github.com/vitest-dev/vitest/issues/10090) [<samp>(e1aa7)</samp>](https://github.com/vitest-dev/vitest/commit/e1aa7a60a)
  - Treat empty string as valid snapshot  -  by [@&#8203;mayrang](https://github.com/mayrang) and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10188](https://github.com/vitest-dev/vitest/issues/10188) [<samp>(e145d)</samp>](https://github.com/vitest-dev/vitest/commit/e145d5756)
  - Support no-unsafe-eval CSP by evaluating snapshot files on server  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10665](https://github.com/vitest-dev/vitest/issues/10665) [<samp>(667c1)</samp>](https://github.com/vitest-dev/vitest/commit/667c13954)
  - Reject when `toMatchFileSnapshot` uses same snapshot file as `toMatchSnapshot`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10978](https://github.com/vitest-dev/vitest/issues/10978) [<samp>(17646)</samp>](https://github.com/vitest-dev/vitest/commit/17646ac72)
- **spy**:
  - Support private method spy types  -  by [@&#8203;cyphercodes](https://github.com/cyphercodes) in [#&#8203;10172](https://github.com/vitest-dev/vitest/issues/10172) and [#&#8203;10213](https://github.com/vitest-dev/vitest/issues/10213) [<samp>(628ab)</samp>](https://github.com/vitest-dev/vitest/commit/628ab32f1)
  - Point ESM namespace spy error to module mocking docs  -  by [@&#8203;ryandiginomad](https://github.com/ryandiginomad) and **Ryan Tang** in [#&#8203;10707](https://github.com/vitest-dev/vitest/issues/10707) [<samp>(d6cec)</samp>](https://github.com/vitest-dev/vitest/commit/d6ceca9d7)
- **typecheck**:
  - Report a checker crash on Windows instead of a spawn failure  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10907](https://github.com/vitest-dev/vitest/issues/10907) [<samp>(77aac)</samp>](https://github.com/vitest-dev/vitest/commit/77aac87dd)
- **types**:
  - Allow `changed` in configuration options  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10651](https://github.com/vitest-dev/vitest/issues/10651) [<samp>(0da12)</samp>](https://github.com/vitest-dev/vitest/commit/0da12aad4)
- **ui**:
  - Fix duplicate colored error message  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10258](https://github.com/vitest-dev/vitest/issues/10258) [<samp>(035e3)</samp>](https://github.com/vitest-dev/vitest/commit/035e3bb70)
  - Fix missing source code in html reporter metadata when merging blobs with different root directory test runs  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#&#8203;10338](https://github.com/vitest-dev/vitest/issues/10338) [<samp>(4f7c2)</samp>](https://github.com/vitest-dev/vitest/commit/4f7c2670c)
  - Fix module graph in browser mode with --ui  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10386](https://github.com/vitest-dev/vitest/issues/10386) [<samp>(3003c)</samp>](https://github.com/vitest-dev/vitest/commit/3003c4327)
  - Render ANSI color codes in editor panel inline error widget  -  by [@&#8203;Copilot](https://github.com/Copilot), **Hiroshi Ogawa** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10418](https://github.com/vitest-dev/vitest/issues/10418) [<samp>(766b8)</samp>](https://github.com/vitest-dev/vitest/commit/766b8d2fa)
  - Fix code editor error and annotations gadgets layout shifts  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10969](https://github.com/vitest-dev/vitest/issues/10969) [<samp>(438ed)</samp>](https://github.com/vitest-dev/vitest/commit/438eda13f)
  - Synchronize watch-run UI state on file removal  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10941](https://github.com/vitest-dev/vitest/issues/10941) [<samp>(30c21)</samp>](https://github.com/vitest-dev/vitest/commit/30c21e668)
  - Require auth for coverage report and all UI subtree requests  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10971](https://github.com/vitest-dev/vitest/issues/10971) [<samp>(5622f)</samp>](https://github.com/vitest-dev/vitest/commit/5622f0959)
  - Improve suite interaction and layout in explorer tree  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10970](https://github.com/vitest-dev/vitest/issues/10970) [<samp>(91231)</samp>](https://github.com/vitest-dev/vitest/commit/9123111b3)
  - Reveal explorer virtual scroller on resize  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;10998](https://github.com/vitest-dev/vitest/issues/10998) [<samp>(1f4fc)</samp>](https://github.com/vitest-dev/vitest/commit/1f4fcd363)
  - Persist trace step-iframe split pane sizes  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;11027](https://github.com/vitest-dev/vitest/issues/11027) [<samp>(3cd01)</samp>](https://github.com/vitest-dev/vitest/commit/3cd019a0a)
  - Add suite level report view  -  by [@&#8203;dvmhmdsd](https://github.com/dvmhmdsd), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;11038](https://github.com/vitest-dev/vitest/issues/11038) [<samp>(602d2)</samp>](https://github.com/vitest-dev/vitest/commit/602d215ae)
  - Hide running count in static reports  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#&#8203;11123](https://github.com/vitest-dev/vitest/issues/11123) [<samp>(73d72)</samp>](https://github.com/vitest-dev/vitest/commit/73d729484)
- **utils**:
  - Don't crash on a malformed inline source map  -  by [@&#8203;lazerg](https://github.com/lazerg), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10892](https://github.com/vitest-dev/vitest/issues/10892) and [#&#8203;10893](https://github.com/vitest-dev/vitest/issues/10893) [<samp>(fe790)</samp>](https://github.com/vitest-dev/vitest/commit/fe7906275)
- **vitest**:
  - Strip non-serializable functions from inline diff config  -  by [@&#8203;DucMinhNe](https://github.com/DucMinhNe) in [#&#8203;10573](https://github.com/vitest-dev/vitest/issues/10573) [<samp>(5b81a)</samp>](https://github.com/vitest-dev/vitest/commit/5b81a63ff)
  - Remove broken "./src/\*" export from package.json  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10918](https://github.com/vitest-dev/vitest/issues/10918) [<samp>(2e5df)</samp>](https://github.com/vitest-dev/vitest/commit/2e5df7543)
  - Render non-Error causes from env setup so the actual diagnostic is not dropped  -  by [@&#8203;spokodev](https://github.com/spokodev) in [#&#8203;10567](https://github.com/vitest-dev/vitest/issues/10567) [<samp>(b298d)</samp>](https://github.com/vitest-dev/vitest/commit/b298df609)
- **vm**:
  - Fix external module resolve error with deps optimizer query for encoded URI  -  by [@&#8203;SveLil](https://github.com/SveLil) in [#&#8203;10658](https://github.com/vitest-dev/vitest/issues/10658) [<samp>(90c4e)</samp>](https://github.com/vitest-dev/vitest/commit/90c4ed4cd)
  - Stop retaining every finished test file in vm pool workers  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10854](https://github.com/vitest-dev/vitest/issues/10854) [<samp>(38503)</samp>](https://github.com/vitest-dev/vitest/commit/3850323e2)
  - Fall back to compiling from source when a module's code cache is rejected  -  by [@&#8203;MarshallOfSound](https://github.com/MarshallOfSound) in [#&#8203;11031](https://github.com/vitest-dev/vitest/issues/11031) [<samp>(c3ba1)</samp>](https://github.com/vitest-dev/vitest/commit/c3ba16b35)
  - Link module graphs one at a time  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11096](https://github.com/vitest-dev/vitest/issues/11096) [<samp>(3f2dd)</samp>](https://github.com/vitest-dev/vitest/commit/3f2ddc21a)
- **webdriverio**:
  - Allow gpu in headless chrome  -  by [@&#8203;rotempasharel1](https://github.com/rotempasharel1) in [#&#8203;10376](https://github.com/vitest-dev/vitest/issues/10376) [<samp>(f310a)</samp>](https://github.com/vitest-dev/vitest/commit/f310abe4e)
- **worker**:
  - Bind stdio's early in case overriden  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11020](https://github.com/vitest-dev/vitest/issues/11020) [<samp>(67ef7)</samp>](https://github.com/vitest-dev/vitest/commit/67ef7a19b)

#####    🏎 Performance

- Stringify diff objects only once  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10276](https://github.com/vitest-dev/vitest/issues/10276) [<samp>(d006a)</samp>](https://github.com/vitest-dev/vitest/commit/d006a6869)
- Improve performance in hot paths  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10446](https://github.com/vitest-dev/vitest/issues/10446) [<samp>(03faf)</samp>](https://github.com/vitest-dev/vitest/commit/03faf6db6)
- Serve warm modules to workers in one round-trip, enable the node compile cache  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10708](https://github.com/vitest-dev/vitest/issues/10708) [<samp>(b144a)</samp>](https://github.com/vitest-dev/vitest/commit/b144ab56e)
- Make the Node compile cache opt-in, persist worker caches on teardown  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10742](https://github.com/vitest-dev/vitest/issues/10742) [<samp>(941bc)</samp>](https://github.com/vitest-dev/vitest/commit/941bc8361)
- Reuse compiled code across vm pool contexts and prewarm the module graph  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10744](https://github.com/vitest-dev/vitest/issues/10744) [<samp>(d8b04)</samp>](https://github.com/vitest-dev/vitest/commit/d8b040c63)
- Bundle vitest's own dependencies  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10685](https://github.com/vitest-dev/vitest/issues/10685) [<samp>(c0508)</samp>](https://github.com/vitest-dev/vitest/commit/c050842b6)
- Lowers peak memory usage when using `--changed` on a large graph  -  by [@&#8203;jszumski](https://github.com/jszumski) in [#&#8203;10866](https://github.com/vitest-dev/vitest/issues/10866) [<samp>(9f23f)</samp>](https://github.com/vitest-dev/vitest/commit/9f23f8ec3)
- Initialize trace view in the orchestrator once per worker  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10984](https://github.com/vitest-dev/vitest/issues/10984) [<samp>(fad26)</samp>](https://github.com/vitest-dev/vitest/commit/fad263fe8)
- **browser**:
  - Reduce matching screenshot overhead  -  by [@&#8203;kasperpeulen](https://github.com/kasperpeulen) in [#&#8203;10278](https://github.com/vitest-dev/vitest/issues/10278) [<samp>(511c0)</samp>](https://github.com/vitest-dev/vitest/commit/511c09269)
  - Open browser sessions adaptively instead of maxWorkers upfront  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10726](https://github.com/vitest-dev/vitest/issues/10726) [<samp>(6db8d)</samp>](https://github.com/vitest-dev/vitest/commit/6db8de2e2)
  - Cut per-file round trips  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10730](https://github.com/vitest-dev/vitest/issues/10730) [<samp>(3feef)</samp>](https://github.com/vitest-dev/vitest/commit/3feefd9e2)
  - Stop serving framework sourcemaps in headless runs  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10728](https://github.com/vitest-dev/vitest/issues/10728) [<samp>(6aefb)</samp>](https://github.com/vitest-dev/vitest/commit/6aefb3d91)
  - Prewarm the browser while the Vite server starts  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10727](https://github.com/vitest-dev/vitest/issues/10727) [<samp>(c1767)</samp>](https://github.com/vitest-dev/vitest/commit/c17677a83)
  - Pre-bundle the vitest runtime in optimizeDeps  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10713](https://github.com/vitest-dev/vitest/issues/10713) [<samp>(de631)</samp>](https://github.com/vitest-dev/vitest/commit/de63174f5)
  - Serve framework assets as immutable  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10729](https://github.com/vitest-dev/vitest/issues/10729) [<samp>(7af87)</samp>](https://github.com/vitest-dev/vitest/commit/7af8755ae)
- **cache**:
  - Hash the environment-invariant part of the fs module cache key once  -  by [@&#8203;MarshallOfSound](https://github.com/MarshallOfSound) in [#&#8203;11029](https://github.com/vitest-dev/vitest/issues/11029) [<samp>(1d365)</samp>](https://github.com/vitest-dev/vitest/commit/1d365db15)
- **coverage**:
  - Speed up v8 report generation (bounded-memory merge + precompiled globs)  -  by [@&#8203;toxik](https://github.com/toxik), **Claude Opus 5 (1M context)** and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10506](https://github.com/vitest-dev/vitest/issues/10506) [<samp>(b05e5)</samp>](https://github.com/vitest-dev/vitest/commit/b05e5d634)
  - Reduce RPC data and unnecessary serializations  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10781](https://github.com/vitest-dev/vitest/issues/10781) [<samp>(7e7e3)</samp>](https://github.com/vitest-dev/vitest/commit/7e7e35cb4)
- **expect**:
  - Avoid redefining matcher state  -  by [@&#8203;scttcper](https://github.com/scttcper) and **OpenAI Codex** in [#&#8203;11048](https://github.com/vitest-dev/vitest/issues/11048) [<samp>(58e71)</samp>](https://github.com/vitest-dev/vitest/commit/58e71306b)
  - Lazily format spy matcher failures  -  by [@&#8203;scttcper](https://github.com/scttcper) and **OpenAI Codex** in [#&#8203;11090](https://github.com/vitest-dev/vitest/issues/11090) [<samp>(e08c4)</samp>](https://github.com/vitest-dev/vitest/commit/e08c45c39)
- **spy**:
  - Avoid scanning cleared mocks  -  by [@&#8203;scttcper](https://github.com/scttcper) and **OpenAI Codex** in [#&#8203;11092](https://github.com/vitest-dev/vitest/issues/11092) [<samp>(2451e)</samp>](https://github.com/vitest-dev/vitest/commit/2451e34c4)
- **vm**:
  - Don't prewarm modules the worker never requests  -  by [@&#8203;MarshallOfSound](https://github.com/MarshallOfSound) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11033](https://github.com/vitest-dev/vitest/issues/11033) [<samp>(1e9f8)</samp>](https://github.com/vitest-dev/vitest/commit/1e9f80ec1)
  - Let environments opt out of the module graph prewarm  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11078](https://github.com/vitest-dev/vitest/issues/11078) [<samp>(a6d5e)</samp>](https://github.com/vitest-dev/vitest/commit/a6d5ea2d8)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.5...v5.0.0)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC41Mi4xIiwidXBkYXRlZEluVmVyIjoiNDQuNTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: Joakim Olsson <joakim@unbound.se>
Reviewed-on: https://gitea.unbound.se/unboundsoftware/schemas-app/pulls/345
Co-authored-by: Renovate Bot <renovate@unbound.se>
2026-09-10 20:04:34 +00:00
renovate d8ce0efd89 chore(deps): update dependency eslint-plugin-vue to v10.11.0 (#349)
schemas-app / build (push) Successful in 44s
schemas-app / deploy-prod (push) Successful in 1m4s
2026-09-09 10:14:04 +00:00
renovate 22ea5b6122 chore(deps): update pre-commit hook pre-commit/mirrors-eslint to v10.10.0 (#348)
schemas-app / deploy-prod (push) Successful in 1m6s
schemas-app / build (push) Successful in 36s
2026-09-08 12:16:16 +00:00
renovate 8c3890635d chore(deps): update dependency stylelint to v17.15.0 (#346)
schemas-app / build (push) Successful in 45s
schemas-app / deploy-prod (push) Successful in 1m10s
2026-09-07 17:10:38 +00:00
renovate 7a28571528 chore(deps): update dependency eslint to v10.10.0 (#347)
schemas-app / build (push) Successful in 37s
schemas-app / deploy-prod (push) Successful in 1m17s
2026-09-07 15:14:31 +00:00
renovate 35e1c91add chore(deps): update dependency @graphql-codegen/cli to v7.4.0 (#344)
schemas-app / build (push) Successful in 37s
schemas-app / deploy-prod (push) Successful in 1m17s
2026-09-04 16:13:27 +00:00
renovate 255225f951 chore(deps): update dependency typescript-eslint to v8.69.0 (#343)
schemas-app / build (push) Successful in 37s
schemas-app / deploy-prod (push) Successful in 1m11s
2026-09-03 18:14:02 +00:00
renovate 9ec9f1fcc4 chore(deps): update nginx docker tag to v1.31.5 (#342)
schemas-app / build (push) Successful in 48s
schemas-app / deploy-prod (push) Successful in 1m16s
2026-09-02 23:10:22 +00:00
renovate 90d73c2014 chore(deps): update dependency @vue/test-utils to v2.5.0 (#341)
schemas-app / deploy-prod (push) Successful in 1m23s
schemas-app / build (push) Successful in 53s
2026-08-30 15:11:48 +00:00
renovate 775ece8ab7 fix(deps): update dependency vue to v3.5.42 (#340)
schemas-app / build (push) Successful in 1m9s
schemas-app / deploy-prod (push) Successful in 1m28s
2026-08-30 06:16:38 +00:00
renovate 11c9dac77b chore(deps): update pre-commit hook pre-commit/mirrors-eslint to v10.9.1 (#339)
schemas-app / build (push) Successful in 46s
schemas-app / deploy-prod (push) Successful in 1m19s
2026-08-28 09:11:11 +00:00
renovate f4fc88542f chore(deps): update dependency eslint to v10.9.1 (#338)
schemas-app / build (push) Successful in 56s
schemas-app / deploy-prod (push) Successful in 1m32s
2026-08-27 19:16:54 +00:00
renovate bca6105465 chore(deps): update dependency typescript-eslint to v8.68.0 (#337)
schemas-app / build (push) Successful in 1m13s
schemas-app / deploy-prod (push) Successful in 1m12s
2026-08-27 18:14:51 +00:00
renovate e78cdb9a49 chore(deps): update dependency @graphql-codegen/cli to v7.3.1 (#336)
schemas-app / build (push) Successful in 32s
schemas-app / deploy-prod (push) Successful in 1m13s
2026-08-26 16:15:25 +00:00
renovate e3991eef06 chore(deps): update dependency @nuxt/devtools to v3.4.2 (#335)
schemas-app / build (push) Successful in 30s
schemas-app / deploy-prod (push) Successful in 1m6s
2026-08-26 00:12:43 +00:00
renovate 283c91e196 chore(deps): update pre-commit hook pre-commit/mirrors-eslint to v10.9.0 (#334)
schemas-app / build (push) Successful in 32s
schemas-app / deploy-prod (push) Successful in 1m8s
2026-08-25 10:14:11 +00:00
renovate d16cff77cc chore(deps): update dependency @graphql-codegen/cli to v7.3.0 (#333)
schemas-app / build (push) Successful in 33s
schemas-app / deploy-prod (push) Successful in 1m10s
2026-08-25 08:14:23 +00:00
renovate be74e80393 chore(deps): update nginx:1.31.4 docker digest to 69a292b (#332)
schemas-app / build (push) Successful in 1m26s
schemas-app / deploy-prod (push) Successful in 1m4s
2026-08-25 03:12:52 +00:00
renovate df3f5d1967 chore(deps): update dependency eslint to v10.9.0 (#331)
schemas-app / build (push) Successful in 33s
schemas-app / deploy-prod (push) Successful in 1m10s
2026-08-24 13:20:06 +00:00
renovate 56cb9c9784 chore(deps): update vitest monorepo to v4.1.11 (#330)
schemas-app / build (push) Successful in 38s
schemas-app / deploy-prod (push) Successful in 1m13s
2026-08-22 11:07:22 +00:00
renovate 8ab2166a8a chore(deps): update nginx docker tag to v1.31.4 (#329)
schemas-app / build (push) Successful in 2m59s
schemas-app / deploy-prod (push) Successful in 1m13s
2026-08-19 21:38:03 +00:00
renovate d90f9023aa chore(deps): update commitlint monorepo to v21.2.2 (#328)
schemas-app / build (push) Successful in 39s
schemas-app / deploy-prod (push) Successful in 1m12s
2026-08-16 10:12:48 +00:00
renovate 87249d34db chore(deps): update dependency @graphql-codegen/typescript-operations to v6.1.6 (#327)
schemas-app / build (push) Successful in 54s
schemas-app / deploy-prod (push) Successful in 1m14s
2026-08-15 13:13:43 +00:00
renovate 21dcd4b2d4 chore(deps): update dependency typescript-eslint to v8.67.0 (#326)
schemas-app / build (push) Successful in 49s
schemas-app / deploy-prod (push) Successful in 1m13s
2026-08-13 18:16:29 +00:00
renovate ee4670cc12 chore(deps): update pre-commit hook markdownlint/markdownlint to v0.18.1 (#325)
schemas-app / build (push) Successful in 34s
schemas-app / deploy-prod (push) Successful in 1m18s
2026-08-12 19:13:19 +00:00
renovate 56beb8f38e chore(deps): update pre-commit hook pre-commit/mirrors-eslint to v10.8.1 (#324)
schemas-app / build (push) Successful in 31s
schemas-app / deploy-prod (push) Successful in 1m16s
2026-08-11 10:10:44 +00:00
renovate 6826d00866 chore(deps): update dependency eslint to v10.8.1 (#323)
schemas-app / build (push) Successful in 37s
schemas-app / deploy-prod (push) Successful in 1m10s
2026-08-10 21:12:08 +00:00
renovate 03e7a22339 fix(deps): update dependency graphql-ws to v6.2.1 (#322)
schemas-app / build (push) Successful in 55s
schemas-app / deploy-prod (push) Successful in 1m14s
2026-08-09 10:11:47 +00:00
renovate efa6a11b9a chore(deps): update dependency @nuxt/eslint to v1.17.0 (#321)
schemas-app / build (push) Successful in 1m27s
schemas-app / deploy-prod (push) Successful in 1m13s
2026-08-09 02:18:21 +00:00
renovate 06534d0b88 chore(deps): update pre-commit hook markdownlint/markdownlint to v0.18.0 (#320)
schemas-app / build (push) Successful in 36s
schemas-app / deploy-prod (push) Successful in 1m25s
2026-08-08 20:19:37 +00:00
renovate 8f2d5e227d fix(deps): update dependency nuxt to v4.5.2 (#319)
schemas-app / build (push) Successful in 30s
schemas-app / deploy-prod (push) Successful in 1m16s
2026-08-08 18:12:12 +00:00
renovate 671fc91a9d chore(deps): update dependency @graphql-codegen/typescript-operations to v6.1.5 (#318)
schemas-app / build (push) Successful in 38s
schemas-app / deploy-prod (push) Successful in 1m14s
2026-08-08 13:15:43 +00:00
renovate d31b1ddc10 chore(deps): update dependency @graphql-codegen/typescript-operations to v6.1.4 (#317)
schemas-app / build (push) Successful in 36s
schemas-app / deploy-prod (push) Successful in 1m22s
2026-08-08 11:14:16 +00:00
renovate 72e6f699db chore(deps): update dependency @graphql-codegen/typescript-operations to v6.1.3 (#316)
schemas-app / build (push) Successful in 36s
schemas-app / deploy-prod (push) Successful in 1m16s
2026-08-08 08:15:42 +00:00
renovate 7cf55ebf8a fix(deps): update dependency vue to v3.5.41 (#315)
schemas-app / build (push) Successful in 35s
schemas-app / deploy-prod (push) Successful in 1m7s
2026-08-08 07:16:34 +00:00
renovate a557fe1151 chore(deps): update nginx:1.31.3 docker digest to 48d15d5 (#314)
schemas-app / build (push) Successful in 33s
schemas-app / deploy-prod (push) Successful in 1m14s
2026-08-08 03:11:49 +00:00
renovate cedebe0eb6 chore(deps): update dependency @nuxt/devtools to v3.4.1 (#313)
schemas-app / build (push) Successful in 44s
schemas-app / deploy-prod (push) Successful in 1m14s
2026-08-07 07:33:24 +00:00
renovate efd66f4f3a chore(deps): update dependency typescript-eslint to v8.66.0 (#312)
schemas-app / build (push) Successful in 32s
schemas-app / deploy-prod (push) Successful in 1m15s
2026-08-06 19:11:32 +00:00
renovateandargoyle 268461745a chore(deps): update dependency stylelint-config-recommended-vue to v2 (#311)
schemas-app / build (push) Successful in 1m29s
schemas-app / deploy-prod (push) Successful in 1m5s
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [stylelint-config-recommended-vue](https://github.com/ota-meshi/stylelint-config-recommended-vue) | [`1.6.1` → `2.0.0`](https://renovatebot.com/diffs/npm/stylelint-config-recommended-vue/1.6.1/2.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/stylelint-config-recommended-vue/2.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/stylelint-config-recommended-vue/1.6.1/2.0.0?slim=true) |

---

### Release Notes

<details>
<summary>ota-meshi/stylelint-config-recommended-vue (stylelint-config-recommended-vue)</summary>

### [`v2.0.0`](https://github.com/ota-meshi/stylelint-config-recommended-vue/blob/HEAD/CHANGELOG.md#200)

[Compare Source](https://github.com/ota-meshi/stylelint-config-recommended-vue/compare/v1.6.1...v2.0.0)

##### Major Changes

- [#&#8203;120](https://github.com/ota-meshi/stylelint-config-recommended-vue/pull/120) [`ad9d8a4`](https://github.com/ota-meshi/stylelint-config-recommended-vue/commit/ad9d8a493274fb2bfce0d1566f9ce93f181fc810) Thanks [@&#8203;ota-meshi](https://github.com/ota-meshi)! - Drop support for old Node.js versions. Node.js `^22.12 || >=24` is now required.

- [#&#8203;125](https://github.com/ota-meshi/stylelint-config-recommended-vue/pull/125) [`701f17a`](https://github.com/ota-meshi/stylelint-config-recommended-vue/commit/701f17a6d91d188bbbb15db4035c9e46581b7e85) Thanks [@&#8203;ota-meshi](https://github.com/ota-meshi)! - Migrate the package to ESM. On the supported Node.js versions, the configs can still be loaded from CommonJS via `require()`. The package now also defines an `exports` field; the `/scss` deep import keeps working both with and without the `/index.js` suffix.

- [#&#8203;124](https://github.com/ota-meshi/stylelint-config-recommended-vue/pull/124) [`b3a363c`](https://github.com/ota-meshi/stylelint-config-recommended-vue/commit/b3a363c842eec8a7b6c380d7031eec244886fb2d) Thanks [@&#8203;ota-meshi](https://github.com/ota-meshi)! - Move `stylelint-config-recommended` and `stylelint-config-html` from dependencies to peer dependencies, so that their versions are controlled by your project instead of always resolving to the latest release ([#&#8203;68](https://github.com/ota-meshi/stylelint-config-recommended-vue/issues/68)). The `stylelint-config-recommended-scss` config used by the `/scss` entry is now declared as an optional peer dependency.

- [#&#8203;123](https://github.com/ota-meshi/stylelint-config-recommended-vue/pull/123) [`a12a429`](https://github.com/ota-meshi/stylelint-config-recommended-vue/commit/a12a429bcb10899668bf925a7b9d8820aa268fe2) Thanks [@&#8203;ota-meshi](https://github.com/ota-meshi)! - Update peer dependencies: `postcss-html` now requires `^2.0.0`, and `stylelint` now requires `>=16.0.0`. The `stylelint-config-html` dependency was also updated to require v2.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC41LjMiLCJ1cGRhdGVkSW5WZXIiOiI0NC41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

---------

Co-authored-by: Joakim Bodin <joakim@unbound.se>
Reviewed-on: https://gitea.unbound.se/unboundsoftware/schemas-app/pulls/311
Co-authored-by: Renovate Bot <renovate@unbound.se>
2026-08-04 07:10:06 +00:00
renovate 1a10abc006 chore(deps): update dependency @nuxt/devtools to v3.4.0 (#309)
schemas-app / build (push) Successful in 49s
schemas-app / deploy-prod (push) Successful in 1m7s
2026-08-01 10:12:19 +00:00
renovate 7f84d55f10 chore(deps): update dependency jsdom to v30.0.1 (#308)
schemas-app / build (push) Successful in 33s
schemas-app / deploy-prod (push) Successful in 1m10s
2026-08-01 06:17:33 +00:00
renovate 9975d3aed6 fix(deps): update dependency nuxt to v4.5.1 (#307)
schemas-app / build (push) Failing after 1m30s
schemas-app / deploy-prod (push) Skipped
2026-07-31 19:08:02 +00:00
renovate b45dffe00e chore(deps): update dependency jsdom to v30 (#306)
schemas-app / build (push) Successful in 3m6s
schemas-app / deploy-prod (push) Successful in 1m18s
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [jsdom](https://github.com/jsdom/jsdom) | [`29.1.1` → `30.0.0`](https://renovatebot.com/diffs/npm/jsdom/29.1.1/30.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/jsdom/30.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jsdom/29.1.1/30.0.0?slim=true) |

---

### Release Notes

<details>
<summary>jsdom/jsdom (jsdom)</summary>

### [`v30.0.0`](https://github.com/jsdom/jsdom/releases/tag/v30.0.0)

[Compare Source](https://github.com/jsdom/jsdom/compare/v29.1.1...v30.0.0)

Breaking changes:

- Node.js minimum version raised to `^22.22.2 || ^24.15.0 || >=26.0.0`.

Other changes:

- Added `CSS.escape()` and `CSS.supports()` functions. ([@&#8203;asamuzaK](https://github.com/asamuzaK))
- Added `'background-position-x'` and `'background-position-y'` CSS properties. ([@&#8203;olagokemills](https://github.com/olagokemills))
- Fixed `getComputedStyle()` to convert length values into pixels. ([@&#8203;asamuzaK](https://github.com/asamuzaK))
- Fixed CSS function serialization, e.g., in the return value of `getPropertyValue()`. ([@&#8203;asamuzaK](https://github.com/asamuzaK))
- Fixed the type of error thrown by `document.evaluate()` ([@&#8203;dokson](https://github.com/dokson))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNzkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjI3OS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->Reviewed-on: #306

Co-authored-by: Renovate Bot <renovate@unbound.se>
2026-07-31 18:13:32 +00:00
renovate 0a57c654ee chore(deps): update pre-commit hook pre-commit/mirrors-eslint to v10.8.0 (#305)
schemas-app / build (push) Successful in 31s
schemas-app / deploy-prod (push) Successful in 1m15s
2026-07-28 11:12:14 +00:00
renovate 05d343accc fix(deps): update dependency graphql-ws to v6.2.0 (#303)
schemas-app / build (push) Successful in 1m0s
schemas-app / deploy-prod (push) Successful in 1m5s
2026-07-27 22:12:43 +00:00
renovate 7bcce0d227 chore(deps): update dependency eslint to v10.8.0 (#304)
schemas-app / build (push) Successful in 32s
schemas-app / deploy-prod (push) Successful in 1m9s
2026-07-27 21:11:59 +00:00
renovate debfe0db91 chore(deps): update dependency @nuxt/devtools to v3.3.1 (#302)
schemas-app / build (push) Successful in 48s
schemas-app / deploy-prod (push) Successful in 1m8s
2026-07-27 06:10:27 +00:00
13 changed files with 4051 additions and 4407 deletions

No files matched your search

+18 -4
View File
@@ -18,16 +18,30 @@ jobs:
- name: Build and push
run: unset GITEA_TOKEN && build && push
deploy-prod:
deploy-prod-frostmoln:
needs: build
if: gitea.ref == 'refs/heads/main'
runs-on: ubuntu-latest
env:
BUILDTOOLS_CONTENT: ${{ secrets.BUILDTOOLS_CONTENT }}
BUILDTOOLS_CONTENT: ${{ secrets.BUILDTOOLS_FROSTMOLN_PRODUCTION }}
GITEA_REPOSITORY: ${{ gitea.repository }}
FM_TENANT: 9ae61342-0f76-476f-8176-e46f6b0b0c32
environment: prod
steps:
- uses: actions/checkout@v7
- uses: buildtool/setup-buildtools-action@v1
- name: Deploy to production
run: deploy prod
- name: Install fm
run: |
sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL -o /etc/apt/keyrings/frostmoln.gpg https://get.frostmoln.cloud/deb/frostmoln.gpg
sudo curl -fsSL -o /etc/apt/sources.list.d/frostmoln.sources https://get.frostmoln.cloud/deb/frostmoln.sources
sudo apt-get update && sudo apt-get install -y fm
- name: Deploy to Frostmoln production
env:
FROSTMOLN_API_KEY: ${{ secrets.FROSTMOLN_PRODUCTION_DEPLOY_KEY }}
# The cluster API is private: the kubeconfig's exec plugin opens an fm
# tunnel on demand. fm reads the key from its config file, not the env.
run: |
fm auth api-key set "$FROSTMOLN_API_KEY" > /dev/null
fm kubernetes cluster kubeconfig ${{ vars.FROSTMOLN_PRODUCTION_CLUSTER_ID }} --exec --file "$RUNNER_TEMP/kubeconfig"
KUBECONFIG_CONTENT="$(cat "$RUNNER_TEMP/kubeconfig")" deploy prod-frostmoln -n schemas
+3 -3
View File
@@ -11,7 +11,7 @@ repos:
- --allow-multiple-documents
- id: check-added-large-files
- repo: https://github.com/markdownlint/markdownlint
rev: v0.17.0
rev: v0.18.1
hooks:
- id: markdownlint
- repo: https://gitlab.com/devopshq/gitlab-ci-linter
@@ -22,13 +22,13 @@ repos:
- --project
- unboundsoftware/schemas-app
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
rev: v9.26.0
rev: v9.27.0
hooks:
- id: commitlint
stages: [ commit-msg ]
additional_dependencies: [ '@commitlint/config-conventional' ]
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v10.7.0
rev: v10.12.0
hooks:
- id: eslint
types: [ file ]
+4 -3
View File
@@ -12,9 +12,10 @@ RUN npm run postinstall && npm run generate && npm run lint && npm run test:cove
FROM scratch as export
COPY --from=builder /build/coverage /
FROM amd64/nginx:1.31.3@sha256:1f1cd3af9bef5157e6f3956669aa67b4699ee21e7c6f4d7e749b86a01647ad96
# Unprivileged (uid 101, port 8080): Frostmoln enforces restricted Pod Security.
FROM nginxinc/nginx-unprivileged:1.31.6@sha256:1d26a516fb93b18f9c0214dc9c645054486e516f13ff09ef63d5bd5c622278a2
MAINTAINER Joakim Olsson <joakim@unbound.se>
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
COPY ./nginx/security_headers.conf /etc/nginx/security_headers.conf
COPY --chmod=644 ./nginx/nginx.conf /etc/nginx/nginx.conf
COPY --chmod=644 ./nginx/security_headers.conf /etc/nginx/security_headers.conf
COPY --from=builder /build/.output/public/ /usr/share/nginx/html/
@@ -14,20 +14,23 @@ const mockOrganizations = [
// For now, the component is indirectly tested through useOrganizationSelector tests
// and manual testing shows it works correctly
// vi.mock is hoisted above the imports and the factory runs once, on the first
// import of the mocked module -- it was never re-applied per test despite sitting
// in beforeEach. vitest 5 rejects the nested call outright rather than silently
// hoisting it, so declare it where it actually executes.
vi.mock('~/composables/useOrganizationSelector', () => ({
useOrganizationSelector: () => ({
organizations: ref([mockOrganizations[0]]),
selectedOrganization: ref(mockOrganizations[0]),
selectedOrgId: ref('1'),
selectOrganization: mockSelectOrganization,
}),
}))
describe('OrganizationSwitcher - Single Organization', () => {
beforeEach(() => {
vi.resetModules()
mockSelectOrganization.mockClear()
// Mock with single organization
vi.mock('~/composables/useOrganizationSelector', () => ({
useOrganizationSelector: () => ({
organizations: ref([mockOrganizations[0]]),
selectedOrganization: ref(mockOrganizations[0]),
selectedOrgId: ref('1'),
selectOrganization: mockSelectOrganization,
}),
}))
})
it('should show a chip for single organization', async () => {
File renamed without changes.
+14 -6
View File
@@ -23,6 +23,11 @@ spec:
app.kubernetes.io/name: schemas-app
app.kubernetes.io/instance: schemas
spec:
securityContext:
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
@@ -37,21 +42,25 @@ spec:
topologyKey: kubernetes.io/hostname
containers:
- name: schemas-app
image: oci.unbound.se/unboundsoftware/schemas-app:${COMMIT}
image: ${IMAGE}
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
ports:
- containerPort: 80
- containerPort: 8080
readinessProbe:
httpGet:
path: /
port: 80
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
livenessProbe:
httpGet:
path: /
port: 80
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
@@ -71,9 +80,8 @@ metadata:
labels:
app.kubernetes.io/name: schemas-app
spec:
type: NodePort
selector:
app.kubernetes.io/name: schemas-app
ports:
- port: 80
targetPort: 80
targetPort: 8080
+21
View File
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: schemas-app
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls.certresolver: letsencrypt
spec:
ingressClassName: traefik
rules:
- host: "schemas.unbound.se"
http:
paths:
# Everything but /query, which the schemas API's longer path takes.
- path: /
pathType: Prefix
backend:
service:
name: schemas-app
port:
number: 80
-25
View File
@@ -1,25 +0,0 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: schemas-app-ingress
annotations:
alb.ingress.kubernetes.io/group.name: "default"
alb.ingress.kubernetes.io/group.order: "15"
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
alb.ingress.kubernetes.io/ssl-redirect: "443"
alb.ingress.kubernetes.io/healthcheck-path: '/'
spec:
ingressClassName: "alb"
rules:
- host: "schemas.unbound.se"
http:
paths:
- path: /*
pathType: ImplementationSpecific
backend:
service:
name: schemas-app
port:
number: 80
File renamed without changes.
+9 -3
View File
@@ -1,14 +1,20 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
# Writable by the unprivileged (uid 101) worker.
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
include /etc/nginx/mime.types;
default_type application/octet-stream;
types {
@@ -22,7 +28,7 @@ http {
keepalive_timeout 65;
server {
listen 80;
listen 8080;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
+3936 -4328
View File
File diff suppressed because it is too large. Load diff
+24 -24
View File
@@ -18,13 +18,13 @@
"lintfix": "eslint --fix . && npm run lint:style --fix"
},
"dependencies": {
"@apollo/client": "4.2.8",
"@auth0/auth0-vue": "2.9.0",
"@apollo/client": "3.14.1",
"@auth0/auth0-vue": "2.11.0",
"@vue/apollo-composable": "4.2.2",
"graphql": "16.14.2",
"graphql-ws": "6.1.1",
"nuxt": "4.5.0",
"vue": "3.5.40",
"graphql-ws": "6.3.0",
"nuxt": "4.6.1",
"vue": "3.5.43",
"vuetify-nuxt-module": "0.19.5"
},
"version": "1.0.0",
@@ -34,31 +34,31 @@
"author": "",
"license": "ISC",
"devDependencies": {
"@commitlint/cli": "21.2.1",
"@commitlint/config-conventional": "21.2.0",
"@graphql-codegen/cli": "7.2.0",
"@graphql-codegen/typed-document-node": "7.1.0",
"@graphql-codegen/typescript": "6.1.0",
"@graphql-codegen/typescript-operations": "6.1.2",
"@commitlint/cli": "21.2.3",
"@commitlint/config-conventional": "21.2.3",
"@graphql-codegen/cli": "7.4.6",
"@graphql-codegen/typed-document-node": "7.1.1",
"@graphql-codegen/typescript": "6.1.2",
"@graphql-codegen/typescript-operations": "6.1.10",
"@graphql-codegen/typescript-vue-apollo": "5.0.1",
"@nuxt/devtools": "3.2.4",
"@nuxt/eslint": "1.16.0",
"@nuxt/devtools": "3.4.2",
"@nuxt/eslint": "1.17.0",
"@nuxtjs/stylelint-module": "5.2.1",
"@stylistic/eslint-plugin": "5.10.0",
"@vitejs/plugin-vue": "6.0.8",
"@vitest/coverage-v8": "4.1.10",
"@vue/test-utils": "2.4.11",
"eslint": "10.7.0",
"@vitejs/plugin-vue": "6.0.10",
"@vitest/coverage-v8": "5.0.3",
"@vue/test-utils": "2.5.1",
"eslint": "10.12.0",
"eslint-plugin-simple-import-sort": "14.0.0",
"eslint-plugin-vue": "10.10.0",
"jsdom": "29.1.1",
"postcss-html": "1.8.1",
"stylelint": "17.14.1",
"stylelint-config-recommended-vue": "1.6.1",
"eslint-plugin-vue": "10.11.1",
"jsdom": "30.1.2",
"postcss-html": "2.0.0",
"stylelint": "17.16.0",
"stylelint-config-recommended-vue": "2.0.0",
"stylelint-config-standard": "40.0.0",
"typescript": "6.0.3",
"typescript-eslint": "8.65.0",
"vitest": "4.1.10",
"typescript-eslint": "8.71.1",
"vitest": "5.0.3",
"vue-eslint-parser": "10.4.1"
},
"overrides": {
+9 -1
View File
@@ -31,7 +31,15 @@ class LocalStorageMock {
}
}
global.localStorage = new LocalStorageMock() as unknown as Storage
// jsdom defines localStorage as a getter-only accessor on the window object, so a
// plain assignment throws ("Cannot set property localStorage ... which has only a
// getter") under vitest 5, which no longer shadows it with a writable global.
// defineProperty replaces the accessor outright and works on both.
Object.defineProperty(globalThis, 'localStorage', {
value: new LocalStorageMock() as unknown as Storage,
writable: true,
configurable: true,
})
// Make Vue composables globally available
global.ref = Vue.ref