Files
wiki/TASK.md

12 KiB

Markdown Blog - Tasks

To Do

  • Newsletter signup
  • Comments system
  • Draft preview mode

Current Status

v1.28.1 ready. Fixed RSS feed validation errors by standardizing all URLs to www.markdown.fast.

Completed

  • RSS feed validation errors fixed by standardizing URLs to www.markdown.fast

  • Updated index.html meta tags (og:url, og:image, twitter:domain, twitter:url, twitter:image, JSON-LD)

  • Updated convex/rss.ts and convex/http.ts SITE_URL constants

  • Updated public/robots.txt, public/openapi.yaml, and public/llms.txt with www URLs

  • RSS exclusions confirmed in netlify.toml for botMeta edge function

  • Discovery files sync script (sync-discovery-files.ts)

  • Automated updates for AGENTS.md and llms.txt with current app data

  • New npm scripts: sync:discovery, sync:discovery:prod, sync:all, sync:all:prod

  • Fork configuration updated to support gitHubRepo config

  • Backward compatibility for legacy githubUsername/githubRepo fields

  • Documentation updated across all files with new sync commands

  • Homepage post limit configuration (homePostsLimit in siteConfig.postsDisplay)

  • Optional "read more" link below limited post list (homePostsReadMore config)

  • Customizable link text and destination URL

  • CSS styling for read more link with hover effects

  • Conditional rendering logic to show link only when posts are limited

  • Tag pages at /tags/[tag] route with view mode toggle

  • Related posts component for blog post footers (up to 3 related posts by shared tags)

  • Tag links in post footers now navigate to tag archive pages

  • Open in AI links (ChatGPT, Claude, Perplexity) re-enabled using GitHub raw URLs

  • gitHubRepo configuration in siteConfig.ts for AI service URL construction

  • by_tags index added to posts table in convex/schema.ts

  • New Convex queries: getAllTags, getPostsByTag, getRelatedPosts

  • Sitemap updated to include dynamically generated tag pages

  • Documentation updated with git push requirement for AI links

  • Mobile responsive styling for tag pages and related posts

  • Fixed sidebar border width consistency using box-shadow instead of border-right

  • Hidden sidebar scrollbar while maintaining scroll functionality

  • Added top border and border-radius to sidebar wrapper using CSS variables

  • Updated CSS documentation for sidebar border implementation

  • Fixed mobile menu breakpoint to match sidebar hide breakpoint (1024px)

  • Mobile hamburger menu now shows whenever sidebar is hidden

  • add MIT Licensed. Do whatevs.

  • Blog page view mode toggle (list and card views)

  • Post cards component with thumbnails, titles, excerpts, and metadata

  • View preference saved to localStorage

  • Default view mode configurable in siteConfig.blogPage.viewMode

  • Toggle visibility controlled by siteConfig.blogPage.showViewToggle

  • Responsive grid: 3 columns (desktop), 2 columns (tablet), 1 column (mobile)

  • Theme-aware styling for all four themes

  • Raw markdown files now accessible to AI crawlers (ChatGPT, Perplexity)

  • Added /raw/ path bypass in botMeta edge function

  • Sitemap now includes static pages (about, docs, contact, etc.)

  • Security headers added to netlify.toml

  • Link header pointing to llms.txt for AI discovery

  • Preconnect hints for Convex backend

  • Fixed URL consistency in openapi.yaml and robots.txt

  • Write conflict prevention: increased dedup windows, added heartbeat jitter

  • Visitor map styling: removed box-shadow, increased land dot contrast and opacity

  • Real-time visitor map on stats page showing live visitor locations

  • Netlify edge function for geo detection (geo.ts)

  • VisitorMap component with dotted world map and pulsing dots

  • Theme-aware colors for all four themes (dark, light, tan, cloud)

  • visitorMap config option in siteConfig.ts to enable/disable

  • Privacy friendly: no IP addresses stored, only city/country/coordinates

  • Documentation updated: setup-guide, docs, FORK_CONFIG, fork-config.json.example

  • Author display for posts and pages with authorName and authorImage frontmatter fields

  • Round avatar image displayed next to date and read time on post/page views

  • Write page updated with new frontmatter field reference

  • Documentation updated: setup-guide.md, docs.md, files.md, README.md, AGENTS.md

  • PRD created: prds/howto-Frontmatter.md with reusable prompt for future updates

  • GitHub Stars card on Stats page with live count from repository

  • CopyPageDropdown AI services now use raw markdown URLs for better AI parsing

  • ChatGPT, Claude, and Perplexity receive /raw/{slug}.md URLs instead of page URLs

  • Automated fork configuration with npm run configure

  • FORK_CONFIG.md comprehensive guide with two options (automated + manual)

  • fork-config.json.example template with all configuration options

  • scripts/configure-fork.ts for automated updates

  • Updates all 11 configuration files in one command

  • GitHub contributions graph on homepage with theme-aware colors

  • Year navigation with Phosphor icons (CaretLeft, CaretRight)

  • Click graph to visit GitHub profile

  • Configurable via siteConfig.gitHubContributions

  • Theme-specific contribution colors for all 4 themes

  • Mobile responsive design with scaled cells

  • Public /write page with three-column layout (not linked in nav)

  • Left sidebar: Home link, content type selector, actions (Clear, Theme, Font)

  • Center: Writing area with Copy All button and borderless textarea

  • Right sidebar: Frontmatter reference with per-field copy buttons

  • Font switcher to toggle between Serif and Sans-serif fonts

  • Font preference persistence in localStorage

  • Theme toggle icons matching ThemeToggle.tsx (Moon, Sun, Half2Icon, Cloud)

  • Content type switching (Blog Post/Page) updates writing area template

  • Word, line, and character counts in status bar

  • Warning banner about refresh losing content

  • localStorage persistence for content, type, and font

  • Redesign /write page with three-column Cursor docs-style layout

  • Add per-field copy icons to frontmatter reference panel

  • Add refresh warning message in left sidebar

  • Left sidebar with home link, content type selector, and actions

  • Right sidebar with frontmatter fields and copy buttons

  • Center area with title, Copy All button, and borderless textarea

  • Theme toggle with matching icons for all four themes

  • Redesign /write page with wider layout and modern Notion-like UI

  • Remove header from /write page (standalone writing experience)

  • Add inline theme toggle and home link to Write page toolbar

  • Collapsible frontmatter fields panel

  • Add markdown write page with copy option at /write

  • Centralized font-size CSS variables in global.css

  • Base size scale with semantic naming (3xs to hero)

  • Component-specific font-size variables

  • Mobile responsive font-size overrides

  • Open Graph image fix for posts and pages with frontmatter images

  • Dedicated blog page with configurable display options

  • Blog page navigation order via siteConfig.blogPage.order

  • Centralized siteConfig.ts for site configuration

  • Posts display toggle for homepage and/or blog page

  • move home to the top of the mobile menu

  • Fork configuration documentation in docs.md and setup-guide.md

  • "Files to Update When Forking" section with all 9 configuration files

  • Backend configuration examples for Convex files

  • Site branding updates across all AI discovery files

  • Fork documentation added to README.md

  • Blog post updated with v1.9.0 and v1.10.0 features

  • Scroll-to-top button with configurable threshold

  • Scroll-to-top documentation in docs.md and setup-guide.md

  • Mobile menu with hamburger navigation for mobile and tablet

  • Generate Skill feature in CopyPageDropdown

  • Project setup with Vite + React + TypeScript

  • Convex schema for posts, viewCounts, siteConfig, pages

  • Build-time markdown sync script

  • Theme system (dark/light/tan/cloud)

  • Default theme configuration (tan)

  • Home page with year-grouped post list

  • Post page with markdown rendering

  • Static pages support (About, Projects, Contact)

  • Syntax highlighting for code blocks

  • Open Graph and Twitter Card meta tags

  • Netlify edge function for bot detection

  • RSS feed support (standard and full content)

  • API endpoints for LLMs (/api/posts, /api/post)

  • Copy Page dropdown for AI tools

  • Sample blog posts and pages

  • Security audit completed

  • TypeScript type-safety verification

  • Netlify build configuration verified

  • SPA 404 fallback configured

  • Mobile responsive design

  • Edge functions for dynamic Convex HTTP proxying

  • Vite dev server proxy for local development

  • Real-time stats page at /stats

  • Page view tracking with event records pattern

  • Active session heartbeat system

  • Cron job for stale session cleanup

  • Stats link in homepage footer

  • Real-time search with Command+K shortcut

  • Search modal with keyboard navigation

  • Full text search indexes for posts and pages

  • Featured section with list/card view toggle

  • Logo gallery with continuous marquee scroll

  • Frontmatter-controlled featured items (featured, featuredOrder)

  • Featured items sync with npm run sync (no redeploy needed)

  • Firecrawl content importer (npm run import)

  • /api/export endpoint for batch content fetching

  • AI plugin discovery at /.well-known/ai-plugin.json

  • OpenAPI 3.0 spec at /openapi.yaml

  • AGENTS.md for AI coding agents

  • Static raw markdown files at /raw/{slug}.md

  • View as Markdown option in CopyPageDropdown

  • Perplexity added to AI service options

  • Featured image support with square thumbnails in card view

  • Improved markdown table CSS styling

  • Aggregate component integration for efficient stats counting (O(log n) vs O(n))

  • Three aggregate components: pageViewsByPath, totalPageViews, uniqueVisitors

  • Chunked backfilling mutation for existing page view data

  • Aggregate component registration in convex.config.ts

  • Stats query updated to use aggregate counts

  • Aggregate component documentation in prds/howstatsworks.md

  • Sidebar navigation anchor links fixed for collapsed/expanded sections

  • Navigation scroll calculation with proper header offset (80px)

  • Expand ancestors before scrolling to ensure target visibility

  • Removed auto-expand from scroll handler to preserve manual collapse state

  • Collapse button event handling improved to prevent link navigation

  • Heading extraction updated to filter out code blocks

  • Sidebar no longer shows example headings from markdown code examples

  • Mobile menu redesigned with left-aligned navigation controls

  • Hamburger menu order changed (hamburger, search, theme toggle)

  • Sidebar table of contents integrated into mobile menu

  • Desktop sidebar hidden on mobile when sidebar layout is enabled

  • SidebarContext created to share sidebar data between components

  • Mobile menu typography standardized with CSS variables

  • Font-family standardized using inherit for consistency

  • showInNav field for pages to control navigation visibility

  • Pages can be published but hidden from navigation menu

  • Defaults to true for backwards compatibility

  • Pages with showInNav: false remain accessible via direct URL, searchable, and available via API

  • Hardcoded navigation items configuration in siteConfig.ts

  • Add React route pages (like /stats, /write) to navigation via hardcodedNavItems

  • Configure navigation order, title, and visibility per route

  • Navigation combines Blog link, hardcoded nav items, and markdown pages

  • All nav items sorted by order field (lower = first)

Deployment Steps

  1. Run npx convex dev to initialize Convex
  2. Set CONVEX_DEPLOY_KEY in Netlify environment variables
  3. Connect repo to Netlify and deploy
  4. Edge functions automatically handle RSS, sitemap, and API routes

Someday Features TBD

  • Newsletter signup
  • Comments system
  • Draft preview mode