mirror of
https://github.com/waynesutton/markdown-site.git
synced 2026-01-12 04:09:14 +00:00
Updated:
- content/blog/raw-markdown-and-copy-improvements.md
- Changed title from 'v1.7 and v1.8' to 'v1.7 to v1.10'
- Added Fork configuration section (v1.10.0) with 9-file table
- Added Scroll-to-top section (v1.9.0) with configuration options
- Updated summary to include all features from v1.7 to v1.10
- Fixed image path to /images/v17.png
- Updated sync command guidance for dev vs prod
- TASK.md
- Added new To Do items for future features
- Removed duplicate Future Enhancements section
- content/pages/docs.md
- Added Mobile menu section
- Added Copy Page dropdown table with all options
- Added Markdown tables section
- content/pages/about.md
- Updated Features list with new v1.8.0 features
- content/blog/setup-guide.md
- Added image field to pages schema
- Updated Project structure with new directories
- Added /raw/{slug}.md to API endpoints
- Added Mobile Navigation and Copy Page Dropdown sections
- Added featured image documentation with ordering details
Documentation now covers all features from v1.7.0 through v1.10.0.
12 KiB
12 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[1.10.0] - 2025-12-20
Added
- Fork configuration documentation
- "Files to Update When Forking" section in docs.md and setup-guide.md
- Lists all 9 files with site-specific configuration
- Backend configuration examples for Convex files
- Code snippets for
convex/http.ts,convex/rss.ts,src/pages/Post.tsx
- Same documentation added to README.md for discoverability
Changed
- Updated site branding across all configuration files
public/robots.txt: Updated sitemap URL and headerpublic/llms.txt: Updated site name and descriptionpublic/.well-known/ai-plugin.json: Updated name and description for AI pluginspublic/openapi.yaml: Updated API title and site name exampleconvex/http.ts: Updated SITE_URL and SITE_NAME constants
Documentation
- Setup guide table of contents now includes fork configuration sections
- Docs page configuration section expanded with backend file list
- All AI discovery files reflect new "markdown sync site" branding
[1.9.0] - 2025-12-20
Added
- Scroll-to-top button
- Appears after scrolling 300px (configurable)
- Uses Phosphor ArrowUp icon for consistency
- Smooth scroll animation (configurable)
- Works with all four themes (dark, light, tan, cloud)
- Enabled by default (can be disabled in Layout.tsx)
- Fade-in animation when appearing
- Responsive sizing for mobile devices
Technical
- New component:
src/components/ScrollToTop.tsx- Configurable via
ScrollToTopConfiginterface - Exports
defaultScrollToTopConfigfor customization - Uses passive scroll listener for performance
- Configurable via
- Configuration options in Layout.tsx
scrollToTopConfig - CSS styles added to global.css with theme-specific shadows
[1.8.0] - 2025-12-20
Added
- Mobile menu with hamburger navigation
- Slide-out drawer on mobile and tablet views
- Accessible with keyboard navigation (Escape to close)
- Focus trap for screen reader support
- Smooth CSS transform animations
- Page links and Home link in drawer
- Auto-closes on route change
- Generate Skill option in CopyPageDropdown
- Formats post/page content as an AI agent skill file
- Downloads as
{slug}-skill.mdwith skill structure - Includes metadata, when to use, and instructions sections
- Uses Download icon from lucide-react
Changed
- Layout.tsx now includes hamburger button and MobileMenu component
- Desktop navigation hidden on mobile, mobile menu hidden on desktop
- Improved responsive navigation across all breakpoints
Technical
- New component:
src/components/MobileMenu.tsx - HamburgerButton exported from MobileMenu for Layout use
- New
formatAsSkill()function for skill file generation - New
handleDownloadSkill()handler with blob download logic - Uses browser File API for client-side file download
- CSS styles for mobile menu in global.css
[1.7.0] - 2025-12-20
Added
- Static raw markdown files at
/raw/{slug}.md- Generated during
npm run sync(development) ornpm run sync:prod(production) inpublic/raw/directory - Each published post and page gets a corresponding static
.mdfile - SEO indexable and accessible to AI agents
- Includes metadata header (type, date, reading time, tags)
- Generated during
- View as Markdown option in CopyPageDropdown
- Opens raw
.mdfile in new tab - Available on all post and page views
- Opens raw
- Perplexity added to AI service options in CopyPageDropdown
- Sends full markdown content via URL parameter
- Research articles directly in Perplexity
- Featured image support for posts and pages
imagefield in frontmatter displays as square thumbnail in card view- Non-square images automatically cropped to center
- Recommended size: 400x400px minimum (800x800px for retina)
Changed
- CopyPageDropdown now accepts
slugprop for raw file links - Updated
_redirectsto serve/raw/*files directly - Improved markdown table CSS styling
- GitHub-style tables with proper borders
- Mobile responsive with horizontal scroll
- Theme-aware alternating row colors
- Hover states for better readability
Technical
- Updated
scripts/sync-posts.tsto generatepublic/raw/files - Files are regenerated on each sync (old files cleaned up)
- Only published posts and pages generate raw files
- CopyPageDropdown uses FileText icon from lucide-react for View as Markdown
[1.6.1] - 2025-12-18
Added
- AGENTS.md with codebase instructions for AI coding agents
Changed
- Added Firecrawl import to all "When to sync vs deploy" tables in docs
- Clarified import workflow: creates local files only, no
import:prodneeded - Updated README, setup-guide, how-to-publish, docs page, about-this-blog
- Renamed
content/pages/changelog.mdtochangelog-page.mdto avoid confusion with root changelog
[1.6.0] - 2025-12-18
Added
- Firecrawl content importer for external URLs
- New
npm run import <url>command - Scrapes URLs and converts to local markdown drafts
- Creates drafts in
content/blog/with frontmatter - Uses Firecrawl API (requires
FIRECRAWL_API_KEYin.env.local) - Then sync to dev (
npm run sync) or prod (npm run sync:prod) - No separate
import:prodcommand needed (import creates local files only)
- New
- New API endpoint
/api/exportfor batch content fetching- Returns all posts with full markdown content
- Single request for LLM ingestion
- AI plugin discovery at
/.well-known/ai-plugin.json- Standard format for AI tool integration
- OpenAPI 3.0 specification at
/openapi.yaml- Full API documentation
- Describes all endpoints, parameters, and responses
- Enhanced
llms.txtwith complete API documentation- Added all new endpoints
- Improved quick start section
- Added response schema documentation
Technical
- New script:
scripts/import-url.ts - New package dependency:
@mendable/firecrawl-js - Updated
netlify/edge-functions/api.tsfor/api/exportproxy - Updated
convex/http.tswith export endpoint - Created
public/.well-known/directory
[1.5.0] - 2025-12-17
Added
- Frontmatter-controlled featured items
- Add
featured: trueto any post or page frontmatter - Use
featuredOrderto control display order (lower = first) - Featured items sync instantly with
npm run sync(no redeploy needed)
- Add
- New Convex queries for featured content
getFeaturedPosts: returns posts withfeatured: truegetFeaturedPages: returns pages withfeatured: true
- Schema updates with
featuredandfeaturedOrderfields- Added
by_featuredindex for efficient queries
- Added
Changed
- Home.tsx now queries featured items from Convex instead of siteConfig
- FeaturedCards component uses Convex queries for real-time updates
- Removed hardcoded
featuredItemsandfeaturedEssaysfrom siteConfig
Technical
- Updated sync script to parse
featuredandfeaturedOrderfrom frontmatter - Added index on
featuredfield in posts and pages tables - Both list and card views now use frontmatter data
[1.4.0] - 2025-12-17
Added
- Featured section with list/card view toggle
- Card view displays title and excerpt in a responsive grid
- Toggle button in featured header to switch between views
- View preference saved to localStorage
- Logo gallery with continuous marquee scroll
- Clickable logos with configurable URLs
- CSS only animation for smooth infinite scrolling
- Configurable speed, position, and title
- Grayscale logos with color on hover
- Responsive sizing across breakpoints
- 5 sample logos included for easy customization
- New
excerptfield for posts and pages frontmatter- Used for card view descriptions
- Falls back to description field for posts
- Expanded
siteConfigin Home.tsxfeaturedViewMode: 'list' or 'cards'showViewToggle: enable user togglelogoGallery: full configuration object
Technical
- New components:
FeaturedCards.tsx,LogoMarquee.tsx - Updated schema with optional excerpt field
- Updated sync script to parse excerpt from frontmatter
- CSS uses theme variables for all four themes
- Mobile responsive grid (3 to 2 to 1 columns for cards)
[1.3.0] - 2025-12-17
Added
- Real-time search with Command+K keyboard shortcut
- Search icon in top nav using Phosphor Icons
- Modal with keyboard navigation (arrow keys, Enter, Escape)
- Full text search across posts and pages using Convex search indexes
- Result snippets with context around search matches
- Distinguishes between posts and pages with type badges
- Search indexes for pages table (title and content)
- New
@phosphor-icons/reactdependency for search icon
Technical
- Uses Convex full text search with reactive queries
- Deduplicates results from title and content searches
- Sorts results with title matches first
- Mobile responsive modal design
- All four themes supported (dark, light, tan, cloud)
[1.2.0] - 2025-12-15
Added
- Real-time stats page at
/statswith 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:
pageViewsandactiveSessions - 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.tsproxies/rss.xmland/rss-full.xmlsitemap.tsproxies/sitemap.xmlapi.tsproxies/api/postsand/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_URLfrom 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.xmland/rss-full.xml(full content for LLMs) - AI agent discovery with
llms.txtfollowing llmstxt.org standard robots.txtwith 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