* feat(create): default design system config to base ui
* feat(www): default docs and init to base ui
* feat(www): default preview styles to base-nova
* feat(shadcn): default init and prompts to base ui
* docs: default to base ui in guides and examples
* docs: add changelog
* chore: changeset
* fix: address base ui default review findings
* fix: init handling
* feat: add migrate-radix-to-base skills
* fix: typo
* feat(@shadcn/react): add message-scroller package
Add the @shadcn/react headless primitives package with MessageScroller
scroll anchoring, streaming follow, history prepend, and jump-to-message
behavior. Includes geometry helpers, use-render utility, and unit,
browser, and perf tests.
* feat(registry): add chat components
Add MessageScroller, Message, Bubble, Attachment, and Marker registry
sources for base and radix, style variants, preview-03 chat blocks,
and registry index wiring.
* feat(v4): integrate chat components into docs site
Wire chat components into the v4 app with docs routes, example preview
pages, message part renderers, markdown support, registry build updates,
and supporting lib utilities.
* feat(examples): add chat component demos
Add base and radix example demos for MessageScroller, Message, Bubble,
Attachment, Marker, scroll-fade, and shimmer.
* docs: add chat component documentation
Add component and utility docs for the chat component set, update docs
navigation, and add the June 2026 chat components changelog entry.
* chore: regenerate registry JSON output
Rebuild public registry artifacts for all style variants with the new
chat components.
* chore(release): add @shadcn/react publish and CI pipeline
Add Changesets prerelease workflow, browser test job, RELEASING docs,
and monorepo wiring for publishing @shadcn/react independently from
the shadcn CLI.
* docs: fix display of component preview on mobile
* fix
* fix
* docs: add message scroller docs
* style: format
* fix
- Search across multiple registries and make the registry argument
optional: omit it to search every registry configured in components.json
(builtins like @shadcn excluded). Without a components.json or configured
registries, a clear usage error is printed.
- Add a --type filter (accepts "ui" or "registry:ui", comma-separated)
with validation against the known item types.
- Fetch registries concurrently with a capped worker pool, preserving
result order.
- Tolerate per-registry failures when searching all configured registries
(reported in a structured `errors` field); exit non-zero when every
registry fails. Usage errors print directly instead of routing through
handleError.
- MCP parity: optional registries (search-all), a `types` filter, and type
validation across the search/list/examples tools.
- Keep the public registry surface to `searchRegistries` and make it
self-contained (clears its own context, useCache defaults to false).
- Consolidate search formatting into registry/search, add the `errors`
field to searchResultsSchema, and update the skill docs.
* fix(cli): allow esbuild builds in Vite templates
* fix(cli): extend pnpm 11 build-script allowlists across app templates
- Add packages: [] to single-app pnpm-workspace.yaml so pnpm 9 does
not reject the file with "packages field missing or empty".
- Add astro-app, react-router-app, start-app, next-app workspace
yamls with the build-script allowlist each template needs
(esbuild, sharp, unrs-resolver as applicable).
- Set msw: false across all app allowlists so the registry component
install runs cleanly under pnpm 11 without executing msw's
service-worker postinstall.
- Add a scaffold test pinning the packages:[] + allowBuilds shape
so the parser keeps treating it as single-app.
* chore: changeset
* fix(templates): allow monorepo pnpm builds
* ci(templates): validate app workspace conversion
---------
Co-authored-by: shadcn <m@shadcn.com>
All monorepo templates hardcoded `packageManager: "pnpm"` which
meant running `bunx --bun shadcn@latest init --monorepo` would
still shell out to `pnpm install`, triggering Corepack and crashing
under Bun because `process.mainModule` is readonly there.
This removes the hardcoded pnpm override from every monorepo template
config so `getPackageManager()` can actually detect what the user is
running. The scaffold step now adapts the cloned template on the fly:
- strips the `packageManager` field from package.json (avoids Corepack)
- converts pnpm-workspace.yaml to a `"workspaces"` array in package.json
- removes pnpm-lock.yaml
- rewrites `workspace:*` refs to `"*"` when the detected PM is npm
(npm doesn't support the workspace: protocol)
- picks the right install flags per PM (`--no-frozen-lockfile` for pnpm,
nothing extra for bun/npm/yarn)
pnpm behavior is completely unchanged — `adaptWorkspaceConfig` early-
returns when the detected PM is pnpm.