Release: Prerelease 10.5.0-alpha.8#35181
Open
github-actions[bot] wants to merge 274 commits into
Open
Conversation
Replace the close icon next to the active Review-changes CTA with the undo icon to better convey that clicking reverts the filter.
Vite 8's bundled rolldown@1.0.0 exports `Visitor`. @angular/build pulls rolldown@1.0.0-rc.4 which does not, leading to runtime ESM link errors when the preview server boots. Force a single rolldown across the sandbox.
Vite 8 prefers oxc as transformer. Without explicit JSX runtime config, React-only template stories (e.g. ResolvedReact.jsx) fail vite import analysis with 'invalid JS syntax'. Apply the config in both build and dev; keep keepNames build-only.
…azy-init bug Rolldown's chunk splitting plus lazy-init wrappers produced a chunk where _browser-chunk-* extends a class imported from _xhr-chunk-* but the dependent init thunk was never invoked, leaving the imported class undefined at evaluation. Coalescing @angular/platform-browser and @angular/common into a single chunk via manualChunks keeps the class hierarchy contiguous.
…onfig @analogjs/vite-plugin-angular only compiles files that are part of the tsconfig program. The sandbox tsconfig previously included only `*.stories.ts` under `template-stories`, which left sibling component sources (e.g. `pre.component.ts`, `form.component.ts`) outside the program. Without compilation, the Angular `@Input()` / `@Output()` decorators are stripped, `ɵcmp` metadata is never generated, and `PropertyExtractor` falls back to an empty inputs/outputs list. That causes `computesTemplateFromComponent` to emit a binding-free template and template stories like `core-argmapping`, `module-mocking`, `addon-actions`, and `addon-toolbars` to render empty content in the angular-vite sandbox. Widening the include glob to `../template-stories/**/*.ts` ensures template components are compiled alongside the stories. The webpack sandbox is unaffected because `@ngtools/webpack` resolves Angular sources via the dependency graph rather than tsconfig include. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous broader `template-stories/**/*.ts` glob pulled in
`global.d.ts` which declares `globalThis.__STORYBOOK_ADDONS_CHANNEL__`
as `{ emit: any; on: any }`, breaking webpack typecheck for stories
that already used `channel.once`. It also picked up `utils.mock.ts`
which uses a `.ts` extension import unsupported by the sandbox
tsconfig. Restore the original `*.stories.ts` include and add only
`template-stories/components/**/*.ts`, which is where renderer template
components are symlinked. Keeps analogjs/vite-plugin-angular happy
without disturbing the webpack build.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…survives The @analogjs/vite-plugin-angular `transform` hook replaces the incoming `code` parameter with its own TS-compiled output (pulled from an internal Angular file emitter) instead of forwarding the parameter through. With the plugin sitting in Vite's "normal" group it ran after `storybook:mock-loader` (which declares `transform.order: 'pre'`), so any automocked module body produced by the mock plugin was silently discarded and stories rendered the original implementation. Force the main analogjs plugin into the "pre" group from `viteFinal` so it transforms `.ts` sources before the mock plugin's automock pass, which then operates on the compiled JS output. Verified locally on the angular-cli vite sandbox: ModuleMocking / ModuleAutoMocking / NodeModuleMocking stories now render mocked, automocked and node-module-mocked values instead of the originals. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Without this, the @storybook/angular-vite sandbox skipped tsconfig widening and compodoc/preserveSymlinks setup, so template-stories components were never included in the Angular TS program. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
cleanArgsDecorator filters args to those whose argType declares a control or action. Compodoc-backed extraction populates argTypes by class name, but rolldown rewrites class identifiers during the build, so the lookup fails, argTypes stay empty, and every story arg the user set was being discarded before reaching the Angular wrapper's @input bindings. Skip the filter when argTypes is empty so the renderer still receives the args produced by user decorators in build mode. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Compodoc-derived argTypes are looked up at runtime by class name (findComponentByName), and the angular-vite cleanArgsDecorator strips any arg whose argType lacks an action or control flag. Without keepNames the production bundle renames ButtonComponent to `f`, the lookup fails, and @output() handlers / @input() values get stripped before reaching the renderer. The existing esbuild keepNames flag only covers the per-file TS→JS transform; Rolldown's oxc minifier needs its own opt-in. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
analogjs's transform re-emits .ts files from its own internal Angular file emitter, discarding any upstream `code`. Both storybook's csf-plugin (`enforce: 'pre'`) and mock-loader (`transform.order: 'pre'`) run before analogjs and have their output silently wiped — story enrichment (`parameters.docs.description.story`, source) never lands in the bundle, and `sb.mock()` automocks are lost. Demote both plugins to the normal stage so they run after analogjs has produced its compiled JS; csf-plugin reads the original source from disk so source extraction is unaffected, and the automock then operates on the JS output. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mock-loader's `load` hook returns the contents of a matching `__mocks__/…` redirect for files referenced by `sb.mock()`, but analogjs's transform then re-emits the file from its own TS emitter and discards that content. The automock case is handled by demoting mock-loader out of 'pre'; the redirect case can't be, because analogjs runs only once and `load` doesn't fire again. Add a normal-stage plugin that scans the preview config for `sb.mock` calls with a redirect path at buildStart and re-applies the redirect contents as the transform output. Plain `sb.mock(...)` automocks are intentionally skipped here to avoid double-wrapping mock-loader's output. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…gular-vite # Conflicts: # code/core/src/common/versions.ts # code/lib/create-storybook/src/commands/FrameworkDetectionCommand.ts # code/lib/create-storybook/src/generators/types.ts
`useLandmark` was called unconditionally at the top of `MobileNavigation` while the element holding the section ref was conditionally rendered via `!isMobilePanelOpen`. When the addon panel opened, the bottom bar unmounted and React set the ref's `current` to `null`, but the upstream `@react-aria/landmark` effect did not re-run (its deps were stable), so the manager retained a stale landmark with a null DOM node. The next landmark registration crashed during the binary-search position comparison with `TypeError: parameter 1 is not of type 'Node'`. Move `useLandmark`, the ref, and the heading id into a child component that is conditionally rendered alongside the bottom bar, so the hook mounts and unmounts together with the DOM node it tracks. Fixes #34711
Run yarn dedupe to collapse 88 duplicated transitive dependencies, fixing the "Check for dedupe" CI step. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bump from 10.4.0-alpha.17 to 10.5.0-alpha.2 so the new package matches every sibling package and the committed versions.ts entry. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The merge of upstream/next left a global "type-fest": "~2.19" resolution in the root package.json. next had already removed it (keeping only the scoped react-joyride/type-fest override) when code/core migrated to type-fest ^5.6.0. The stale override clamped every type-fest down to 2.19.0, which lacks OmitIndexSignature, breaking DTS generation for code/core/src/csf/story.ts under production compile. Remove the override, regenerate yarn.lock so type-fest@^5.6.0 resolves again, and refresh the regenerated manager globals exports file that the same merge left stale. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
angular-vite/src/client/preview.ts imported RemoveIndexSignature from type-fest, which is not an exported member. The sibling @storybook/angular package uses OmitIndexSignature in the same spot. Align the new package so production DTS generation succeeds. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The global type-fest resolution was removed from the root package.json, so the ecosystem-ci EXISTING_RESOLUTIONS set must drop it too. Keeps existing-resolutions.test.ts green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Remove unreachable code branches and warning text that supported Angular versions below the package's peer-dependency floor (@angular/core >=21.0.0 <22.0.0): - Delete Zoneless.ts runtime feature-detect and use a static import of provideZonelessChangeDetection from @angular/core - Drop VERSION-based >=21 auto-detect from builders and preset; default experimentalZoneless to true - Drop VERSION-based >=19 standalone fallback in PropertyExtractor - Make @angular/platform-browser/animations a static import; rewrite warnings to drop "Storybook 7.0" references and point at @storybook/angular-vite - Remove stale v14 standalone TODO in NgComponentAnalyzer - Drop rxjs ^6.5.3 from peerDependencies (Angular 21 requires rxjs 7+) - Bump installed Angular dev deps to ^21.2.14
…k/angular-vite `angular-beta/` was a leftover folder name from the @storybook/angular Ivy beta migration. In a fresh angular-vite package the name carries no meaning and reads as "still beta." Rename to `renderer/` to match what the folder actually contains (the Angular rendering implementation).
- configure.ts: use Record<string, unknown> instead of any - ANGULAR generator: trim overly verbose builder-override comment - multi-project: clarify doc and rename addonsToConfigure -> addonsToPostinstall - docs snippet: add missing commas in application-providers example Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Angular's animations package is deprecated; migrate the application-providers snippet to provideAnimationsAsync() and drop the deprecated BrowserAnimationsModule reference from the framework docs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ta-barrel-substring Vue: Use AST to inject __docgenInfo correctly
a78fb9a to
9cbcbbd
Compare
Controls: Prevent AbortError when rapidly resetting
9cbcbbd to
c9fd402
Compare
…-catalog-indexing Docs: Clarify addon catalog indexing
c9fd402 to
3f8c838
Compare
…mary-note Docs: Fix incorrect value for includePrimary in documentation
3f8c838 to
c3abb3f
Compare
…ternal-imports Builder-Vite: Fix empty external globals imports
c3abb3f to
26544f6
Compare
Open Service: Split story docs from docgen service
26544f6 to
079083c
Compare
CLI: Exit process after successful build
079083c to
2b92870
Compare
…r-vite Angular: Introduce @storybook/angular-vite package
2b92870 to
85ccc03
Compare
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 `10.5.0-alpha.7` to `10.5.0-alpha.8`.
Once this pull request is merged, it will trigger a new release of version `10.5.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
10.5.0-alpha.8