# Changelog All notable changes to the CoolAdmin Bootstrap 5 Admin Dashboard Template will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [3.3.0] - 2026-05-22 ### Renamed `theme-2026` → `app` The "modern overlay" stylesheet picked up a year-flavoured name in v3.1 (`theme-2026.css`). Renamed it to a neutral convention so it doesn't feel dated within months. End-user visual output is unchanged; the rebuilt CSS is byte-equivalent modulo the class-name swap. ### Changed - **`css/theme-2026.css` → `css/app.css`**, **`src/scss/theme-2026.scss` → `src/scss/app.scss`**, **`src/scss/2026/` → `src/scss/app/`** (all 36 partials). - **`body.theme-2026` → `body.app`** across all 35 pages. Every internal SCSS scope (`body.theme-2026 .m-card`, etc.) updated. Theme-preset selectors (`body.theme-2026.theme-purple` and friends) updated to `body.app.theme-purple`. - **`js/main-vanilla.js`** — `initThemeSwitcher()` gate updated to `body.classList.contains('app')`. - **`scripts/migrate-page.js`** — auto-detects `app auth-page` / `app error-page` body class (the previous strings are no longer present in any page). - **`package.json` npm scripts** — `sass --watch src/scss/theme-2026.scss:css/theme-2026.css` → `…app.scss:css/app.css`. - **`src/pug/partials/_head.pug`** — `link(href='css/theme-2026.css')` → `link(href='css/app.css')`. - **`src/pug/layouts/_default.pug`** — `body.theme-2026` → `body.app`. `_auth.pug` and `_error.pug` default `bodyClass` updated. 6 explicit-bodyClass pages (login, register, forget-pass, 404, 500, maintenance) updated. - **`src/pug/partials/content/docs.html`** — user-facing docs updated to reference `app.css` / `body.app` / `body.app.theme-purple` recipes. - **CLAUDE.md, README.md** current-tense references updated. Historical entries for v3.0 / v3.1 / v3.2 in this CHANGELOG were left as-is for fidelity to what was true at the time. --- ## [3.2.0] - 2026-05-22 ### Source pipeline — Pug templates, SCSS partials, Vite dev server Refactored the source tree so contributors can edit shared partials once instead of editing every page. Built artifacts (HTML + CSS) still ship in the repo root unchanged, so end users who clone and open `index.html` still need zero Node toolchain. Addresses [issue #35](https://github.com/puikinsh/CoolAdmin/issues/35). ### Added - **Pug templating.** `src/pug/` houses layouts (`_default.pug`, `_auth.pug`), partials (`_head.pug` mixin, `sidebar.pug`, `header-desktop.pug`, `header-mobile.pug`, `footer-scripts.pug`), and per-page files (`pages/*.pug`). The desktop sidebar and mobile nav both read from a single source-of-truth array in `_nav-data.pug` — editing one file updates the menu on every page. - **SCSS sources, split into ITCSS partials.** `src/scss/theme.scss` is an entry file that `@use`s 20 partials (`_variables`, `_generic`, `_elements`, `_objects`, fourteen under `components/`, `_utilities`, `_modern-additions`). `src/scss/theme-2026.scss` `@use`s 36 partials under `src/scss/2026/`. Sass compiles back to `css/theme.css` and `css/theme-2026.css` that is byte-for-byte semantically equivalent to the pre-refactor CSS (verified via minified diff = 0 bytes). - **Build tooling.** `package.json` with `npm run dev` (concurrent pug-watch + sass-watch + Vite dev server with HMR at `:3000`), `npm run build` (production build), and individual `build:pug` / `build:sass` scripts. `scripts/build-pug.js` is a small Node script that walks `src/pug/pages/*.pug` and renders each to a root-level `.html` file. - **Vite dev server.** `vite.config.js` configured for multi-page mode with HMR for HTML/CSS changes. ### Changed - **Three pages migrated to Pug as a proof-of-concept:** `index.html`, `login.html`, `table.html`. The Pug page files (`src/pug/pages/*.pug`) `extends` a layout and set `block variables` (page metadata + `activePage` for sidebar highlighting). Per-page inner content is currently `include`d as raw HTML from `src/pug/partials/content/` so each page can be converted to proper Pug incrementally. - **Generator meta bumped to `CoolAdmin 3.2.0`** across all 35 HTML files. - **HTML output formatting** is normalized by Pug (2-space indent, self-closing void elements) and CSS formatting normalized by sass; the regenerated files have different whitespace from the previous hand-written versions but render identically. ### Notes - The remaining 21 pages still ship as hand-written HTML at the repo root, each ~10 lines of Pug away from being source-driven. Migrating each one is a per-file extraction of its inner content into `src/pug/partials/content/` plus a small `src/pug/pages/*.pug` wrapper. - `@use` order in the entry SCSS files matches the original document order so the cascade — including the 2026 overlay's deliberately-layered "FINAL"/"ULTRA-FINAL" mobile-topbar overrides — is preserved. - `.gitignore` updated to exclude `node_modules/`, `.vite/`, and `dist/`. --- ## [3.1.0] - 2026-05-07 ### Modern theme overlay (`theme-2026.css`), 11 new pages, interactive utilities A second pass on top of 3.0 turned the template from "audited and clean" into "modern application shell". Single overlay stylesheet (`theme-2026.css`, ~7100 lines) layers an Inter + brand-blue design system on top of the legacy CSS, so the original styles still work for anyone who needs them. ### Added - **Design system overlay (`theme-2026.css`).** Activated by `
`. Inter font (rsms.me CDN), brand palette tokens (`--m-c1` blue / `--m-c2` teal / `--m-c3` orange / `--m-c4` pink), surface/border/text/shadow custom properties, modern card pattern (`.m-card`), modern button pattern (`.m-btn`), stat-card, profile-card, cover-card, pricing-card, notice-card, rank-list with inline progress bars, kanban-board, project-list, deadline-list, team-list, email-list, inbox-split. - **6-preset color theme switcher.** `Cmd/Ctrl+Shift+T` cycles between Default Blue, Indigo, Emerald, Sunset, Rose, Slate. Choice persists in `localStorage`. Implemented in `initThemeSwitcher()` in `js/main-vanilla.js`. - **Cmd+K command palette.** `Cmd/Ctrl+K` opens a fuzzy-searchable palette with 31+ commands (navigation, theme switching, toast demos). Keyboard-only navigation, Esc to close. Implemented in `initCommandPalette()`. - **Toast notification system.** Public API: `window.toast.show({title, message, type, duration})` plus `success`/`info`/`warning`/`error` shortcuts. Auto-dismiss, click-to-dismiss, stack of up to 5. - **Loading skeletons.** Real skeleton-loading state on all four dashboards (`index`, `index2`, `index3`, `index4`). Click "Refresh" in the page header to see KPI cards and the primary chart swap to shimmer placeholders for ~1.2s, then restore. New `.skeleton-line`, `.skeleton-block`, `.skeleton-circle`, and `.btn-spinner` CSS primitives. - **Sidebar tooltips on collapsed state.** Hovering an icon in the collapsed desktop sidebar shows the link label as a tooltip rendered outside the overflow-hidden parent (uses `getBoundingClientRect`). - **Self-updating calendar events.** `calendar.html` now generates events relative to the current date (today, +1d, +3d, recurring weekly/monthly patterns) so the demo never looks stale. - **Interactive inbox.** `inbox.html` rebuilt with a split-pane reader: 12 full HTML email bodies, click to open, star/archive/delete/reply actions, mobile-responsive sliding pane. - **New pages (11).** `profile.html`, `kanban.html` (HTML5 drag-and-drop), `pricing.html`, `invoice.html` (print-ready), `data-table.html` (working sort/filter/pagination), `wizard.html` (multi-step form), `docs.html` (TOC scrollspy via `IntersectionObserver`), `notifications.html`, `404.html`, `500.html`, `maintenance.html`. - **Component-showcase pages rewritten.** `button.html`, `badge.html`, `alert.html`, `modal.html`, `tab.html`, `switch.html`, `progress-bar.html`, `typo.html` — modern interactive demos including async loading-button pattern, 6 modal variants, three tab styles, SVG circular progress rings, brand-color form switches. - **Mobile header rebuild.** CSS Grid 3-column layout (`auto 1fr auto`) replacing the fragile flex stack. Notification dropdowns become `position: fixed` sheets below the header on mobile so they don't punch off-screen on narrow viewports. ### Changed - **Distinct dashboard variants.** `index2` is now a Sales pipeline dashboard, `index3` a Marketing analytics dashboard, `index4` a Projects dashboard. Each has its own KPI strip, primary chart, and supporting widgets — no longer a duplicate of `index`. - **`withCanvas()` re-init support.** Chart registrations are stored in a private registry; `window.__coolReinit()` walks the registry, destroys any existing Chart.js instances, and re-renders against the current DOM. Used by the dashboard refresh button. - **Hamburger uses Font Awesome.** Replaced the CSS-drawn `