Commit Graph

518 Commits

Author SHA1 Message Date
github-actions[bot] b1c580c637 chore(release): version packages (#11374)
Co-authored-by: shadcn <m@shadcn.com>
2026-08-05 23:11:16 +04:00
shadcn 3e54530e31 feat: questionnaire (#11414)
* feat(questionnaire): add core package and tests

* feat(questionnaire): add registry UI, examples, and docs

* chore(questionnaire): prepare release

* fix(questionnaire): align release examples and docs
2026-08-05 23:08:44 +04:00
OwenKephart df664e1bba fix(registry): include titles in SDK search results (#11348) 2026-08-03 15:34:16 +04:00
github-actions[bot] cb2bcd88d9 chore(release): version packages (#11350)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-31 17:57:34 +04:00
shadcn 5ca53ca7c7 feat(shadcn): add dynamic search support for registries (#11352) 2026-07-31 17:50:10 +04:00
Andrew Barba bfa1b5e9a6 fix(shadcn): create nested output directories in build (#11322)
* fix(shadcn): create nested output directories in build

Registry item names can contain path segments (e.g. "extension/foo").
Both build commands wrote <outputDir>/<name>.json without creating the
implied nested directories, so builds failed with ENOENT on clean
checkouts where the output directory does not already exist. Create the
parent directory before writing each item.

Fixes #11321

* chore: format

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xq2q7jaDcyxyA6YjutStLn

---------

Co-authored-by: shadcn <m@shadcn.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 14:17:44 +04:00
github-actions[bot] 2a2deaac41 chore(release): version packages (#11306)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-27 22:31:02 +04:00
shadcn 431da7169c feat(registry): accept config in addRegistryItems (#11307) 2026-07-27 22:25:57 +04:00
shadcn bf906bb8ae feat(registry): load registries from package.json (#11304) 2026-07-27 19:38:32 +04:00
github-actions[bot] 234633c555 chore(release): version packages (#11286)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-25 22:04:50 +04:00
shadcn a7675774e0 fix(registry): harden programmatic install API (#11285)
* feat(registry): add programmatic install API

Signed-off-by: Colton Padden <colton.padden@vercel.com>

* fix(registry): throw metadata errors

* fix(registry): validate universal dependency trees

* fix(registry): keep programmatic installs non-interactive

* fix(registry): isolate concurrent API calls

* test(registry): cover programmatic install contracts

* fix(registry): match CLI fallback style

* fix(registry): reuse validated install tree

* refactor(registry): share install tree validation

* refactor(registry): share target alias helpers

* fix(registry): avoid duplicate universal item fetches

* fix(registry): preserve non-interactive skipped files

* fix(registry): report unresolved install items

---------

Signed-off-by: Colton Padden <colton.padden@vercel.com>
Co-authored-by: Colton Padden <colton.padden@vercel.com>
2026-07-25 21:56:12 +04:00
Colton Padden 7d90dfc0a5 feat(registry): add programmatic install API (#11276)
Signed-off-by: Colton Padden <colton.padden@vercel.com>
2026-07-25 21:29:31 +04:00
github-actions[bot] 9caf1d1bc4 chore(release): version packages (#11267)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-23 20:01:13 +04:00
shadcn 6cd3f4c65c feat: add Base UI toast (#11266)
* feat(shadcn): scope component availability by base

* feat(base-toast): add Base UI toast component

* docs(base-toast): document toast and retire base sonner
2026-07-23 19:58:39 +04:00
shadcn 91f21dfe13 test(shadcn): consolidate test suite and cover untested modules (#11247)
* test(shadcn): add MCP formatter unit tests

Covers all five formatters in src/mcp/utils.ts (formatSearchResultsWithPagination,
findUnknownTypesMessage, formatSkippedRegistries, formatRegistryItems,
formatItemExamples). Pins the known npxShadcn-not-awaited bug with an
it.fails marker plus a companion test asserting today's broken
"[object Promise]" output, per plans/005 (fix deferred by operator).

* chore(shadcn): add shared test helpers for temp dirs and fixtures

Adds getFixturesDir and withTempDir under src/test-helpers so future
tests don't re-implement mkdtemp cleanup boilerplate or hand-build
fixture paths with __dirname.

* test(shadcn): delete dead vendored-starter test in remix fixture

test/fixtures/frameworks/remix-indie-stack/app/utils.test.ts tested the
vendored Remix Indie Stack starter's own validateEmail helper, not shadcn
code. It's excluded from discovery via the **/fixtures/** vitest exclude,
so this has zero effect on the suite total.

* test(shadcn): move addComponents workspace-routing tests into src/utils

Relocate test/utils/add-components.test.ts's "addComponents workspace
routing" describe block (real addComponents against mock workspace
configs) to a new sibling file, src/utils/add-components.workspace.test.ts,
instead of merging into the existing src/utils/add-components.test.ts.

The existing test file's vi.mock factories replace get-config and
update-files wholesale (no real getWorkspaceConfig/findPackageRoot/
updateFiles passthrough), which conflicts with what the workspace-routing
suite needs. vi.mock is per-file, so a sibling file keeps both real and
mocked variants working side by side.

Also drops the now-untyped `name` field from resolveRegistryTree mock
payloads (not part of registryResolvedItemsTreeSchema, and unused by
addComponents) now that these tests are typechecked as part of src/ for
the first time.

* test(shadcn): move registry and registries/add-registry tests into src/

- test/utils/registry.test.ts -> merged into src/registry/api.test.ts as
  a new "resolveTree" describe (sole coverage of resolveTree).
- test/utils/get-item-target-path.test.ts -> merged into
  src/registry/api.test.ts as a new "getItemTargetPath" describe;
  fixture paths switched to getFixturesDir() from @/src/test-helpers.
- test/utils/registries.test.ts -> src/utils/registries.test.ts.
- test/utils/add-registries.test.ts -> src/commands/registry/add.test.ts
  (tests parseRegistryArg, which lives in src/commands/registry/add.ts).

All four now typecheck as part of src/** for the first time. Only type
fix needed: getConfig() returns Config | null, so the moved
getItemTargetPath assertions non-null-assert its result.

* fix(shadcn): complete the registry test-move commit from the prior step

The previous commit's staging step used `git add -A -- <paths>` with a
stale pathspec that failed outright (exit 128), which meant the commit
silently went through with only the git-mv'd renames/deletions and
none of the follow-up import-path fixes and new describe blocks made
via Edit afterward. src/commands/registry/add.test.ts and
src/utils/registries.test.ts were committed still pointing at
../../src/... paths (broken from their new location), and
src/registry/api.test.ts was committed without the merged resolveTree
/getItemTargetPath describes at all. This commit captures those
already-verified changes so HEAD matches what was actually tested.

* test(shadcn): move get-config and get-project-info cluster into src/

- test/utils/get-config.test.ts -> src/utils/get-config.test.ts,
  restructured into describe("getRawConfig"/"getProjectConfig"/
  "getConfig"/"getWorkspaceConfig") blocks (test -> it), fixture paths
  switched to getFixturesDir().
- test/utils/get-project-info.test.ts -> src/utils/get-project-info.test.ts,
  test/test.each -> it/it.each; merged in as new describes:
    - test/utils/get-tailwind-css-file.test.ts ("get tailwindcss file")
    - test/utils/get-ts-config-alias-prefix.test.ts ("get ts config alias prefix")
    - test/utils/is-typescript-project.test.ts ("is TypeScript project")
  (all four test getters exported from src/utils/get-project-info.ts).
- test/utils/get-package-manager.test.ts -> src/utils/get-package-manager.test.ts,
  split into describe blocks per exported function, test -> it.

All now typecheck as part of src/** for the first time; no type errors
surfaced.

* test(shadcn): move resolve-import and dry-run tests into src/utils

- test/utils/resolve-import.test.ts -> src/utils/resolve-import.test.ts,
  restructured into describe("resolveImport") + the two pre-existing
  describes, test -> it, fixture paths via getFixturesDir().
- test/utils/dry-run.test.ts -> src/utils/dry-run.test.ts, test -> it
  throughout (already describe-organized), fixture/temp-dir paths via
  getFixturesDir().

Dropped the unused `name` field from 10 resolveRegistryTree mock
payloads (not part of registryResolvedItemsTreeSchema) now that this
file typechecks as part of src/** for the first time.

* test(shadcn): move transformer tests into src/utils/transformers

- test/utils/apply-color-mapping.test.ts + test/utils/transform-css-vars.test.ts
  -> merged into src/utils/transformers/transform-css-vars.test.ts.
- test/utils/apply-prefix.test.ts + test/utils/transform-tw-prefix.test.ts
  -> merged into src/utils/transformers/transform-tw-prefix.test.ts.
- test/utils/transform-import.test.ts -> src/utils/transformers/transform-import.test.ts.
- test/utils/transform-rsc.test.ts -> src/utils/transformers/transform-rsc.test.ts.
- test/utils/transform-rtl.test.ts -> src/utils/transformers/transform-rtl.test.ts;
  deleted 8 commented-out test() blocks that asserted nothing.

test -> it throughout; snapshot-bearing tests kept their exact top-level
title (no new describe wrapping) so vitest regenerates snapshots under
the identical key — diffed byte-identical against the originals before
deleting the orphaned test/utils/__snapshots__ files.

Per reviewer authorization: cast partial Config literals passed to
transform() with `as Config` (60 call sites across
transform-import/rsc/rtl/tw-prefix/css-vars.test.ts), and one
`baseColor: "stone" as any` where a bare string was passed where the
type expects a base-color object (preserves the original, intentional
runtime input unchanged). Also cast the ts-morph/TS-internal
`sourceFile.parseDiagnostics` access in transform-rtl.test.ts as `any`
rather than substituting a different (public) API. All casts only;
no assertions or literal values changed. Verified: every regenerated
snapshot is byte-identical to its pre-move original, and
`pnpm test src/utils/transformers/` passes 196/196 both before and
after the casts were added.

* test(shadcn): move updater tests into src/utils/updaters

- test/utils/updaters/update-tailwind-content.test.ts -> src/utils/updaters/update-tailwind-content.test.ts
- test/utils/updaters/update-dependencies.test.ts -> src/utils/updaters/update-dependencies.test.ts
- test/utils/updaters/update-css.test.ts -> src/utils/updaters/update-css.test.ts
- test/utils/updaters/update-css-vars.test.ts -> src/utils/updaters/update-css-vars.test.ts
- test/utils/updaters/update-tailwind-config.test.ts -> src/utils/updaters/update-tailwind-config.test.ts
- test/utils/updaters/update-files.test.ts (2604 lines, largest) -> src/utils/updaters/update-files.test.ts

test -> it / test.each -> it.each throughout; fixture and scratch-temp-dir
paths switched to getFixturesDir() from @/src/test-helpers. Snapshot-
bearing files (update-tailwind-content, update-tailwind-config) diffed
byte-identical against their pre-move originals before the old
test/utils/updaters/__snapshots__ files were deleted.

Also deleted test/utils/updaters/__snapshots__/initialize-tailwind-config.test.ts.snap,
an orphan with no corresponding test file anywhere in the repo (grep
confirmed) — out of the plan's 27-row map but required to satisfy the
"no orphaned snapshot dirs" done-criterion and let Step 8 rmdir the now-
empty test/utils/updaters directory.

Per reviewer authorization (round 1), fixed the resulting typecheck
errors with casts only, no restructuring or assertion changes:
- `as Config` on partial Config/resolvedPaths object literals passed to
  transformTailwindContent/transformTailwindConfig/updateDependencies/
  transformCssVars/resolveFilePath (update-files.test.ts alone needed
  ~59 such casts, plus a `(await getConfig(...))!` non-null assertion
  on the 11 getConfig() calls that had no existing `if (!config) throw`
  guard).
- `as any` on wrapper objects that don't fit any named type at all: the
  `{ config: SHARED_CONFIG }` argument in update-tailwind-content/
  update-tailwind-config tests (the production functions take `config`
  directly, not a wrapped options object — this mismatch predates this
  move and is left as-is per "casts only, do not restructure"), the
  flat color-map literals passed to buildTailwindThemeColorsFromCssVars,
  the `file` param in two resolveFilePath test.each callbacks (whose
  `type` field widens to `string` across the array), and the partial
  `ProjectInfo` literals passed to toAliasedImport tests.

Verified every regenerated snapshot is byte-identical to its pre-move
original, and `pnpm test src/utils/updaters/` passes 278/278 both
before and after the casts were added.

* test(shadcn): characterize registry source include resolution

Adds source.test.ts covering the previously-untested include resolver
in src/registry/source.ts: happy-path flattening (flat, single include,
two-level nested include), root validation, and every containment
guard (absolute/traversal/URL paths, non-registry.json includes, include
cycles, duplicate includes, max include depth, duplicate item names).

* test(shadcn): cover workspace adaptation in template scaffolding

Export getInstallArgs, adaptWorkspaceConfig, and rewriteWorkspaceProtocol
from create-template.ts (no logic changes) and add unit tests covering
the destructive package-manager adaptation that runs when scaffolding a
non-pnpm project: lockfile/workspace-config removal, packageManager and
workspaces rewriting, and workspace: protocol rewriting for npm.

Also removes the vestigial "**/templates/**" vitest exclude, which dates
to migration commit e51648139 and today only matches this CLI's own
source files under src/templates/ (no scaffold-template project
directories live there). Verified via `npx vitest list` before/after:
the collected test set changed by exactly one file,
src/templates/create-template.test.ts - nothing else was newly picked up.

Full suite: 83 files / 1584 tests passing (was 82/1571 baseline + this
file's 13 tests). typecheck and build both exit 0.

* test(shadcn): cover add command orchestration branches

Integration-style tests for the `add` command action handler, pinning the
routing between dry-run, the missing-config init flow, the empty-project
create-project flow, the registry:style/theme overwrite confirm, the
universal registry item short-circuit, the app-index update guard, and the
Tailwind v4 deprecated-components guard. Collaborators (runInit,
createProject, addComponents, updateAppIndex, dryRunComponents, prompts) are
mocked at their seams; preFlightAdd, getConfig, and the registry fetch path
run for real against temp-dir fixtures and an MSW-served registry.

* chore(shadcn): format test files with prettier
2026-07-22 21:55:14 +04:00
github-actions[bot] 3f47b9113a chore(release): version packages (#11244)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-22 15:05:55 +04:00
shadcn 3c26ee2dbd feat(shadcn): migrate icons between any icon libraries (#11241)
* feat(v4): generate cross-library icon mapping from registry placeholders

* feat(shadcn): migrate icons between any icon libraries

* fix(shadcn): harden icon template regexes flagged by CodeQL

* fix(shadcn): replace usage-template regexes with a linear scanner
2026-07-22 15:03:08 +04:00
github-actions[bot] c9850bf087 chore(release): version packages (#11192)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-17 19:22:38 +04:00
shadcn 2b89d67e19 feat: aria (#11208)
* initialize react-aria base

* update imports

* accordion

* checkbox

* radiogroup

* switch

* button

* progress

* collapsible

* toggle / togglegroup

* tabs

* slider

* badge

* fix ts

* buttongroup

* popover

* dialog

* alertdialog

* sheet

* tooltip

* separator

* select

* update preview

* dropdown menu

* build registry

* update examples

* format

* Combobox

* sidebar

* updates

* breadcrumb

* update registry

* update progress

* fix

* fix dropdown menu styles

* fix

* common utility for overlay placement

* hide base tab if it doesn't exist

* update registry

* contextmenu

* direction

* spinner

* scroll area

* rebuild registry

* update examples

* port updates from base

* add preview-02

* Add missing files

* avatar

* remove hover-card

* Command

* Calendar + DatePicker

* Table and DataTable

* updates

* Fix sidebar docs

* fix accordion animation

* update docs

* fixup

* Add composition section to docs

* fix styles

* fixes

* fix dropdown submenus

* Update react-aria-components

* update new styles

* update registry

* bump dependencies

* port latest changes to react-aria base

* update example style

* fixes

* feat(registry): add aniui to registry directory (#11113)

* docs: polish component documentation (#11162)

* fix(docs): preserve sidebar scroll position

* style(docs): increase surface radii

* docs(components): promote example sections

* fix(docs): redirect typography pages to typeset

* fix(docs): preserve duplicate sidebar link position (#11163)

* fix(docs): restore sidebar scroll before hydration (#11166)

* feat: @shadcn/helpers (#11168)

* feat(helpers): add scripted chat adapters

* build(helpers): add release plumbing

* docs(helpers): refine ai-sdk and tanstack-ai guides

* refactor(helpers): rename script types to chat

* docs: update ai-sdk intro

* docs: add changeset

* ci(release): use Node 24 for npm publishing (#11169)

* chore(release): version packages (#11170)

Co-authored-by: shadcn <m@shadcn.com>

* feat(aria): add aria component base

* fix(v4): resolve typecheck errors

* fix(aria): compile render prop styles

* fix: style

* docs(aria): promote example sections

* fix(aria): address registry review findings

* chore(aria): refresh registry metadata and docs

* fix(aria): align component conventions

* chore(v4): stop tracking aria generated styles

* fix(aria): align docs and shared state behavior

* refactor(aria): use native placement and state hooks

* refactor(aria): scope component state selectors

* fix(aria): scan generated aria styles

* style(aria): sort classes after variant cleanup

* fix(aria): remove unused command dependency

* fix(aria): isolate base-specific style hooks

* feat(aria): use Base UI drawer

* fix(aria): open breadcrumb dropdown menu

Use the react-aria Button as the MenuTrigger child so the press
responder wires up. A plain native button never received it, so the
dropdown never opened.

* fix

* fix(aria): address release blockers

* fix(aria): open tooltips without delay

* fix(aria): restore sidebar submenu styles

* fix(aria): use native state selectors

* fix(aria): wire tooltip triggers

* chore(aria): prepare release metadata

* docs(aria): announce React Aria support

---------

Co-authored-by: Devon Govett <devongovett@gmail.com>
Co-authored-by: Anish <39819327+anishlp7@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-17 19:20:21 +04:00
shadcn c49c3061b5 fix(shadcn): drop custom registry headers on cross-origin redirects (#11196)
* fix(shadcn): drop custom registry headers on cross-origin redirects

* style(shadcn): format proxy test
2026-07-16 22:27:33 +04:00
shadcn b8a8e92096 fix(shadcn): prevent flag injection via registry dependency strings (#11195)
* fix(shadcn): prevent flag injection via registry dependency strings

* style(shadcn): format update-dependencies
2026-07-16 22:26:40 +04:00
shadcn df2656111f fix(shadcn): validate file paths for registry items without an explicit target (#11191)
* fix(shadcn): validate file.path for registry items without a target

* test(shadcn): type validateFilesTarget cases with satisfies instead of as
2026-07-16 13:48:47 +04:00
github-actions[bot] bc0705384b chore(release): version packages (#11170)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-14 20:25:11 +04:00
shadcn 0ec4a7ffbf feat: @shadcn/helpers (#11168)
* feat(helpers): add scripted chat adapters

* build(helpers): add release plumbing

* docs(helpers): refine ai-sdk and tanstack-ai guides

* refactor(helpers): rename script types to chat

* docs: update ai-sdk intro

* docs: add changeset
2026-07-14 20:08:51 +04:00
shadcn 3cdaa6eb2f feat: typeset (#11133)
* feat(typeset): add typography stylesheet and invariants

* feat(typeset): add builder and preview

* feat(v4): integrate typeset with docs

* docs(typeset): add documentation and changelog

* fix: codeblocks
2026-07-10 19:10:41 +04:00
github-actions[bot] 5e800ca2bd chore(release): version packages (#11099)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-08 12:10:47 +04:00
shadcn f6a2647854 fix(react): follow the live edge after an anchored reply fills the viewport (#11106)
* fix(react): follow the live edge after an anchored reply fills the viewport

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186fcQpHo1aLQC4wRpwKFFu

* fix(react): keep the scroll button quiet while follow-output is engaged

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186fcQpHo1aLQC4wRpwKFFu

* fix(v4): wire base commands example menu items with onClick

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186fcQpHo1aLQC4wRpwKFFu

* style: format

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 12:07:23 +04:00
shadcn dd6ce77cf1 fix(react): hold newly appended scroll anchors while autoScroll is enabled (#11100)
The tail spacer makes a freshly anchored turn read as "at the end", so
reconcileFollowMode re-armed following-bottom one frame after the anchor
placement and the first streamed chunk yanked the reader off the anchor.
Exclude the anchored-to-message hold from arming, matching the existing
settling-jump exclusion.


Claude-Session: https://claude.ai/code/session_0186fcQpHo1aLQC4wRpwKFFu

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 10:04:10 +04:00
Erick 628e427231 fix(message-scroller): avoid ResizeObserver loop error by coalescing resize handling into rAF (#11085)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-07 09:37:08 +04:00
github-actions[bot] 2ef6388ca1 chore(release): version packages (#11083)
* chore(release): version packages

* fix

---------

Co-authored-by: shadcn <m@shadcn.com>
2026-07-03 16:20:38 +04:00
shadcn f3e7de1175 feat: base (#11082)
* 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
2026-07-03 16:14:53 +04:00
github-actions[bot] 8055a12f46 chore(release): version packages (#11024)
Co-authored-by: shadcn <m@shadcn.com>
2026-06-26 21:25:48 +04:00
shadcn 18fcf0f766 feat: @shadcn/react (#11022)
* 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
2026-06-26 21:19:31 +04:00
github-actions[bot] c520191cd4 chore(release): version packages (#10949)
Co-authored-by: shadcn <m@shadcn.com>
2026-06-26 11:15:28 +04:00
dependabot[bot] e03df56fcf chore(deps): bump vitest from 2.1.9 to 3.2.6 (#10898)
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 2.1.9 to 3.2.6.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.2.6/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 3.2.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: shadcn <m@shadcn.com>
2026-06-18 22:22:32 +04:00
shadcn 365d53b590 fix(shadcn): preserve existing dependency specifiers in package.json (#10967)
Fixes #10525
2026-06-18 21:46:26 +04:00
shadcn 9197676b3d chore: replace node-fetch (#10905)
* chore: replace node-fetch

* fix(shadcn): surface network failure reason from fetch errors

* fix(shadcn): avoid Error.cause typings for older TS lib targets

* fix(shadcn): avoid stricter undici engine

* fix(shadcn): use undici 7 proxy agent
2026-06-15 14:08:41 +04:00
github-actions[bot] 3f2ff18157 chore(release): version packages (#10873)
Co-authored-by: shadcn <m@shadcn.com>
2026-06-08 17:48:39 +04:00
shadcn 05eb2b968b feat(cli): improve search command (#10886)
- 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.
2026-06-08 17:46:00 +04:00
Harshitha Sompura 7dfd933102 fix(cli): move msw to devDependencies (#10851)
* fix: move msw to devDependencies

* chore: update lockfile after moving msw to devDependencies

* chore: add changeset for msw devDependency fix

---------

Co-authored-by: shadcn <m@shadcn.com>
2026-06-05 21:01:37 +04:00
github-actions[bot] adac7cae1f chore(release): version packages (#10845)
Co-authored-by: shadcn <m@shadcn.com>
2026-06-01 14:58:03 +04:00
shadcn 7c63c46736 feat(registry): add GitHub registry support (#10842)
* feat: add github scheme

* fix

* fix: validate and search

* docs: update docs for GitHub registries

* docs: add changelog

* fix

* chore: update announcement

* docs(skills): update GitHub registry guidance

* fix(registry): reject option-like GitHub refs

* fix(registry): limit search registry discovery

* fix(registry): bound GitHub validation concurrency

* fix(registry): reject whitespace in GitHub refs

* fix(registry): track URL dependency sources

* test(registry): cover local dependency sources
2026-06-01 14:53:34 +04:00
github-actions[bot] 460ad60d84 chore(release): version packages (#10835)
Co-authored-by: shadcn <m@shadcn.com>
2026-05-31 16:18:29 +04:00
shadcn 8e2d2d1439 feat: add shadcn eject (#10834) 2026-05-31 16:11:01 +04:00
shadcn 5c849297d0 feat(release): add beta and rc prerelease labels (#10806) 2026-05-29 15:13:21 +04:00
github-actions[bot] 2baa86081d chore(release): version packages (#10791)
Co-authored-by: shadcn <m@shadcn.com>
2026-05-29 12:10:45 +04:00
Raashish Aggarwal 07900769d9 fix(cli): update template handling for pnpm 11 (#10659)
* 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>
2026-05-29 08:24:31 +04:00
Artyom Konoplyov 360e8a19c3 fix(transform-rtl): preserve quotes in transformed className literals (#10495)
* fix(transform-rtl): preserve string literal escapes

* chore(changeset): add rtl quote preservation note

---------

Co-authored-by: shadcn <m@shadcn.com>
2026-05-27 22:29:44 +04:00
github-actions[bot] e2fa0101e3 chore(release): version packages (#10789)
Co-authored-by: shadcn <m@shadcn.com>
2026-05-27 21:09:59 +04:00
shadcn 55ea86f252 chore: update templates (#10786)
* chore: update templates

* fix(cli): parse pnpm workspace packages

* chore(changeset): add shadcn patch

* chore(changeset): update description

* ci(templates): validate bun and npx init

* ci(templates): expand package manager validation

* ci(templates): parallelize validation

* ci(templates): allow yarn template lockfiles

* fix(cli): allow yarn template installs in ci
2026-05-27 21:08:26 +04:00