Commit Graph

64 Commits

Author SHA1 Message Date
Wayne Sutton
3658c9c93c update: dashbaord siteconfig and Ask AI documentation alignment 2026-01-10 11:55:43 -08:00
Wayne Sutton
3287c48357 fix: Hide scrollbars on docs layout while preserving scroll, update about page for dashboard workflow 2026-01-10 00:15:28 -08:00
Wayne Sutton
03bf3e49e5 feat: Added a Sync version control system for tracking changes to posts, pages, home content, and footer. 2026-01-09 23:02:28 -08:00
Wayne Sutton
1323928341 fix: docs css sidebar fixes 2026-01-09 14:54:00 -08:00
Wayne Sutton
7a8a1c61e3 fix: Docs layout CSS conflict fix 2026-01-08 22:58:34 -08:00
Wayne Sutton
cd696416d9 Export as PDF, Core Web Vitals performance optimizations, Enhanced diff code block rendering and blog post example on codeblocks 2026-01-07 23:20:50 -08:00
Wayne Sutton
1257fa220f Canonical URL fix for search engines (GitHub Issue #6) and other seo fixes" 2026-01-07 21:48:41 -08:00
Wayne Sutton
98916899a3 fix(seo): resolve 7 SEO issues from GitHub Issue #4
SEO improvements for better search engine optimization:

  1. Canonical URL - Added client-side dynamic canonical link tags for posts and pages
  2. Single H1 per page - Markdown H1s demoted to H2 with .blog-h1-demoted class (maintains H1 visual styling)
  3. DOM order fix - Article now loads before sidebar in DOM for SEO (CSS order property maintains visual layout)
  4. X-Robots-Tag - HTTP header added via netlify.toml (index, follow for public; noindex for dashboard/api routes)
  5. Hreflang tags - Self-referencing hreflang (en, x-default) for language targeting
  6. og:url consistency - Uses same canonicalUrl variable as canonical link tag
  7. twitter:site - New TwitterConfig in siteConfig.ts for Twitter Cards meta tags

  Files modified:
  - src/config/siteConfig.ts: Added TwitterConfig interface with site/creator fields
  - src/pages/Post.tsx: SEO meta tags for posts/pages, DOM order optimization
  - src/components/BlogPost.tsx: H1 to H2 demotion in markdown renderer
  - src/styles/global.css: .blog-h1-demoted class, CSS order properties
  - convex/http.ts: hreflang and twitter:site in generateMetaHtml()
  - netlify.toml: X-Robots-Tag headers for public, dashboard, API routes
  - index.html: canonical, hreflang, twitter:site placeholder tags
  - fork-config.json.example: twitter configuration fields

  Closes #4

  Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 11:31:55 -08:00
Wayne Sutton
85c100451a update: semantic search is now Optional configuration 2026-01-05 23:25:42 -08:00
Wayne Sutton
3c9feb071b feat: Make semantic search optional and disabled by default
- Add SemanticSearchConfig interface with enabled toggle to siteConfig.ts
- Default semantic search to disabled (enabled: false) to avoid blocking forks without OPENAI_API_KEY
- Update SearchModal.tsx to conditionally show mode toggle based on config
- Update sync-posts.ts to skip embedding generation when disabled
- Add semantic search toggle to Dashboard config generator
- Update FORK_CONFIG.md with Semantic Search Configuration section
- Update fork-config.json.example with semanticSearch option
- Update docs-semantic-search.md with enable/disable instructions
- Update changelog and documentation

When disabled (default):
- Search modal shows only keyword search (no mode toggle)
- Embedding generation skipped during sync
- No OpenAI API key required

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 22:22:50 -08:00
Wayne Sutton
5a8df46681 feat: Add semantic search with vector embeddings
Add vector-based semantic search to complement keyword search.
  Users can toggle between "Keyword" and "Semantic" modes in the
  search modal (Cmd+K, then Tab to switch).

  Semantic search:
  - Uses OpenAI text-embedding-ada-002 (1536 dimensions)
  - Finds content by meaning, not exact words
  - Shows similarity scores as percentages
  - ~300ms latency, ~$0.0001/query
  - Graceful fallback if OPENAI_API_KEY not set

  New files:
  - convex/embeddings.ts - Embedding generation actions
  - convex/embeddingsQueries.ts - Queries/mutations for embeddings
  - convex/semanticSearch.ts - Vector search action
  - convex/semanticSearchQueries.ts - Result hydration queries
  - content/pages/docs-search.md - Keyword search docs
  - content/pages/docs-semantic-search.md - Semantic search docs

  Changes:
  - convex/schema.ts: Add embedding field and by_embedding vectorIndex
  - SearchModal.tsx: Add mode toggle (TextAa/Brain icons)
  - sync-posts.ts: Generate embeddings after content sync
  - global.css: Search mode toggle styles

  Documentation updated:
  - changelog.md, TASK.md, files.md, about.md, home.md

  Configuration:
  npx convex env set OPENAI_API_KEY sk-your-key

  Generated with [Claude Code](https://claude.com/claude-code)

  Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

  Status: Ready to commit. All semantic search files are staged. The TypeScript warnings are pre-existing (unused variables) and don't affect the build.
2026-01-05 18:30:48 -08:00
Wayne Sutton
83411ec1b2 fix: Write page frontmatter sidebar toggle now works outside focus mode 2026-01-04 11:01:26 -08:00
Wayne Sutton
0baedee682 fix: fork configuration now updates 14 files, logoGallery uses relative URLs and Search result highlighting and scroll-to-match 2026-01-04 09:24:08 -08:00
Wayne Sutton
ca40d199da fix: AI service links now use local /raw URLs with simplified prompt
- Changed ChatGPT, Claude, and Perplexity links from GitHub raw URLs to local /raw/{slug}.md
  - Simplified AI prompt from multi-line instructions to "Read this URL and summarize it:"
  - URLs now constructed using window.location.origin for consistency
  - Removed unused siteConfig import and getGitHubRawUrl function
  - No longer requires git push for AI links to work (synced content available immediately)

  Updated: src/components/CopyPageDropdown.tsx, changelog.md, task.md, files.md, changelog-page.md
2026-01-03 21:47:46 -08:00
Wayne Sutton
f377a3dde2 Raw index.md now includes home.md and footer.md content 2026-01-03 20:46:55 -08:00
Wayne Sutton
cb2875a830 Fix: Footer fix for docs section pages, and Centralized defaultTheme in siteConfig.ts 2026-01-03 16:09:30 -08:00
Wayne Sutton
83265d5e52 update: Centralized defaultTheme in siteConfig.ts 2026-01-03 12:49:21 -08:00
Wayne Sutton
560582928f Docs sidebar group icons via frontmatter 2026-01-03 00:18:10 -08:00
Wayne Sutton
8fe6b53600 feat: Add docsSectionGroupOrder frontmatter field for controlling docs sidebar group order 2026-01-02 23:11:35 -08:00
Wayne Sutton
a3897f92c5 feat: Multi-model AI chat and image generation in Dashboard -fix 2026-01-01 22:21:04 -08:00
Wayne Sutton
a9f56d9c04 feat: Multi-model AI chat and image generation in Dashboard 2026-01-01 22:00:46 -08:00
Wayne Sutton
4cfbb2588a feature: Social footer icons in header navigation 2026-01-01 16:06:36 -08:00
Wayne Sutton
2858b6149b Embed YouTube videos and Twitter/X posts directly in markdown
Domain whitelisting for security (only trusted domains allowed)
2026-01-01 14:31:56 -08:00
Wayne Sutton
1eaec05fec feat: add author pages at /author/:authorSlug with clickable author names in posts
Add author archive pages displaying all posts by a specific author, following
  the existing tag pages pattern. Author names in post headers are now clickable
  links that navigate to the author's page.

  Changes:
  - Add by_authorName index to posts table (convex/schema.ts)
  - Add getAllAuthors and getPostsByAuthor queries (convex/posts.ts)
  - Create AuthorPage.tsx component with list/cards view toggle
  - Add /author/:authorSlug route (src/App.tsx)
  - Make authorName clickable in Post.tsx for posts and pages
  - Add author link and page styles (src/styles/global.css)
  - Add author pages to sitemap (convex/http.ts)
  - Update documentation: files.md, TASK.md, changelog.md, changelog-page.md
  - Save implementation plan to prds/authorname-blogs.md
2026-01-01 00:05:10 -08:00
Wayne Sutton
1e759495eb fix: remove homepage intro loading flash by using invisible Suspense fallback and null render during query load 2025-12-31 22:08:10 -08:00
Wayne Sutton
86d97e80eb fix: add ES module compatibility to configure-fork.ts using fileURLToPath 2025-12-31 12:36:55 -08:00
Wayne Sutton
86e9c4cf5b update: moved footer to footer.md and docs updated 2025-12-30 17:29:11 -08:00
Wayne Sutton
6cd9ec116c feat: add CLAUDE.md and skills documentation
Created CLAUDE.md for Claude Code instructions and .claude/skills/ directory with frontmatter, convex, and sync skill files. Updated sync-discovery-files.ts to auto-update CLAUDE.md during sync.
2025-12-30 12:03:06 -08:00
Wayne Sutton
02bc3c2973 update: workos logo, blog post images and dashboard docs images upload 2025-12-29 23:12:28 -08:00
Wayne Sutton
e8d09fcce2 feature: new dashboard workos auth for dashboard login, dashboard optional in site config, sync server for dashboard, workos and dashboard docs updated 2025-12-29 22:11:52 -08:00
Wayne Sutton
c5896fd5ef feat: add blog heading styles to home intro content 2025-12-28 18:09:57 -08:00
Wayne Sutton
e1e64a36ec feat: Add MCP server fork setup instructions and update documentation 2025-12-27 22:54:51 -08:00
Wayne Sutton
a87db9d171 docs: add changelog entries for v1.33.1 through v1.37.0
Add missing changelog entries to content/pages/changelog-page.md:

v1.34.0 (2025-12-26): Blog page featured layout with hero post
- blogFeatured frontmatter field for posts
- Hero card displays first featured post with landscape image
- 2-column featured row for remaining featured posts
- 3-column grid for regular posts

v1.35.0 (2025-12-26): Image support at top of posts and pages
- showImageAtTop frontmatter field
- Full-width image display above post header
- Works for both posts and pages

v1.36.0 (2025-12-27): Social footer component
- Customizable social links (8 platform types)
- Copyright with auto-updating year
- showSocialFooter frontmatter field for per-page control
- Configurable via siteConfig.socialFooter

v1.37.0 (2025-12-27): Newsletter Admin UI
- Three-column admin interface at /newsletter-admin
- Subscriber management with search and filters
- Send newsletter panel (post selection or custom email)
- Weekly digest automation (Sunday 9am UTC)
- Developer notifications (subscriber alerts, weekly stats)
- Markdown-to-HTML conversion for custom emails
2025-12-27 15:32:07 -08:00
Wayne Sutton
3dcdb69041 update: show iamge at top of blog post, updated monospace font and base font size, default font for write 2025-12-26 18:13:06 -08:00
Wayne Sutton
b35dd17332 Update: Blog page featured layout ui, mobile menu padding and font change 2025-12-26 16:41:06 -08:00
Wayne Sutton
bfe88d0217 feat: add AI Agent chat integration with Anthropic Claude API
Add AI writing assistant (Agent) powered by Anthropic Claude API. Agent can be enabled on Write page (replaces textarea) and optionally in RightSidebar on posts/pages via frontmatter.

Features:
- AIChatView component with per-page chat history
- Page content context support for AI responses
- Markdown rendering for AI responses
- User-friendly error handling for missing API keys
- System prompt configurable via Convex environment variables
- Anonymous session authentication using localStorage

Environment variables required:
- ANTHROPIC_API_KEY (required)
- CLAUDE_PROMPT_STYLE, CLAUDE_PROMPT_COMMUNITY, CLAUDE_PROMPT_RULES (optional split prompts)
- CLAUDE_SYSTEM_PROMPT (optional single prompt fallback)

Configuration:
- siteConfig.aiChat.enabledOnWritePage: Enable Agent toggle on /write page
- siteConfig.aiChat.enabledOnContent: Allow Agent on posts/pages via frontmatter
- Frontmatter aiChat: true (requires rightSidebar: true)

Updated files:
- src/components/AIChatView.tsx: AI chat interface component
- src/components/RightSidebar.tsx: Conditional Agent rendering
- src/pages/Write.tsx: Agent mode toggle (title changes to Agent)
- convex/aiChats.ts: Chat history queries and mutations
- convex/aiChatActions.ts: Claude API integration with error handling
- convex/schema.ts: aiChats table with indexes
- src/config/siteConfig.ts: AIChatConfig interface
- Documentation updated across all files

Documentation:
- files.md: Updated component descriptions
- changelog.md: Added v1.33.0 entry
- TASK.md: Marked AI chat tasks as completed
- README.md: Added AI Agent Chat section
- content/pages/docs.md: Added AI Agent chat documentation
- content/blog/setup-guide.md: Added AI Agent chat setup instructions
- public/raw/changelog.md: Added v1.33.0 entry
2025-12-26 12:31:33 -08:00
Wayne Sutton
b94b26116a Add image support to footer component with size control via HTML attributes 2025-12-25 23:01:58 -08:00
Wayne Sutton
d00f204fa7 docs: update changelog page with right sidebar feature and fixes
Add v1.30.0, v1.30.1, and v1.30.2 entries to changelog-page.md covering:
- Right sidebar feature implementation
- TypeScript error fixes
- Right sidebar default behavior fix
2025-12-25 21:06:06 -08:00
Wayne Sutton
6b776733d5 feat: add font family configuration system with monospace option 2025-12-25 12:17:27 -08:00
Wayne Sutton
01db0a70e2 fix: plain text code blocks now wrap text properly 2025-12-25 00:31:30 -08:00
Wayne Sutton
27847327fd fix: standardize URLs to www.markdown.fast to resolve RSS feed validation errors 2025-12-24 23:45:58 -08:00
Wayne Sutton
03ff3eb844 feat: add discovery files sync commands and update documentation 2025-12-24 23:16:34 -08:00
Wayne Sutton
1ac6b9fc84 docs: update changelog page with v1.26.0 and v1.27.0 2025-12-24 14:35:49 -08:00
Wayne Sutton
4bc26c7a33 feat: add tag pages, related posts, and re-enable AI service links
- Add /tags/[tag] routes with dynamic tag archive pages
- Add related posts component to blog post footers (up to 3 by shared tags)
- Tag links in post footers now navigate to tag archive pages
- Re-enable Open in AI links using GitHub raw URLs (bypasses edge issues)
- Add gitHubRepo config in siteConfig.ts for raw URL construction
- Add by_tags index and getAllTags/getPostsByTag/getRelatedPosts queries
- Update sitemap to include dynamically generated tag pages
- Add mobile responsive styling for all new components
- Update docs with git push requirement for AI links to work
2025-12-24 13:49:00 -08:00
Wayne Sutton
dc5f9eff4c fix: sidebar border and ui sidebar ui changes 2025-12-24 12:23:59 -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
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
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
94ba8fe184 fix: SEO/AEO/GEO improvements for AI crawlers and search engines 2025-12-22 00:07:24 -08:00