Skip to content

Add VitePress documentation site at /docs#32

Merged
hackerwins merged 4 commits into
mainfrom
docs
Mar 14, 2026
Merged

Add VitePress documentation site at /docs#32
hackerwins merged 4 commits into
mainfrom
docs

Conversation

@hackerwins

@hackerwins hackerwins commented Mar 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add packages/docs (VitePress) with scenario-based user guides, API reference, and CLI docs
  • Auto-capture product screenshots via Playwright harness page and commit as static images
  • Serve docs at /docs subpath — Vite proxy in dev, combined build artifact for GitHub Pages
  • Add docs/design/docs-site.md covering architecture, screenshot pipeline, and deployment

Changes

  • New package: packages/docs — VitePress site with amber/gold theme, 5 guide pages, 2 API reference pages
  • Screenshot pipeline: Harness page (/harness/docs) renders spreadsheets with MemStore, Playwright captures 3 scenario PNGs
  • Build: build:all script builds frontend + docs, merges into single dist with idempotent rm -rf + cp -r
  • CI: Updated publish-ghpage.yml to build and deploy docs alongside frontend
  • Frontend: Homepage nav "Developers" → "Docs" linking to /docs, dev proxy to VitePress server

Test plan

  • pnpm verify:fast passes
  • pnpm build:all produces correct dist structure with docs and images
  • Verify /docs/guide/getting-started loads correctly after deploy
  • Verify screenshot images render in docs pages
  • Verify homepage "Docs" link navigates to /docs

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Launched comprehensive documentation site (guides, API & CLI reference, getting started, formulas, shortcuts)
    • Added interactive docs harness page and automated screenshot capture for docs
    • Updated main navigation to link to the docs hub
  • Chores

    • Build pipeline updated to build and deploy docs alongside the app; dev workflow now runs docs server concurrently
    • Added ignore entries for local docs tooling and caches
  • Style

    • Introduced theme color variables for docs styling

hackerwins and others added 2 commits March 15, 2026 00:48
Add packages/docs as a VitePress documentation site served at /docs
subpath. Includes scenario-based user guides (getting started, budget
tracker, collaboration, formulas, keyboard shortcuts), API reference,
and CLI documentation. Screenshots are captured from a docs harness
page using Playwright and MemStore.

- Add VitePress package with custom amber/gold theme
- Add docs harness page with spreadsheet scenarios for screenshots
- Add Playwright screenshot capture script
- Update homepage nav: Developers → Docs with /docs link
- Add dev proxy and CI build pipeline for docs
- Add .gitignore entry for VitePress cache

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Add design document covering VitePress setup, screenshot capture
pipeline, build/deployment architecture, and URL routing. Fix cp -r
idempotency issue in build:all and CI workflow by clearing the target
directory before copying.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
@coderabbitai

coderabbitai Bot commented Mar 14, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@hackerwins has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 17 minutes and 0 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 14900437-8389-416d-b41b-2a2d8b18342f

📥 Commits

Reviewing files that changed from the base of the PR and between f72989d and 2e4b554.

📒 Files selected for processing (11)
  • .gitignore
  • docs/specs/2026-03-14-docs-site-design.md
  • docs/specs/2026-03-14-homepage-design.md
  • docs/tasks/README.md
  • docs/tasks/archive/2026/03/20260314-cross-sheet-calc-lessons.md
  • docs/tasks/archive/2026/03/20260314-cross-sheet-yorkie-integration-todo.md
  • docs/tasks/archive/2026/03/20260314-docs-site-lessons.md
  • docs/tasks/archive/2026/03/20260314-docs-site-plan.md
  • docs/tasks/archive/2026/03/20260314-docs-site-todo.md
  • docs/tasks/archive/2026/03/20260314-multiline-tsv-quoting-todo.md
  • docs/tasks/archive/README.md
📝 Walkthrough

Walkthrough

Adds a VitePress documentation site, integrates it into frontend routing and build, introduces a docs harness page and Playwright screenshot script, and updates GitHub Actions to build/copy docs into the frontend distribution for GitHub Pages deployment.

Changes

Cohort / File(s) Summary
CI / Deployment
/.github/workflows/publish-ghpage.yml
Run pnpm vpdocs build, remove old frontend docs dir, and copy VitePress output into packages/frontend/dist/docs before deploy.
Docs site config & theme
packages/docs/.vitepress/config.ts, packages/docs/.vitepress/theme/index.ts, packages/docs/.vitepress/theme/style.css
Adds VitePress site config (base /docs/), theme re-export, and CSS brand variables (light/dark).
Documentation content
packages/docs/index.md, packages/docs/package.json, packages/docs/.../guide/*.md, packages/docs/.../api/*.md, docs/design/docs-site.md, docs/design/README.md
Adds docs package manifest, redirect index, design document, API/CLI reference, and multiple user guides (getting-started, build-a-budget, collaboration, formulas, keyboard shortcuts).
Frontend integration & UI
packages/frontend/src/App.tsx, packages/frontend/src/app/harness/docs/page.tsx, packages/frontend/src/app/home/nav-bar.tsx, packages/frontend/src/app/home/developer-section.tsx
Adds DocsHarnessPage route (/harness/docs) with interactive scenarios; updates nav and developer-section links to point to the new /docs pages.
Screenshot automation & scripts
packages/frontend/scripts/capture-docs-screenshots.mjs, packages/frontend/package.json
Adds Playwright-based screenshot capture script that starts a dev server, waits for harness scenarios, captures PNGs into docs/public/images, and a docs:screenshots npm script.
Dev server config
packages/frontend/vite.config.ts
Adds a dev middleware to redirect /docs/docs/ and a proxy to forward /docs to the docs dev server; adds related type imports.
Repo & root scripts
package.json, .gitignore
Adds root scripts vpdocs and build:all, updates dev to run docs concurrently; ignores .vitepress/cache/ and .superpowers/.

Sequence Diagram(s)

sequenceDiagram
    participant Script as capture-docs-screenshots.mjs
    participant Vite as Vite Dev Server
    participant Browser as Playwright Browser
    participant DOM as Docs Harness Page (DOM)
    participant FS as File System

    Script->>Script: Ensure Playwright & browsers present
    Script->>Vite: Start frontend dev server (harness)
    Script->>Browser: Launch browser context (900x600)
    Browser->>Vite: Request /harness/docs
    Vite->>DOM: Serve harness page
    DOM-->>Script: Expose scenarios (data-docs-scenario-id/ready)
    loop For each scenario
        Script->>Browser: Wait fonts, disable animations
        Script->>DOM: Query scenario container
        Browser-->>FS: Capture and save PNG to docs/public/images
    end
    Script->>Browser: Close browser
    Script->>Vite: Close server
    Script->>Script: Log completion
Loading
sequenceDiagram
    participant GHA as GitHub Actions
    participant Build as Build Steps
    participant Frontend as Frontend SPA Build
    participant Docs as VitePress Build
    participant Combine as Copy/Combine
    participant Pages as GitHub Pages Deploy

    GHA->>Build: Trigger publish-ghpage workflow
    Build->>Frontend: pnpm build (frontend)
    Build->>Docs: pnpm vpdocs build
    Docs-->>Build: .vitepress/dist produced
    Build->>Combine: rm packages/frontend/dist/docs && copy docs build into frontend dist
    Combine-->>Build: Unified dist (SPA + /docs)
    Build->>Pages: Deploy unified dist to GitHub Pages
    Pages-->>GHA: Deployment complete
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰 I hopped in code with docs to sow,

VitePress rows and screenshots aglow,
Scenarios captured, assets in tow,
Frontend and pages now neatly go,
Hop, press, deploy — watch the docs grow! 📚✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically summarizes the main change: addition of a VitePress documentation site served at the /docs subpath, which aligns with the extensive changes across multiple files related to documentation infrastructure setup.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions

github-actions Bot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Verification: verify:self

Result: ✅ PASS in 96.6s

Lane Status Duration
sheet:build ✅ pass 13.7s
verify:fast ✅ pass 46.8s
frontend:build ✅ pass 13.6s
verify:frontend:chunks ✅ pass 0.3s
backend:build ✅ pass 4.5s
cli:build ✅ pass 1.6s
verify:entropy ✅ pass 15.8s
verify:browser ✅ pass 0.4s

Verification: verify:integration

Result: ✅ PASS

Use full paths for backtick-wrapped file references so the
doc-staleness checker can resolve them.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (6)
packages/frontend/vite.config.ts (1)

103-109: Consider documenting the hardcoded port dependency.

The proxy target port 5174 matches packages/docs/package.json dev script. A brief comment would help future maintainers understand this coupling.

Optional: Add a clarifying comment
   server: {
     proxy: {
+      // Forward to VitePress dev server (port defined in packages/docs/package.json)
       "/docs": {
         target: "http://localhost:5174",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/frontend/vite.config.ts` around lines 103 - 109, The proxy entry for
"/docs" in vite.config.ts hardcodes target: "http://localhost:5174" which
couples this frontend to the docs dev server port; add a concise inline comment
above the proxy block referencing that 5174 must match the dev script in
packages/docs/package.json (or suggest using an env var like DOCS_DEV_PORT) so
future maintainers understand the dependency and how to change it.
packages/frontend/src/app/harness/docs/page.tsx (1)

48-57: Refactor .then() chain to async/await for consistency.

The coding guidelines prefer async/await over .then() chains. This would also improve readability of the setup and initialization flow.

♻️ Proposed refactor using async IIFE
     let destroyed = false;
     let instance: Awaited<ReturnType<typeof initialize>> | undefined;
-    setup().then(() => initialize(el, { theme, store, readOnly: true, hideFormulaBar: true, hideAutofillHandle: true })).then((s) => {
-      if (destroyed) {
-        s.destroy();
-        return;
-      }
-      instance = s;
-      setReady(true);
-    });
+    (async () => {
+      await setup();
+      const s = await initialize(el, {
+        theme,
+        store,
+        readOnly: true,
+        hideFormulaBar: true,
+        hideAutofillHandle: true,
+      });
+      if (destroyed) {
+        s.destroy();
+        return;
+      }
+      instance = s;
+      setReady(true);
+    })();
     return () => {
       destroyed = true;
       instance?.destroy();
     };

As per coding guidelines: "Use async/await instead of .then() chains for promise handling".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/frontend/src/app/harness/docs/page.tsx` around lines 48 - 57,
Refactor the promise chain that calls setup() and initialize(...) into an
async/await flow: create an async function or IIFE that awaits setup() and then
awaits initialize(el, { theme, store, readOnly: true, hideFormulaBar: true,
hideAutofillHandle: true }), then perform the same destroyed check (call
s.destroy() if destroyed), assign the result to the existing instance variable,
and call setReady(true); ensure you preserve the destroyed and instance
variables, keep the same call arguments (el, theme, store), and preserve error
behavior (propagate or catch as the surrounding code expects).
packages/frontend/scripts/capture-docs-screenshots.mjs (1)

93-94: Magic timeout value for render stabilization.

The 500ms delay is intended to wait for async renders, but the comment could be more specific about what's being waited for. Consider extracting to a named constant or adding more context.

Optional: Add context to the timeout
+    // Brief delay for canvas/grid rendering to stabilize after React state updates
     // Wait for all async renders to complete
     await page.waitForTimeout(500);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/frontend/scripts/capture-docs-screenshots.mjs` around lines 93 - 94,
The hard-coded 500ms magic timeout in page.waitForTimeout(500) is unclear;
replace the literal with a named constant (e.g. RENDER_STABILIZATION_MS) and add
a short comment describing exactly what async renders or resources you're
waiting for (e.g. "wait for client-side hydration / async data render to
complete"), or preferably replace with a deterministic wait (e.g.
page.waitForSelector or page.waitForResponse) if possible; update the call in
capture-docs-screenshots.mjs where page.waitForTimeout is used to reference the
new constant or deterministic wait to make the intent explicit.
packages/docs/guide/build-a-budget.md (1)

23-25: Consider adding language identifiers to formula code blocks.

Static analysis flagged multiple fenced code blocks without language specifiers (lines 23, 29, 37, 66, 82, 90, 98, 106). Since these contain spreadsheet formulas rather than code, you could use ```text or ```excel to satisfy the linter while preserving clarity.

This is optional since formula blocks don't have standard syntax highlighting.

Example fix for one block
-```
+```text
 =SUM(B2:B7)
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @packages/docs/guide/build-a-budget.md around lines 23 - 25, Add a language
identifier to fenced code blocks containing spreadsheet formulas (e.g., change
the block containing the formula =SUM(B2:B7) to use text or excel) so
the linter recognizes them; scan the file for similar formula blocks (the other
instances flagged) and update each fence to include a language specifier while
keeping the formula content unchanged.


</details>

</blockquote></details>
<details>
<summary>packages/docs/guide/formulas.md (1)</summary><blockquote>

`9-11`: **Optional: Add language identifier to formula code block.**

Similar to other formula examples, consider adding ` ```text ` to satisfy the linter.

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @packages/docs/guide/formulas.md around lines 9 - 11, The code block showing
the formula "=SUM(A1:A10)" in formulas.md lacks a language identifier and fails
the linter; update the fenced code block around that formula (the block
containing =SUM(A1:A10)) to include a language tag such as "text" (i.e., open
the fence with text and close with ) so the linter accepts it.


</details>

</blockquote></details>
<details>
<summary>.github/workflows/publish-ghpage.yml (1)</summary><blockquote>

`27-33`: **Prefer invoking the shared `build:all` script in CI to avoid drift.**

This block duplicates root build orchestration logic; reusing one script keeps local and CI behavior aligned.

<details>
<summary>♻️ Proposed simplification</summary>

```diff
       - name: Install and Build 🔧
         run: |
           pnpm i
-          pnpm frontend build
-          pnpm vpdocs build
-          rm -rf packages/frontend/dist/docs
-          cp -r packages/docs/.vitepress/dist packages/frontend/dist/docs
+          pnpm build:all
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/publish-ghpage.yml around lines 27 - 33, Replace the
manual multi-step install/build/copy sequence in the CI job with the shared root
script: run the install then invoke the centralized build script (e.g., `pnpm i`
followed by `pnpm run build:all`) instead of calling `pnpm frontend build`,
`pnpm vpdocs build`, and the `rm -rf`/`cp -r` file-ops so the workflow uses the
single source of truth `build:all` for orchestration.
```

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Inline comments:
In @docs/design/docs-site.md:

  • Line 33: The three untyped fenced code blocks showing the directory trees (the
    blocks starting with "packages/docs/", the ASCII box beginning
    "┌─────────────────────────────────┐", and the block starting
    "packages/frontend/dist/") trigger MD040; change each opening fence from totext so the code blocks are typed (i.e., replace the three occurrences of withtext and leave the closing fences as ```).

In @packages/docs/api/rest-api.md:


Nitpick comments:
In @.github/workflows/publish-ghpage.yml:

  • Around line 27-33: Replace the manual multi-step install/build/copy sequence
    in the CI job with the shared root script: run the install then invoke the
    centralized build script (e.g., pnpm i followed by pnpm run build:all)
    instead of calling pnpm frontend build, pnpm vpdocs build, and the rm -rf/cp -r file-ops so the workflow uses the single source of truth
    build:all for orchestration.

In @packages/docs/guide/build-a-budget.md:

  • Around line 23-25: Add a language identifier to fenced code blocks containing
    spreadsheet formulas (e.g., change the block containing the formula
    =SUM(B2:B7) to use text or excel) so the linter recognizes them; scan
    the file for similar formula blocks (the other instances flagged) and update
    each fence to include a language specifier while keeping the formula content
    unchanged.

In @packages/docs/guide/formulas.md:

  • Around line 9-11: The code block showing the formula "=SUM(A1:A10)" in
    formulas.md lacks a language identifier and fails the linter; update the fenced
    code block around that formula (the block containing =SUM(A1:A10)) to include a
    language tag such as "text" (i.e., open the fence with ```text and close with

In `@packages/frontend/scripts/capture-docs-screenshots.mjs`:
- Around line 93-94: The hard-coded 500ms magic timeout in
page.waitForTimeout(500) is unclear; replace the literal with a named constant
(e.g. RENDER_STABILIZATION_MS) and add a short comment describing exactly what
async renders or resources you're waiting for (e.g. "wait for client-side
hydration / async data render to complete"), or preferably replace with a
deterministic wait (e.g. page.waitForSelector or page.waitForResponse) if
possible; update the call in capture-docs-screenshots.mjs where
page.waitForTimeout is used to reference the new constant or deterministic wait
to make the intent explicit.

In `@packages/frontend/src/app/harness/docs/page.tsx`:
- Around line 48-57: Refactor the promise chain that calls setup() and
initialize(...) into an async/await flow: create an async function or IIFE that
awaits setup() and then awaits initialize(el, { theme, store, readOnly: true,
hideFormulaBar: true, hideAutofillHandle: true }), then perform the same
destroyed check (call s.destroy() if destroyed), assign the result to the
existing instance variable, and call setReady(true); ensure you preserve the
destroyed and instance variables, keep the same call arguments (el, theme,
store), and preserve error behavior (propagate or catch as the surrounding code
expects).

In `@packages/frontend/vite.config.ts`:
- Around line 103-109: The proxy entry for "/docs" in vite.config.ts hardcodes
target: "http://localhost:5174" which couples this frontend to the docs dev
server port; add a concise inline comment above the proxy block referencing that
5174 must match the dev script in packages/docs/package.json (or suggest using
an env var like DOCS_DEV_PORT) so future maintainers understand the dependency
and how to change it.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c85583d8-f5b9-4af0-8dd6-9370206ed225

📥 Commits

Reviewing files that changed from the base of the PR and between b8d23f3 and 8831320.

⛔ Files ignored due to path filters (4)
  • packages/docs/public/images/budget-complete.png is excluded by !**/*.png
  • packages/docs/public/images/formula-examples.png is excluded by !**/*.png
  • packages/docs/public/images/getting-started-contact-list.png is excluded by !**/*.png
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (24)
  • .github/workflows/publish-ghpage.yml
  • .gitignore
  • docs/design/README.md
  • docs/design/docs-site.md
  • package.json
  • packages/docs/.vitepress/config.ts
  • packages/docs/.vitepress/theme/index.ts
  • packages/docs/.vitepress/theme/style.css
  • packages/docs/api/cli.md
  • packages/docs/api/rest-api.md
  • packages/docs/guide/build-a-budget.md
  • packages/docs/guide/collaboration.md
  • packages/docs/guide/formulas.md
  • packages/docs/guide/getting-started.md
  • packages/docs/guide/keyboard-shortcuts.md
  • packages/docs/index.md
  • packages/docs/package.json
  • packages/frontend/package.json
  • packages/frontend/scripts/capture-docs-screenshots.mjs
  • packages/frontend/src/App.tsx
  • packages/frontend/src/app/harness/docs/page.tsx
  • packages/frontend/src/app/home/developer-section.tsx
  • packages/frontend/src/app/home/nav-bar.tsx
  • packages/frontend/vite.config.ts

Comment thread docs/design/docs-site.md

### Package Structure

```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add language identifiers to fenced code blocks to satisfy markdownlint.

These fences are currently untyped and trip MD040.

🧹 Proposed fix
-```
+```text
 packages/docs/
 ├── .vitepress/
 ...
-```
+```

-```
+```text
 ┌─────────────────────────────────┐
 │  packages/frontend              │
 ...
-```
+```

-```
+```text
 packages/frontend/dist/           # ← publish_dir for GitHub Pages
 ├── index.html                    # Frontend SPA
 ...
-```
+```

Also applies to: 92-92, 166-166

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 33-33: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/design/docs-site.md` at line 33, The three untyped fenced code blocks
showing the directory trees (the blocks starting with "packages/docs/", the
ASCII box beginning "┌─────────────────────────────────┐", and the block
starting "packages/frontend/dist/") trigger MD040; change each opening fence
from ``` to ```text so the code blocks are typed (i.e., replace the three
occurrences of ``` with ```text and leave the closing fences as ```).

Comment on lines +27 to +29
```
https://wafflebase.io/api/v1/workspaces/:workspaceId
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add a fence language to satisfy markdown linting.

The fenced block at Line 27 is missing a language and triggers MD040. Use text (or bash) explicitly to keep docs lint-clean.

Proposed fix
-```
+```text
 https://wafflebase.io/api/v1/workspaces/:workspaceId
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 27-27: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/docs/api/rest-api.md` around lines 27 - 29, The fenced code block
containing the endpoint URL
"https://wafflebase.io/api/v1/workspaces/:workspaceId" lacks a language tag and
triggers MD040; update the fence to specify a language (e.g., use "text" or
"bash") so the block reads like ```text ... ``` to satisfy markdown linting and
keep the docs lint-clean.

Archive 6 task files (cross-sheet-yorkie-integration, multiline-tsv-
quoting, docs-site todo/plan/lessons, cross-sheet-calc-lessons).
Add docs-site and homepage design specs.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
docs/design/docs-site.md (1)

33-58: ⚠️ Potential issue | 🟡 Minor

Add language identifiers to the three untyped fenced blocks (MD040).

Line 33, Line 92, and Line 166 still use bare triple-backtick fences, which will keep markdownlint failing.

🧹 Proposed fix
-```
+```text
 packages/docs/
 ├── .vitepress/
 │   ├── config.ts          # VitePress config (base: "/docs/")
@@
 └── package.json           # `@wafflebase/docs` workspace

@@
- +text
┌─────────────────────────────────┐
│ packages/frontend │
│ src/app/harness/docs/page.tsx │ Renders spreadsheet scenarios
@@
└─────────────────────────────────┘

@@
-```
+```text
packages/frontend/dist/           # ← publish_dir for GitHub Pages
├── index.html                    # Frontend SPA
├── 404.html                      # SPA fallback (spa-github-pages)
@@
    ├── hashmap.json              # Local search index
    └── vp-icons.css
</details>


Also applies to: 92-109, 166-188

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @docs/design/docs-site.md around lines 33 - 58, Update the three untyped
fenced code blocks in docs-site.md to include a language identifier (e.g.,
"text") to satisfy markdownlint MD040: add text before the block that starts with "packages/docs/" (the workspace tree), add text before the ASCII box
block that begins with "┌─────────────────────────────────┐" (the frontend
harness/page.tsx note), and add text before the block that starts with "packages/frontend/dist/" (the publish_dir tree). Ensure each closing fence remains and run markdownlint to confirm MD040 is resolved.


</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In @docs/design/docs-site.md:

  • Around line 33-58: Update the three untyped fenced code blocks in docs-site.md
    to include a language identifier (e.g., "text") to satisfy markdownlint MD040:
    add text before the block that starts with "packages/docs/" (the workspace tree), add text before the ASCII box block that begins with
    "┌─────────────────────────────────┐" (the frontend harness/page.tsx note), and
    add text before the block that starts with "packages/frontend/dist/" (the publish_dir tree). Ensure each closing fence remains and run markdownlint to
    confirm MD040 is resolved.

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: defaults

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `fdeee52d-e3b3-43aa-89c4-c37d12a847d6`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 88313203a0cf7ab44a10954fb4b24b481a17beea and f72989d8b05f76dca0ce38f81610a149154b0232.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `docs/design/docs-site.md`

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@hackerwins
hackerwins merged commit 9c7fb31 into main Mar 14, 2026
1 check passed
@hackerwins
hackerwins deleted the docs branch March 14, 2026 16:12
hackerwins added a commit that referenced this pull request Mar 14, 2026
Add packages/docs with scenario-based user guides (getting-started,
build-a-budget, collaboration, formulas, keyboard-shortcuts), REST API
and CLI reference pages, and amber/gold brand theme.

Product screenshots are auto-captured from a Playwright harness page
that renders spreadsheets with MemStore (no backend required) and
committed as static images.

Build pipeline merges VitePress output into the frontend dist for
single-artifact GitHub Pages deployment. Dev mode proxies /docs
requests to the VitePress dev server.

Also includes docs/design/docs-site.md covering architecture,
screenshot pipeline, and deployment.

Co-authored-by: Claude Opus 4.6 <[email protected]>
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.

1 participant