Repository navigation
Release: Prerelease 11.0.0-alpha.8 - #36905
Merged
ghengeveld merged 395 commits intoOct 23, 2026
Merged
Conversation
…nd selection (#36061) Signed-off-by: Samran Asif <samranwebdev2000@gmail.com>
…er span Spans without their parentheses made every copy, removal and insertion site re-derive them, and each one that forgot produced its own bug: parenthesized default exports, array elements, computed keys, satisfies wrappers and comma expressions. Parsing keeps parentheses, one pass replaces each ParenthesizedExpression by the node inside and records its outer span, so readers see the same tree and edits use outerSpan. placeableTextOf replaces placeableSource, placeableExpression, isParenthesized, withParentheses, exportDefaultKeywords and the React snippet's own copy. It also fixes a crash merging comma-expression story args and an eslint config edit that wrote inside a parenthesized array element. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…itives Lists, statements, addon-vitest's insertion point and JSDoc extraction each scanned comments their own way, and their rules drifted. They now share binary-searched trivia helpers, with one policy each for list items, statements and leading comments. Prepending or appending a statement goes after the comments beside the previous one instead of taking them, and removing an item no longer joins code onto a line comment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The editor kept CRLF and converted inserted text back, the printers stripped it again, and seven other places handled a stray CR. Source text is now normalized once before parsing, so offsets, edits and printed code are LF everywhere; lines and columns are unchanged, and source maps still name the file as written. Automigrations write the files they change with LF. writeCsf without a file name now writes back to the file it was read from. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`removeFromList` judged each removed item on its own whether the code after
it would join the line of a `//` comment before it. With two adjacent items
removed, the first removal kept the newline the second one then deleted, so
the next kept item ended up inside the comment:
composeStories, /* api */ // used below composeStory,
The output still parses, so the editor's reparse accepted it. A run of
adjacent removed items is now removed as one span and that check is made
once, against the code after the whole run.
Found by a differential test of 14,336 list removals.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Seven call sites inserted a statement after another one, each in its own way. Three inserted at the import's end, before the comments it owns, and so pushed a `// @ts-expect-error` beside it onto the wrong line. `insertStatementAfter(editor, statement, text)` now owns that: the new statement goes on its own line after the comments the statement owns, and code that shares that line moves below it. `insertAfterImports` builds on it for the common case of adding an import or declaration. `appendStatement`, `prependStatement`, `ConfigFile#setImport`, the Vitest config merge, the Angular Vitest setup, the args-mocks codemod and the React Native Metro setup all use them. `statementEnd` no longer counts a next-line directive beside the statement as the statement's own, so the directive keeps applying to the line below it. Inserting after an import that ends the file keeps the file without a final newline instead of adding one, as `appendStatement` already did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ckCalls `getAutomockCode` and `extractMockCalls` took a parser callback, a leftover from the Babel API. Their edits rely on what Storybook's own parse gives them: offsets into code with `\n` line endings, and the outer span of a parenthesized expression. Another ESTree parser gives neither, so the callback could only produce wrong output, such as `= x);` for `export default (x);`. Both now parse themselves. `getAutomockCode(code, isSpy, fileName)` takes the module's file name to pick the grammar, like `rewriteSbMockImportCalls(code, fileName)` already did, and `extractMockCalls(options, root, findMockRedirect)` drops the parser. `parseModuleAst` and its deprecated `babelParser` alias are removed. BREAKING CHANGE: builders that call `getAutomockCode` or `extractMockCalls` from `storybook/internal/mocking-utils` drop the parser argument. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e config
`importedExport` told a default import and `{ default as path }` apart,
so a config importing path that way fell back to manual setup. Both
read the module's default export, which for `node:path` is the same
object as its namespace.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gs intersections The CSF factory codemod joins the custom args types of a story with `&`. It parenthesized unions and function types, but not conditional and constructor types, so `A extends B ? C : D` intersected with `E` turned into `A extends B ? C : D & E`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
oxc-parser 0.153 maps the `browser` export condition to a WASM build that is not installed. The Svelte and docgen harness test projects resolve that condition, so every test that loads csf-tools there failed to import oxc-parser. Storybook parses in Node with the native binding, so the tests now do too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndings The LF note named only `storybook automigrate`, but the codemods, the setup steps of `storybook init` and `storybook add`, and the builders' transforms normalize line endings too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…h the shared primitives `getTopInsertionPosition` decided comment ownership on its own: only a comment at offset 0 counted as a file pragma, so the generated `require` landed between a `// @ts-expect-error` and the statement it is about. The ESM import now goes through `insertAfterImports` and the CommonJS require through `prependStatement`, which own those rules for every other insertion. The require no longer gets a blank line below it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Follow-ups to the statement primitives from review: - `insertStatementAfter` prefixes `;` when the text starts with `(`, `[`, a backtick, `+`, `-` or `/` and the statement before it has no `;`, so `[1].forEach(f)` no longer continues `const a = 1`. - Several statements inserted after one statement share one line break before the code moved below them, instead of each adding a blank line. At the end of a line, they go after the spaces ending it. - `removeStatement` takes the spaces between the statement and the code it shares its line with, so `foo(); bar();` without `bar` is `foo();`. - Dropping a trailing run from a list removes only the comma of the last kept item, not the comments around it. - The CSF meta and the Vitest component transform insert their `export default` with `insertStatementAfter`, and the CSF factory codemod appends to an export-less preview with `appendStatement`. - `insertStatementAfter` is no longer exported from `storybook/internal/csf-tools`: only core uses it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…imports go `prependStatement` had two rules: above the first statement, unless the file had a header such as a license, in which case after the leading imports. A new import's place so depended on a comment, and several prepends to a header-less file ended up in reverse order. `prependStatement` now has one rule: the first statement after the directives, above the comments it owns. The file header stays above it. `ConfigFile#setImport` adds a new import with `insertAfterImports`, so new imports follow the existing ones in the order they are added and existing imports keep their evaluation order. Visible in the automigrations: `getAbsolutePath` adds `dirname` before `fileURLToPath`, preview addon annotations follow the existing imports, and no blank line is added between a header-prepended import and the code below it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…builtins
`importedExport` keyed every default import like a namespace import.
That holds for `node:path`, whose default export is its namespace, but
not for a module in general. Default imports, including
`{ default as x }`, now key as `default`, which equals the namespace
only for a Node builtin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`getAutomockCode` is the entry point every builder uses. Nothing in the repo or among known external builders calls the vendored `automockModule` directly, so its signature change needs no migration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`csf._commit()` refreshed the story indexes, `csf._editor.commit()` did not, and codemods called the latter. Committing now always goes through the `SourceEditor`, which takes an `onCommit` callback: `CsfFile` and `ConfigFile` derive their state again from it, so `_commit` is gone and so is the `commit` member of `CsfObjectHost`. Nodes from before a commit index text that no longer exists, and editing with them silently corrupted the output. Each node of a printable parse already recorded its code; it now records its parse, so `editor.source()` and the editing primitives throw for a node of another parse with one WeakMap lookup. Raw `editor.edits` calls stay unguarded. `objectList` takes the editor like the other list constructors, so a list is checked where it is built. `ConfigFile._editorSource` is now `_editor`, so `_editor` is the `SourceEditor` on both files; the method that returned an object editor is `_objectEditor`. csf-2-to-3 reads its templates before committing, as the re-derived file no longer binds them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y SourceEditor
`SourceEditor.quote` took the first string literal (default `'`) while
`ConfigFile` took a majority vote (default `"`), and `preferredQuote` papered
over the disagreement. The editor now owns the one rule: the quote most string
literals use, with a tie going to the first literal. JSX attributes are left
out, since files that single-quote their code still double-quote JSX. A file
without string literals gets `"`, the default of Prettier, oxfmt and Biome,
which such a file is most likely formatted with. This changes generated
strings in story files without any string literal from `'` to `"` (one
codemod snapshot and one eslint test updated on purpose).
Indentation follows the same pattern: `indent` is the step from the file's
first multi-line block to its first item, else two spaces. `appendToList`,
`groupMembers`, `printMembers` and expanded `printValue` all use it, so a
tab-indented file no longer gets two-space lines from some edits.
Both are inferred once, from the code the editor was created with, so an edit
that removes the literals cannot flip the style mid-migration. This replaces
ConfigFile's `_inferQuotes`, `_quotes`, `_quote` and `preferredQuote`, and the
per-object `indentUnit`. Hand-built `${quote}…${quote}` strings now go through
`printString(value, editor.quote)`, including the `flat/recommended` key the
eslint setup wrote with fixed double quotes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adding the first item to an empty one-line list overwrote everything between
its delimiters, so `{ /* todo */ }` lost its comment. The items now go after
the comments that are there.
Every caller passed the padding of a one-line list (`''` for arrays, `' '` for
objects) at every call. It belongs to the list, so the constructors set
`List.padding` and the parameter is gone.
Items added to a one-line list now get their continuation lines indented like
the list's line, as they already did in multi-line lists, which makes
addon-vitest's `appendItems` workaround unnecessary. The template project
prepended to a one-line `projects` array is indented accordingly (snapshots
updated on purpose).
addon-vitest copied each template statement up to the start of the next one,
taking the next statement's leading comments along: the template's
"More info" comment above `export default` landed after the inserted imports.
`statementSpan` gives a statement with the comments it owns, the span
`removeStatement` removes, and the copy now uses it (snapshots updated on
purpose).
`argumentList` and `declaratorList` join the list constructors and replace the
hand-built lists in the eslint setup, ConfigObject and csf-2-to-3. The former
finds the `(` past type arguments, `?.` and comments, where a text search for
`(` could land inside a comment.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`wrapExpression(editor, node, before, after)` writes text around an expression and the parentheses written around it. Three callers wrapped by hand; the Metro config setup and the args-mocks codemod used the node's own span, which leaves the parentheses outside: `(setup(), config)` became `withStorybook(setup(), config)`, a call with two arguments. They now wrap the outer span, which keeps the comma expression one argument. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reading a node's text had three names: `textOf` returned `undefined` for a
node of unknown source, and `codeOf` and `printExpression` wrapped it to
throw. No caller wanted `undefined`, so `textOf` throws and the wrappers are
gone; `placeableTextOf` stays for placing text as a value.
Five functions read an object member's key. `identifierKey`, ConfigFile's
`propKey` and addon-vitest's `keyName` read `{ [foo]: 1 }` as key `foo`, so a
computed key could stand in for the field it shadows. `staticKey` is the one
reader left: it takes any member, reads a computed key only when it is a
literal, and returns `undefined` for spreads. story-shape's `keyOf` and
Angular's `keyNameOf` were the same function and are gone too. The
args-mocks codemod keeps a reader for member-access and import names, which
are not member keys, now called `nameOf`.
`ConfigFile._unwrap`, ConfigObject's `TS_WRAPPERS` and the args-mocks
`withoutTypeCast`/`isTypeCast` copied `unwrapExpression`; `isTSWrapper` now
names the wrapper test for walking up. ConfigObject's ASCII
`isValidIdentifier` accepted keywords as export names; the Unicode one in
ast.ts is the one kept. `Span` is declared once. config-to-csf-factory's
private `prependMembers` duplicated `prependToList`, which keeps the
comments of the first member with it (one snapshot updated on purpose).
`unwrapExpression` was exported twice, once as `unwrapESTreeExpression`; it
is exported once under its own name. story-shape's `sourceOf` meant "text on
one line" while ast.ts's means "slice of the code", so the former is
`oneLineTextOf`. Nothing outside csf-tools imported `printKey`,
`removeMembers`, `appendMembers`, `prependMembers`, `locationOf`,
`analyzeScopes` or `SourceLocation` through the entry point, so they are no
longer exported; callers use the list functions. enrichCsf's
`leadingComments` is private. The csf-tools README no longer says Babel.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Parsing normalizes line endings to `\n`, and until now every printer emitted `\n` too, so editing a CRLF file through automigrate, init, add, codemods or "save story" silently rewrote every line of it. Babel kept CRLF, so this was a regression of the port. SourceEditor.toString() now owns the rule: it restores CRLF when the first line break of the code it was created with is CRLF, and prints `\n` otherwise (lone CR files included). This is the same rule as Prettier's `endOfLine: 'auto'`, so a formatter that runs afterwards agrees with it. A single file-level decision keeps inserted code consistent with the rest of the file, instead of mixing endings. Node offsets, `code` and `edits` keep using `\n`; only the printed output changes, and lines and columns (so source maps) are unaffected. Everything that prints through the editor follows: printCsf, printConfig, formatCsf, the docs plugin, sb.mock rewrites and the Vitest transform. The Vitest transform joins its generated tail with `\n`, so it now restores line endings once over the whole output instead of mixing a CRLF head with an LF tail. The automigrate pipeline and fix-files still normalize on read: text handlers chain on each other's output and compare against the source, which only works on one line-ending form. They now restore the original line endings on write instead (before the project formatter runs in the pipeline), so the normalization stays an internal detail. Tests that asserted LF output for CRLF input now assert CRLF, which is the intended change. MIGRATION.md drops the note that files are written with `\n`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The transforms now parse with csf-tools and only read `path` and `source` from the file jscodeshift hands them, so they no longer need its `FileInfo` and `API` types. A `TransformFile` type in `src/lib/utils.ts` describes that file, and the unused `api` and `options` parameters are gone, so the tests call the transforms with the file alone. `jscodeshift` stays a dependency: `runCodemod` still spawns its CLI and `upgrade-hierarchy-separators.js` still uses its API. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Nothing calls `getBabelDependencies` anymore; its JSDoc still pointed at the react-native generator, which no longer uses it. Deleting it also drops the `satisfies` import from semver. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The sandbox task still used `printExpression`, `_editorSource` and `_commit()`, which no longer exist, so the scripts typecheck failed and the SvelteKit and module-mocking sandbox steps would throw. It now uses the shared list and statement helpers instead of hand-built appends, so the inserted argument, member and mock statements follow the file's layout, and `staticKey` instead of a local copy. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Only parsed text was normalized to `\n`, so inserted text that carried CRLF, such as a Prettier-formatted vitest setup file with `endOfLine: 'crlf'`, came out as `\r\r\n` in a CRLF file and as mixed endings in an LF file. `restoreLineEndings` now normalizes what it is given before choosing the ending, so the editor, the automigrate pipeline and fix-files all write one ending. That makes the CRLF special case for functions in `printValue` redundant. The print docstrings no longer claim byte-for-byte output: a file that mixes line endings is written with its first line's ending. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A `List` read before a commit holds offsets into code that is gone, and the list functions accepted it, so `appendToList` with a stale list silently wrote into the wrong place. The list constructors now record the parse they read, in the same map as the nodes, and the list functions assert it like they do for nodes. The error now names every way to hold a node of another parse, not only a commit: nodes from `parseExpression` or `get()` are read with `textOf`. MIGRATION.md no longer claims that every edit is checked; raw offsets passed to `_editor.edits` are not. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
`upgrade-deprecated-types` loaded the file as CSF only to reach its editor. Since `CsfFile` parses CSF again on every commit, a file without a default export or with a dynamic title now threw instead of having its types renamed. The codemod only renames imports and type references, so it edits a bare `SourceEditor`. csf-2-to-3 and story-to-csf-factory still commit a `CsfFile` several times, and each commit validates CSF again. If that ever rejects a file mid-transform, `onCommit` should mark the indexes stale and derive them lazily instead. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…endings
Three changes of the ESTree migration were missing from the guide: story
files now read string-literal keys and ignore computed identifier keys,
which changes story ids for `{ 'title': 'X' }`; `getBabelDependencies`
is gone from `storybook/internal/cli`; and a file that mixes line
endings is written with its first line's ending.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
storybook-bot
force-pushed
the
version-non-patch-from-11.0.0-alpha.7
branch
from
October 21, 2026 05:17
747bca5 to
1f67f82
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
WC: Keep properties named like an unrelated attribute
Docs: Update WC documentation for SB 11
storybook-bot
force-pushed
the
version-non-patch-from-11.0.0-alpha.7
branch
from
October 21, 2026 08:37
1f67f82 to
0362cfc
Compare
Agents: List Chromatic project IDs for the UI and sandboxes
storybook-bot
force-pushed
the
version-non-patch-from-11.0.0-alpha.7
branch
from
October 21, 2026 08:50
0362cfc to
b56e3a1
Compare
Docs: Add runtime WC manifest API deprecation to MIGRATION.md
storybook-bot
force-pushed
the
version-non-patch-from-11.0.0-alpha.7
branch
from
October 21, 2026 09:10
b56e3a1 to
a70943e
Compare
…ule-register Core: Skip TypeScript loader hook registration under Jest
storybook-bot
force-pushed
the
version-non-patch-from-11.0.0-alpha.7
branch
from
October 21, 2026 10:05
a70943e to
4df0137
Compare
…-test Builder Vite: Print the found Vite config path with forward slashes on Windows
storybook-bot
force-pushed
the
version-non-patch-from-11.0.0-alpha.7
branch
from
October 21, 2026 11:05
4df0137 to
25c9a4b
Compare
…iew-entry React: Alias preview React from the renderer preset
storybook-bot
force-pushed
the
version-non-patch-from-11.0.0-alpha.7
branch
from
October 21, 2026 11:49
25c9a4b to
26a1af7
Compare
Contributor
Package BenchmarksCommit: The following packages have significant changes to their size or dependencies:
|
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 68 | 62 | 🎉 -6 🎉 |
| Self size | 21.98 MB | 18.94 MB | 🎉 -3.04 MB 🎉 |
| Dependency size | 27.06 MB | 25.95 MB | 🎉 -1.11 MB 🎉 |
| Bundle Size Analyzer | Link | Link |
@storybook/angular-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 20 | 20 | 0 |
| Self size | 23.62 MB | 23.63 MB | 🚨 +14 KB 🚨 |
| Dependency size | 11.57 MB | 11.57 MB | 🚨 +2 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/svelte-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 12 | 12 | 0 |
| Self size | 56 KB | 56 KB | 🚨 +397 B 🚨 |
| Dependency size | 30.73 MB | 30.75 MB | 🚨 +13 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/sveltekit
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 13 | 13 | 0 |
| Self size | 58 KB | 59 KB | 🚨 +1 KB 🚨 |
| Dependency size | 30.79 MB | 30.80 MB | 🚨 +14 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/vue3-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 95 | 95 | 0 |
| Self size | 32 KB | 32 KB | 🎉 -24 B 🎉 |
| Dependency size | 18.78 MB | 18.76 MB | 🎉 -21 KB 🎉 |
| Bundle Size Analyzer | Link | Link |
@storybook/web-components-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 14 | 14 | 0 |
| Self size | 19 KB | 19 KB | 0 B |
| Dependency size | 25.52 MB | 25.50 MB | 🎉 -18 KB 🎉 |
| Bundle Size Analyzer | Link | Link |
@storybook/cli
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 174 | 174 | 0 |
| Self size | 884 KB | 891 KB | 🚨 +7 KB 🚨 |
| Dependency size | 83.25 MB | 81.25 MB | 🎉 -2.00 MB 🎉 |
| Bundle Size Analyzer | Link | Link |
@storybook/codemod
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 167 | 167 | 0 |
| Self size | 44 KB | 42 KB | 🎉 -3 KB 🎉 |
| Dependency size | 81.73 MB | 79.74 MB | 🎉 -1.99 MB 🎉 |
| Bundle Size Analyzer | Link | Link |
create-storybook
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 69 | 63 | 🎉 -6 🎉 |
| Self size | 1.07 MB | 1.07 MB | 🎉 -5 KB 🎉 |
| Dependency size | 49.04 MB | 44.88 MB | 🎉 -4.15 MB 🎉 |
| Bundle Size Analyzer | node | node |
@storybook/svelte
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 4 | 4 | 0 |
| Self size | 253 KB | 264 KB | 🚨 +11 KB 🚨 |
| Dependency size | 4.85 MB | 4.85 MB | 0 B |
| Bundle Size Analyzer | Link | Link |
@storybook/vue3
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 91 | 91 | 0 |
| Self size | 232 KB | 209 KB | 🎉 -23 KB 🎉 |
| Dependency size | 18.22 MB | 18.22 MB | 0 B |
| Bundle Size Analyzer | Link | Link |
@storybook/web-components
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 12 | 12 | 0 |
| Self size | 213 KB | 193 KB | 🎉 -20 KB 🎉 |
| Dependency size | 25.10 MB | 25.10 MB | 0 B |
| Bundle Size Analyzer | Link | Link |
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.
This is an automated pull request that bumps the version from `11.0.0-alpha.7` to `11.0.0-alpha.8`.
Once this pull request is merged, it will trigger a new release of version `11.0.0-alpha.8`.
If you're not a core maintainer with permissions to release you can ignore this pull request.
To do
Before merging the PR, there are a few QA steps to go through:
And for each change below:
This is a list of all the PRs merged and commits pushed directly to `next`, that will be part of this release:
If you've made any changes doing the above QA (change PR titles, revert PRs), manually trigger a re-generation of this PR with this workflow and wait for it to finish. It will wipe your progress in this to do, which is expected.
Feel free to manually commit any changes necessary to this branch after you've done the last re-generation, following the Make Manual Changes section in the docs, especially if you're making changes to the changelog.
When everything above is done:
Generated changelog
11.0.0-alpha.8