Changelog

All notable changes to JSONBlog packages are documented here.

cli

v3.1.1

  • Updated dependencies []:
  • @jsonblog/generator-boilerplate@5.0.0

v3.1.0

  • Add generator configuration support
  • Added `GeneratorConfigSchema` for validating generator configuration
  • Added optional `generator` field to `BlogSchema` with nested `name` and `config` properties
  • Both `name` and `config` fields are optional for maximum flexibility
  • Added `getGeneratorName()` helper to extract generator name from blog.json (takes precedence over CLI flag)
  • Added `getGeneratorConfig()` helper to extract generator configuration
  • Updated `build()` function to pass configuration as 3rd parameter to generators
  • Updated `build` and `watch` commands to use new configuration system
  • Added logging to show when generator config is being used
  • Updated function signature to accept optional 3rd parameter: `generatorConfig: Record<string, any> = {}`
  • Both `@jsonblog/generator-boilerplate` and `@jsonblog/generator-tailwind` now support configuration
  • Generators log whether config is provided via `hasConfig` flag
  • Backward compatible: config parameter is optional with empty object default
  • Updated dependencies []:
  • @jsonblog/schema@3.1.0
  • @jsonblog/generator-boilerplate@4.0.0

v3.0.2

  • Updated dependencies with professional design improvements
  • @jsonblog/generator-boilerplate@3.2.0
  • Redesigned header with semantic HTML and cleaner navigation
  • Post title now at top with date underneath for better hierarchy
  • Simplified AI indicator to subtle "AI-generated" badge
  • Tags moved to footer section after content
  • Professional styling inspired by Stripe, Linear, Vercel
  • Footer now links to jsonblog.dev
  • Enhanced spacing and typography throughout

v3.0.1

  • Updated dependencies with major typography improvements
  • @jsonblog/generator-boilerplate@3.1.0
  • Typography improvements (19px font, 816px width, system fonts)
  • Automatic syntax highlighting with Highlight.js
  • Better list indentation and spacing
  • Improved code block styling
  • Enhanced readability throughout

v3.0.0

  • # Major Release: Monorepo Migration & Package Renaming
  • `jsonblog-schema` → `@jsonblog/schema`
  • `jsonblog-generator-boilerplate` → `@jsonblog/generator-boilerplate`
  • `jsonblog-cli` → `@jsonblog/cli`
  • Packages now provide **dual ESM + CJS builds** for maximum compatibility
  • CLI is ESM-only (requires Node.js 20+)
  • Proper package exports with TypeScript types
  • ⚡ Faster builds with Turborepo caching
  • 📦 Better package management with pnpm workspaces
  • 🔄 Coordinated releases with Changesets
  • 🎯 Modern ESM/CJS dual builds
  • 🛠️ Improved TypeScript support
  • Built with **tsup** for fast, optimized bundles
  • External dependencies properly handled (no bundling issues)
  • ESM-compatible with `import.meta.url` support
  • Fixed `__dirname` usage for ESM compatibility
  • Updated dependencies
  • @jsonblog/schema@3.0.0
  • @jsonblog/generator-boilerplate@3.0.0

schema

v3.1.0

  • Add generator configuration support
  • Added `GeneratorConfigSchema` for validating generator configuration
  • Added optional `generator` field to `BlogSchema` with nested `name` and `config` properties
  • Both `name` and `config` fields are optional for maximum flexibility
  • Added `getGeneratorName()` helper to extract generator name from blog.json (takes precedence over CLI flag)
  • Added `getGeneratorConfig()` helper to extract generator configuration
  • Updated `build()` function to pass configuration as 3rd parameter to generators
  • Updated `build` and `watch` commands to use new configuration system
  • Added logging to show when generator config is being used
  • Updated function signature to accept optional 3rd parameter: `generatorConfig: Record<string, any> = {}`
  • Both `@jsonblog/generator-boilerplate` and `@jsonblog/generator-tailwind` now support configuration
  • Generators log whether config is provided via `hasConfig` flag
  • Backward compatible: config parameter is optional with empty object default

v3.0.0

  • # Major Release: Monorepo Migration & Package Renaming
  • `jsonblog-schema` → `@jsonblog/schema`
  • `jsonblog-generator-boilerplate` → `@jsonblog/generator-boilerplate`
  • `jsonblog-cli` → `@jsonblog/cli`
  • Packages now provide **dual ESM + CJS builds** for maximum compatibility
  • CLI is ESM-only (requires Node.js 20+)
  • Proper package exports with TypeScript types
  • ⚡ Faster builds with Turborepo caching
  • 📦 Better package management with pnpm workspaces
  • 🔄 Coordinated releases with Changesets
  • 🎯 Modern ESM/CJS dual builds
  • 🛠️ Improved TypeScript support
  • Built with **tsup** for fast, optimized bundles
  • External dependencies properly handled (no bundling issues)
  • ESM-compatible with `import.meta.url` support
  • Fixed `__dirname` usage for ESM compatibility

generator-boilerplate

v5.0.0

  • Implement directory-based pretty URLs and add interactive particle animation
  • Posts: `post-slug.html` → `post-slug/index.html`
  • Pages: `about.html` → `about/index.html`
  • Tags: `tag/javascript.html` → `tag/javascript/index.html`
  • Categories: `category/tutorial.html` → `category/tutorial/index.html`
  • Pagination: `page/2.html` → `page/2/index.html`
  • ✅ Pretty URLs work everywhere (GitHub Pages, Netlify, Vercel, S3, etc.)
  • ✅ No server configuration required
  • ✅ Industry-standard approach (same as Jekyll, Hugo, Gatsby)
  • ✅ SEO-friendly clean URLs
  • RSS feed URLs now use trailing slashes
  • Sitemap URLs now use trailing slashes
  • Dev server routing updated to handle directory structure
  • Blue particle network matching site accent color (#0066cc)
  • Interactive on hover - particles connect when mouse is near
  • Smooth, performant animation with 40 particles
  • Subtle opacity and size animations
  • ~100KB library size via CDN
  • **Vercel**: Works automatically, no changes needed
  • **Netlify**: Works automatically, no changes needed
  • **GitHub Pages**: Works automatically, no changes needed
  • **Nginx**: Add `try_files $uri $uri/ $uri/index.html =404;`
  • **Apache**: Already works with default settings
  • Dev servers updated to serve `/path/index.html` for `/path` requests
  • Template links remain unchanged (already used extensionless URLs)
  • All generators maintain consistent behavior

v4.0.0

  • Add generator configuration support
  • Added `GeneratorConfigSchema` for validating generator configuration
  • Added optional `generator` field to `BlogSchema` with nested `name` and `config` properties
  • Both `name` and `config` fields are optional for maximum flexibility
  • Added `getGeneratorName()` helper to extract generator name from blog.json (takes precedence over CLI flag)
  • Added `getGeneratorConfig()` helper to extract generator configuration
  • Updated `build()` function to pass configuration as 3rd parameter to generators
  • Updated `build` and `watch` commands to use new configuration system
  • Added logging to show when generator config is being used
  • Updated function signature to accept optional 3rd parameter: `generatorConfig: Record<string, any> = {}`
  • Both `@jsonblog/generator-boilerplate` and `@jsonblog/generator-tailwind` now support configuration
  • Generators log whether config is provided via `hasConfig` flag
  • Backward compatible: config parameter is optional with empty object default
  • Updated dependencies []:
  • @jsonblog/schema@3.1.0

v3.2.0

  • Redesign blog template for professional appearance
  • Redesigned header with semantic HTML (header/nav/main tags)
  • Removed old sidebar/hamburger navigation patterns
  • Cleaner navigation with improved spacing and hover states
  • Footer now links to jsonblog.dev instead of GitHub
  • Post title now appears at top (larger, more prominent at 2.75rem)
  • Date displays underneath title for better hierarchy
  • Simplified AI indicator to subtle "AI-generated" badge
  • Tags moved to footer section after content
  • Better visual hierarchy with improved spacing
  • Enhanced header with subtle bottom border for separation
  • Professional AI indicator styling (subtle gray badge)
  • Better spacing throughout (3rem margins, 2rem padding)
  • Cleaner navigation without heavy borders
  • Improved article title sizing and letter spacing

v3.1.0

  • a8442c7: Improve typography and add automatic syntax highlighting
  • Increased base font size from 16px to 19px (20% larger) for better readability
  • Improved line-height from 1.6 to 1.75 for better breathing room
  • Increased max-width from 680px to 816px (20% wider)
  • Changed to system fonts for body text for native feel across devices
  • Improved heading hierarchy with larger sizes and better spacing
  • Better paragraph and list spacing throughout
  • Added Highlight.js for automatic syntax highlighting
  • Supports 190+ languages with auto-detection
  • Atom One Dark theme for professional code appearance
  • Dark code blocks with improved padding and border-radius
  • Fixed ordered/unordered list indentation
  • Improved spacing between list items and nested lists
  • Better inline code styling with distinct backgrounds
  • Enhanced blockquotes, tables, and other elements
  • Updated link colors to #0066cc for better contrast
  • Improved responsive breakpoints
  • Better table styling with zebra striping
  • Enhanced overall visual hierarchy

v3.0.0

  • # Major Release: Monorepo Migration & Package Renaming
  • `jsonblog-schema` → `@jsonblog/schema`
  • `jsonblog-generator-boilerplate` → `@jsonblog/generator-boilerplate`
  • `jsonblog-cli` → `@jsonblog/cli`
  • Packages now provide **dual ESM + CJS builds** for maximum compatibility
  • CLI is ESM-only (requires Node.js 20+)
  • Proper package exports with TypeScript types
  • ⚡ Faster builds with Turborepo caching
  • 📦 Better package management with pnpm workspaces
  • 🔄 Coordinated releases with Changesets
  • 🎯 Modern ESM/CJS dual builds
  • 🛠️ Improved TypeScript support
  • Built with **tsup** for fast, optimized bundles
  • External dependencies properly handled (no bundling issues)
  • ESM-compatible with `import.meta.url` support
  • Fixed `__dirname` usage for ESM compatibility
  • Updated dependencies
  • @jsonblog/schema@3.0.0

generator-tailwind

v4.3.0

  • Add `itemsSource` field for loading grid items from external JSON files
  • **Keep blog.json clean**: Grid items can now be stored in separate files (e.g., `videos.json`, `projects.json`)
  • **New field**: `itemsSource` - path to JSON file containing array of grid items
  • **Automatic loading**: Items are fetched and parsed automatically during build
  • **Backward compatible**: Inline `items` arrays still work
  • **Recommended pattern**: Use `itemsSource` for large lists to avoid bloating blog.json

v4.2.0

  • Add grid layout support for pages (videos, projects, portfolios)
  • **New page layouts**: Pages can now specify `layout: "grid"` for grid-based layouts
  • **Grid items**: Add `items` array to pages for structured content (videos, projects, etc.)
  • **Featured items**: Support `featured: true` to display items prominently at the top
  • **Rich metadata**: Items support title, description, url, image/thumbnail, date, and tags
  • **Responsive grid**: Automatic 2-column desktop grid that collapses to single column on mobile
  • **New types**: Added `PageGridItem` interface to TypeScript types
  • **Documentation**: Comprehensive README section explaining grid layout usage and examples

v4.1.0

  • Improve content width, remove duplicate titles, and add syntax highlighting
  • **Increased max-width**: Content width increased from 720px to 960px for better readability on modern screens
  • **Fixed duplicate H1**: Post pages no longer show duplicate title (removed H1 from markdown content since title is in template)
  • **Syntax highlighting**: Added Highlight.js with Atom One Dark theme for code blocks
  • All code blocks now have proper syntax highlighting across 190+ languages

v4.0.1

  • Fix CSS stylesheet path in HTML templates
  • Fixed critical bug where generated HTML referenced `/templates/tailwind.css` instead of `/main.css`
  • This caused 404 errors and completely unstyled pages in production
  • All generated HTML now correctly links to `/main.css`

v4.0.0

  • Transform to AI Lab Notebook aesthetic with dark theme and typographic swagger
  • **Dark theme**: Muted charcoal/ink backgrounds (#0A0B0D) with soft chalk text (#F8F9FA)
  • **Blueprint grid**: Subtle 32px grid pattern background (0.04 opacity)
  • **Typography-driven hierarchy**: Fonts do the heavy lifting, minimal color usage
  • **System UI language**: Monospace fonts for all metadata (timestamps, tags, navigation)
  • **Technical but friendly**: Readable at 2am, appeals to VCs and Dota teammates alike
  • Drop caps, pull quotes, gradient dividers, editorial serif fonts
  • Light off-white background, burgundy/forest/golden colors
  • Heavy 2px borders
  • Dark ink backgrounds with blueprint grid
  • Blue accent for links only, 1px soft borders
  • Mono font for system UI, simple blockquotes
  • Minimal color usage - hierarchy via weight and size

v3.2.1

  • Fix publishing issue from 3.2.0 where workspace dependencies were not properly transformed
  • v3.2.0 was published with `npm publish` which left `workspace:*` dependencies untransformed
  • v3.2.1 published correctly with `pnpm publish` to properly transform workspace dependencies
  • v3.2.0 has been deprecated - please use v3.2.1 or v3.1.0 instead

v3.2.0

  • Add comprehensive generator testing documentation and scripts
  • Created TESTING-GENERATORS.md with 6 testing strategies
  • Added test:generator npm script for quick testing
  • Included sample test-blog content for development
  • Added visual regression, snapshot, and performance testing approaches
  • Improved development workflow documentation

v3.1.0

  • Transform generator-tailwind with sophisticated Editorial/Magazine aesthetic
  • Replace IBM Plex Mono with editorial font stack: Playfair Display (headings), Lora (body), DM Sans (UI)
  • Dramatic typographic hierarchy with larger, more elegant sizing
  • Uppercase tracking for navigation and metadata
  • Primary: Burgundy (#8B2635) replacing generic blue
  • Secondary: Forest Green (#2C5F4D) for tags and accents
  • Tertiary: Golden (#C79F5C) for decorative elements
  • Warm neutrals with off-white background
  • Remove tsparticles animation; add centered editorial header with gradient dividers
  • Featured first post with large title and "Continue Reading" link
  • 2-column responsive grid for remaining posts
  • Magazine-style post cards with refined hover effects
  • Drop caps on first paragraph (4.5rem burgundy Playfair)
  • Pull quotes with large decorative quotation marks
  • Elegant gradient dividers
  • Sophisticated spacing (1.8 line-height, generous margins)
  • Refined "AI-assisted" badge (replacing "[AI-Generated]")
  • Staggered fade-in-up animations on post cards
  • Smooth hover transitions on tags (forest green fill)
  • Animated arrows on "Continue Reading" links
  • Mobile-optimized typography scaling
  • Single column on mobile, 2-column grid on desktop
  • Responsive drop caps and pull quotes

v3.0.0

  • Implement directory-based pretty URLs and add interactive particle animation
  • Posts: `post-slug.html` → `post-slug/index.html`
  • Pages: `about.html` → `about/index.html`
  • Tags: `tag/javascript.html` → `tag/javascript/index.html`
  • Categories: `category/tutorial.html` → `category/tutorial/index.html`
  • Pagination: `page/2.html` → `page/2/index.html`
  • ✅ Pretty URLs work everywhere (GitHub Pages, Netlify, Vercel, S3, etc.)
  • ✅ No server configuration required
  • ✅ Industry-standard approach (same as Jekyll, Hugo, Gatsby)
  • ✅ SEO-friendly clean URLs
  • RSS feed URLs now use trailing slashes
  • Sitemap URLs now use trailing slashes
  • Dev server routing updated to handle directory structure
  • Blue particle network matching site accent color (#0066cc)
  • Interactive on hover - particles connect when mouse is near
  • Smooth, performant animation with 40 particles
  • Subtle opacity and size animations
  • ~100KB library size via CDN
  • **Vercel**: Works automatically, no changes needed
  • **Netlify**: Works automatically, no changes needed
  • **GitHub Pages**: Works automatically, no changes needed
  • **Nginx**: Add `try_files $uri $uri/ $uri/index.html =404;`
  • **Apache**: Already works with default settings
  • Dev servers updated to serve `/path/index.html` for `/path` requests
  • Template links remain unchanged (already used extensionless URLs)
  • All generators maintain consistent behavior

v2.2.0

  • Add animated header background and generator metadata to footer
  • Added subtle animated gradient background that appears on hover
  • Dual-layer gradient animation: hover gradient and slow pulsing gradient
  • Smooth opacity transitions for professional feel
  • Background animates over 4 seconds with subtle pulse effect
  • Added generator name and version to footer
  • Dynamically reads from package.json at build time
  • Displays as "Generated by @jsonblog/generator-tailwind v2.2.0"
  • Smaller, subtle text styling in gray
  • Added `pulseSlow` keyframe animation to input.css
  • Generator reads package.json metadata at module initialization
  • Passes generatorName and generatorVersion to all template contexts
  • Z-index layering ensures content stays above animated backgrounds

v2.1.0

  • Enhance header design, reduce font sizes, and remove .html extensions
  • Enhanced header with bold title, blue accent underline, italic description
  • Animated navigation underlines that grow on hover
  • Header hover effect with blue accent line sweep
  • Base font: 19px → 17px
  • All headings and UI elements scaled proportionally
  • Removed .html extensions from all links
  • Configure hosting with `cleanUrls: true` for Vercel

v2.0.1

  • Fix Tailwind generator to use proper utility classes
  • Updated `input.css` to remove semantic component classes, keeping only base styles and content utilities
  • Converted all templates (layout, index, post, page, tag, category) to use Tailwind utility classes
  • Added subtle animations (fade-in on page load, hover effects on cards and buttons)
  • Implemented hover states with scale and color transitions
  • Maintained professional design inspired by jsonblog.dev homepage
  • Reduced CSS bundle size from 14KB to 12KB
  • IBM Plex Mono font for monospace aesthetic
  • Clean black/white/gray color scheme with #0066cc accent
  • Smooth transitions on all interactive elements
  • Hover effects: cards translate up, buttons scale and invert colors
  • Fade-in animation on page load for header and content
  • Responsive design with mobile-first approach
  • AI-generated post badges with distinct styling
  • Post cards have subtle hover lift effect
  • Tags and pagination buttons have smooth color inversion on hover
  • Navigation links have color transition on hover
  • Proper spacing and typography hierarchy
  • Professional, minimal aesthetic matching homepage

v2.0.0

  • Add generator configuration support
  • Added `GeneratorConfigSchema` for validating generator configuration
  • Added optional `generator` field to `BlogSchema` with nested `name` and `config` properties
  • Both `name` and `config` fields are optional for maximum flexibility
  • Added `getGeneratorName()` helper to extract generator name from blog.json (takes precedence over CLI flag)
  • Added `getGeneratorConfig()` helper to extract generator configuration
  • Updated `build()` function to pass configuration as 3rd parameter to generators
  • Updated `build` and `watch` commands to use new configuration system
  • Added logging to show when generator config is being used
  • Updated function signature to accept optional 3rd parameter: `generatorConfig: Record<string, any> = {}`
  • Both `@jsonblog/generator-boilerplate` and `@jsonblog/generator-tailwind` now support configuration
  • Generators log whether config is provided via `hasConfig` flag
  • Backward compatible: config parameter is optional with empty object default
  • Updated dependencies []:
  • @jsonblog/schema@3.1.0

v1.0.0

  • Initial release of Tailwind CSS generator
  • Build-time Tailwind CSS compilation with CLI
  • Utility-first CSS approach with optimized bundle (~14KB)
  • All features from generator-boilerplate (tags, pagination, RSS, sitemap)
  • Professional design matching boilerplate aesthetics
  • Customizable via tailwind.config.js
  • Same API and template structure as generator-boilerplate
  • Modern utility-first CSS framework
  • Excellent for rapid prototyping
  • Easy theme customization
  • Responsive design built-in
  • Industry-standard approach
  • --

v3.2.0

  • Redesign blog template for professional appearance
  • Redesigned header with semantic HTML (header/nav/main tags)
  • Removed old sidebar/hamburger navigation patterns
  • Cleaner navigation with improved spacing and hover states
  • Footer now links to jsonblog.dev instead of GitHub
  • Post title now appears at top (larger, more prominent at 2.75rem)
  • Date displays underneath title for better hierarchy
  • Simplified AI indicator to subtle "AI-generated" badge
  • Tags moved to footer section after content
  • Better visual hierarchy with improved spacing
  • Enhanced header with subtle bottom border for separation
  • Professional AI indicator styling (subtle gray badge)
  • Better spacing throughout (3rem margins, 2rem padding)
  • Cleaner navigation without heavy borders
  • Improved article title sizing and letter spacing

v3.1.0

  • a8442c7: Improve typography and add automatic syntax highlighting
  • Increased base font size from 16px to 19px (20% larger) for better readability
  • Improved line-height from 1.6 to 1.75 for better breathing room
  • Increased max-width from 680px to 816px (20% wider)
  • Changed to system fonts for body text for native feel across devices
  • Improved heading hierarchy with larger sizes and better spacing
  • Better paragraph and list spacing throughout
  • Added Highlight.js for automatic syntax highlighting
  • Supports 190+ languages with auto-detection
  • Atom One Dark theme for professional code appearance
  • Dark code blocks with improved padding and border-radius
  • Fixed ordered/unordered list indentation
  • Improved spacing between list items and nested lists
  • Better inline code styling with distinct backgrounds
  • Enhanced blockquotes, tables, and other elements
  • Updated link colors to #0066cc for better contrast
  • Improved responsive breakpoints
  • Better table styling with zebra striping
  • Enhanced overall visual hierarchy

v3.0.0

  • # Major Release: Monorepo Migration & Package Renaming
  • `jsonblog-schema` → `@jsonblog/schema`
  • `jsonblog-generator-boilerplate` → `@jsonblog/generator-boilerplate`
  • `jsonblog-cli` → `@jsonblog/cli`
  • Packages now provide **dual ESM + CJS builds** for maximum compatibility
  • CLI is ESM-only (requires Node.js 20+)
  • Proper package exports with TypeScript types
  • ⚡ Faster builds with Turborepo caching
  • 📦 Better package management with pnpm workspaces
  • 🔄 Coordinated releases with Changesets
  • 🎯 Modern ESM/CJS dual builds
  • 🛠️ Improved TypeScript support
  • Built with **tsup** for fast, optimized bundles
  • External dependencies properly handled (no bundling issues)
  • ESM-compatible with `import.meta.url` support
  • Fixed `__dirname` usage for ESM compatibility
  • Updated dependencies
  • @jsonblog/schema@3.0.0