Skip to content

Claude/restore docs merge fo on a#60

Merged
velonone merged 3 commits into
mainfrom
claude/restore-docs-merge-FoOnA
Feb 6, 2026
Merged

Claude/restore docs merge fo on a#60
velonone merged 3 commits into
mainfrom
claude/restore-docs-merge-FoOnA

Conversation

@velonone
Copy link
Copy Markdown
Owner

@velonone velonone commented Feb 6, 2026

Pull Request

Description

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📝 Documentation update
  • 🎨 Style/UI update (changes that don't affect functionality)
  • ♻️ Code refactoring (no functional changes)
  • ⚡ Performance improvement
  • 🧪 Test update

Related Issues

Changes Made

Screenshots/Videos

Before

After

Testing

  • Tested on Chrome
  • Tested on Firefox
  • Tested on Safari
  • Tested on mobile devices
  • Tested with different themes

Design System Compliance

  • Follows VSPEC design system guidelines
  • Uses brand color #7C85ED appropriately (sparingly)
  • Uses grayscale system for non-accent elements
  • No Tailwind font classes unless specifically needed
  • Icons verified to exist in Lucide React
  • Follows glass morphism patterns where applicable
  • Maintains restrained, professional aesthetic

Checklist

  • My code follows the project's code style
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have tested that my changes work as expected
  • I have checked for responsive design issues
  • I have updated CHANGELOG.md (if applicable)

Additional Notes

Summary by CodeRabbit

  • New Features

    • Searchable, modal docs with Cmd/Ctrl+K and copy-link actions.
    • Live Markdown-driven docs with in-page table of contents and syntax-highlighted code blocks.
    • Responsive docs layout with sidebar navigation and right-hand TOC.
  • Documentation

    • Complete README redesign: streamlined intro, demo/docs/pricing trio, ecosystem table and updated branding.
  • Chores

    • Installer commands switched from npm to pnpm.

Replace hardcoded documentation content with build-time dynamic loading
using Vite's import.meta.glob. Documentation now automatically syncs
with markdown files in the docs/ directory.

Key changes:
- Add docsLoader.ts utility for build-time markdown file discovery
- Refactor Docs.tsx to load and render markdown dynamically
- Auto-generate sidebar navigation from docs/ file structure
- Extract headings from markdown for table of contents
- Render with react-markdown + remark-gfm + syntax highlighting
- Each doc is lazy-loaded as a separate chunk for performance
- Search across all document titles via Cmd+K

https://claude.ai/code/session_012KsDR5wEapUHh2cNNwryLm
Overhaul README to reflect VSPEC's positioning as "The Documentation
Scope for AI Era". Includes value proposition, ecosystem overview,
feature highlights, pricing table, tech stack, and design system tokens.

https://claude.ai/code/session_012KsDR5wEapUHh2cNNwryLm
@vercel
Copy link
Copy Markdown

vercel Bot commented Feb 6, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vspec Ready Ready Preview, Comment, Open in v0 Feb 6, 2026 2:23am

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 6, 2026

📝 Walkthrough

Walkthrough

The docs system moved from static pages to a dynamic, Markdown-driven pipeline: a new docsLoader discovers Markdown files at build time, the Docs page renders them via ReactMarkdown with syntax highlighting, and README/package.json/vite/workflow updates accommodate the new docs assets and tooling.

Changes

Cohort / File(s) Summary
Docs loader & types
src/app/utils/docsLoader.ts
New module that discovers /docs via Vite glob, builds navigation/categories, exposes DocItem/DocCategory/DocHeading types, loads raw markdown, extracts headings, and provides a lookup map.
Docs page / renderer
src/app/pages/Docs.tsx
Replaced static docs with dynamic renderer using react-markdown, remark-gfm, Prism syntax highlighting, custom markdown component mappings, heading extraction for TOC, search modal with keyboard shortcut, responsive sidebar and layout, and runtime document loading state.
Documentation & packaging
README.md, package.json
README substantially restructured (branding, ecosystem table, reorganized sections, pnpm-based quick start). package.json updated to reflect markdown rendering dependencies and changed build/dev/test commands.
Build tooling & CI
vite.config.ts, .github/workflows/performance.yml
Added vendor-markdown manual chunk for markdown rendering libs in Vite config. Increased CI bundle size check limit from 5 MB to 6 MB to accommodate added docs assets.

Sequence Diagram

sequenceDiagram
    participant User
    participant DocsComponent as Docs Component
    participant DocsLoader as docsLoader Module
    participant FileSystem as /docs Files
    participant Renderer as ReactMarkdown Renderer

    User->>DocsComponent: Open Docs page / select doc
    DocsComponent->>DocsLoader: buildNavigation()
    DocsLoader->>FileSystem: Scan /docs via import.meta.glob
    FileSystem-->>DocsLoader: File metadata & URLs
    DocsLoader-->>DocsComponent: navigation tree (DocCategory[])
    DocsComponent->>DocsLoader: loadDocContent(filePath)
    DocsLoader->>FileSystem: Fetch markdown content (URL)
    FileSystem-->>DocsLoader: Raw markdown text
    DocsLoader-->>DocsComponent: Markdown string
    DocsComponent->>DocsComponent: extractHeadings(markdown) → headings/TOC
    DocsComponent->>Renderer: Render markdown with custom components & Prism
    Renderer-->>DocsComponent: Rendered HTML/JSX
    DocsComponent-->>User: Display content, sidebar, and TOC
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Poem

🐰 I hopped through folders, sniffed each doc,

Found rolling markdown beneath the rock,
I stitched a tree of headings neat,
Rendered with purple, code blocks sweet,
Now docs spring live — a bunny’s small hop of joy.


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9271ad5613

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/app/pages/Docs.tsx
Comment on lines +107 to +110
const text = String(children || '');
return (
<h2
id={slugify(text)}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Generate heading IDs from plain text, not React children

The heading anchor IDs are built from String(children), which turns formatted heading nodes into strings like "[object Object]"; meanwhile the TOC IDs come from extractHeadings using cleaned markdown text. In docs that use inline formatting in headings (for example many ### **...** entries under docs/), clicking "On This Page" links will fail because the computed IDs no longer match the actual heading IDs.

Useful? React with 👍 / 👎.

Comment thread src/app/pages/Docs.tsx
Comment on lines +361 to +363
loadDocContent(doc.filePath).then((content) => {
setMarkdownContent(content);
setLoading(false);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Prevent stale async doc loads from overwriting current page

This effect updates state from an uncancelled async loadDocContent call, so rapid navigation between docs can resolve promises out of order and render older content after a newer selection. Because each doc load is asynchronous (dynamic import), the previous request should be ignored/aborted when activeDocId changes to avoid showing mismatched document content.

Useful? React with 👍 / 👎.

- Switch markdown loading from ?raw (JS chunks) to ?url (static assets
  loaded via fetch at runtime) - reduces JS bundle by ~500KB
- Add vendor-markdown chunk for react-markdown + remark-gfm
- Raise CI bundle limit from 5MB to 6MB to accommodate docs assets

https://claude.ai/code/session_012KsDR5wEapUHh2cNNwryLm
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 6, 2026

📊 Performance Report

Metric Value
Bundle Size 4.00 KB
Status ✅ Passing

View detailed Lighthouse report in artifacts.

@velonone velonone merged commit 967e475 into main Feb 6, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants