Files
wiki/changelog.md

3.2 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

[1.2.0] - 2025-12-14

Added

  • Real-time stats page at /stats with live visitor tracking
    • Active visitors count with per-page breakdown
    • Total page views and unique visitors
    • Views by page sorted by popularity
  • Page view tracking via event records pattern (no write conflicts)
  • Active session heartbeat system (30s interval, 2min timeout)
  • Cron job for stale session cleanup every 5 minutes
  • New Convex tables: pageViews and activeSessions
  • Stats link in homepage footer

Technical

  • Uses anonymous session UUIDs (no PII stored)
  • All stats update in real-time via Convex subscriptions
  • Mobile responsive stats grid (4 to 2 to 1 columns)
  • Theme support with CSS variables (dark, light, tan, cloud)

[1.1.0] - 2025-12-14

Added

  • Netlify Edge Functions for dynamic Convex HTTP proxying
    • rss.ts proxies /rss.xml and /rss-full.xml
    • sitemap.ts proxies /sitemap.xml
    • api.ts proxies /api/posts and /api/post
  • Vite dev server proxy for RSS, sitemap, and API endpoints

Changed

  • Replaced hardcoded Convex URLs in netlify.toml with edge functions
  • Edge functions dynamically read VITE_CONVEX_URL from environment
  • Updated setup guide, docs, and README with edge function documentation

Fixed

  • RSS feeds and sitemap now work without manual URL configuration
  • Local development properly proxies API routes to Convex

[1.0.0] - 2025-12-14

Added

  • Initial project setup with Vite, React, TypeScript
  • Convex backend with posts, pages, viewCounts, and siteConfig tables
  • Markdown blog post support with frontmatter parsing
  • Static pages support (About, Projects, Contact) with navigation
  • Four theme options: Dark, Light, Tan (default), Cloud
  • Font configuration option in global.css with serif (New York) as default
  • Syntax highlighting for code blocks using custom Prism themes
  • Year-grouped post list on home page
  • Individual post pages with share buttons
  • SEO optimization with dynamic sitemap at /sitemap.xml
  • JSON-LD structured data injection for blog posts
  • RSS feeds at /rss.xml and /rss-full.xml (full content for LLMs)
  • AI agent discovery with llms.txt following llmstxt.org standard
  • robots.txt with rules for AI crawlers
  • API endpoints for LLM access:
    • /api/posts - JSON list of all posts
    • /api/post?slug=xxx - Single post as JSON or markdown
  • Copy Page dropdown for sharing to ChatGPT, Claude
  • Open Graph and Twitter Card meta tags
  • Netlify edge function for social media crawler detection
  • Build-time markdown sync from content/blog/ to Convex
  • Responsive design for mobile, tablet, and desktop

Security

  • All HTTP endpoints properly escape HTML and XML output
  • Convex queries use indexed lookups
  • External links use rel="noopener noreferrer"
  • No console statements in production code

Technical Details

  • React 18 with TypeScript
  • Convex for real-time database
  • react-markdown for rendering
  • react-syntax-highlighter for code blocks
  • date-fns for date formatting
  • lucide-react for icons
  • Netlify deployment with edge functions
  • SPA 404 fallback configured