Loading...
Loading...
All notable changes to Bounce Kit are documented here.
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
init command — scaffolds bouncekit.json config, installs base dependencies (tailwindcss, class-variance-authority, clsx, tailwind-merge, lucide-react), creates cn() utility file if missing. Supports --yes flag for non-interactive mode.diff command — compares local files against bouncekit-lock.json hashes. Reports modified, deleted, and unchanged files per installed component.update command — re-fetches latest component versions from registry, updates files and lock file. Supports --force to overwrite local changes.bouncekit.json stores aliases, Tailwind paths, RSC flag, registry URL. bouncekit-lock.json tracks installed components and content hashes./themes) — interactive page with 5 color presets (Amber, Blue, Emerald, Rose, Violet), light/dark mode toggle, per-token color pickers, live preview card, and copy-to-clipboard CSS output./components/[slug] page. Source code read at build time for free components; Pro components show no Code tab./schema/registry-item.json and /schema/bouncekit.json serve machine-readable schemas for registry items and CLI config. Referenced by $schema in generated files.registry-items.test.ts — 14 tests validating all 107 registry item definitions (names, types, tiers, files, dependency references)
- schema-routes.test.ts — 11 tests validating both JSON Schema route handlers (shape, headers, enums, defaults)
- constants.test.ts — 2 new tests for themes route and nav link
cta registry dependency — referenced non-existent cta-matrix; fixed to ["cta-threads", "cta-terminal", "cta-keycard"] matching actual importsfilename variable in ManualInstall and unused TokenDef interface in theme customizerfocus: → focus-visible: across Sheet, Dialog, Badge, Select UI primitivesaria-label to icon-only button in Topbar showcase component✓/→/✗/⚠ log symbols, less branding noisecli.mjs and package.jsonCopyBlock refactored with extracted CopyButton/themes route, schema endpoints, updated registry section with init workflowbouncekit.json/lock references, CLI version consistency rule/themes route, marked CLI DX/themes/schemas/component tabs as doneregistry/, packages/bouncekit/, schema/ to folder map; added new API routessrc/lib/__tests__/utils.test.ts — cn(), formatDate(), formatPrice()
- src/lib/__tests__/validations.test.ts — login, signup, forgotPassword, profile Zod schemas
- src/components/ui/__tests__/button.test.tsx — all variants, sizes, disabled, asChild, click events
- Run with npm test · watch mode npm run test:watch · coverage npm run test:coverage
vitest.config.ts — configured with jsdom, @/ path alias, globals, and v8 coveragesrc/tests/setup.ts — @testing-library/jest-dom matchers registered globallystats-strip.tsx) — replaceduseInView({ margin: "-10% 0px" }) with amount: 0.2 threshold and added a
mount-time viewport check. The old rootMargin approach caused a hydration race:
if the user scrolled past the stats section before JS loaded, once: true meant
the IntersectionObserver never fired and all counters stayed at 0.
hero-section.tsx) — opened. Fixed to .
next.config.ts — Added optimizePackageImports for lucide-react andframer-motion. Lucide ships 1 400+ icons; explicit tree-shaking hints ensure
only the ~50 icons actually used appear in the bundle.
NoiseOverlay — Replaced setState(seed) in the 8fps rAF loop withref.current.setAttribute("seed", …) — direct DOM mutation bypasses React
reconciliation entirely, eliminating ~480 needless re-renders per minute.