Skip to content

# Changelog

A record of all notable changes to Zenith Dashboard.

## v1.2.0

Latest
July 2026

Hardening release following a full audit for security, performance, accessibility, SEO, and workflow.

### Added

- Continuous integration — the repo had none, which is why v1.1.3's four regressions shipped. Five jobs now run per push and PR: verify (typecheck, lint, RSC safety, tests, build) on Node 20.9 and 24, plus Storybook, E2E, the `seed/` starter, and `npm audit`
- `npm run check:rsc` — fails the build if a core module without `"use client"` imports the `radix-ui` barrel. Unlike the crash itself, it does not depend on bundler tree-shaking, so it cannot pass locally and fail for a customer
- `public/_headers` — security headers plus `immutable` caching for content-hashed assets, replacing the host default of four-hour revalidation
- Per-page metadata on all 68 routes. Previously all 184 exported pages shared one title. Client pages get theirs from a sibling server `layout.tsx`, since `"use client"` modules cannot export metadata
- `sitemap.xml` and `robots.txt` generated at build time; set `NEXT_PUBLIC_SITE_URL` to change the host
- `engines` and `.nvmrc` pinning Node ≥ 20.9.0, with CI running that floor
- Route-coverage E2E suite — 53 routes checked for status, a rendered heading, and zero console or page errors

### Fixed

- The E2E suite had been broken since the landing page was added — it still expected the dashboard at `/`. Retargeted, plus corrected lazy-chart and theme-toggle assertions. 59 tests pass, up from 1
- Auth pages had no heading element — `CardTitle` renders a `div`, so seven pages exposed nothing for screen readers to navigate to. Now semantic `h1`s with identical styling
- Duplicate `<title>` tags on nine auth pages, from React 19 hoisting plus the new route metadata
- Six icon-only buttons had no accessible name; view toggles also gained `aria-pressed`
- All four ESLint errors resolved — lint is at 0 errors, 1 warning
- Removed five unused Next.js boilerplate SVGs and a stale `@storybook/addon-essentials` entry

## v1.1.4

July 2026

Critical fix release. v1.1.3 shipped four regressions that broke a fresh install, plus a full dependency refresh.

### Fixed

- `npm run dev` crash — `TypeError: createContext is not a function` in `src/app/not-found.tsx`. Core's `Button` imported `Slot` from the `radix-ui` barrel, which eagerly evaluates every Radix primitive; several call `React.createContext()` at module scope. Since `not-found.tsx` is a Server Component, the barrel landed in the RSC graph where `createContext` does not exist. Now imports `@radix-ui/react-slot` directly. Requires `@dashboardpack/core` ^1.2.1
- `npm run test` could not run — the `undici` ^8.5.0 override forced jsdom onto an incompatible major, so the test environment failed to load. Override removed
- `npm run lint` could not run — the `brace-expansion` ^5 override broke minimatch's API, and ESLint 10 removed the `context.getFilename()` API `eslint-plugin-react` depends on. Override is now version-scoped and `eslint` is pinned to ^9
- `npm run build-storybook` could not run — the `@babel/core` ^8 override broke `react-docgen`, which calls `loadPartialConfig` synchronously. Override removed
- `npm run lint` walked `storybook-static/` after a Storybook build, reporting ~10,000 findings in minified bundles. Generated output is now in `globalIgnores`

### Dependencies

- Next.js 16.2.12, React 19.2.8, `radix-ui` ^1.6.7, `lucide-react` ^1.27.0, `recharts` ^3.10.1, `react-dropzone` ^19.1.1, all `@tiptap/*` ^3.29.0, plus latest across every remaining direct dependency
- Dev: Storybook 10.5.4, Vitest 4.1.10, Playwright 1.62.0, jsdom 30, `@testing-library/jest-dom` 7
- Removed `@storybook/nextjs` — declared but never used (the framework is `@storybook/react-vite`). Dropped 381 packages and about half the audit findings
- The `seed/` starter was on core ^1.1.0 with the same crash; it is now aligned with the main template
- ESLint stays on ^9 and TypeScript on ^6 — ESLint 10 breaks `eslint-config-next`, and Next.js 16 rejects the TypeScript 7 compiler API
- `npm audit` now reports 0 vulnerabilities, down from 27. Those traced to just two root advisories: `brace-expansion` (reached only via minimatch 3 inside ESLint — now overridden to minimatch ^10) and `sharp` (overridden to ^0.35.3; build-time only, and unused under static export)

## v1.1.3

May 2026

Dependency refresh: `@dashboardpack/core` 1.2.0 unblocks `react-day-picker` v10.

### Dependencies

- `@dashboardpack/core` ^1.1.0 → ^1.2.0, lifting the `react-day-picker` peer range to ^10.0.0
- `react-day-picker` ^9.14.0 → ^10.0.1 — no app-level changes needed
- Next.js 16.2.6 → 16.2.9, React 19.2.6 → 19.2.7, `radix-ui` ^1.4.3 → ^1.6.0, plus minor bumps across remaining deps

### Fixed

- Kanban page TypeScript error from `radix-ui` 1.6.0's new `--radix-${string}` CSS property index signature

## v1.1.2

June 2026

Fixed the starter template so it installs and builds cleanly.

### Fixed

- Starter template (`seed/`) now installs and builds — added the missing `@dashboardpack/core` dependency it imports throughout
- Upgraded the starter's Storybook 8.6.17 → 10.4.1, fixing the `next@16` peer-dependency ERESOLVE error on `npm install`
- Added `transpilePackages` and TypeScript core source-resolution so the shared package compiles

## v1.1.1

May 2026

Higher-contrast dark mode and dependency refresh with security overrides for transitive vulnerabilities.

### Dark mode contrast

- Bigger lightness steps between background → card → muted → border so cards visibly lift and input borders read clearly
- Background 0.145 → 0.075, card 0.17 → 0.19, popover → 0.21, secondary/muted/accent 0.215 → 0.235, border/input 0.265 → 0.28
- Sidebar 0.205 → 0.11 (now darker than background, matching the Apex Next.js family), sidebar-accent 0.265 → 0.20, sidebar-border 0.265 → 0.26
- Distinctive purple sidebar-primary and near-white primary preserved. Light mode untouched.

### Dependencies

- Next.js 16.2.3 → 16.2.6 (fixes 13 published Next.js CVEs)
- React / React-DOM 19.2.5 → 19.2.6, lucide-react 1.8.0 → 1.16.0, framer-motion 12.38 → 12.40, tiptap 3.22.3 → 3.23.6, storybook 10.3.5 → 10.4.1, zod 4.3.6 → 4.4.3, plus minor bumps to other direct deps
- react-day-picker pinned to ^9.14.0 (@dashboardpack/core peer dep blocks the v10 major bump)
- npm overrides added for transitive vulns: postcss ^8.5.15, elliptic ^6.6.1, brace-expansion ^5.0.6, fast-uri ^3.1.2, ws ^8.20.1
- npm audit: 12 vulnerabilities (3H / 3M / 6L) → 6 low (all dev-only storybook chain)

## v1.1.0

April 2026

Full dependency update across the entire stack.

### Dependencies

- Next.js 16.1.6 to 16.2.3
- React and React DOM 19.2.3 to 19.2.5
- Storybook 8.6.x to 10.3.5 (addon-essentials and blocks consolidated into core)
- TypeScript 5 to 6
- ESLint 9 to 10
- lucide-react 0.564.x to 1.8.0 (brand icons replaced with inline SVGs)
- Tiptap packages updated to 3.22.3
- @dashboardpack/core updated to ^1.1.0
- All remaining dependencies bumped to latest versions

## v1.0.0

February 2026

Initial release of Zenith Dashboard.

### Dashboard

- Overview page with stats cards, revenue chart, traffic pie chart, and goals progress
- Analytics page with detailed chart breakdowns
- Collapsible sidebar with icon-only mode
- Responsive header with search, notifications, and user menu

### Pages

- Orders page with data table, sorting, filtering, and CRUD operations
- Products catalog with grid and list views
- Customers management with detail panels
- Billing page with plan selection and payment history
- Invoices list with status badges
- Notifications center with read/unread states
- Settings page with profile, appearance, and notification preferences
- Help and support page

### Authentication

- Sign-in page with email/password form and social login buttons
- Sign-up page with form validation using React Hook Form and Zod

### UI Components

- 25+ vendored shadcn/ui components (Button, Card, Dialog, Table, Tabs, etc.)
- Command palette (Cmd+K) for quick navigation
- Toast notifications via Sonner
- Confirm dialog for destructive actions

### Theming

- Dark, light, and system theme modes
- OKLCh color tokens for perceptually uniform colors
- Semantic color system (primary, success, warning, destructive)
- 5-color chart palette
- Custom dark sidebar in both light and dark modes

### Tech Stack

- Next.js 16 with App Router
- React 19
- TypeScript 6 with strict mode
- Tailwind CSS v4
- Recharts for data visualization
- Lucide React icons
- React Hook Form + Zod for form validation
- Radix UI primitives

### Documentation

- Built-in documentation site at /docs
- Installation guide, folder structure, theming, components, and deployment docs

Back to the Introduction or view the Deployment Guide.