Commit Graph

74 Commits

Author SHA1 Message Date
Wayne Sutton
dc5f9eff4c fix: sidebar border and ui sidebar ui changes 2025-12-24 12:23:59 -08:00
Wayne Sutton
e2eaa9c43b fix: disable AI service links due to Netlify edge function issues
- Remove /api/raw Netlify Function that caused build failures
- Comment out ChatGPT/Claude/Perplexity buttons in CopyPageDropdown
- Keep Copy page, View as Markdown, Download as SKILL.md options
- Update blog post with detailed log of attempted solutions
- Clean up netlify.toml by removing broken redirect rule

Users can still copy markdown and paste into AI tools manually.
The raw markdown files work in browsers but AI crawlers cannot
fetch them reliably due to Netlify edge function interception.
2025-12-24 01:44:00 -08:00
Wayne Sutton
534f020999 Move logo to top navigation header on all pages 2025-12-24 01:31:04 -08:00
Wayne Sutton
b43f8ff2f4 fix(api): use JS Netlify Function with query param for /api/raw endpoint 2025-12-24 00:55:55 -08:00
Wayne Sutton
6cbe5006ac fix(build): remove @netlify/functions dependency, use inline types 2025-12-24 00:45:14 -08:00
Wayne Sutton
c98049c411 feat(api): add /api/raw/:slug endpoint for AI tools (ChatGPT, Claude, Perplexity)
- Create netlify/functions/raw.ts Netlify Function
- Returns text/plain with minimal headers for reliable AI ingestion
- Reads from dist/raw/ (production) or public/raw/ (dev/preview)
- Update CopyPageDropdown to use /api/raw/:slug for AI services
- Keep /raw/:slug.md for View as Markdown browser viewing
- Add @netlify/functions dev dependency
2025-12-24 00:35:02 -08:00
Wayne Sutton
6ac6098668 fix(ai): remove Link header from /raw/* and use window.location.origin for raw URLs
- Remove Link header from global headers scope, apply only to /index.html
- Remove X-Robots-Tag noindex from /raw/* to allow AI crawler indexing
- Use window.location.origin instead of props.url for raw markdown URL construction
- Ensures correct URLs even when props.url points to canonical/deploy preview domains
- Fixes ChatGPT/Perplexity fetch failures on /raw/*.md endpoints
2025-12-24 00:13:10 -08:00
Wayne Sutton
a9d500ca4f eat(sync): generate homepage index markdown file listing all posts 2025-12-24 00:00:08 -08:00
Wayne Sutton
54e9dcc88c feat(sync): generate homepage index markdown file listing all posts 2025-12-23 23:55:23 -08:00
Wayne Sutton
6a49583da5 fix(edge): let AI crawlers bypass botMeta OG interception for /raw/*.md 2025-12-23 23:19:40 -08:00
Wayne Sutton
e8c8218c81 perf: use aggregate components in getStats for O(log n) counts instead of O(n) table scans pre and post data 2025-12-23 17:18:36 -08:00
Wayne Sutton
6b25873c79 perf: use aggregate components in getStats for O(log n) counts instead of O(n) table scans 2025-12-23 17:13:50 -08:00
Wayne Sutton
fa9651f62e docs: update changelog page with v1.24.3 and v1.24.4 releases
- Added v1.24.4 entry documenting showInNav field and hardcodedNavItems configuration
- Added v1.24.3 entry documenting inner page logo configuration
- Includes configuration examples and updated file lists
- Maintains consistent format with existing changelog entries
2025-12-23 17:01:22 -08:00
Wayne Sutton
3d6700739d feat: added logo to pages, blog post as an option in sitecong 2025-12-23 15:41:47 -08:00
Wayne Sutton
bdf5378a9a feat(mobile): redesign menu with sidebar integration
- Move mobile nav controls to left side (hamburger, search, theme)
- Add sidebar TOC to mobile menu when page has sidebar layout
- Hide desktop sidebar on mobile since accessible via hamburger
- Standardize mobile menu typography with CSS variables
- Use font-family inherit for consistent fonts across menu elements
2025-12-23 14:01:37 -08:00
Wayne Sutton
3b9f140fe1 updates: readme links update to live site 2025-12-23 01:06:46 -08:00
Wayne Sutton
52016b974f updated readme with docs links 2025-12-23 01:02:23 -08:00
Wayne Sutton
0342539aac feat: add sidebar layout support for blog posts
- Add layout field to posts schema and frontmatter
- Enable docs-style sidebar layout for posts (previously pages only)
- Update Post.tsx to handle sidebar for both posts and pages
- Add layout field to Write.tsx frontmatter reference
- Update documentation in docs.md, setup-guide.md, how-to-publish.md
- Add documentation links to README.md
2025-12-23 00:57:21 -08:00
Wayne Sutton
edb7fc6723 feat: blog view toggle, page sidebar layout, and collapsible markdown
- Blog page: list/card view toggle with localStorage persistence
- Pages: sidebar layout with auto-generated TOC (layout: "sidebar")
- Markdown: collapsible sections via <details>/<summary> tags
- Add rehype-raw and rehype-sanitize for HTML in markdown
2025-12-23 00:21:57 -08:00
Wayne Sutton
d47062bb32 fix: use correct excludedPath syntax for Netlify edge functions 2025-12-22 02:04:56 -08:00
Wayne Sutton
1798be1047 fix: use correct excluded_paths syntax for Netlify edge functions 2025-12-22 01:58:11 -08:00
Wayne Sutton
e9ff238abf fix: exclude raw files from edge function so AI crawlers can access markdown 2025-12-22 01:35:38 -08:00
Wayne Sutton
94ba8fe184 fix: SEO/AEO/GEO improvements for AI crawlers and search engines 2025-12-22 00:07:24 -08:00
Wayne Sutton
d623aed598 updates: site url to markdown.fast, png og image and site name 2025-12-21 22:24:12 -08:00
Wayne Sutton
5a7824b2b8 fixed: home link strong css, added more markdown examples 2025-12-21 18:47:17 -08:00
Wayne Sutton
f598c3e903 added vistor map gif to blog post 2025-12-21 16:35:40 -08:00
Wayne Sutton
a2bef06315 feat(stats): add subtitle explaining visitor map count difference 2025-12-21 16:19:49 -08:00
Wayne Sutton
4a912fd345 docs: add visitor map configuration to README and update docs.md
- Added visitor map section to README.md after GitHub Contributions Graph
- Updated visitor map description in content/pages/docs.md with privacy details
- Documents configuration options in src/config/siteConfig.ts
- Explains Netlify geo detection and theme-aware colors
2025-12-21 15:58:43 -08:00
Wayne Sutton
1e67e492c8 fix: improve AI service prompts with load verification 2025-12-21 14:55:15 -08:00
Wayne Sutton
dd934390cc feat: raw markdown URLs, author display, GitHub Stars, and frontmatter docs
v1.18.1 - CopyPageDropdown raw markdown URLs
- AI services (ChatGPT, Claude, Perplexity) now receive /raw/{slug}.md URLs
- Direct access to clean markdown content for better AI parsing
- No HTML parsing required by AI services
- Renamed buildUrlFromPageUrl to buildUrlFromRawMarkdown

v1.19.0 - Author display for posts and pages
- New optional authorName and authorImage frontmatter fields
- Round avatar image displayed next to date and read time
- Works on individual post and page views
- Write page updated with new field reference

v1.19.1 - GitHub Stars on Stats page
- Live star count from waynesutton/markdown-site repository
- Fetches from GitHub public API (no token required)
- Stats page now displays 6 cards with responsive grid

Documentation updates
- Frontmatter Flow section added to docs.md, setup-guide.md, files.md
- How frontmatter works with step-by-step processing flow
- Instructions for adding new frontmatter fields

Updated files:
- src/components/CopyPageDropdown.tsx
- src/pages/Stats.tsx
- src/pages/Post.tsx
- src/pages/Write.tsx
- src/styles/global.css
- convex/schema.ts
- convex/posts.ts
- convex/pages.ts
- scripts/sync-posts.ts
- content/blog/setup-guide.md
- content/pages/docs.md
- content/pages/changelog-page.md
- files.md
- README.md
- TASK.md
- changelog.md
- AGENTS.md
2025-12-21 13:59:50 -08:00
Wayne Sutton
29691ee655 style(stats): add modern stats card CSS and wider layout
Add CSS styles for the modern stats page UI:
- stats-cards-modern: 5-column grid layout for stat cards
- stat-card-modern: individual card styling with icons and numbers
- Responsive breakpoints (3/2/1 columns for smaller screens)
- stats-page-wide: wider max-width for stats page
- main-content-wide: layout variant for stats route

These styles were missing from the previous Stats.tsx component update.
2025-12-21 00:08:44 -08:00
Wayne Sutton
53803e5263 style(stats): remove highlighted accent from Blog Posts card
Remove the teal highlight styling from the Blog Posts card on the Stats
page so all stat cards have uniform appearance. This removes the
highlighted property and associated conditional CSS classes.
2025-12-21 00:03:46 -08:00
Wayne Sutton
569244919d fix: move window.open before await to avoid popup blocker
When content exceeds URL length limit, the async clipboard write
was blocking the window.open call. Browsers require window.open
to happen synchronously within user gesture handlers.
2025-12-20 23:29:32 -08:00
Wayne Sutton
953851f75d fix: update Write page warning to reflect localStorage behavior 2025-12-20 23:16:54 -08:00
Wayne Sutton
662c28057c updated fork-confg post image 2025-12-20 23:12:40 -08:00
Wayne Sutton
5b356ff1a8 updated logo-marquee-image size 2025-12-20 22:55:11 -08:00
Wayne Sutton
db3343f7c0 updated font size and bolded text on homepage 2025-12-20 22:46:32 -08:00
Wayne Sutton
4ea0dd82ef Enhance homepage intro by wrapping text in a strong tag for better emphasis 2025-12-20 22:46:32 -08:00
Wayne Sutton
f14d6b6920 Add MIT License to the project 2025-12-20 22:27:20 -08:00
Wayne Sutton
04d08dbada feat(fork-config): add automated fork configuration with npm run configure
Add a complete fork configuration system that allows users to set up their
forked site with a single command or follow manual instructions.

## New files

- FORK_CONFIG.md: Comprehensive guide with two setup options
  - Option 1: Automated JSON config + npm run configure
  - Option 2: Manual step-by-step instructions with code snippets
  - AI agent prompt for automated updates

- fork-config.json.example: JSON template with all configuration fields
  - Site info (name, title, description, URL, domain)
  - GitHub and contact details
  - Creator section for footer links
  - Optional feature toggles (logo gallery, GitHub graph, blog page)
  - Theme selection

- scripts/configure-fork.ts: Automated configuration script
  - Reads fork-config.json and applies changes to all files
  - Updates 11 configuration files in one command
  - Type-safe with ForkConfig interface
  - Detailed console output showing each file updated

## Updated files

- package.json: Added configure script (npm run configure)
- .gitignore: Added fork-config.json to keep user config local
- files.md: Added new fork configuration files
- changelog.md: Added v1.18.0 entry
- changelog-page.md: Added v1.18.0 section with full details
- TASK.md: Updated status and completed tasks
- README.md: Replaced Files to Update section with Fork Configuration
- content/blog/setup-guide.md: Added Fork Configuration Options section
- content/pages/docs.md: Added Fork Configuration section
- content/pages/about.md: Added fork configuration mention
- content/blog/fork-configuration-guide.md: New featured blog post

## Files updated by configure script

| File                                | What it updates                        |
| ----------------------------------- | -------------------------------------- |
| src/config/siteConfig.ts            | Site name, bio, GitHub, features       |
| src/pages/Home.tsx                  | Intro paragraph, footer links          |
| src/pages/Post.tsx                  | SITE_URL, SITE_NAME constants          |
| convex/http.ts                      | SITE_URL, SITE_NAME constants          |
| convex/rss.ts                       | SITE_URL, SITE_TITLE, SITE_DESCRIPTION |
| index.html                          | Meta tags, JSON-LD, page title         |
| public/llms.txt                     | Site info, GitHub link                 |
| public/robots.txt                   | Sitemap URL                            |
| public/openapi.yaml                 | Server URL, site name                  |
| public/.well-known/ai-plugin.json   | Plugin metadata                        |
| src/context/ThemeContext.tsx        | Default theme                          |

## Usage

Automated:
  cp fork-config.json.example fork-config.json
  # Edit fork-config.json
  npm run configure

Manual:
  Follow FORK_CONFIG.md step-by-step guide
2025-12-20 22:15:33 -08:00
Wayne Sutton
e10e1098e9 updated footer credits 2025-12-20 21:19:48 -08:00
Wayne Sutton
f1f8c2417a fix: logo path url location for homepage 2025-12-20 20:56:07 -08:00
Wayne Sutton
66a2c4f4d2 feat: add GitHub contributions graph with theme-aware colors
- Add GitHubContributions component with year navigation
- Display contribution activity from github-contributions-api.jogruber.de
- Theme-specific colors for dark, light, tan, and cloud themes
- Phosphor icons for year navigation (CaretLeft, CaretRight)
- Click graph to visit GitHub profile
- Configurable via siteConfig.gitHubContributions
- Mobile responsive with scaled cells and hidden day labels
- Add documentation to setup-guide, docs, README, and changelog
2025-12-20 20:46:34 -08:00
Wayne Sutton
9bdfe10d61 feat: add /write page with three-column layout, font switcher, frontmatter reference, and localStorage persistence 2025-12-20 18:58:19 -08:00
Wayne Sutton
4b187cff53 fix: use frontmatter image for OG meta instead of default 2025-12-20 16:34:48 -08:00
Wayne Sutton
98a43b86a2 feat: implement chunked backfilling for aggregate component
- Add backfillAggregatesChunk mutation that processes 500 records at a time
- Uses pagination and ctx.scheduler.runAfter to chain batch processing
- Prevents Convex 16MB memory limit issues with large datasets
- Progress visible in Convex dashboard logs
- Track seen session IDs across chunks for unique visitor counting
- Update howstatsworks.md with chunked backfilling documentation
- Add v1.11.1 changelog entries
2025-12-20 14:59:05 -08:00
Wayne Sutton
0057194701 fix: use direct counting for stats until aggregates are backfilled
The aggregate components only contained new page views (after installation),
not the ~6000+ historical views. Changed getStats to use direct counting
from pageViews table to ensure all historical data is displayed correctly.

This is a temporary fix until we implement chunked backfilling to handle
the large dataset without exceeding memory limits.
2025-12-20 14:54:11 -08:00
Wayne Sutton
d562e1ede8 docs: add v1.11.0 entry to changelog page for aggregate component 2025-12-20 14:41:55 -08:00
Wayne Sutton
8d28e36458 feat(stats): switch to aggregate component for O(log n) counts
- Add @convex-dev/aggregate package for efficient aggregation
- Update convex.config.ts with pageViewsByPath, totalPageViews, uniqueVisitors aggregates
- Update recordPageView to insert into aggregate components
- Update getStats to use aggregate counts instead of O(n) table scans
- Add backfillAggregates internal mutation for existing data
- Update prds/howstatsworks.md with old vs new comparison
- Update changelog.md with v1.11.0 entry
- Update files.md with aggregate component info
2025-12-20 14:39:53 -08:00
Wayne Sutton
ae3d69c7b0 feat(copy-dropdown): update skill export to Anthropic Agent Skills format
- Change download filename from {slug}-skill.md to SKILL.md
- Add YAML frontmatter with name and description fields
- Generate compliant skill name from slug (lowercase, hyphens, max 64 chars)
- Build description with "when to use" triggers (max 1024 chars)
- Structure content with ## Instructions and ## Examples sections
- Update UI text to "Download as SKILL.md" with "Anthropic Agent Skills format"
2025-12-20 12:24:07 -08:00