v0.2.0
- 5f8d2df
Stop scaffolding a
packages/design-systemworkspace. It existed to hold the global stylesheet and the three helpers that go with it —cn, the fonts, the theme provider — but a package earns its keep by being shared, and in a generated project nothing else imported it. Those files now land in the app, which is where the single-app layout already put them, so both layouts produce the same shape.components.jsonmoves with them:apps/web/components.jsonin a Turborepo project, the project root otherwise. shadcn resolves it from its own working directory and never searches downward, soverno createnow points the CLI at the app rather than at a package.design-systemis gone from--packages, the create prompt, and the manifest.verno doctorstill recognises the old location, so projects generated before this release keep reporting clean.What used to justify the package is now the registry: the palette lives at
@vernostudio/theme, and every generated project ships pointed at it.
- 463bc3f
Write the current base layer into a generated project's
app/globals.css. The CLI restores this block aftershadcn initrewrites the stylesheet, and its copy had fallen behind the template — because the CLI writes last, the stale version was the one projects actually got. Selection colour, thehtmlfont-feature and text-rendering setup, placeholder colour and focus rings all now match the template. A contract test keeps the two from drifting again. - 463bc3f
Stop writing the Verno base layer into projects that have nothing to support it. The layer
@applysborder-border,bg-backgroundand friends, which come from the design-system package or fromshadcn init. With--ui noneoutside a monorepo neither runs, and@applyon a missing utility fails the whole build — so the generated project did not compile. That combination now gets a bare@import "tailwindcss";to style however it likes, andverno update/doctorreport the layer as not applicable there instead of proposing a fix that would break the build. - 7c342a9
Fix three usage-flow issues found by walking the CLI end to end: project names are now validated (letters, numbers, hyphens) on the positional and
-ypaths too, instead of only when the wizard prompts — previouslyverno create "bad name" -yexited 0 and scaffolded a project with an npm-invalidpackage.jsonname; theinit --dry-runplan now lists the turborepo restructure before dependency install, matching the real execution order; and the two deadvernostudio.dev/docs/*links printed afterinitnow point at https://www.ultracite.ai and https://verno-studio.vercel.app. - 0d59d45
Fix three silently ignored flags:
--no-installand--no-gitare now honored bycreateandinit(Commander exposes them asinstall/git), andinit --addonis renamed to--addons(matchingcreate) with a hidden--addonback-compat alias. Adds parse-level wiring tests so option-wiring regressions are caught. - 463bc3f
Scaffold the design system's
globals.cssfrom the Geist scale. Generated projects keep the same shadcn token contract —--primary,--muted-foreground,--ringand the rest are all still exported, soshadcn addbehaves exactly as before — but each value now resolves to a step on the Geist scale instead of a hand-picked literal. New projects inherit Verno's palette out of the box. - d9b8d8a
Harden the Ultracite integration against upstream drift.
verno updateno longer writes config files importingultracite/presets/*— subpaths that stopped resolving in Ultracite 7.8 — and instead delegates regeneration toultracite init, so the emitted config always matches the installed Ultracite. Configs using the currentultracite/oxlint/*/ultracite/oxfmtlayout are now recognized as canonical, and oldultracite/presets/*configs are flagged as outdated and regenerated. The CLI also stops executingultracite@latest: the executed version is pinned to the dependency catalog (^7.8.0), which is now the single source for the expected version everywhere, and new contract tests fail CI if a future Ultracite version adds or removes framework presets Verno does not map.--frameworksnow accepts ids Verno does not know: known ids are still checked up front, unknown ones pass through toultracite initwith a warning, so frameworks Ultracite adds within the pinned range work from the flag on day one. - 5315045
verno initis now non-destructive on existing projects: it preserves the rootstartscript, no longer overwrites an existingturbo.jsonorapps/web/package.json(warns and skips instead), generates a self-containedturbo.json(removing the broken@vernostudio/turborepo-utilsextends reference), and leaves a realvite.config.tsuntouched during the shadcn bootstrap. - 5f8d2df
Scaffold a theme provider that only imports what the project is guaranteed to have. It wrapped children in
TooltipProviderand rendered a<Toaster />, both from@/components/ui/*— files that do not exist untilshadcn addhas written them, so anything that skipped or interrupted that step left the app failing to compile on its own provider. It now importsnext-themesand nothing else, with a comment on where to add the other two back.sonnerleaves the dependency catalog with them:shadcn add sonnerinstalls its own copy, so pre-installing it only pinned a version nothing imported. - 5b9bac5
Telemetry is now anonymous by default: the CLI no longer collects git email/name (a persisted random UUID is the only distinct ID), exception stack traces are redacted (home directory replaced with
~) and capped at 4000 characters, and telemetry is sent after the final command output so it never delays completion. The opt-out remainsDO_NOT_TRACK=1orVERNO_TELEMETRY_DISABLED=1. - 5f8d2df
Typecheck generated projects with TypeScript 7 instead of the native preview. The preview package existed to provide
tsgowhile the native compiler was still separate; TypeScript 7 is that compiler, so the scaffolded script istsc --noEmitagain and@typescript/native-previewis gone from the dependency catalog. - eaaf289
Build the CLI with the TypeScript 7 toolchain. The published package no longer ships an unused empty
dist/index.d.mtsstub (the CLI exposes a binary, not a typed API); runtime behavior is unchanged. - 5f8d2df
Point scaffolded projects at the Verno Studio component registry. Both
components.jsontemplates now ship aregistriesblock for@vernostudio, soshadcn add @vernostudio/copy-buttonworks in a fresh project without any setup. Becauseshadcn applyrewritescomponents.jsonduring scaffolding, the block is re-applied afterwards — the same treatment the base CSS layer already gets — and only namespaces that are missing are added, so a project that repointed@vernostudioat a fork keeps its own value.verno doctornow reports a project whosecomponents.jsonhas no Verno registry configured.