ReviewOS

also looking at this

stacks/ts-tokens

chore(deps): update all non-major dependencies

#1999
Open renovate[bot] wants to merge renovate/all-minor-patch into main
10 files +311 -423
8 days ago

[!NOTE] This PR body was truncated due to platform limits.

This PR contains the following updates:

PackageChangeAgeAdoptionPassingConfidenceTypeUpdate
@inquirer/prompts (source)^8.2.1 → ^8.7.5ageadoptionpassingconfidencedependenciesminor
@playwright/test (source)^1.58.2 → ^1.64.1ageadoptionpassingconfidencedevDependenciesminor
@solana/spl-token^0.4.14 → ^0.4.15ageadoptionpassingconfidencepeerDependenciespatch
@solana/spl-token^0.4.14 → ^0.4.15ageadoptionpassingconfidencedevDependenciespatch
@solana/spl-token^0.4.14 → ^0.4.15ageadoptionpassingconfidencedependenciespatch
@solana/wallet-adapter-react>=0.15.39 → >=0.15.40ageadoptionpassingconfidencepeerDependenciespatch
@solana/wallet-adapter-react-ui>=0.9.39 → >=0.9.40ageadoptionpassingconfidencepeerDependenciespatch
@solana/web3.js (source)^1.98.4 → ^1.99.0ageadoptionpassingconfidencepeerDependenciesminor
@solana/web3.js (source)^1.98.4 → ^1.99.0ageadoptionpassingconfidencedevDependenciesminor
@solana/web3.js (source)^1.98.4 → ^1.99.0ageadoptionpassingconfidencedependenciesminor
@stacksjs/clapp^0.2.0 → ^0.2.16ageadoptionpassingconfidencedependenciespatch
@storybook/react (source)^10.2.10 → ^10.6.5ageadoptionpassingconfidencedevDependenciesminor
@storybook/react-vite (source)^10.2.10 → ^10.6.5ageadoptionpassingconfidencedevDependenciesminor
@testing-library/react^16.3.2 → ^16.3.3ageadoptionpassingconfidencedevDependenciespatch
@types/bun (source)^1.3.9 → ^1.4.4ageadoptionpassingconfidencedevDependenciesminor
@types/node (source)^25.2.3 → ^25.9.9ageadoptionpassingconfidencedevDependenciesminor
@types/react (source)^19.2.14 → ^19.3.0ageadoptionpassingconfidencedevDependenciesminor
@types/react-dom (source)^19.2.3 → ^19.3.0ageadoptionpassingconfidencedevDependenciesminor
@types/vscode (source)^1.109.0 → ^1.144.0ageadoptionpassingconfidencedevDependenciesminor
@vitejs/plugin-vue (source)^6.0.0 → ^6.0.10ageadoptionpassingconfidencedevDependenciespatch
@vue/test-utils^2.4.6 → ^2.5.1ageadoptionpassingconfidencedevDependenciesminor
actions/checkoutv6.0.2 → v6.1.0ageadoptionpassingconfidenceactionminor
better-dx^0.2.6 → ^0.2.38ageadoptionpassingconfidencedevDependenciespatch
better-dx^0.2.15 → ^0.2.38ageadoptionpassingconfidencedevDependenciespatch
bun-plugin-dtsx (source)^0.11.1 → ^0.11.23ageadoptionpassingconfidencedevDependenciespatch
bunfig^0.15.6 → ^0.15.21ageadoptionpassingconfidencepeerDependenciespatch
ora^9.3.0 → ^9.4.1ageadoptionpassingconfidencedependenciesminor
oven-sh/setup-bunv2.1.2 → v2.2.0ageadoptionpassingconfidenceactionminor
react (source)^19.2.4 → ^19.3.1ageadoptionpassingconfidencepeerDependenciesminor
react (source)^19.2.4 → ^19.3.1ageadoptionpassingconfidencedevDependenciesminor
react-dom (source)>=19.2.4 → >=19.3.1ageadoptionpassingconfidencepeerDependenciesminor
react-dom (source)^19.2.4 → ^19.3.1ageadoptionpassingconfidencedevDependenciesminor
shivammathur/setup-php2.37.1 → 2.40.0ageadoptionpassingconfidenceactionminor
stacksjs/action-releaserv1.2.9 → v1.2.11ageadoptionpassingconfidenceactionpatch
storybook (source)^10.2.10 → ^10.6.5ageadoptionpassingconfidencedevDependenciesminor
vite (source)^7.1.0 → ^7.3.7ageadoptionpassingconfidencedevDependenciesminor
vscode^1.109.0 → ^1.144.0ageadoptionpassingconfidenceenginesminor
vue (source)^3.5.28 → ^3.5.44ageadoptionpassingconfidencepeerDependenciespatch
vue (source)^3.5.28 → ^3.5.44ageadoptionpassingconfidencedevDependenciespatch

Release Notes

SBoudrias/Inquirer.js (@​inquirer/prompts)

v8.7.5

Compare Source

@​inquirer/prompts@8.7.5

What's new
  • Dependencies updated: @inquirer/password@5.2.5 fixes the cursor overlapping the message when the password prompt is empty (#​2360), and @inquirer/core@12.0.6 fixes piped-stdin answers being dropped before the first render (#​2359)

v8.7.4

Compare Source

@​inquirer/prompts@8.7.4

What's new
  • checkbox() no longer accepts edits or submissions while an async validator is pending — the selection is captured at submit time, and repeated Enter presses don't run the validator more than once (@inquirer/checkbox, #​2296).
  • Prompt output no longer leaks when a prompt is cancelled or aborted before its first render — the deferred initial render is now cancelled during cleanup, so a settled prompt never writes to an ended output stream or reinstalls keypress listeners (@inquirer/core, #​2318, relates to #​1816).
  • number() now treats whitespace-only input as empty, so a space-padded submit resolves to the default/undefined answer instead of a validation error (@inquirer/number, #​2307).
  • Packages with only test-file changes are no longer version-bumped at release time (internal tooling; #​2319).
Included
  • @inquirer/checkbox@^5.2.7
  • @inquirer/confirm@^6.3.4
  • @inquirer/editor@^5.3.5
  • @inquirer/expand@^5.1.7
  • @inquirer/input@^5.1.8
  • @inquirer/number@^4.2.5
  • @inquirer/password@^5.2.4
  • @inquirer/rawlist@^5.3.7
  • @inquirer/search@^4.3.5
  • @inquirer/select@^5.2.7

v8.7.3

Compare Source

@​inquirer/prompts@8.7.3

What's new
  • search() no longer submits a stale choice when Enter is pressed while an async search is still loading — the prompt waits for the fresh results, the query is preserved, and repeated Enter presses during validation no longer run the async validator more than once (@inquirer/search, #​2291, closes #​2290).
  • confirm() now always accepts the single keystrokes y/n even with localized keywords, and unrecognized input no longer silently falls back on the default answer (@inquirer/confirm, #​2281, closes #​2279).
  • expand() and rawlist() now ignore surrounding whitespace in answers (@inquirer/expand, @inquirer/rawlist, #​2280).
  • All package READMEs now document the Deno install command (deno add npm:@inquirer/prompts) alongside the npm/yarn/pnpm/bun ones (#​2269).
Included
  • @inquirer/checkbox@^5.2.6
  • @inquirer/confirm@^6.3.3
  • @inquirer/editor@^5.3.4
  • @inquirer/expand@^5.1.6
  • @inquirer/input@^5.1.7
  • @inquirer/number@^4.2.4
  • @inquirer/password@^5.2.3
  • @inquirer/rawlist@^5.3.6
  • @inquirer/search@^4.3.4
  • @inquirer/select@^5.2.6

v8.7.2

Compare Source

@​inquirer/prompts@8.7.2

What's new
  • Fixed a race where keystrokes batched in the same tick as the key that settled a prompt could still reach keypress handlers after the prompt was done, cancelled, or aborted (@inquirer/core, #​2255, closes #​1816).
  • confirm() now trims surrounding whitespace from answers before matching yes/no keywords (@inquirer/confirm, #​2254).
Included
  • @inquirer/checkbox@^5.2.5
  • @inquirer/confirm@^6.3.2
  • @inquirer/editor@^5.3.3
  • @inquirer/expand@^5.1.5
  • @inquirer/input@^5.1.6
  • @inquirer/number@^4.2.3
  • @inquirer/password@^5.2.2
  • @inquirer/rawlist@^5.3.5
  • @inquirer/search@^4.3.3
  • @inquirer/select@^5.2.5

v8.7.1

Compare Source

@​inquirer/prompts@8.7.1

What's new
  • All bundled prompts now pin @inquirer/type to an exact version in their published manifests. Since these type definitions leak into consumers' tsc runs, a semver range on the types-only dependency could break downstream TypeScript builds without any change to Inquirer.js itself (#​2247, fixes #​2244).
Included
  • @inquirer/checkbox@^5.2.4
  • @inquirer/confirm@^6.3.1
  • @inquirer/editor@^5.3.2
  • @inquirer/expand@^5.1.4
  • @inquirer/input@^5.1.5
  • @inquirer/number@^4.2.2
  • @inquirer/password@^5.2.1
  • @inquirer/rawlist@^5.3.4
  • @inquirer/search@^4.3.2
  • @inquirer/select@^5.2.4

v8.7.0

Compare Source

@​inquirer/prompts@8.7.0

What's new
  • password gains the toggleMask option (ctrl+t to reveal the typed value).
  • confirm now matches localized yes/no answers per-locale.
  • Prettified prompt and theme types for better IDE display.
  • Added inquirer-grouped-checkbox to the community prompts list (#​2236).
Included
  • @inquirer/checkbox@^5.2.3
  • @inquirer/confirm@^6.3.0
  • @inquirer/editor@^5.3.1
  • @inquirer/expand@^5.1.3
  • @inquirer/input@^5.1.4
  • @inquirer/number@^4.2.1
  • @inquirer/password@^5.2.0
  • @inquirer/rawlist@^5.3.3
  • @inquirer/search@^4.3.1
  • @inquirer/select@^5.2.3

v8.6.0

Compare Source

@​inquirer/prompts@8.6.0

The all-in-one prompts package, re-exporting every individual prompt at its latest version.

Highlights

This release rides on @inquirer/core@12.0.0, which makes the useState setter accept a reducer/updater function. It also brings a new initialValue option to search, plus fixes for number, confirm, and editor.

What's new
  • @inquirer/search — new initialValue?: string option to pre-fill the search input (#​2205)
What's fixed
  • @inquirer/number — avoid floating-point step errors; accept explicit undefined as default (#​2166, #​2182)
  • @inquirer/confirm — accept explicit undefined as default (#​2182)
  • @inquirer/editor — accept explicit undefined as default (#​2182)
Included prompts
  • @inquirer/checkbox@5.2.2
  • @inquirer/confirm@6.2.0
  • @inquirer/editor@5.3.0
  • @inquirer/expand@5.1.2
  • @inquirer/input@5.1.3
  • @inquirer/number@4.2.0
  • @inquirer/password@5.1.2
  • @inquirer/rawlist@5.3.2
  • @inquirer/search@4.3.0
  • @inquirer/select@5.2.2

Note: This release depends on @inquirer/core@^12.0.0, which contains a breaking change to the useState setter type (it now accepts a reducer function). See the @inquirer/core@12.0.0 release notes for details.

v8.5.2

Compare Source

  • Fix security warnings in external-editor

v8.5.1

Compare Source

  • Rolled back mute-stream dependency from v4 to v3 to undo breaking compatible engines.
  • Added tooling to prevent regression of the above in the future. This surfaced our min engines already enforced a higher limit, so adjusted the explicit limits to match the current state.

v8.5.0

Compare Source

  • Feat: Read env variable INQUIRER_KEYBINDINGS to enable vim or emacs keybindings; making this a user preference instead of a library author preference. One caveat is doing so disable the search feature in the select prompt. Syntax: INQUIRER_KEYBINDINGS=vim,emacs.
  • Fix: Line wraps would sometime cause the cursor to be mispositioned relative to the input.
  • Chore: Bump dependencies.

v8.4.3

Compare Source

  • Fix: Windows rendering bug
  • Fix: Preserve exact literal types in choices array (Typescript only)
  • Fix: Allow input default value to be of type undefined (Typescript only)
  • Bump dependencies

v8.4.2

Compare Source

  • Fix: some Windows terminals would freeze and not react to keypresses.

v8.4.1

Compare Source

  • Improve expand prompt type inferrence.

v8.4.0

Compare Source

  • Feat: Added a loading message while validating editor prompt input.
  • Type improvement: Better type inference with checkbox, search and expand prompts.
  • Fix: editor prompt not always properly handling editor path on windows.

v8.3.2

Compare Source

  • Fix broken 8.3.1 release process.

v8.3.1

Compare Source

  • Bump dependencies

v8.3.0

Compare Source

  • Fix: Keypresses happening before a prompt is rendered are now ignored.
  • Fix (checkbox): Element who're both checked and disabled are now always included in the returned array.
  • Feat (select/checkbox): Cursor will now hover disabled options of the list; but they still cannot be interacted with. This prevents the cursor jumping ahead in ways that can be confusing.
  • Feat: various new theme options to make all prompts content localizable.

Finally, see our new @inquirer/i18n package!

microsoft/playwright (@​playwright/test)

v1.64.1

Compare Source

Bug Fixes
  • #​43247 [Bug]: _electron.launch intermittently loses a packaged app's first window since 1.64.0
  • #​43242 [Regression]: Chromium 155+ aborts a preflighted cross-origin redirect whenever any route is registered (net::ERR_ABORTED)

v1.64.0

Compare Source

🧰 WebMCP

New page.webmcp and frame.webmcp give access to the tools that a page registers through the experimental WebMCP browser API, so you can test them like any other part of your app:

const browser = await chromium.launch({ args: ['--enable-features=WebMCP'] });
const page = await browser.newPage();
await page.goto('https://example.com');

for (const tool of await page.webmcp.tools())
  console.log(tool.name, tool.description);

const result = await page.webmcp.callTool('add', { a: 2, b: 40 });
console.log(result.content[0].text); // "42"

Playwright MCP also supports WebMCP by default, with page-defined tools offered to the agent as webmcp_<tool>. Pass --no-webmcp to opt out.

playwright-cli exposes them as well:

playwright-cli webmcp-list
playwright-cli webmcp-call search_catalog --params '{"query":"cats"}'

🎬 Better videos

Videos can now be recorded at a custom frame rate, and the decorations for actions are styled with plain CSS:

// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    video: {
      mode: 'on',
      size: { width: 1920, height: 1080 },
      fps: 60,
      show: {
        actions: {
          style: {
            point: 'width: 20px; height: 20px; border-radius: 50%; background: red',
            highlight: 'outline: 2px solid #&#8203;333; background: rgba(0, 128, 255, .15)',
            title: 'font-size: 16px',
          },
        },
      },
    },
  },
});
  • New fps option in testOptions.video, recordVideo and screencast.start(). Firefox and WebKit currently capture up to 25 frames per second.
  • New style option takes CSS declarations for the point marker, the target highlight and the action title. It replaces the fontSize option, which is now deprecated.
  • The cursor stays visible at the last action point, survives navigations and travels along a natural, eased path.
  • Videos are encoded with VP9 instead of VP8, which takes less CPU and produces smaller files of the same or better quality.
  • All video options are also available in Playwright MCP and playwright-cli.

🎯 Test runner

  • New testProject.default option keeps a project in the config without running it by default. You can configure every browser you care about, and let a plain npx playwright test run just your favourite one:

    // playwright.config.ts
    import { defineConfig, devices } from '@playwright/test';
    
    export default defineConfig({
      projects: [
        { name: 'chromium', use: devices['Desktop Chrome'] },
        { name: 'firefox', use: devices['Desktop Firefox'], default: false },
        { name: 'webkit', use: devices['Desktop Safari'], default: false },
      ],
    });
    npx playwright test                     # runs chromium only
    npx playwright test --project=firefox   # runs firefox
    npx playwright test --project="*"       # runs all three, for example on CI
  • New --shuffle command line option schedules tests in a random order, which helps to find tests that accidentally depend on each other.

    npx playwright test --shuffle
    # Running 42 tests using 4 workers, shuffle seed 271828182
    # ...
    
    # Pass the seed to reproduce the same order.
    npx playwright test --shuffle 271828182
  • New lock option in test.describe.configure() adds test locks to all tests in a file or a group:

    test.describe.configure({ lock: 'user-settings' });
  • New type option of toHaveScreenshot in testConfig.expect stores all unnamed screenshots as WebP:

    // playwright.config.ts
    export default defineConfig({
      expect: {
        toHaveScreenshot: { type: 'webp' },
      },
    });

🪆 Locator.within()

New locator.within() combines two locators that you already have, reading in the natural order — "this button, within that dialog":

const saveButton = page.getByRole('button', { name: 'Save' });
const dialog = page.getByTestId('settings-dialog');

await saveButton.within(dialog).click();

Relative locators such as locator.nth() or locator.first() are resolved inside each parent separately, which makes column-like queries straightforward:

// The third cell of every row, not the third cell in the table.
const thirdColumn = page.getByRole('cell').nth(2).within(page.getByRole('row'));
await expect(thirdColumn).toHaveText(['Apple', 'Banana', 'Cherry']);

New APIs

Breaking changes ⚠️

  • screen property is now forwarded from the device descriptors. If you use ...devices['Desktop Chrome'] and alike, window.screen and media queries now see the emulated screen size. You can opt-out by explicitly setting screen to undefined:

    // playwright.config.ts
    export default defineConfig({
      use: {
        ...devices['Desktop Chrome'],
        screen: undefined,
      },
    });
  • JSX in your test files now follows your tsconfig.json. Playwright compiles JSX in test files according to the jsx, jsxFactory, jsxFragmentFactory and jsxImportSource tsconfig options, and defaults to the automatic runtime from react/jsx-runtime.

  • --update-snapshots=missing now passes the test run. Tests that only create missing snapshots now pass in the 'missing' mode of testConfig.updateSnapshots, so that CI can generate new snapshots and verify the existing ones in a single run. The mode used when the option is not specified is now called 'default' and behaves as before: missing snapshots are written and the test fails.

  • Elements inside hidden iframes are considered hidden. Elements inside an iframe that is not visible, for example with visibility: hidden, are now considered hidden by actions, locator.isVisible() and expect(locator).toBeVisible().

Browser Versions

  • Chromium 156.0.8078.4
  • Mozilla Firefox 157.0
  • WebKit 27.2

This version was also tested against the following stable channels:

  • Google Chrome 155
  • Microsoft Edge 155

v1.63.0

Compare Source

🔒 Test locks

Tests that access a shared resource — an external service, a global account setting — can now declare a named lock. Tests that share a lock name never run concurrently, across files, workers and projects, while everything else keeps running in parallel:

test('update user settings', { lock: 'user-settings' }, async ({ page }) => {
  // never runs at the same time as other tests holding 'user-settings'
});

A test can hold multiple locks, and test.describe() accepts a lock for the whole group. Learn more about test locks.

🪟 Locate across frames

page.frameLocator() and frame.frameLocator() called without a selector search in any frame of the subtree, so you no longer need to locate the iframe first:

// Finds the button in any frame on the page.
await page.frameLocator().getByRole('button').click();

The rest of the locator resolves inside a single frame, just like a regular locator, and an error is thrown when it matches elements in several frames.

👁️ Visible-only locators

New locator.visible() returns a locator that matches only visible elements. It is the recommended replacement for the :visible CSS pseudo-class:

await page.locator('button').visible().click();

🧾 Step params and subtitles

Steps now carry structured data for reporters. Playwright API steps report the target locator and call arguments, and test.step() accepts subtitle and params options for your own steps:

await test.step('Login', async () => {
  // ...
}, { subtitle: 'as admin', params: { user: 'admin' } });

Reporters receive them via testStep.subtitle and testStep.params. For Playwright API steps, the subtitle is the locator or the navigation url — for example, Click with subtitle getByRole('button'). Both are rendered next to the step title in the trace viewer and the HTML report.

🖼️ Aria and screen snapshots in traces

The snapshots option of tracing.start() and the testOptions.trace fixture option now accept an object selecting what to capture on every action:

// playwright.config.ts
export default defineConfig({
  use: {
    trace: {
      mode: 'on',
      snapshots: { dom: true, aria: true, screen: true }
    },
  },
});

With aria and screen snapshots recorded, the new Display Aria mode in the trace viewer shows the action screenshot side by side with the aria snapshot, and hovering an aria node highlights it on the screenshot.

New APIs

Browser and Context
Locators
const response = await request.get<User>('/api/users/42');
const user = await response.json(); // typed as User
Test runner
  • New standalone testOptions.reducedMotion, testOptions.forcedColors and testOptions.contrast options.
  • New --add-reporter command line option appends a reporter on top of the ones configured in playwright.config, instead of replacing them like --reporter does.
  • New omitTags option for the list, line, dot, github and junit reporters suppresses the tags that are automatically appended to test titles.
Command line
  • npx playwright install --no-remove keeps the browsers of other Playwright installations instead of removing them.
  • npx playwright codegen --http-credentials records against pages behind HTTP authentication.
Miscellaneous
  • New built-in perfetto reporter writes a Trace Event Format file for the Perfetto UI or chrome://tracing, rendering the test run as a timeline with a lane per worker.
  • The HTML report renders a duration waterfall next to test steps.

Announcements

  • ⚠️ The experimental @playwright/experimental-ct-react, @playwright/experimental-ct-react17 and @playwright/experimental-ct-vue packages will no longer be updated. Follow the migration guide to move to the stories model introduced in 1.62. Story ids passed to fixtures.mount() can now be typed through the generated Stories registry.
  • ⚠️ Ubuntu 20.04 is not supported anymore.
  • 🐧 On Linux arm64, Playwright now downloads the Chrome for Testing build of Chromium, the same build used on all other platforms.

Browser Versions

  • Ch

[!IMPORTANT] ✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

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

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

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

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

10 changed files on the files tab, with 0 review threads.

Sign in to comment on this pull request.