2025-12-14 11:30:22 -08:00
|
|
|
# Changelog
|
|
|
|
|
|
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
|
|
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
|
|
|
2025-12-14 23:07:11 -08:00
|
|
|
## [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)
|
|
|
|
|
|
2025-12-14 17:00:46 -08:00
|
|
|
## [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
|
|
|
|
|
|
2025-12-14 11:30:22 -08:00
|
|
|
## [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
|
2025-12-14 17:00:46 -08:00
|
|
|
- Copy Page dropdown for sharing to ChatGPT, Claude
|
2025-12-14 11:30:22 -08:00
|
|
|
- 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
|