Conversation
> ℹ️ **Note**
>
> This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [vitest](https://vitest.dev)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`^4.0.0` →
`^5.0.0`](https://renovatebot.com/diffs/npm/vitest/4.1.11/5.0.0) |

|

|
---
### Release Notes
<details>
<summary>vitest-dev/vitest (vitest)</summary>
###
[`v5.0.0`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v5.0.0)
[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.11...v5.0.0)
##### 🚨 Breaking Changes
- Replace `loupe.inspect` with pretty-format - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Claude Opus
5 (1M context)** and **OpenAI Codex** in
[#​9609](https://redirect.github.com/vitest-dev/vitest/issues/9609)
[<samp>(3f802)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3f802da4b)
- Remove quotes from string values in `test.for/each` title `$` variable
(take 2) - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa)
in
[#​10170](https://redirect.github.com/vitest-dev/vitest/issues/10170)
[<samp>(04d37)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/04d37e9d7)
- Default `attachmentsDir` from `.vitest-attachements/` to
`.vitest/attachments/` - by
[@​MdSadiqMd](https://redirect.github.com/MdSadiqMd) in
[#​10186](https://redirect.github.com/vitest-dev/vitest/issues/10186)
[<samp>(1ba73)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1ba7338c3)
- Remove `sequential` test/suite options in favor of `concurrent` - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10198](https://redirect.github.com/vitest-dev/vitest/issues/10198)
[<samp>(9229f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9229f2edc)
- Represent locator as an object instead of a string - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10212](https://redirect.github.com/vitest-dev/vitest/issues/10212)
[<samp>(80f07)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/80f07edf6)
- Inline `expect` package - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10221](https://redirect.github.com/vitest-dev/vitest/issues/10221)
[<samp>(ad162)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ad16223e7)
- Remove deprecated entry points - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10222](https://redirect.github.com/vitest-dev/vitest/issues/10222)
[<samp>(994c6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/994c6ddb9)
- Require Node.js 22 and Vite 6.4 - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10178](https://redirect.github.com/vitest-dev/vitest/issues/10178)
[<samp>(38762)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3876283e8)
- Fail `expect.poll` when function didn't resolve in time - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10233](https://redirect.github.com/vitest-dev/vitest/issues/10233)
[<samp>(4df04)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4df048c11)
- Throw an error if hoistable methods are outside the top level scope
- by [@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10460](https://redirect.github.com/vitest-dev/vitest/issues/10460)
[<samp>(d0b4f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d0b4fddcb)
- `toHaveTextContent` is strict, add `toMatchTextContent` as alternative
- by [@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10473](https://redirect.github.com/vitest-dev/vitest/issues/10473)
[<samp>(18f30)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/18f303079)
- Don't lookup config file from ancestor directories - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **OpenAI
Codex** and **Hiroshi Ogawa** in
[#​10428](https://redirect.github.com/vitest-dev/vitest/issues/10428)
[<samp>(945d9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/945d9090e)
- Inline `@vitest/runner` package, do not publish it anymore - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10511](https://redirect.github.com/vitest-dev/vitest/issues/10511)
[<samp>(6d6e4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6d6e46b1e)
- Allow mutating happy-dom/jsdom window object - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenAI Codex** in
[#​10373](https://redirect.github.com/vitest-dev/vitest/issues/10373)
[<samp>(206e8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/206e8cff8)
- Expose `concurrencyId`/`workerId` on TestModule's diagnostics, make id
1-based - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10516](https://redirect.github.com/vitest-dev/vitest/issues/10516)
[<samp>(bdd98)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bdd985433)
- Add `screenshotDirectory` config to `browser.expect.toMatchScreenshot`
- by [@​macarie](https://redirect.github.com/macarie) in
[#​10592](https://redirect.github.com/vitest-dev/vitest/issues/10592)
[<samp>(a60de)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a60ded0fb)
- Update `@sinonjs/fake-timers` and support mocking `Temporal` - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10654](https://redirect.github.com/vitest-dev/vitest/issues/10654)
[<samp>(f8b15)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f8b1532fe)
- Remove webdriverio package - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10675](https://redirect.github.com/vitest-dev/vitest/issues/10675)
[<samp>(5fed6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5fed68f72)
- Clear mocks by default before each test - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10613](https://redirect.github.com/vitest-dev/vitest/issues/10613)
[<samp>(0f646)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0f6463bf2)
- Don't emit localStorage warnings on Node 26, fail gracefully when
worker fails to start - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10293](https://redirect.github.com/vitest-dev/vitest/issues/10293)
[<samp>(334ed)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/334edef92)
- Separate config resolution from the server creation - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10554](https://redirect.github.com/vitest-dev/vitest/issues/10554)
[<samp>(1c0ec)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1c0ec3444)
- Inline projects extend the root config by default - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10750](https://redirect.github.com/vitest-dev/vitest/issues/10750)
[<samp>(fec00)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fec001ad3)
- Enable mocking Temporal without fake timers - by
[@​fabon-f](https://redirect.github.com/fabon-f), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10757](https://redirect.github.com/vitest-dev/vitest/issues/10757)
[<samp>(ac2d4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ac2d46b42)
- Support nested projects - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10846](https://redirect.github.com/vitest-dev/vitest/issues/10846)
[<samp>(ec367)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ec367cf2a)
- Use `>` as separator in `-t`, calculate `only` once - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10686](https://redirect.github.com/vitest-dev/vitest/issues/10686)
[<samp>(a0b20)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a0b20bc86)
- Fail the test when an asynchronous assertion is not awaited - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10868](https://redirect.github.com/vitest-dev/vitest/issues/10868)
[<samp>(86d4a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/86d4a9da9)
- Share the Vite server between inline projects - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10848](https://redirect.github.com/vitest-dev/vitest/issues/10848)
[<samp>(d87c9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d87c96ee4)
- Parse files statically in vitest list by default - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11088](https://redirect.github.com/vitest-dev/vitest/issues/11088)
[<samp>(51e94)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/51e949416)
- **benchmark**:
- Rewrite the public API - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10113](https://redirect.github.com/vitest-dev/vitest/issues/10113)
[<samp>(19f6e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/19f6e8947)
- **browser**:
- Iframe scale - by
[@​macarie](https://redirect.github.com/macarie) in
[#​9745](https://redirect.github.com/vitest-dev/vitest/issues/9745)
[<samp>(b6398)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b639852cc)
- Enable `locators.exact` by default - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10430](https://redirect.github.com/vitest-dev/vitest/issues/10430)
[<samp>(e2032)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e203202f9)
- Require `sessionId` for orchestrator html request - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenAI Codex** in
[#​10522](https://redirect.github.com/vitest-dev/vitest/issues/10522)
[<samp>(79b7d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/79b7d8fcc)
- Save failure screenshots in `attachmentsDir` - by
[@​macarie](https://redirect.github.com/macarie) in
[#​10917](https://redirect.github.com/vitest-dev/vitest/issues/10917)
[<samp>(3b5bb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3b5bbd8b4)
- **coverage**:
- `include/exclude` globs too eager - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​9818](https://redirect.github.com/vitest-dev/vitest/issues/9818)
[<samp>(edacb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/edacb0fd4)
- Allow `thresholds.perFile` to accept an object - by
[@​vladlenskiy](https://redirect.github.com/vladlenskiy) and
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10190](https://redirect.github.com/vitest-dev/vitest/issues/10190)
[<samp>(13b78)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/13b78d98b)
- **expect**:
- Fix `toThrow("")` behavior by reverting
[#​6710](https://redirect.github.com/vitest-dev/vitest/issues/6710)
- by [@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​9643](https://redirect.github.com/vitest-dev/vitest/issues/9643)
and
[#​6710](https://redirect.github.com/vitest-dev/vitest/issues/6710)
[<samp>(6c3e4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6c3e4bdbf)
- **mocker**:
- Deserialize automock as automock - by
[@​nami8824](https://redirect.github.com/nami8824) in
[#​10192](https://redirect.github.com/vitest-dev/vitest/issues/10192)
[<samp>(2f892)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2f892712d)
- **reporters**:
- `blob` reporter and `--merge-reports` default to `.vitest/blob/` -
by [@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10232](https://redirect.github.com/vitest-dev/vitest/issues/10232)
[<samp>(d22b0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d22b029ae)
- Write json and junit reporter output files to `.vitest` by default -
by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa**, **OpenCode (gpt-5.6-sol)** and
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10621](https://redirect.github.com/vitest-dev/vitest/issues/10621)
[<samp>(58577)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/58577290a)
- **spy**:
- Preserve class mock prototype methods on instances - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10910](https://redirect.github.com/vitest-dev/vitest/issues/10910)
[<samp>(6093d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6093d764a)
- **types**:
- Add better promise support in expects and matchers - by
[@​samchungy](https://redirect.github.com/samchungy) and
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​8266](https://redirect.github.com/vitest-dev/vitest/issues/8266)
[<samp>(41f55)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/41f551bce)
- **ui**:
- Harden UI API access - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenAI Codex** in
[#​10583](https://redirect.github.com/vitest-dev/vitest/issues/10583)
[<samp>(4c26d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4c26d7675)
- Change html reporter default output to `.vitest` - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **Hiroshi
Ogawa** in
[#​10620](https://redirect.github.com/vitest-dev/vitest/issues/10620)
[<samp>(29c36)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/29c364d50)
##### 🚀 Features
- Add `createReport` and `.vitest` report directory convention - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​9993](https://redirect.github.com/vitest-dev/vitest/issues/9993)
[<samp>(72a6d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/72a6dc257)
- Expose default reporters through `configDefaults.reporters` - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **Claude
Opus 5 (1M context)** in
[#​10219](https://redirect.github.com/vitest-dev/vitest/issues/10219)
[<samp>(083f6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/083f6bdd6)
- Support merge reports for non-sharded multi-environment runs (take 2)
- by [@​hi-ogawa](https://redirect.github.com/hi-ogawa),
**Claude Opus 5 (1M context)**, **OpenAI Codex** and
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10031](https://redirect.github.com/vitest-dev/vitest/issues/10031)
[<samp>(e60b2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e60b2f49e)
- Add `logger.formatError` - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10268](https://redirect.github.com/vitest-dev/vitest/issues/10268)
[<samp>(2c5f3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2c5f3ee2f)
- Support typescript build mode - by
[@​lishaduck](https://redirect.github.com/lishaduck) in
[#​9870](https://redirect.github.com/vitest-dev/vitest/issues/9870)
[<samp>(106da)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/106da5896)
- Add toggable `injectCjsGlobals` option - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10709](https://redirect.github.com/vitest-dev/vitest/issues/10709)
[<samp>(82671)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/826714ece)
- Promote fsModuleCache to a top-level option - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10734](https://redirect.github.com/vitest-dev/vitest/issues/10734)
[<samp>(78ed7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/78ed73afd)
- Support non-ascii characters in `for/each` title placeholders - by
[@​k-yle](https://redirect.github.com/k-yle) in
[#​10773](https://redirect.github.com/vitest-dev/vitest/issues/10773)
[<samp>(15e0a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/15e0af953)
- Report the duration breakdown as percentages - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) and
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10820](https://redirect.github.com/vitest-dev/vitest/issues/10820)
[<samp>(c67d2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c67d296f4)
- Promote parseSpecifications out of experimental - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11087](https://redirect.github.com/vitest-dev/vitest/issues/11087)
[<samp>(b628c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b628cb680)
- Promote clearCache out of experimental - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11086](https://redirect.github.com/vitest-dev/vitest/issues/11086)
[<samp>(d4fe1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d4fe1986f)
- **api**:
- Expose logs recorded during the test - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10277](https://redirect.github.com/vitest-dev/vitest/issues/10277)
[<samp>(cba20)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/cba2036a1)
- **benchmark**:
- Add pluggable benchmark provider API - by
[@​GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
and [@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10799](https://redirect.github.com/vitest-dev/vitest/issues/10799)
[<samp>(86c70)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/86c700ed8)
- **browser**:
- Export aria tree utils - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10171](https://redirect.github.com/vitest-dev/vitest/issues/10171)
[<samp>(c3423)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c3423014c)
- Support dom snapshot trace view - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Claude Opus
5 (1M context)** and **OpenAI Codex** in
[#​10102](https://redirect.github.com/vitest-dev/vitest/issues/10102)
[<samp>(7eddd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7eddd273d)
- Provide project reference in `ToMatchScreenshotResolvePath` - by
[@​macarie](https://redirect.github.com/macarie) and
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10138](https://redirect.github.com/vitest-dev/vitest/issues/10138)
[<samp>(16654)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/166544e39)
- Show aria tree on locator element error - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10257](https://redirect.github.com/vitest-dev/vitest/issues/10257)
[<samp>(04f04)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/04f04cdd1)
- Support custom `kind` in `page.mark` - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10302](https://redirect.github.com/vitest-dev/vitest/issues/10302)
[<samp>(053e8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/053e8b0d1)
- Live update trace view on watch UI - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10296](https://redirect.github.com/vitest-dev/vitest/issues/10296)
[<samp>(78c11)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/78c1169cf)
- Add `context.mark` for custom command tracing - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10329](https://redirect.github.com/vitest-dev/vitest/issues/10329)
[<samp>(aa514)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/aa5140e76)
- Show trace view steps in editor panel - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10404](https://redirect.github.com/vitest-dev/vitest/issues/10404)
[<samp>(8c4b6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8c4b6da02)
- Display nested mark trace in UI - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenAI Codex** in
[#​10437](https://redirect.github.com/vitest-dev/vitest/issues/10437)
[<samp>(86ffc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/86ffc8ac6)
- **cli**:
- Add `--repeats` CLI option - by
[@​todor-a](https://redirect.github.com/todor-a) in
[#​10504](https://redirect.github.com/vitest-dev/vitest/issues/10504)
[<samp>(ee48b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ee48b959e)
- Support -p shorthand for --project - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10826](https://redirect.github.com/vitest-dev/vitest/issues/10826)
[<samp>(1addd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1adddde12)
- **coverage**:
- V8 to track `node:child_process` and `node:worker_threads` contexts
- by [@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​9976](https://redirect.github.com/vitest-dev/vitest/issues/9976)
[<samp>(9baa5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9baa5faba)
- `thresholds.autoUpdate` to receive previous threshold as argument -
by [@​wouterkroes](https://redirect.github.com/wouterkroes) in
[#​10495](https://redirect.github.com/vitest-dev/vitest/issues/10495)
[<samp>(04f81)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/04f81854f)
- Switch to `@vitest/istanbuljs` packages - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​11053](https://redirect.github.com/vitest-dev/vitest/issues/11053)
[<samp>(5f6a5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5f6a5e84a)
- **junit-reporter**:
- Add jest-junit-compatible naming options - by
[@​neumaennl](https://redirect.github.com/neumaennl),
**neumaennl**, **Martin Neumann** and **Copilot** in
[#​10189](https://redirect.github.com/vitest-dev/vitest/issues/10189)
[<samp>(27393)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/273933440)
- **reporter**:
- Support html reporter single file output - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **OpenAI
Codex** and **Claude Opus 5 (1M context)** in
[#​10235](https://redirect.github.com/vitest-dev/vitest/issues/10235)
[<samp>(f757e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f757ec5e6)
- Add custom GitHub Actions summary title - by
[@​heyJonBray](https://redirect.github.com/heyJonBray) and
[@​macarie](https://redirect.github.com/macarie) in
[#​10891](https://redirect.github.com/vitest-dev/vitest/issues/10891)
[<samp>(4363c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4363cdb49)
- **ui**:
- Highlight editor source locations - by
[@​sheremet-va](https://redirect.github.com/sheremet-va),
**Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​11004](https://redirect.github.com/vitest-dev/vitest/issues/11004)
[<samp>(bce2d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bce2d3c2f)
- Navigate trace steps with keyboard and remove indirect editor focus
- by [@​sheremet-va](https://redirect.github.com/sheremet-va),
**Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​11005](https://redirect.github.com/vitest-dev/vitest/issues/11005)
[<samp>(6816f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6816f3b17)
- Persist trace view selection in URL - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10981](https://redirect.github.com/vitest-dev/vitest/issues/10981)
[<samp>(3069e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3069e5927)
- Toggle trace target highlight - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​11049](https://redirect.github.com/vitest-dev/vitest/issues/11049)
[<samp>(cd63e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/cd63e9e43)
- Add link to open playwright trace - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​11059](https://redirect.github.com/vitest-dev/vitest/issues/11059)
[<samp>(58f02)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/58f02ae36)
- **vitest**:
- Create `vi.when()` - by
[@​macarie](https://redirect.github.com/macarie) in
[#​10174](https://redirect.github.com/vitest-dev/vitest/issues/10174)
[<samp>(3900e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3900e6349)
- **vm**:
- Support `require(esm)` in vm pools - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10829](https://redirect.github.com/vitest-dev/vitest/issues/10829)
[<samp>(01298)</samp>](https://redirect.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 [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **OpenAI
Codex** and
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10194](https://redirect.github.com/vitest-dev/vitest/issues/10194)
[<samp>(9387f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9387f57cf)
- Test `tags` options should overwrite inherited suite options + inherit
suite options in `task` API - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10216](https://redirect.github.com/vitest-dev/vitest/issues/10216)
[<samp>(457db)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/457db297b)
- Udpate optimize deps config - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10223](https://redirect.github.com/vitest-dev/vitest/issues/10223)
[<samp>(95dc6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/95dc6e3f1)
- Shell injection safety via github.ref\_name in publish workflow - by
[@​lloyd-c137](https://redirect.github.com/lloyd-c137) and
**lloyd-c137** in
[#​10327](https://redirect.github.com/vitest-dev/vitest/issues/10327)
[<samp>(dd020)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/dd0207f4d)
- Make `attachmentsDir` root only config - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10334](https://redirect.github.com/vitest-dev/vitest/issues/10334)
[<samp>(fab1b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fab1b6020)
- Apply cjs interop for truthy `__esModule` - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10363](https://redirect.github.com/vitest-dev/vitest/issues/10363)
[<samp>(2b135)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2b13547a5)
- Preserve `vi.defineHelper` callsite for async error stack - by
[@​macayu17](https://redirect.github.com/macayu17) and
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10415](https://redirect.github.com/vitest-dev/vitest/issues/10415)
[<samp>(ac697)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ac6971ca2)
- Respect `disableConsoleIntercept` in browser mode - by
[@​Copilot](https://redirect.github.com/Copilot), **Hiroshi
Ogawa**, [@​hi-ogawa](https://redirect.github.com/hi-ogawa) and
**OpenAI Codex** in
[#​10391](https://redirect.github.com/vitest-dev/vitest/issues/10391)
[<samp>(66110)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/66110d271)
- ForceRerunTriggers uses directory globs against files - by
[@​Patrick-Clausen](https://redirect.github.com/Patrick-Clausen)
and **Patrick Clausen** in
[#​10421](https://redirect.github.com/vitest-dev/vitest/issues/10421)
and
[#​10420](https://redirect.github.com/vitest-dev/vitest/issues/10420)
[<samp>(4fee2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4fee2e303)
- Unify typechecking and ast collection - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10449](https://redirect.github.com/vitest-dev/vitest/issues/10449)
[<samp>(af993)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/af993b66b)
- Don't print typecheck warning more than once - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10461](https://redirect.github.com/vitest-dev/vitest/issues/10461)
[<samp>(15275)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/152750ec0)
- Correct collumn when parsing tests - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10467](https://redirect.github.com/vitest-dev/vitest/issues/10467)
[<samp>(7c2fc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7c2fc133e)
- Fix mixed stdout/stderr log timestamps in `onUserConsoleLog` - by
[@​Copilot](https://redirect.github.com/Copilot), **Hiroshi
Ogawa**, [@​hi-ogawa](https://redirect.github.com/hi-ogawa) and
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10308](https://redirect.github.com/vitest-dev/vitest/issues/10308)
[<samp>(62756)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/627565475)
- Fix `importOriginal` with optimizer and query import - by
[@​davidxharris](https://redirect.github.com/davidxharris),
**David Harris**,
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenAI Codex** in
[#​10469](https://redirect.github.com/vitest-dev/vitest/issues/10469)
[<samp>(6a3bb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6a3bb02e0)
- Correct transform time calculation in merged report - by
[@​potatomatoooo](https://redirect.github.com/potatomatoooo) and
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10570](https://redirect.github.com/vitest-dev/vitest/issues/10570)
and
[#​10578](https://redirect.github.com/vitest-dev/vitest/issues/10578)
[<samp>(b7897)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b78972892)
- Fix `setImmediate` await in detect-async-leak - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **Hiroshi
Ogawa** in
[#​10608](https://redirect.github.com/vitest-dev/vitest/issues/10608)
[<samp>(dd62b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/dd62b84e0)
- Fix per-project `sequence` config - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10659](https://redirect.github.com/vitest-dev/vitest/issues/10659)
[<samp>(40cdc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/40cdc7fd6)
- Add handshake timeout to iframe communication - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10656](https://redirect.github.com/vitest-dev/vitest/issues/10656)
[<samp>(3545f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3545fe78f)
- Don't print column in test names when `includeTaskLocation` is enabled
- by [@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10681](https://redirect.github.com/vitest-dev/vitest/issues/10681)
[<samp>(bd9cc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bd9cc9d8d)
- Disable server HMR before plugins read it in their config hook - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10731](https://redirect.github.com/vitest-dev/vitest/issues/10731)
[<samp>(e060b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e060b8fa9)
- Close the pool before the Vite servers - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10725](https://redirect.github.com/vitest-dev/vitest/issues/10725)
[<samp>(96fa6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/96fa6d73d)
- Remove listeners in the typecheck worker's `off` - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10741](https://redirect.github.com/vitest-dev/vitest/issues/10741)
[<samp>(d758b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d758b4755)
- Keep per-file isolation in vm pools when maxWorkers is 1 - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10743](https://redirect.github.com/vitest-dev/vitest/issues/10743)
[<samp>(83ab9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/83ab9a44f)
- Node.js 20 deprecation warning for `ci.yml` - by
[@​hirehamir](https://redirect.github.com/hirehamir) in
[#​10759](https://redirect.github.com/vitest-dev/vitest/issues/10759)
[<samp>(2127f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2127fa6ce)
- Prevent node builtins double prefix - by
[@​malobre](https://redirect.github.com/malobre) in
[#​10630](https://redirect.github.com/vitest-dev/vitest/issues/10630)
and
[#​10767](https://redirect.github.com/vitest-dev/vitest/issues/10767)
[<samp>(22d35)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/22d353a80)
- Set non-zero exit code when teardown throws during close - by
[@​zakcutner](https://redirect.github.com/zakcutner) and
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10794](https://redirect.github.com/vitest-dev/vitest/issues/10794)
[<samp>(22116)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/22116feb7)
- Don't race the typechecker spawn grace period on windows - by
[@​xevrion](https://redirect.github.com/xevrion) in
[#​10814](https://redirect.github.com/vitest-dev/vitest/issues/10814)
[<samp>(b19e5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b19e5ece9)
- Coalesce concurrent watch-mode restarts, deflake the pool stderr
fixture - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10822](https://redirect.github.com/vitest-dev/vitest/issues/10822)
[<samp>(a31f8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a31f86af7)
- Prevent `vitest --typecheck` from reporting a false success when the
`tsc` process crashes - by
[@​hitenkalda](https://redirect.github.com/hitenkalda) and **Hiten
Kalda** in
[#​10705](https://redirect.github.com/vitest-dev/vitest/issues/10705)
[<samp>(a1b05)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a1b0565c9)
- Collect in-source tests when the module is cached - by
[@​koutaro-masaki](https://redirect.github.com/koutaro-masaki) in
[#​10577](https://redirect.github.com/vitest-dev/vitest/issues/10577)
and
[#​10589](https://redirect.github.com/vitest-dev/vitest/issues/10589)
[<samp>(a7bf2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a7bf2b2c8)
- Swap replace() arguments so timeout error stack shows the real message
- by [@​lazerg](https://redirect.github.com/lazerg) in
[#​10875](https://redirect.github.com/vitest-dev/vitest/issues/10875)
[<samp>(aba0f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/aba0f9b7b)
- Stale mock metadata breaks automocking with isolate:false - by
[@​kade-robertson](https://redirect.github.com/kade-robertson) in
[#​10145](https://redirect.github.com/vitest-dev/vitest/issues/10145)
and
[#​10541](https://redirect.github.com/vitest-dev/vitest/issues/10541)
[<samp>(8e210)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8e2108dda)
- Don't lose worker output on teardown, deflake timing-sensitive tests
- by [@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10842](https://redirect.github.com/vitest-dev/vitest/issues/10842)
[<samp>(1216b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1216b5af9)
- Revive global concurrency limit for test lifecycle - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa**, **OpenCode (gpt-5.6-sol)** and
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10928](https://redirect.github.com/vitest-dev/vitest/issues/10928)
[<samp>(cf917)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/cf9176bfc)
- Own the post-restart rerun, keep `process.exit` disabled in workers
- by [@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10963](https://redirect.github.com/vitest-dev/vitest/issues/10963)
[<samp>(5e69a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5e69aba65)
- Preserve correct root during resolve config - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) and
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10909](https://redirect.github.com/vitest-dev/vitest/issues/10909)
[<samp>(210ba)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/210ba00cb)
- Combine multiple --project filters correctly - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10988](https://redirect.github.com/vitest-dev/vitest/issues/10988)
[<samp>(66c1c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/66c1cbb53)
- Fix `recordArtifact` location with `vi.defineHelper` - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​11047](https://redirect.github.com/vitest-dev/vitest/issues/11047)
[<samp>(c2186)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c21865dfd)
- Invalidate resolved setup files - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11073](https://redirect.github.com/vitest-dev/vitest/issues/11073)
and
[#​11081](https://redirect.github.com/vitest-dev/vitest/issues/11081)
[<samp>(488c0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/488c04680)
- Accept awaited value in vi.when thenResolve - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11084](https://redirect.github.com/vitest-dev/vitest/issues/11084)
[<samp>(c10a1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c10a12900)
- Ignore computed member calls in static collection - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11085](https://redirect.github.com/vitest-dev/vitest/issues/11085)
[<samp>(130f7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/130f79b8b)
- Don't duplicte `oxc.target` if user provides a custom array - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11095](https://redirect.github.com/vitest-dev/vitest/issues/11095)
[<samp>(848d7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/848d7243e)
- Propagate --maxWorkers to projects - by
[@​Gaurav1112](https://redirect.github.com/Gaurav1112) in
[#​11102](https://redirect.github.com/vitest-dev/vitest/issues/11102)
[<samp>(2122f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2122ffdfb)
- Apply queued mocks from doMock() in queue order - by
[@​juliandescottes](https://redirect.github.com/juliandescottes)
and **Claude Opus 5 (1M context)** in
[#​10706](https://redirect.github.com/vitest-dev/vitest/issues/10706)
and
[#​11127](https://redirect.github.com/vitest-dev/vitest/issues/11127)
[<samp>(f08ce)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f08ce4b71)
- Add a warning if inline project has duplicate plugins due to
unexpected `extends: true` - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11120](https://redirect.github.com/vitest-dev/vitest/issues/11120)
[<samp>(584cf)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/584cf3084)
- Treat test.describe as a suite during static collection - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11128](https://redirect.github.com/vitest-dev/vitest/issues/11128)
[<samp>(d46a7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d46a74722)
- **browser**:
- Fix trace highlight of shadow dom on webdriverio - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10227](https://redirect.github.com/vitest-dev/vitest/issues/10227)
[<samp>(b01af)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b01afd26c)
- Simplify orchestrator otel carrier - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10283](https://redirect.github.com/vitest-dev/vitest/issues/10283)
[<samp>(3514f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3514f9fa1)
- Remove orphaned Playwright route when same module is mocked via
multiple ids - by
[@​Zelys-DFKH](https://redirect.github.com/Zelys-DFKH) in
[#​9957](https://redirect.github.com/vitest-dev/vitest/issues/9957)
and
[#​10267](https://redirect.github.com/vitest-dev/vitest/issues/10267)
[<samp>(41db6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/41db6ce28)
- Skip `wrapDynamicImport` transform on ssr environment - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10355](https://redirect.github.com/vitest-dev/vitest/issues/10355)
[<samp>(d3c96)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d3c964bfc)
- Fix stale source map on watch mode - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10389](https://redirect.github.com/vitest-dev/vitest/issues/10389)
[<samp>(6d772)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6d772c800)
- Escape inline orchestrator scripts - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10412](https://redirect.github.com/vitest-dev/vitest/issues/10412)
[<samp>(c22cf)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c22cfb656)
- Disable client `cdp` API when `allowWrite/allowExec: false` - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10444](https://redirect.github.com/vitest-dev/vitest/issues/10444)
[<samp>(63e3b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/63e3b2eee)
- Wait for orchestrator readiness before resolving browser sessions -
by [@​soconnor-seeq](https://redirect.github.com/soconnor-seeq) in
[#​10397](https://redirect.github.com/vitest-dev/vitest/issues/10397)
[<samp>(fe5ed)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fe5ed6bc7)
- Wait for iframe tester readiness before preparing - by
[@​soconnor-seeq](https://redirect.github.com/soconnor-seeq) in
[#​10497](https://redirect.github.com/vitest-dev/vitest/issues/10497)
[<samp>(f2655)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f26552c63)
- Encode iframeId in tester iframe URL - by
[@​Pduhard](https://redirect.github.com/Pduhard), **Pduhard** and
**Claude Opus 5 (1M context)** in
[#​10520](https://redirect.github.com/vitest-dev/vitest/issues/10520)
and
[#​10521](https://redirect.github.com/vitest-dev/vitest/issues/10521)
[<samp>(c8bf1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c8bf19f66)
- Always derive a positive locator action timeout - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10626](https://redirect.github.com/vitest-dev/vitest/issues/10626)
[<samp>(5b864)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5b8642120)
- Resize the browser ui only if it's not headless - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10662](https://redirect.github.com/vitest-dev/vitest/issues/10662)
[<samp>(b5c61)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b5c613051)
- Check fs access in builtin commands - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10674](https://redirect.github.com/vitest-dev/vitest/issues/10674)
[<samp>(33f96)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/33f96a145)
- Preserve pre-transform request defaults - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10748](https://redirect.github.com/vitest-dev/vitest/issues/10748)
[<samp>(b6060)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b60605ca7)
- Fix error stacktrace location off-by-one - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10724](https://redirect.github.com/vitest-dev/vitest/issues/10724)
[<samp>(62b8d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/62b8d3b36)
- Inlined awaited import should not trigger syntax error after transform
- by [@​smeng9](https://redirect.github.com/smeng9), **Shaoyu
Meng** and **Claude Opus 5 (1M context)** in
[#​10784](https://redirect.github.com/vitest-dev/vitest/issues/10784)
[<samp>(51acd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/51acd5778)
- Mock window\.print to avoid hanging - by
[@​aaravjaichand](https://redirect.github.com/aaravjaichand) in
[#​7375](https://redirect.github.com/vitest-dev/vitest/issues/7375)
and
[#​10798](https://redirect.github.com/vitest-dev/vitest/issues/10798)
[<samp>(66d95)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/66d95af84)
- Ignore channel events in a tester opened as a top-level window - by
[@​simshanith](https://redirect.github.com/simshanith) in
[#​9379](https://redirect.github.com/vitest-dev/vitest/issues/9379)
and
[#​9381](https://redirect.github.com/vitest-dev/vitest/issues/9381)
[<samp>(46a3c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/46a3cf750)
- Resolve `connectTimeout` from the project config - by
[@​lazerg](https://redirect.github.com/lazerg) in
[#​10879](https://redirect.github.com/vitest-dev/vitest/issues/10879)
and
[#​10880](https://redirect.github.com/vitest-dev/vitest/issues/10880)
[<samp>(62c79)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/62c795d63)
- Prebundle vite module runner with vitest - by
[@​lebovvskii](https://redirect.github.com/lebovvskii) and
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10836](https://redirect.github.com/vitest-dev/vitest/issues/10836)
and
[#​10856](https://redirect.github.com/vitest-dev/vitest/issues/10856)
[<samp>(37c24)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/37c240158)
- Restore dependency reload warning - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10913](https://redirect.github.com/vitest-dev/vitest/issues/10913)
[<samp>(90d69)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/90d696d44)
- Configure internal optimizer dependencies - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10915](https://redirect.github.com/vitest-dev/vitest/issues/10915)
[<samp>(a72f4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a72f46eac)
- Trigger playwright/chromium gc on lower disk availability - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi
Ogawa** and **OpenCode (gpt-5.6-sol)** in
[#​10912](https://redirect.github.com/vitest-dev/vitest/issues/10912)
[<samp>(032d3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/032d31892)
- Disallow filter-only options in getBy\* locators - by **Arjun** in
[#​10295](https://redirect.github.com/vitest-dev/vitest/issues/10295)
and
[#​10933](https://redirect.github.com/vitest-dev/vitest/issues/10933)
[<samp>(9b4df)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9b4df4b05)
- Fail instead of hanging when the browser stops responding - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10956](https://redirect.github.com/vitest-dev/vitest/issues/10956)
[<samp>(c496c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c496c2e33)
- Exit gracefully when the browser disconnects during cancellation -
by [@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10962](https://redirect.github.com/vitest-dev/vitest/issues/10962)
[<samp>(67e84)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/67e848564)
- Don't redirect vitest in client environment - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10975](https://redirect.github.com/vitest-dev/vitest/issues/10975)
[<samp>(aeb67)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/aeb672095)
- Don't hang when `ui: true` in projects - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10994](https://redirect.github.com/vitest-dev/vitest/issues/10994)
[<samp>(9f710)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9f710d304)
- Preserve trace popover state - by
[@​liuluochen6-af](https://redirect.github.com/liuluochen6-af),
**Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10906](https://redirect.github.com/vitest-dev/vitest/issues/10906)
and
[#​11021](https://redirect.github.com/vitest-dev/vitest/issues/11021)
[<samp>(1bbc2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1bbc278c2)
- Report the action error when a task times out - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​11101](https://redirect.github.com/vitest-dev/vitest/issues/11101)
[<samp>(dc10f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/dc10f5f8f)
- **cache**:
- Improve `fsModuleCache` resiliency during external modifications -
by [@​jszumski](https://redirect.github.com/jszumski) in
[#​10869](https://redirect.github.com/vitest-dev/vitest/issues/10869)
[<samp>(5eb35)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5eb3570e8)
- **cli**:
- Respect `FORCE_COLOR` over agent detection - by
[@​dokson](https://redirect.github.com/dokson) in
[#​10272](https://redirect.github.com/vitest-dev/vitest/issues/10272)
[<samp>(7e66b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7e66bc726)
- Exit on `CTRL+c` even when `globalSetup` runs blocked code - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10863](https://redirect.github.com/vitest-dev/vitest/issues/10863)
[<samp>(d568f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d568f8ce3)
- **coverage**:
- `exclude` to not inherit negation globs from `test.include` - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10299](https://redirect.github.com/vitest-dev/vitest/issues/10299)
[<samp>(28685)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/286851ea2)
- Avoid matching sibling project roots - by
[@​innoprej](https://redirect.github.com/innoprej), **Shin
JaeHee** and
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10311](https://redirect.github.com/vitest-dev/vitest/issues/10311)
[<samp>(e30dd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e30dd9cf6)
- Non-awaited module imports cause wrong offsets - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10643](https://redirect.github.com/vitest-dev/vitest/issues/10643)
[<samp>(c4090)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c40901479)
- Fail fast when `coverage.reportsDirectory` conflicts between
concurrent runs - by
[@​jgamaraalv](https://redirect.github.com/jgamaraalv) and
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10466](https://redirect.github.com/vitest-dev/vitest/issues/10466)
[<samp>(833f0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/833f0936c)
- V8 to ignore Vite SSR's generated import bindings - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​11023](https://redirect.github.com/vitest-dev/vitest/issues/11023)
[<samp>(c6174)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c6174a6cf)
- Prevent crash on `/@fs/` prepended virtual files - by
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​11119](https://redirect.github.com/vitest-dev/vitest/issues/11119)
[<samp>(c4473)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c4473e48e)
- **deps**:
- Update ivya to fix empty aria tree snapshot - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) in
[#​10218](https://redirect.github.com/vitest-dev/vitest/issues/10218)
[<samp>(f7822)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f7822ebf6)
- Update fake-timers to 15.3.2. support `toNotFake` - by
[@​BPScott](https://redirect.github.com/BPScott),
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10043](https://redirect.github.com/vitest-dev/vitest/issues/10043)
[<samp>(bbf2f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bbf2f0df3)
- Update all non-major dependencies - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​9958](https://redirect.github.com/vitest-dev/vitest/issues/9958)
[<samp>(7faa7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7faa7b04a)
- Update all non-major dependencies - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10861](https://redirect.github.com/vitest-dev/vitest/issues/10861)
[<samp>(0188c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0188c8135)
- Update all non-major dependencies - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10898](https://redirect.github.com/vitest-dev/vitest/issues/10898)
[<samp>(61c4b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/61c4b8024)
- Update all non-major dependencies - in
[#​10966](https://redirect.github.com/vitest-dev/vitest/issues/10966)
[<samp>(65263)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/65263d74e)
- Update all non-major dependencies - in
[#​11043](https://redirect.github.com/vitest-dev/vitest/issues/11043)
[<samp>(732df)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/732df2c2b)
- **expect**:
- Allow readonly arrays and sets in toBeOneOf - by
[@​YBJ0000](https://redirect.github.com/YBJ0000) in
[#​10264](https://redirect.github.com/vitest-dev/vitest/issues/10264)
and
[#​10374](https://redirect.github.com/vitest-dev/vitest/issues/10374)
[<samp>(fed11)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fed1125b0)
- Handle nullish toHaveProperty values - by
[@​liyimil](https://redirect.github.com/liyimil) in
[#​10735](https://redirect.github.com/vitest-dev/vitest/issues/10735)
and
[#​10811](https://redirect.github.com/vitest-dev/vitest/issues/10811)
[<samp>(99e59)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/99e596d33)
- **junit**:
- Include unhandled errors in JUnit XML report - by
[@​gbleu](https://redirect.github.com/gbleu) and **Claude Opus 5
(1M context)** in
[#​10244](https://redirect.github.com/vitest-dev/vitest/issues/10244)
[<samp>(6f74e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6f74e5e9d)
- **mocker**:
- Skip hoist transform without ast mock calls - by
[@​hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI
Codex** in
[#​10410](https://redirect.github.com/vitest-dev/vitest/issues/10410)
[<samp>(0468e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0468e1572)
- Hoist vi.mock() for vite-plus/test imports - by
[@​Brooooooklyn](https://redirect.github.com/Brooooooklyn) and
**Claude Opus 5 (1M context)** in
[#​10489](https://redirect.github.com/vitest-dev/vitest/issues/10489)
[<samp>(88376)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8837664a4)
- Restrict redirect mocks to the fs allowlist - by
[@​sheremet-va](https://redirect.github.com/sheremet-va) in
[#​10972](https://redirect.github.com/vitest-dev/vitest/issues/10972)
[<samp>(8ff9b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8ff9b9a9e)
- **pool**:
- Prevent test run hang on worker crash - by
[@​jaxalo](https://redirect.github.com/jaxalo) and
[@​AriPerkkio](https://redirect.github.com/AriPerkkio) in
[#​10543](https://redirect.github.com/vitest-dev/vitest/issues/10543)
[<samp>(40
> ✂ **Note**
>
> PR body was truncated to here.
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- "every weekday before 11am"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC42MS4zIiwidXBkYXRlZEluVmVyIjoiNDQuNjEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Issue number: internal --------- ## What is the current behavior? The `web-types.json` file provides autocomplete information for Ionic-Vue component attributes to the JetBrains WebStorm IDE. The autocomplete does work, but only when the component has not been imported into the source `.vue` file. Once imported, the IDE replaces types provided by `web-types.json` with types from `@ionic/vue/dist/types/proxies.d.ts`, which it fails to understand, and ceases providing attribute autocomplete. ## What is the new behavior? Setting `priority: "highest"` on each component in `web-types.json` tells WebStorm to keep these types over imported ones. Autocomplete information persists after importing the Ionic-Vue component. ## Does this introduce a breaking change? - [ ] Yes - [X] No
…#31364) Issue number: resolves #29721 --------- ## What is the current behavior? A navigation guard that cancels a back navigation leaves Ionic's staged navigation info behind. The next push reads that stale delta, gets mistaken for history traversal, and the incoming route is never added to the location history. The router outlet then destroys a page it should have kept. ## What is the new behavior? - `currentNavigationInfo` is cleared before `router.afterEach` returns on a navigation failure. - The clear is skipped for `cancelled` failures, matching vue-router, which reverts the history entry for `aborted` and `duplicated` navigations but leaves it in place when a navigation is superseded. - Added a unit spec covering the reported steps. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Dev build: `9.0.1-dev.11788285010.17561004` --------- Co-authored-by: zhiqiang.guo <zguoby@gmail.com> Co-authored-by: ShaneK <561207+ShaneK@users.noreply.github.com> Co-authored-by: Shane <shane.king@outsystems.com> Co-authored-by: ShaneK <shane@shanessite.net>
Issue number: internal --------- ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - New test project for validating Ionic components are split across chunks with the new per-component exports. - Script for testing schematics. - More exports from the standalone barrel file in `package.json`. - CI step for running `packages/angular` tests. ## Does this introduce a breaking change? - [ ] Yes - [X] No --------- Co-authored-by: Shane <shane@shanessite.net>
Issue number: internal --------- ## What is the new behavior? Spec tests in `packages/react` use `@types/jest@^29`. ## Does this introduce a breaking change? - [ ] Yes - [X] No
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`24.13.3` → `24.13.4`](https://renovatebot.com/diffs/npm/@types%2fnode/24.13.3/24.13.4) |  |  | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC43MS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNzEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github/codeql-action](https://redirect.github.com/github/codeql-action) | action | minor | `v4.37.9` → `v4.38.0` | --- ### Release Notes <details> <summary>github/codeql-action (github/codeql-action)</summary> ### [`v4.38.0`](https://redirect.github.com/github/codeql-action/releases/tag/v4.38.0) [Compare Source](https://redirect.github.com/github/codeql-action/compare/v4.37.9...v4.38.0) - On GitHub-hosted runners, the CodeQL Action now deletes unused CodeQL bundles from the toolcache before downloading a different bundle, which frees up disk space for the analysis. We expect to roll this change out to everyone in September. [#​4124](https://redirect.github.com/github/codeql-action/pull/4124) - The CodeQL Action now supports CodeQL releases that are compatible with Linux Arm64 and downloads the native `linux-arm64` CodeQL bundle when available. [#​4072](https://redirect.github.com/github/codeql-action/pull/4072) - Update default CodeQL bundle version to [2.27.0](https://redirect.github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.0). [#​4129](https://redirect.github.com/github/codeql-action/pull/4129) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC43MS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNzEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…nt is clicked (#31423) Issue number: resolves internal --------- ## What is the current behavior? Clicking content in the `start` or `end` slot behaves differently in each form control. `ion-input` and `ion-textarea` emit the click event **twice**, while `ion-select` emits **once** but does not respond to the click at all. The duplicate comes from the browser rather than from Ionic emitting twice. The wrapping `<label>` forwards the click to the native control, and that forwarded click is re-emitted from the host. Browsers skip this forwarding when the click lands on interactive content, which is why slotted buttons were never affected. `ion-select` separately cancels the default action on every slotted click. A slotted link does not navigate and a slotted checkbox does not toggle, while the same markup works in `ion-input`. ## What is the new behavior? - Clicking slotted content emits a single click event from all three components. - Decorative slotted content now activates the control: `ion-input` and `ion-textarea` focus, `ion-select` opens. - Interactive slotted content, such as a button or a link, keeps its own behavior and does not activate the control. - Slotted links and form controls work inside `ion-select`. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Previews: - [Input](https://ionic-framework-git-fw-7677-ionic1.vercel.app/src/components/input/test/slot) - [Textarea](https://ionic-framework-git-fw-7677-ionic1.vercel.app/src/components/textarea/test/slot) - [Select](https://ionic-framework-git-fw-7677-ionic1.vercel.app/src/components/select/test/slot) --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
…wide (#31435) Issue number: resolves internal --------- ## What is the current behavior? With a start-positioned label and a wide start or end slot, the editable area of `ion-input` and `ion-textarea` collapses to **0px**. The value is not merely cramped, it is gone, so the user cannot see what they are typing. `ion-select` looks like it already solves this, because `.select-text` carries a `min-width`. It does not. `.native-wrapper` collapses to **0px** and clips the text away, so the selected value is invisible too and that floor has never had any effect. ## What is the new behavior? - The editable area of `ion-input` and `ion-textarea` now keeps a minimum width, so the value stays visible however wide the slotted content is. - The floor is `2ch` rather than a pixel value, so the same two characters stay visible as text scales. A pixel floor degrades to roughly **1.2 characters** at a 24px base font. - `ion-textarea` also needed its `.native-wrapper` floored. The `min-width: inherit` it carried computed to `0px`, so the textarea kept its width but spilled outside the field border. - `ion-select` reads the same variable so the three cannot drift. Its only visible change is **2px** on the `fit-content` snapshot. **`ion-select` still shows no selected text when slotted content is wide, and this PR does not change that.** Sharing the variable is not enough for select, because `.native-wrapper` gives up all of its width to the label and hides its overflow, so any floor on `.select-text` is clipped to nothing. Fixing it means changing how that wrapper trades width with the label, which is FW-7682. The two select tests added here are skipped with `TODO(FW-7682)` and are the ready-made coverage for it, so once the wrapper keeps its width, select picks up the shared floor and the tests can be unskipped. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Material solves this differently, and its approach does not port. It caps the leading and trailing slots so oversized content contributes no width, then floors the *container* at `min-content` so the field overflows outward instead of collapsing inward. `min-content` on our input measures `0px`, so the floor has to sit on the editable element instead. Capping the slots is FW-7650, and it is the change that actually removes the pressure here: it takes the worst case budget from **46px** to about **148px**. Wide glyphs can still clip an unfocused leading character, since `ch` measures the `0` glyph. Fitting them needs 24px out of a 46px budget shared with the label, which costs the label its ellipsis, and typing scrolls the caret into view regardless. Previews: - [Input: Slot](https://ionic-framework-git-fw-7679-ionic1.vercel.app/src/components/input/test/slot) - [Textarea: Slot](https://ionic-framework-git-fw-7679-ionic1.vercel.app/src/components/textarea/test/slot) - [Select: Slot](https://ionic-framework-git-fw-7679-ionic1.vercel.app/src/components/select/test/slot)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@stencil/core](https://stenciljs.com/) ([source](https://redirect.github.com/stenciljs/core)) | [`4.44.2` → `4.45.0`](https://renovatebot.com/diffs/npm/@stencil%2fcore/4.44.2/4.45.0) |  |  | --- ### Release Notes <details> <summary>stenciljs/core (@​stencil/core)</summary> ### [`v4.45.0`](https://redirect.github.com/stenciljs/core/blob/HEAD/CHANGELOG.md#-4450-2026-09-12) [Compare Source](https://redirect.github.com/stenciljs/core/compare/v4.44.2...v4.45.0) ##### Bug Fixes - **compiler:** stop double `transformTag` wrap ([#​6884](https://redirect.github.com/stenciljs/core/issues/6884)) ([6480675](https://redirect.github.com/stenciljs/core/commit/648067564221aa86778c8a8991dd28bba474949c)) - **runtime:** create new element for new child when keyed tag changes ([#​6885](https://redirect.github.com/stenciljs/core/issues/6885)) ([3743c44](https://redirect.github.com/stenciljs/core/commit/3743c445f4451ae252fc152bf9192f9652c41963)) - **runtime:** lazy getter / setter queue last set value ([#​6883](https://redirect.github.com/stenciljs/core/issues/6883)) ([36404ac](https://redirect.github.com/stenciljs/core/commit/36404acd3331271e4a531bc6d77eceeb510fcbdc)) - **compiler:** scope-css process layer selectors ([#​6858](https://redirect.github.com/stenciljs/core/issues/6858)) ([635f1d4](https://redirect.github.com/stenciljs/core/commit/635f1d4b6ccf871ebc545b58c0a619f629475710)), closes [#​6857](https://redirect.github.com/stenciljs/core/issues/6857) - **ssr:** abort stuck component and in-flight fetch() on hydrate timeout ([#​6881](https://redirect.github.com/stenciljs/core/issues/6881)) ([cf5982e](https://redirect.github.com/stenciljs/core/commit/cf5982e202a89a3b6aa848f71fc3e72dcc519842)) - **testing:** await puppeteer executablePath() for puppeteer >= 25 ([#​6882](https://redirect.github.com/stenciljs/core/issues/6882)) ([#​6886](https://redirect.github.com/stenciljs/core/issues/6886)) ([67fa599](https://redirect.github.com/stenciljs/core/commit/67fa5990b2c7f92215d23ed58c19f0b0988af500)) - **types:** loosen greedy `aria${string}` type ([#​6880](https://redirect.github.com/stenciljs/core/issues/6880)) ([3d0371e](https://redirect.github.com/stenciljs/core/commit/3d0371e7fd14f0b00dd49331fedd5def924d24e9)) #### 🌜 [4.44.2](https://redirect.github.com/stenciljs/core/compare/v4.44.1...v4.44.2) (2026-08-26) ##### Bug Fixes - **runtime:** reflected any-typed props ([#​6849](https://redirect.github.com/stenciljs/core/issues/6849)) ([0ead28c](https://redirect.github.com/stenciljs/core/commit/0ead28ca9f3df241ab66dfcd4b2d880be14f2add)) #### 🐠 [4.44.1](https://redirect.github.com/stenciljs/core/compare/v4.44.0...v4.44.1) (2026-08-21) ##### Bug Fixes - **compiler:** track type query references ([#​6825](https://redirect.github.com/stenciljs/core/issues/6825)) ([4c90b3b](https://redirect.github.com/stenciljs/core/commit/4c90b3b41c3f8b389e47749787fc6a7e0358b86a)), closes [#​2482](https://redirect.github.com/stenciljs/core/issues/2482) - **runtime:** fix performance mark error in `dist-custom-elements` output ([#​6840](https://redirect.github.com/stenciljs/core/issues/6840)) ([b1f89b6](https://redirect.github.com/stenciljs/core/commit/b1f89b626bcc6c976016b37edbcdc1c1832ce93a)) - **runtime:** guard against null parent in insertBefore ([#​6836](https://redirect.github.com/stenciljs/core/issues/6836)) ([170039a](https://redirect.github.com/stenciljs/core/commit/170039a28bfde8216b7268daac2934b76874e042)) - **runtime:** reflected boolean attributes ([#​6838](https://redirect.github.com/stenciljs/core/issues/6838)) ([0a7e130](https://redirect.github.com/stenciljs/core/commit/0a7e1305ef046364e9a2670166960d7295bdc0da)) - **types:** defineCustomElements ([#​6839](https://redirect.github.com/stenciljs/core/issues/6839)) ([8b06d1d](https://redirect.github.com/stenciljs/core/commit/8b06d1d0c9107af0e0387af9de01399b5a6645b2)) ##### Features - **types:** added `focusgroupstart` property ([#​6829](https://redirect.github.com/stenciljs/core/issues/6829)) ([b583bf3](https://redirect.github.com/stenciljs/core/commit/b583bf3aaa52b5fb658701a9983cb16ff200b5fe)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC43OS4xIiwidXBkYXRlZEluVmVyIjoiNDQuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`8.5.1` → `8.5.2`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.5.1/8.5.2) |  |  | --- ### Release Notes <details> <summary>ionic-team/capacitor (@​capacitor/core)</summary> ### [`v8.5.2`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#852-2026-09-11) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/8.5.1...8.5.2) ##### Bug Fixes - **android:** add null checks for plugin annotation when retrieving permissions ([#​8400](https://redirect.github.com/ionic-team/capacitor/issues/8400)) ([035b16a](https://redirect.github.com/ionic-team/capacitor/commit/035b16aca15eab136efc49eaec64b45987cfefeb)) - **ios:** do not forward scene lifecycle events to the page before it has loaded ([#​8595](https://redirect.github.com/ionic-team/capacitor/issues/8595)) ([c567328](https://redirect.github.com/ionic-team/capacitor/commit/c567328d0feb90c306ea824edc5a799bdfe26542)) - resolve issues with safe area / systembars plugin ([#​8535](https://redirect.github.com/ionic-team/capacitor/issues/8535)) ([e37d9c6](https://redirect.github.com/ionic-team/capacitor/commit/e37d9c60785368acf2a83cfd4c20f47076672bdd)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC43OS4xIiwidXBkYXRlZEluVmVyIjoiNDQuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…31413) Issue number: resolves #31149 --------- ## What is the current behavior? Setting `--height` to any of the following on an `ion-modal` containing an `ion-content` results in the `ion-content` collapsing to `0` height: `auto`, `fit-content`, `min-content`, or `max-content`. ## What is the new behavior? - Checks if modal `--height` is set to `auto`, `fit-content`, `min-content,` or `max-content` and styles the `ion-content`, `ion-nav` and `.ion-page` appropriately if so - Watches for changes to `--height` on `ion-modal` to dynamically add and remove the class that sizes the `ion-content` to its content - Updates modal `--max-height` to `100%` which allows the content to scroll instead of overflowing and being clipped - Adds a preview test for different scenarios where `ion-modal` has `--height` set - Adds e2e tests for the various `--height` scenarios - Updates `safe-area-utils` to account for the new content-sized modals - Adds spec tests for all new functions ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information **Dev build**: `9.0.1-dev.11788212611.154b1596` **Previews**: - [Modal: Content Height](https://ionic-framework-git-fw-7731-ionic1.vercel.app/src/components/modal/test/content-height) - [Modal: Safe Area](https://ionic-framework-git-fw-7731-ionic1.vercel.app/src/components/modal/test/safe-area) **Docs PR**: ionic-team/ionic-docs#4689 --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [vitest](https://vitest.dev) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`5.0.0` → `5.0.1`](https://renovatebot.com/diffs/npm/vitest/5.0.0/5.0.1) |  |  | --- ### Release Notes <details> <summary>vitest-dev/vitest (vitest)</summary> ### [`v5.0.1`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v5.0.1) [Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v5.0.0...v5.0.1) ##### 🚀 Features - **ui**: - Move trace attempts selector to viewer header - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **Codex** in [#​11189](https://redirect.github.com/vitest-dev/vitest/issues/11189) [<samp>(5dc4b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5dc4b5c92) - Add focused trace view layout mode - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and **Codex** in [#​11190](https://redirect.github.com/vitest-dev/vitest/issues/11190) [<samp>(376dc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/376dc3bc1) ##### 🐞 Bug Fixes - Exit 1 when vitest list fails collection - by [@​hamed-bavar](https://redirect.github.com/hamed-bavar) in [#​11145](https://redirect.github.com/vitest-dev/vitest/issues/11145) and [#​11146](https://redirect.github.com/vitest-dev/vitest/issues/11146) [<samp>(6108b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6108b8197) - Keep parse error details in static collection - by [@​hamed-bavar](https://redirect.github.com/hamed-bavar) in [#​11150](https://redirect.github.com/vitest-dev/vitest/issues/11150) and [#​11151](https://redirect.github.com/vitest-dev/vitest/issues/11151) [<samp>(7c818)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7c818153a) - Avoid recursive prototype in automocking - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11195](https://redirect.github.com/vitest-dev/vitest/issues/11195) [<samp>(99fc5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/99fc52591) - Prevent false Vitest import resolution - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11196](https://redirect.github.com/vitest-dev/vitest/issues/11196) [<samp>(b426c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b426c1976) - Keep metadata file when clearing the cache - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11199](https://redirect.github.com/vitest-dev/vitest/issues/11199) [<samp>(73614)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/73614654a) - Correct typos in error message and comments - by [@​shinji00222](https://redirect.github.com/shinji00222) and **Shinji** in [#​11187](https://redirect.github.com/vitest-dev/vitest/issues/11187) [<samp>(115c3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/115c3f6d2) - Resolve ResolvedConfig exactOptionalPropertyTypes errors - by [@​LukeAbby](https://redirect.github.com/LukeAbby) in [#​11175](https://redirect.github.com/vitest-dev/vitest/issues/11175) [<samp>(498fb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/498fbe922) - Share the server on self-referencing `extends` - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11034](https://redirect.github.com/vitest-dev/vitest/issues/11034) [<samp>(23dda)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/23dda738c) - Warn when deprecated `deps.optimizer.web` is used - by [@​im10furry](https://redirect.github.com/im10furry) in [#​11214](https://redirect.github.com/vitest-dev/vitest/issues/11214) [<samp>(2ce29)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2ce29d5fa) - **browser**: - Avoid double quotes in `config.define` - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11198](https://redirect.github.com/vitest-dev/vitest/issues/11198) [<samp>(972e2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/972e24bab) - **doctor**: - Measure vm pools for custom environments - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11212](https://redirect.github.com/vitest-dev/vitest/issues/11212) [<samp>(91ab1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/91ab1588c) - **expect**: - Correct return value in `toMatchAriaSnapshot` - by [@​sheremet-va](https://redirect.github.com/sheremet-va) in [#​11208](https://redirect.github.com/vitest-dev/vitest/issues/11208) [<samp>(c119b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c119be016) - **fakeTimers**: - Force `queueMicrotask` and `nextTick` in `toNotFake` - by [@​kingmakeruix](https://redirect.github.com/kingmakeruix), **kingmakeruix**, **Hiroshi Ogawa**, **Codex** and [@​hi-ogawa](https://redirect.github.com/hi-ogawa) in [#​11261](https://redirect.github.com/vitest-dev/vitest/issues/11261) [<samp>(a47d7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a47d7908f) - **snapshot**: - Report obsolete keys next to skipped tests - by [@​hamed-bavar](https://redirect.github.com/hamed-bavar), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​11157](https://redirect.github.com/vitest-dev/vitest/issues/11157) and [#​11158](https://redirect.github.com/vitest-dev/vitest/issues/11158) [<samp>(17e2b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/17e2b22dd) - **types**: - Make public declarations self-contained - by [@​ZoeySigel](https://redirect.github.com/ZoeySigel) in [#​11141](https://redirect.github.com/vitest-dev/vitest/issues/11141) [<samp>(45546)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/455466c16) - **ui**: - Fix collapse/expand suite with file name search - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **Codex** in [#​11260](https://redirect.github.com/vitest-dev/vitest/issues/11260) [<samp>(0a712)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0a7122daa) - Fix explorer file summary count - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and **Codex** in [#​11125](https://redirect.github.com/vitest-dev/vitest/issues/11125) [<samp>(05982)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/05982297d) - **utils**: - Fix `deepMerge` to handle prototype - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **Codex** in [#​11215](https://redirect.github.com/vitest-dev/vitest/issues/11215) [<samp>(4944c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4944cf498) ##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v5.0.0...v5.0.1) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC45My40IiwidXBkYXRlZEluVmVyIjoiNDQuOTMuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`24.13.4` → `24.13.5`](https://renovatebot.com/diffs/npm/@types%2fnode/24.13.4/24.13.5) |  |  | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC45My40IiwidXBkYXRlZEluVmVyIjoiNDQuOTMuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
v9.0.4
) Issue number: resolves #30626 --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> The native `button` inside `ion-button` is not being updated with the aria-attributes if it changes on `ion-button` after initial render, including `aria-description`. Additionally, the same dynamic is happening with other button like elements, including `ion-card` and `ion-item`. ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> The native `button` inside `ion-button` updates with the aria attributes if it changes on `ion-button`. Changes include: - Add 2 helper functions to [helpers.ts](http://helpers.ts/) - A mutation observer watching for all attribute changes. - One which watches only for aria attribute changes, which calls the mutation observer. - Add 4 tests to [button.e2e.ts](https://github.com/ionic-team/ionic-framework/blob/main/core/src/components/button/test/a11y/button.e2e.ts) in a11y: - One which loops through each aria attribute (imported from the helper) using `ariaAttributes` - One which specifically tests `aria-disabled` since it is managed in `render()` separately. Render forced with prop change. - One which looks at detaching and reattaching behavior - One which tests the helper strips, sets, accepts empty strings, and can process removeAttribute - Update [button.tsx](https://github.com/ionic-team/ionic-framework/blob/main/core/src/components/button/button.tsx) to: - Add import of new helpers watchForAriaAttributeChanges, type AttributeWatcher from '@utils/helpers' - Add `private ariaWatcher?: AttributeWatcher;` to class Button - Add `private didLoad = false;` for conditional use in `connectedCallback`and use in added `componentDidLoad` for starting the watcher after initial component load - Remove previous [watch block](https://github.com/ionic-team/ionic-framework/blob/b4b2603210b313fc2f2ee2c88b9112751e24b338/core/src/components/button/button.tsx#L161-L181) since now handled by helper - In `item.tsx`, - Add `ariaWatcher` and `watchForAriaAttributeChanges`, replicating functionality of the watch block, only applying to `aria-label` currently - Use existing`private didLoad = false;` for conditional use in `connectedCallback`and use in existing `componentDidLoad` for starting the watcher after initial component load - In `item.e2e.test`, add tests to ensure: - native element updates aria-label when host attribute changes - aria-label sync survives detach and reattach - helper strips host attribute and syncs native element through set, empty, and remove - In `card.tsx`, - Add `ariaWatcher` and `watchForAriaAttributeChanges`, replicating functionality of the watch block, only applying to `aria-label` currently - Add `private didLoad = false;` for conditional use in `connectedCallback`and use in added `componentDidLoad` for starting the watcher after initial component load - In `card.e2e.test`, add tests to ensure: - native element updates aria-label when host attribute changes - aria-label sync survives detach and reattach - helper strips host attribute and syncs native element through set, empty, and remove ## Does this introduce a breaking change? - [ ] Yes - [x] No --------- Co-authored-by: ShaneK <shane@shanessite.net>
Issue number: internal --------- ## What is the current behavior? Several dependencies throughout the repo have postcss as a dependency. While it doesn't affect users, a vulnerability in postcss causes dependabot to log high severity alerts. ## What is the new behavior? - Bumped dependencies in vue and vue-router that were on the old postcss. - Added overrides for ng18, ng19, and ng20 test apps, which are stuck on older versions. - Ran `npm update` for all other packages that inherited postcss. This has a few side effects: - Bumps the `lockFileVersion` from 2 to 3, which accounts for most of the diff in the package-lock files. - Bumps the `react-router` from 5 to 6 in the React 18 test app package-lock. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information Core uses old versions of stylelint and stylelint-order that cannot be easily updated, and these use an old postcss with the vulnerability. --------- Co-authored-by: @anupamme --------- Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
Issue number: internal --------- ## What is the current behavior? The Vue package has two warnings that are printed regardless of the configured log level. ## What is the new behavior? - Export `printIonWarning` and `printIonError` from core, enabling packages to log messages with Ionic's configured log level. - Use `printIonWarning` in the Vue package instead of `console.warn` directly. This checks the log level before printing. ## Does this introduce a breaking change? - [ ] Yes - [X] No
Issue number: resolves #30919 --------- Supersedes #31047, which this builds on. @KanhaiyaPandey is credited as co-author on the commit. ## What is the current behavior? When a CSS `zoom` other than `1` applies to the popover, `ion-popover` renders incorrectly: it is positioned away from its trigger, and with `size="cover"` it is given the wrong width. This affects a documented workflow — adjusting the `html` zoom is the approach Ionic's documentation recommends for dynamic font scaling on Chrome for Android. The zoom factor is effectively applied twice. Geometry APIs (`getBoundingClientRect()` on the trigger, content and arrow, plus `clientX`/`clientY` for `reference="event"`) report values in the zoomed coordinate space. Those values are written straight into the inline `top`/`left`/`--width` styles on `.popover-content`, which are interpreted in the unzoomed layout space and then re-scaled by the browser. ## What is the new behavior? - The effective zoom is read from the **popover's own context** via `currentCSSZoom`, not from `document.documentElement`. This picks up a zoom applied anywhere above the popover and accounts for zoom accumulated across several ancestors. Where the property is unavailable, it falls back to the ratio between the element's bounding rect and its `offsetWidth`; differences below a small tolerance are treated as no zoom, since `offsetWidth` is integer-rounded and would otherwise report a phantom zoom. - Every rect-derived measurement is normalized by that factor: trigger and content rects, arrow dimensions, the `size="cover"` width, and the pointer coordinates used by `reference="event"`. - `innerWidth`/`innerHeight` are scaled into the same space. They are not affected by CSS `zoom`, so leaving them alone made the offscreen adjustment clamp against a viewport larger than the space actually available, letting the popover render past the edge of the screen. - Behavior is unchanged when no zoom is applied: the detected factor is exactly `1` and every normalization is a division by `1`. This mirrors how Floating UI addressed the same problem in floating-ui/floating-ui#3492 — `Element.currentCSSZoom` as both the value and the feature detector, with a default of `1` on engines that lack it. Their fix also had to scale the overflow bounds inside `detectOverflow()`, which is the same class of issue as the `innerWidth`/`innerHeight` point above. ## Does this introduce a breaking change? - [ ] Yes - [x] No The new `zoom` parameters on the popover positioning helpers are optional and default to `1`. Those helpers are internal to the component and are not part of the public API. ## Other information **Tests** Eight E2E tests in `core/src/components/popover/test/zoom/`, covering the review points raised on #31047: | Scenario | Covers | |---|---| | Zoom on `body`; accumulated zoom (`html` 1.2 × `body` 1.25) | zoom applied at levels other than `documentElement` | | `size="cover"` width matches the trigger | sizing, not just positioning | | `reference="event"` anchors to the pointer | pointer coordinates | | Arrow centred on the trigger (ios) | arrow positioning | | Popover stays within the viewport | offscreen adjustment | | Zoomed out (`0.8`) and zoomed in (`1.5`) | factors either side of 1 | All eight fail against `main` and pass with this change, so each one covers the regression rather than merely passing. These are functional assertions rather than screenshots: what is being verified is the popover's geometry relative to its trigger, and both boxes are read in the same coordinate space, so the relationship holds at any zoom level. No screenshot baselines are added. Unit tests in `core/src/components/popover/test/util.spec.ts` cover the zoom detection itself — the `currentCSSZoom` path, the `offsetWidth` fallback, the rounding tolerance — and the normalization of content, trigger and arrow measurements. **Verification** The spec suite passes in full: 82 files, 714 tests, no failures. The zoom tests are not skipped for any browser and pass on all three browser projects — Chromium, Firefox and WebKit — in both `ios` and `md` modes. Assertions use a 2px tolerance to absorb sub-pixel differences between engines. --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: KanhaiyaPandey <kanhaiyapandey2232@gmail.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github/codeql-action](https://redirect.github.com/github/codeql-action) | action | patch | `v4.38.0` → `v4.38.1` | --- ### Release Notes <details> <summary>github/codeql-action (github/codeql-action)</summary> ### [`v4.38.1`](https://redirect.github.com/github/codeql-action/releases/tag/v4.38.1) [Compare Source](https://redirect.github.com/github/codeql-action/compare/v4.38.0...v4.38.1) - The CodeQL Action now has experimental support for CodeQL releases for which per-language bundles are available. Per-language bundles support analysis for a single language and are therefore smaller than the combined bundles that allow analysis for all supported languages. As a result, per-language bundles take up less space on disk and are faster to download. We expect to roll this change out to everyone in the coming weeks. [#​4146](https://redirect.github.com/github/codeql-action/pull/4146) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMDMuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjEwMy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`24.13.5` → `24.13.6`](https://renovatebot.com/diffs/npm/@types%2fnode/24.13.5/24.13.6) |  |  | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMDMuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjEwMy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…1460) Issue number: resolves #30933 --------- ## What is the current behavior? Currently, an `ion-datetime` in a modal or popover sometimes opens with a blank calendar on iOS 26. The host is missing `datetime-ready`, so `.calendar-body` stays at `opacity: 0`. It doesn't happen every time, and when it does the calendar stays blank until the overlay is reopened. The `ion-datetime` component runs two IntersectionObservers on the same root and target, one that adds `datetime-ready` and one that removes it. WebKit reports an element that is still on screen as not intersecting, and it doesn't deliver that entry to every observer, so the removing observer tears the ready state down and the adding one never hears the recovery. ## What is the new behavior? The hidden-state observer now checks the host before tearing anything down. An overlay hides its contents with `display: none`, which leaves the host without a layout box, so a host that still has one is on screen and the entry is wrong. The `hasBeenIntersecting` flag added in #31108 is gone, because the same check covers the synthetic "not intersecting" entry that `observe()` fires when the host mounts offscreen. Both callbacks also read the last entry instead of the first, since a batched callback's first entry can be stale. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information I reproduced this on an iOS 26.2 simulator, opening and dismissing the modal in a loop and checking `datetime-ready` after each open. Four extra observers on the same root and target recorded 54, 52, 54, 52 events over 25 cycles, which is where the per-observer delivery claim comes from. Same machine and everything, 150 cycles each: | build | blank calendar | | --- | --- | | main | 7 (4.7%) | | this branch | 0 | The e2e test stubs `IntersectionObserver` to report hidden while the datetime is on screen, since the WebKit misbehavior can't be forced on demand. It fails on all three browsers without the fix. The open/close cycle test guards against regressions but won't reproduce the glitch on its own. [Relevant test screen - iOS](https://ionic-framework-git-fix-30933-ionic1.vercel.app/src/components/datetime-button/test/overlays?ionic:mode=ios)
v9.0.5
Issue number: N/A (docs-only link fix)
---------
## What is the current behavior?
`docs/component-guide.md` links to Angular source files that no longer
exist, so every link in the "Angular value accessors" and "Interface
Exports" steps returns a 404 on GitHub:
-
`/packages/angular/src/directives/control-value-accessors/{text,numeric,boolean,select}-value-accessor.ts`
(5 links)
- `/packages/angular/src/index.ts`
`packages/angular/src/` now only contains `common/`, `lazy/` and
`standalone/`.
## What is the new behavior?
- The value accessor links point at
`packages/angular/src/lazy/directives/control-value-accessors/`, where
the four directives live (their selectors match the ones the guide
quotes).
- The Angular interface-export step points at
`packages/angular/src/lazy/index.ts` and
`packages/angular/src/standalone/index.ts`, which are the two files that
export the `*CustomEvent` / `*EventDetail` types today.
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
## Other information
Docs only, no code changes. Found and prepared with AI assistance
(Claude Code); I checked every new path exists on `main`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Issue number: internal --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> Currently, the `update-package-lock` job fails the release with `ETARGET No matching version found for @ionic/core@^9.0.x`. Since 9.0.4 npm processes publishes asynchronously, so `npm publish` returns before the version resolves. The registry recorded `@ionic/core` 4s after the publish step on 9.0.3, but 5m11s on 9.0.4 and 5m10s on 9.0.5, against a near constant 5m04s gap from publishing to that job, so the last two releases each missed by about six seconds and needed the job re-run by hand. Separately, `purge-cdn-cache` has never done anything. A missing comma before the `@next` CSS entry made the body invalid JSON, so jsDelivr rejected every purge with `InvalidContent` while `curl` exited 0 and the step stayed green. That has been true since #29121. ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> The `Bump Package Lock` step is split into `Resolve Package Locks`, which retries `lerna exec "npm install --package-lock-only --prefer-online"` every 15s against a 900s wall clock deadline, and `Commit Package Locks`, which does the commit and the push. We retry the install rather than probing with `npm view` first, because the two read separately cached documents and a passing probe wouldn't mean the install resolves. The `--prefer-online` flag is required because a failed install caches the version-less packument locally for 300s, so plain retries never reach the registry. The bound is wall clock rather than an attempt count since one attempt costs about 45s and a fixed count would overrun `timeout-minutes`. The `purge-cdn-cache` job now runs after `update-package-lock` and gates on a new `resolved` output rather than the job's result, so a failed lockfile push still purges but an unresolved version doesn't. The comma is fixed and the step checks the HTTP status, failing on a 4xx because a bad payload is otherwise silent, and warning on anything else so a jsDelivr outage doesn't fail a release. ## Does this introduce a breaking change? - [ ] Yes - [X] No ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> The `release.yml` workflow only runs on a real production release, so I couldn't test this end to end. I ran each step's shell against stubs for the failure paths, but the first real signal will be the next release.
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@stencil/core](https://stenciljs.com/) ([source](https://redirect.github.com/stenciljs/core)) | [`4.45.0` → `4.45.1`](https://renovatebot.com/diffs/npm/@stencil%2fcore/4.45.0/4.45.1) |  |  | --- ### Release Notes <details> <summary>stenciljs/core (@​stencil/core)</summary> ### [`v4.45.1`](https://redirect.github.com/stenciljs/core/blob/HEAD/CHANGELOG.md#-4451-2026-09-23) [Compare Source](https://redirect.github.com/stenciljs/core/compare/v4.45.0...v4.45.1) ##### Bug Fixes - **compiler:** correct CSS minifier selector-list splitting ([#​6895](https://redirect.github.com/stenciljs/core/issues/6895)) ([332a8fa](https://redirect.github.com/stenciljs/core/commit/332a8fad6358db92b21c8b69a669fd5e4b70d0a4)) - **docs:** derive CEM readonly from getter/setter instead of mutable ([#​6900](https://redirect.github.com/stenciljs/core/issues/6900)) ([1c81131](https://redirect.github.com/stenciljs/core/commit/1c81131f659dd0beaf9bdadd59d5f2a5f895dd38)) - **runtime:** pre-hydrate getter / setter attribute ([#​6890](https://redirect.github.com/stenciljs/core/issues/6890)) ([171d0ce](https://redirect.github.com/stenciljs/core/commit/171d0ce3f0b854cc848a324972c4371b6309743c)) - **ssr:** clear modeResolutionChain on `setMode`. Fixes memory leak ([#​6903](https://redirect.github.com/stenciljs/core/issues/6903)) ([ca9273d](https://redirect.github.com/stenciljs/core/commit/ca9273dfddd60b398725de65559f6a2f355ffe72)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMDMuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjEwMy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Issue number: N/A (docs-only link fix) --------- ## What is the current behavior? Two links in the Vue contributor docs point at sections that don't exist: - `docs/vue/testing.md` step 1 links "Build" to `../README.md#building`. `docs/README.md` has no Building section. - `packages/vue/README.md` links "test-app directory" to `test/README.md#syncing-local-changes`. `packages/vue/test/README.md` is now a two-line pointer with no such section; the syncing steps live in `docs/vue/testing.md`. ## What is the new behavior? - "Build" points at the Building section of `packages/vue/README.md`, which walks through building `core`, `packages/vue` and `packages/vue-router`, the three projects step 1 names. - The sync sentence links to `docs/vue/testing.md#syncing-local-changes` with an absolute GitHub URL, following the Contributing Guide link in the same README, so it also works on npmjs.com where this README is published. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Docs only, no code changes. Found and prepared with AI assistance (Claude Code); I checked both target headings exist on `main`, and ran a GitHub Copilot review over the diff. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
ShaneK
force-pushed
the
sync-next-with-main
branch
from
September 25, 2026 16:46
581d085 to
d772d3d
Compare
ShaneK
force-pushed
the
sync-next-with-main
branch
from
September 25, 2026 16:54
d772d3d to
f186dfe
Compare
ShaneK
force-pushed
the
sync-next-with-main
branch
from
September 25, 2026 17:00
f186dfe to
8eec8b7
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sync next with main.