Skip to content

docs: unified IA + robust README + VitePress categories#694

Merged
KooshaPari merged 1 commit intomainfrom
docs/unified-ia-vitepress
Feb 27, 2026
Merged

docs: unified IA + robust README + VitePress categories#694
KooshaPari merged 1 commit intomainfrom
docs/unified-ia-vitepress

Conversation

@KooshaPari
Copy link
Owner

@KooshaPari KooshaPari commented Feb 27, 2026

Implements Wave 1 docs unification for CLIProxyAPI++:\n\n- upgrades README to robust structure\n- standardizes docs IA: Wiki, Development Guide, Document Index, API, Roadmap\n- adds sidebar category switcher component\n- adds document index buckets (raw-all/planning/specs/research/worklogs/other)\n- adds docs index generator script\n- adds roadmap and API landing pages\n

Summary by CodeRabbit

  • Documentation
    • Restructured and streamlined project documentation with a new table of contents and reorganized sections.
    • Simplified navigation structure with clearer quick-start guidance and prerequisites.
    • Added local search functionality to documentation.
    • Refocused content on key features and operational workflows.

Co-authored-by: Codex <noreply@openai.com>
@gemini-code-assist
Copy link

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@coderabbitai
Copy link

coderabbitai bot commented Feb 27, 2026

📝 Walkthrough

Walkthrough

Documentation restructuring for CLIProxyAPI++ project encompassing README overhaul, VitePress configuration updates, theme simplification, and content reorganization across API and homepage documentation files to streamline navigation structure and presentation.

Changes

Cohort / File(s) Summary
Documentation Structure
README.md
Project branding updated to "CLIProxyAPI++"; sections reorganized to table-of-contents with Key Features, Architecture, Prerequisites, Quick Start, and Docker guidance; philosophy and ecosystem details removed; content shifted toward feature and operations focus.
VitePress Configuration
docs/.vitepress/config.ts
Title and description updated; configuration simplified with route-based sidebar map, compact top navigation, and local search provider; removed extensive nav structures, base path, head config, footer, and editLink settings.
Theme & Styling
docs/.vitepress/theme/index.ts
Theme augmentation replaced with typed Theme object; Mermaid color fallbacks and inline scripts removed; CategorySwitcher component registered in enhanceApp; explicit Layout property added.
Documentation Content
docs/api/index.md, docs/index.md
API index simplified to high-level reference sections; homepage hero and features removed; replaced with CategorySwitcher component and minimal top-level navigation links (Wiki, Development, Document Index, API, Roadmap); audience-specific guides and detailed examples removed.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 With whiskers twitching and nose held high,
Our docs now shine, reorganized and spry!
From Kush's fork to CLIProxyAPI bright,
Navigation streamlined, the structure feels right!
Hop, hop through features—no philosophy to flee,
Just clean, swift docs for all to see! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: documentation unification, README improvements, and VitePress category additions. It directly relates to the primary objectives of the pull request.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/unified-ia-vitepress

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.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/.vitepress/config.ts`:
- Line 9: Remove the ignoreDeadLinks: true setting from the VitePress config so
dead-link checking is enabled; locate the ignoreDeadLinks property in the
exported config object (the ignoreDeadLinks entry) and delete that line (or set
it to false) to restore strict link validation during builds.

In `@docs/.vitepress/theme/index.ts`:
- Around line 8-10: Replace the current pattern of spreading DefaultTheme with
proper theme composition by using extends: DefaultTheme and defining enhanceApp
alongside it so VitePress will automatically call the parent theme's enhanceApp;
remove the ...DefaultTheme spread, keep your enhanceApp implementation that
registers CategorySwitcher via app.component('CategorySwitcher',
CategorySwitcher), and ensure the export uses extends: DefaultTheme to compose
themes correctly.

In `@docs/api/index.md`:
- Around line 5-7: The index currently lists plain text entries
("OpenAPI/Swagger artifacts", "SDK references", "Endpoint guides") that are not
navigable; change each list item in docs/api/index.md to a proper Markdown link
pointing to the corresponding documentation pages (e.g., the OpenAPI artifacts
page, SDK reference page, and endpoint guides page) using the correct relative
paths or permalinks so users can click through, and verify the target files
exist and front-matter/slug matches the link targets.

In `@README.md`:
- Line 57: The README's "unified category IA" section is inconsistent with the
earlier reference to docs/operations/ and docs/reference/; update the "unified
category IA" list (the section around the "unified category IA" heading) to
include docs/operations/ and docs/reference/, or alternatively add a clarifying
sentence there explaining that operations and reference are intentionally
maintained outside the canonical IA and why; ensure you edit the README.md
entries that enumerate documentation directories so the listed directories and
the explanatory text match.

ℹ️ Review info

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8268d68 and abd88a8.

📒 Files selected for processing (5)
  • README.md
  • docs/.vitepress/config.ts
  • docs/.vitepress/theme/index.ts
  • docs/api/index.md
  • docs/index.md
📜 Review details
🔇 Additional comments (3)
docs/index.md (1)

1-13: Clean and coherent landing-page simplification.

The CategorySwitcher + top-level category links are clear and aligned with the new unified IA.

README.md (1)

5-14: Strong README restructuring.

The new sectioning and navigation make onboarding and operations context much easier to scan.

Also applies to: 16-56, 59-94

docs/.vitepress/config.ts (1)

4-8: Navigation structure is well organized.

The per-path sidebar buckets and top-level nav align cleanly with the unified IA.

Also applies to: 10-63

srcDir: '.',
lastUpdated: true,
cleanUrls: true,
ignoreDeadLinks: true,
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

VitePress ignoreDeadLinks configuration behavior and best practices

💡 Result:

What ignoreDeadLinks does (behavior)

  • Default: false → VitePress fails the production build when it detects dead links. [1] (vitepress.dev)
  • true → VitePress does not fail builds due to dead links (the check is effectively disabled for build-failing purposes). [1] (vitepress.dev)
  • 'localhostLinks' → VitePress still fails on dead links, but skips checking links to localhost. [1] (vitepress.dev)
  • Array form → instead of disabling checks globally, you can ignore specific links by:
    • exact string match,
    • RegExp,
    • custom predicate function. [1] (vitepress.dev)

Type (from docs):
boolean | 'localhostLinks' | (string | RegExp | ((link: string, source: string) => boolean))[] [1] (vitepress.dev)

Recommended best practices

  1. Keep dead-link failures enabled in CI (recommended default)
    Leave ignoreDeadLinks: false so broken internal docs links block merges/releases. This is VitePress’s intended “strict by default” workflow. [1] (vitepress.dev)

  2. Prefer the array form over true (avoid hiding real regressions)
    Use targeted ignores for known/intentional cases (generated pages, placeholders, etc.). The docs explicitly support strings/regex/functions for this. [1] (vitepress.dev)

  3. Use 'localhostLinks' when you intentionally include local-only links
    Example: contributor docs that link to http://localhost:xxxx for local services—skip those without disabling the rest of the check. [1] (vitepress.dev)

  4. Make ignores explicit and reviewable

    • Prefer narrow regexes (match only what you must).
    • If using a function, consider using both link and source (the file) to scope exceptions to specific pages (the function signature includes source). [1] (vitepress.dev)

Example configurations

Strict CI (recommended)

// .vitepress/config.ts
export default {
  // default behavior (can be omitted)
  ignoreDeadLinks: false
}

[1] (vitepress.dev)

Allow localhost links, fail on everything else

export default {
  ignoreDeadLinks: 'localhostLinks'
}

[1] (vitepress.dev)

Targeted ignores (most common “best practice” setup)

export default {
  ignoreDeadLinks: [
    '/playground',              // exact
    /^https?:\/\/localhost/,    // regex
    /\/repl\//,                 // regex
    (link, source) => source.endsWith('WIP.md') // function (scoped)
  ]
}

(Exact/regex/function patterns are supported as shown in the docs.) [1] (vitepress.dev)

Citations:


🏁 Script executed:

# Check if ignoreDeadLinks was already in config before this change
git log --oneline -n 20 docs/.vitepress/config.ts 2>/dev/null | head -10

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 135


🏁 Script executed:

# Check current state of the config file to understand context
head -20 docs/.vitepress/config.ts

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 635


Remove ignoreDeadLinks: true to catch broken routes during this IA migration.

Setting ignoreDeadLinks: true disables dead-link detection in the build entirely. VitePress's default (false) enforces strict link checking—the recommended practice for CI. During a major navigation restructure, disabled link validation risks masking broken routes that should block the merge. Either remove the setting (defaults to strict checking) or use targeted ignores if specific links must be skipped.

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

In `@docs/.vitepress/config.ts` at line 9, Remove the ignoreDeadLinks: true
setting from the VitePress config so dead-link checking is enabled; locate the
ignoreDeadLinks property in the exported config object (the ignoreDeadLinks
entry) and delete that line (or set it to false) to restore strict link
validation during builds.

Comment on lines +8 to 10
enhanceApp({ app }) {
app.component('CategorySwitcher', CategorySwitcher)
},
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

🧩 Analysis chain

🌐 Web query:

VitePress custom theme enhanceApp override DefaultTheme chaining best practice

💡 Result:

Best practice: use VitePress’ built-in theme chaining via extends: DefaultTheme and put your additions in your enhanceApp. When you use extends, VitePress will call the parent theme’s enhanceApp before yours automatically—so you generally should not manually call DefaultTheme.enhanceApp(...). [1]

// .vitepress/theme/index.ts
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import Foo from './Foo.vue'

export default {
  extends: DefaultTheme,
  enhanceApp({ app }) {
    // DefaultTheme.enhanceApp runs first automatically because of `extends`
    app.component('Foo', Foo)
  }
} satisfies Theme

Avoid this common pitfall: export default { ...DefaultTheme, enhanceApp() { ... } } does not express “call DefaultTheme then mine”; it just replaces properties, and you can accidentally drop/overwrite behavior instead of cleanly chaining. Prefer extends for composition. [1][2]

If you also need to customize layout, keep extends: DefaultTheme and override Layout (e.g., wrap DefaultTheme.Layout)—you still get the chained enhanceApp. [2][3]

Sources: [1] VitePress “Using a Custom Theme” (theme interface + extends calling order), [2] VitePress “Extending the Default Theme”, [3] VitePress default theme layout reference example.


Refactor to use extends for proper theme composition instead of spreading DefaultTheme.

The current pattern using ...DefaultTheme is a common pitfall that doesn't automatically chain enhanceApp. VitePress provides the extends property to properly compose themes—when you use extends: DefaultTheme, VitePress automatically calls the parent theme's enhanceApp before yours, so default behavior is preserved without manual chaining.

Suggested fix
-const theme: Theme = {
-  ...DefaultTheme,
+const theme: Theme = {
+  extends: DefaultTheme,
   enhanceApp({ app }) {
     app.component('CategorySwitcher', CategorySwitcher)
   },
-  Layout: DefaultTheme.Layout
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/.vitepress/theme/index.ts` around lines 8 - 10, Replace the current
pattern of spreading DefaultTheme with proper theme composition by using
extends: DefaultTheme and defining enhanceApp alongside it so VitePress will
automatically call the parent theme's enhanceApp; remove the ...DefaultTheme
spread, keep your enhanceApp implementation that registers CategorySwitcher via
app.component('CategorySwitcher', CategorySwitcher), and ensure the export uses
extends: DefaultTheme to compose themes correctly.

Comment on lines +5 to +7
- OpenAPI/Swagger artifacts
- SDK references
- Endpoint guides
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Make API index entries navigable.

Line 5–Line 7 are non-clickable labels, so this “index” page cannot actually route users to API docs.

Suggested fix
-- OpenAPI/Swagger artifacts
-- SDK references
-- Endpoint guides
+- [OpenAPI/Swagger artifacts](/api/openapi/)
+- [SDK references](/api/sdk/)
+- [Endpoint guides](/api/endpoints/)
📝 Committable suggestion

‼️ 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.

Suggested change
- OpenAPI/Swagger artifacts
- SDK references
- Endpoint guides
- [OpenAPI/Swagger artifacts](/api/openapi/)
- [SDK references](/api/sdk/)
- [Endpoint guides](/api/endpoints/)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/api/index.md` around lines 5 - 7, The index currently lists plain text
entries ("OpenAPI/Swagger artifacts", "SDK references", "Endpoint guides") that
are not navigable; change each list item in docs/api/index.md to a proper
Markdown link pointing to the corresponding documentation pages (e.g., the
OpenAPI artifacts page, SDK reference page, and endpoint guides page) using the
correct relative paths or permalinks so users can click through, and verify the
target files exist and front-matter/slug matches the link targets.

- Rate limiting and quota/cooldown controls.
- Auth flows for provider-specific OAuth/API keys.
- CI policy checks and path guards.
- Governance and security docs under `docs/operations/` and `docs/reference/`.
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Check which documentation directories exist
for p in docs/operations docs/reference docs/wiki docs/development docs/index docs/api docs/roadmap; do
  if [ -e "$p" ]; then
    echo "FOUND   $p"
  else
    echo "MISSING $p"
  fi
done

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 221


🏁 Script executed:

# Verify the exact content at line 57 and surrounding context
sed -n '50,65p' README.md

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 447


🏁 Script executed:

# Search for all documentation path references in README.md
grep -n "docs/" README.md | head -20

Repository: KooshaPari/cliproxyapi-plusplus

Length of output: 316


Resolve inconsistency between governance docs reference and unified IA definition.

Line 57 correctly references docs/operations/ and docs/reference/ (both exist), but the "unified category IA" definition on lines 71–75 omits these directories and lists others that don't exist (docs/wiki/, docs/development/, docs/index/, docs/roadmap/). Either the unified IA should include operations and reference, or clarify why they exist outside the canonical structure. This inconsistency can confuse contributors about the actual documentation organization.

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

In `@README.md` at line 57, The README's "unified category IA" section is
inconsistent with the earlier reference to docs/operations/ and docs/reference/;
update the "unified category IA" list (the section around the "unified category
IA" heading) to include docs/operations/ and docs/reference/, or alternatively
add a clarifying sentence there explaining that operations and reference are
intentionally maintained outside the canonical IA and why; ensure you edit the
README.md entries that enumerate documentation directories so the listed
directories and the explanatory text match.

@KooshaPari KooshaPari merged commit 0464277 into main Feb 27, 2026
8 of 9 checks passed
@KooshaPari KooshaPari deleted the docs/unified-ia-vitepress branch February 27, 2026 13:11
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