Title: NV oOS Docs Hub
Author: Vijay Samtani
Published: <strong>Onwa-anö 7, 2026</strong>
Last modified: Onwa-anö 7, 2026

---

Search plugins

![](https://ps.w.org/nvoos-docs-hub/assets/banner-772x250.png?rev=3731763)

![](https://ps.w.org/nvoos-docs-hub/assets/icon-256x256.png?rev=3731763)

# NV oOS Docs Hub

 By [Vijay Samtani](https://profiles.wordpress.org/vsamtani/)

[Download](https://downloads.wordpress.org/plugin/nvoos-docs-hub.0.5.1.zip)

[Live Preview](https://ibo.wordpress.org/plugins/nvoos-docs-hub/?preview=1)

 * [Details](https://ibo.wordpress.org/plugins/nvoos-docs-hub/#description)
 * [Reviews](https://ibo.wordpress.org/plugins/nvoos-docs-hub/#reviews)
 *  [Installation](https://ibo.wordpress.org/plugins/nvoos-docs-hub/#installation)
 * [Development](https://ibo.wordpress.org/plugins/nvoos-docs-hub/#developers)

 [Support](https://wordpress.org/support/plugin/nvoos-docs-hub/)

## Description

NV oOS Docs Hub discovers, indexes, and renders Markdown documentation in a
 GitBook-
style single-page app: sidebar navigation, content area, and a per-page table of
contents. Embed it anywhere on your WordPress site via a shortcode or Gutenberg 
block.

Out of the box it publishes documentation you upload yourself: drop
 Markdown (`.
md`) or text (`.txt`) files into wp-content/uploads/nvoos-docs-hub/content/ (subfolders
become sections), rebuild the index, and they appear in the browser. No remote services
are involved.

**Optional GitHub import (opt-in, off by default).** Enable _Remote
 Repositories

in the settings to import Markdown from **any public GitHub
 repository
 — no GitHub
account required. This is a documentation-import
 service: the plugin fetches files
server-side, over HTTPS, and only from api.github.com and `raw.githubusercontent.
com`, then stores them in a local cache on your server. No requests are made unless
you enable the setting, configure a repository, and trigger a rebuild. All scripts,
styles, fonts, and images are bundled locally — nothing is loaded from a remote 
server. See External Services below for the full disclosure.

**Key features:**

 * Publish Markdown uploaded to `wp-content/uploads/nvoos-docs-hub/content/` — zero
   configuration, zero remote calls
 * Optional import from public GitHub repositories with per-repo file/folder selection
 * Full-text search via the REST API with FlexSearch client-side fallback
 * GitHub Flavored Markdown: tables, task lists, fenced code blocks
 * Custom `:::note`, `:::tip`, `:::warning`, `:::danger` callout blocks
 * Syntax-highlighted code blocks, last-modified dates, and “Edit on GitHub” links
 * Broken-link detection with one-click fix suggestions (local sources)
 * Light and dark themes with CSS custom properties
 * Two-layer cache (filesystem + WordPress transients)
 * Async chunked rebuilds with a live progress panel — no more long single-request
   builds
 * WP-CLI support: `wp nvoos-docs rebuild / clear / status`
 * Nightly cron rebuild; also triggered on plugin activate/deactivate
 * Indexed pages included in the WordPress sitemap
 * `[nvoos_docs]` shortcode and `nvoos/docs-hub` Gutenberg block

**Optional NV oOS integration.** If the NV oOS base plugin
 (https://github.com/
nvdigitalsolutions/mcp-ai-wpoos) is active, the addon additionally auto-discovers
the `docs/` folders of the base plugin and every installed addon, and surfaces rebuild
progress in the base plugin’s cron-status drawer.

### Shortcode

    ```
    [nvoos_docs section="base" theme="light" search="1" sidebar="1"]
    ```

Attributes:

 * `section` – Filter to one source: `base`, `addons`, or an addon slug.
 * `theme` – `light`, `dark`, or `auto` (follows OS preference).
 * `search` – Set to `0` to disable the search box.
 * `sidebar` – Set to `0` to hide the left sidebar.
 * `home` – Slug of the default landing page.

### WP-CLI

    ```
    wp nvoos-docs rebuild            # Chunked rebuild (default, runs across WP-Cron ticks)
    wp nvoos-docs rebuild --sync     # Inline rebuild in a single request (legacy)
    wp nvoos-docs sync               # Back-compat alias for --sync
    wp nvoos-docs rebuild --resume   # Resume a stalled or failed rebuild
    wp nvoos-docs rebuild --cancel   # Cancel an in-flight rebuild
    wp nvoos-docs clear              # Clear all cached data
    wp nvoos-docs status             # Show index statistics and rebuild phase<h3>Source Code</h3>
    ```

The complete, human-readable source code for this plugin — including the
 TypeScript/
React source for the bundled `assets/dist/docs-hub.js` bundle — is publicly available
in the plugin’s GitHub repository:

https://github.com/nvdigitalsolutions/nvoos-docs-hub

The frontend bundle is generated from the `src/` directory with esbuild:

 1. `npm install` — installs the frontend dependencies (React, esbuild, etc.).
 2. `npm run build` — runs `node esbuild.config.js --prod` and writes the
     minified`
    assets/dist/docs-hub.js` and `assets/dist/docs-hub.css`.

The repository also contains the WordPress.org packaging and CI pipeline
 (`.github/
workflows/`, `bin/`), the PHPUnit test suite (`tests/`), and the .wordpress-org/
listing assets.

### Third-Party Libraries

The bundled `assets/dist/docs-hub.js` frontend is built from TypeScript/React
 sources
in the public repository and includes the following open-source libraries (all GPL-
compatible licenses; MIT unless noted):

 * React and React DOM (MIT) — https://react.dev
 * React Markdown (MIT) — https://github.com/remarkjs/react-markdown
 * React Router (MIT) — https://reactrouter.com
 * FlexSearch (Apache-2.0) — https://github.com/nextapps-de/flexsearch
 * Lowlight and highlight.js language grammars (MIT / BSD-3-Clause)
 * The unified/remark/rehype ecosystem: remark-gfm, remark-directive,
    remark-frontmatter,
   rehype-slug, rehype-autolink-headings, rehype-highlight, unist-util-visit (MIT)
   and github-slugger (ISC)

Build and test tooling (esbuild, ESLint, TypeScript, Vitest) is not shipped
 in 
the distribution ZIP. The complete dependency graph and its licenses are listed 
in `package.json` and `package-lock.json` in the public repository.

### External Services

This plugin provides an optional **documentation-import service**, disabled
 by 
default: remote requests happen only after an administrator enables _Remote Repositories_
in the settings, configures at least one repository, and triggers a rebuild. When
enabled, the plugin fetches Markdown files from public GitHub repositories, stores
them locally in the uploads cache, and renders them in the documentation browser.
Fetched content is cached on your server, so visitors are served from the local 
cache, not from GitHub.

All requests are made **server-side only, over HTTPS**, and only to the two
 hosts
listed below. Every request is restricted to these hosts (all other hosts are rejected,
including private and reserved IP addresses), carries a bounded timeout and a 4 
MB response-size cap, and only happens after an administrator has enabled the Remote
Repositories setting, configured a repository, and a rebuild is triggered — manually,
via WP-CLI, by the nightly cron, or automatically when the cache is invalidated (
a related plugin is activated, deactivated, or updated). No requests are made unless
the Remote Repositories setting is enabled and a repository is configured.

**No account is required** for public repositories. An optional GitHub
 personal
access token can be saved in the settings to raise GitHub’s API rate limits; it 
is stored server-side and sent only to the two hosts below.

 * `api.github.com` — repository and tree metadata used by the file/folder
    picker
   and the indexer.
 * `raw.githubusercontent.com` — raw Markdown file content fetched during
    index
   rebuilds.

The plugin does not send any personal data to these services — it only
 fetches 
the public repository content exactly as GitHub serves it. Rendered documentation
pages display the repository content as authored, which may include links and images
pointing at `github.com`, raw.githubusercontent.com, or `user-images.githubusercontent.
com`; those are loaded by the visitor’s browser directly from the source repository,
not through the plugin or your server.

GitHub Terms of Service:
 https://docs.github.com/en/site-policy/github-terms/github-
terms-of-service GitHub Privacy Statement: https://docs.github.com/en/site-policy/
privacy-policies/github-general-privacy-statement

## Screenshots

[⌊Settings — documentation index status and rebuild panel.⌉⌊Settings — documentation
index status and rebuild panel.⌉[

Settings — documentation index status and rebuild panel.

[⌊Settings — remote repositories with the GitHub file/folder tree picker.⌉⌊Settings—
remote repositories with the GitHub file/folder tree picker.⌉[

Settings — remote repositories with the GitHub file/folder tree picker.

[⌊Frontend [nvoos_docs] embed — sidebar, content, and table of contents.⌉⌊Frontend[
nvoos_docs] embed — sidebar, content, and table of contents.⌉[

Frontend `[nvoos_docs]` embed — sidebar, content, and table of contents.

[⌊Frontend [nvoos_docs] embed — full-text search.⌉⌊Frontend [nvoos_docs] embed —
full-text search.⌉[

Frontend `[nvoos_docs]` embed — full-text search.

## Installation

 1. Upload the `nvoos-docs-hub` folder to `/wp-content/plugins/`.
 2. Activate the plugin through the **Plugins** admin screen.
 3. Add your Markdown files to `wp-content/uploads/nvoos-docs-hub/content/` (created
    automatically), go to **Settings  NV oOS Docs Hub**, and click **Rebuild Index**.
 4. Add `[nvoos_docs]` to any page to display the documentation browser.

To import documentation from a public GitHub repository instead, go to **Settings
NV oOS Docs Hub  Remote Repositories**, enable the setting, and add your repositories.

To also index local NV oOS documentation, activate the NV oOS base plugin and enable
the `base`, `addons`, or `root` sources under **Settings  NV oOS Docs Hub  Advanced—
local filesystem (legacy)**.

## FAQ

### Does this plugin require the NV oOS base plugin?

No. Out of the box it publishes Markdown files from
 wp-content/uploads/nvoos-docs-
hub/content/. If the NV oOS base plugin is active, additional local sources (the
base plugin’s `docs/` folder and installed addons) are discovered automatically.

### Can I index docs from a GitHub repository?

Yes. First enable **Remote Repositories** under **Settings  NV oOS Docs
 Hub
, then
add a repository and either index the whole repository,
 restrict it to a folder
prefix, or use the “Browse files in repo…” picker to select individual files and
folders.

### Which file types are indexed?

Only `.md` and `.txt` files up to 2 MB in size (local sources) or 4 MB (remote
 
sources).

### How do I exclude specific files?

Use the `nvoos_docs_hub_excluded_globs` filter to return an array of glob
 patterns(
relative to each source root) that should be excluded.

### Can I restrict public access to the docs?

Yes. Use the `nvoos_docs_hub_can_read_section` filter. Return a `WP_Error` or
 false
to block unauthenticated REST access. You can also restrict at the shortcode level
with the `nvoos_docs_hub_can_render` filter. Alternatively, turn off **Allow Public(
Guest) Access** in the settings to require a WordPress login for all docs.

### How is the cache invalidated?

Automatically when any plugin is activated or deactivated, after NV oOS plugin
 
updates, on a nightly scheduled cron job, and via a version-mismatch guard that 
rebuilds when the installed plugin versions no longer match the cached index. You
can also rebuild manually from the settings page, via WP-CLI, or via the REST API(
requires `manage_options`).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“NV oOS Docs Hub” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Vijay Samtani ](https://profiles.wordpress.org/vsamtani/)

[Translate “NV oOS Docs Hub” into your language.](https://translate.wordpress.org/projects/wp-plugins/nvoos-docs-hub)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/nvoos-docs-hub/), check
out the [SVN repository](https://plugins.svn.wordpress.org/nvoos-docs-hub/), or 
subscribe to the [development log](https://plugins.trac.wordpress.org/log/nvoos-docs-hub/)
by [RSS](https://plugins.trac.wordpress.org/log/nvoos-docs-hub/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.5.1

 * Changed: the uploads content folder moved from `wp-content/uploads/docs/` to `
   wp-content/uploads/nvoos-docs-hub/content/` — nested inside the plugin’s slug-
   named uploads directory, per the WordPress.org plugin guidelines. Existing content
   is migrated automatically on activation or first admin visit.
 * Added: automatic one-time migration of the pre-0.5.1 `wp-content/uploads/docs/`
   folder (best-effort, never overwrites existing files, symlinks are never followed).

#### 0.5.0

 * Added: local-first default — the plugin now publishes Markdown files dropped 
   into `wp-content/uploads/docs/` out of the box, with zero remote calls.
 * Added: “Enable Remote Repositories” opt-in setting (off by default). Remote GitHub
   import now requires enabling the setting, configuring a repository, and triggering
   a rebuild. Existing installs that already use remote repositories keep them enabled
   automatically.
 * Security: the local-source scanner now resolves symlinks before its containment
   check, so a symlinked subfolder cannot leak files from outside the docs folder.
 * Changed: remote import is gated server-side (scanner and file-picker endpoint)
   whenever the setting is off.

#### 0.4.8

 * Changed: the readme Description now explains the documentation-import service
   up front — the servers contacted (`api.github.com`, `raw.githubusercontent.com`),
   that no account is required, that requests happen only on administrator-configured
   rebuilds, and that no plugin assets are loaded remotely.
 * Changed: the remote-repository fetcher’s host allowlist and fetch code now reference
   the readme’s External Services disclosure.

#### 0.4.7

 * Fixed: removed the “Tested up to” line from the plugin headers — it is declared
   only in the readme.
 * Fixed: the daily rebuild cron is now scheduled on `init` instead of `plugins_loaded`,
   which prevented “translation loading triggered too early” notices on WordPress
   6.7+ when other plugins register translated cron schedules.
 * Changed: rebuild cron events are cleared when the plugin is deactivated, and 
   deactivating the plugin no longer enqueues a rebuild that could never run.
 * Changed: the readme now discloses the bundled third-party libraries and their
   licenses and lists every automatic rebuild trigger in the External Services section.

#### 0.4.6

 * Added: bundled GPLv3 license file (LICENSE) at the plugin root.

#### 0.4.5

 * Security: a symlinked cache directory can no longer redirect deletion — the uninstall
   routine removes only the link and leaves the external target untouched, and the
   cache class replaces a symlinked cache directory with a real one before writing.
 * Changed: the External Services section now explains the documentation-import 
   service, the servers it contacts, and that no account is required for public 
   repositories.

#### 0.4.4

 * Security: search results and the WordPress sitemap no longer expose context-source(`.
   context/`) content to non-admin users.
 * Security: GitHub personal access tokens are no longer localized into the settings-
   page scripts (they were stripped only on export before).
 * Security: staged rebuilds no longer read or write live page transients, page 
   transients are invalidated when the cache is promoted or cleared, and recursive
   cache deletion is hardened against symlink traversal.
 * Changed: the base-plugin notice is scoped to the Docs Hub settings page, and 
   the redundant `load_plugin_textdomain()` call was removed.
 * Changed: readme now documents the public source repository and the frontend build
   steps; the bundled `docs-hub.js` and `docs-hub.css` carry source banners.

#### 0.4.3

 * Added: WordPress.org listing screenshots and a Playwright capture script (`bin/
   capture-nvoos-docs-hub-screenshots.js`).
 * Added: WordPress.org submission preparation — External Services section in the
   readme, a translation template (languages/nvoos-docs-hub.pot), and a WordPress.
   org Plugin Check gate in CI.
 * Changed: settings-page scripts moved to a static asset (no inline blocks), text-
   domain consistency fix, dev files excluded from distribution ZIPs.
 * Changed: readme tags trimmed to directory-standard tags.

#### 0.4.2

 * Fixed: clicking internal links on local pages left the SPA — links now resolve
   to `#/slug` hash routes with heading anchors preserved.
 * Fixed: “On this page” TOC anchors now match rendered headings exactly (github-
   slugger parity verified across ~63,000 headings).
 * Fixed: “Accept fix” suggestions now resolve targets relative to the source page
   and validate the resolved destination against plugin/content roots.
 * Fixed: sync rebuilds (`wp nvoos-docs sync`, `POST /rebuild?sync=1`) now report
   an error when the atomic staging-cache swap fails.
 * Fixed: skipped broken-link rows in the settings table now show the server-provided
   reason; remote-sourced rows explain they must be fixed upstream.

#### 0.4.1

 * Fixed: index went stale after in-place NV oOS plugin updates — cache now invalidates
   on the new `wp_mcp_ai_plugin_updated` action plus an `admin_init` version-mismatch
   guard.
 * Fixed: broken-link detection on remote-only indexes no longer flags repo-relative
   links; fix suggestions are case-insensitive with clamped confidence.

#### 0.4.0

 * Fixed: “Unexpected token ‘<‘” errors when page-caching plugins serve HTML for
   REST requests — clients now send `Accept: application/json` and validate the 
   response content type.
 * Fixed: non-404 page-load failures no longer masquerade as “404 Page Not Found”;
   they show a diagnostic error block.

#### 0.3.9

 * Fixed: fatal error during WordPress sitemap provider registration (now hooked
   into `wp_sitemaps_init`).
 * Added: `fnmatch()` polyfill for Windows PHP environments.

#### 0.3.8

 * Added: syntax highlighting via `rehype-highlight` with a scoped light/dark theme.
 * Added: last-modified footer date and “Edit on GitHub” links.
 * Added: indexed docs pages included in the WordPress sitemap.
 * Added: admin repo-picker script extracted to a static, CSP-friendly asset.

#### 0.3.7

 * Added: accessibility improvements — ARIA region for the SPA, skip-link to main
   content, `prefers-reduced-motion` support, RTL layout mirroring.

#### 0.3.6

 * Fixed: fatal error on the settings page with malformed `remote_repos` rows.
 * Added: hardened SSRF protection for remote GitHub fetches (IPv6-aware resolution,
   per-record validation).
 * Added: force-refresh clears the per-file remote content cache.

#### 0.3.2

 * Fixed: PHPCS compliance pass (96 errors / 38 warnings resolved).

#### 0.3.1

 * Fixed: admin rebuild panel 404 (wrong REST namespace).
 * Changed: remote-repositories settings section now explains the tree-picker workflow.

#### 0.3.0

 * Changed: fresh installs default to remote-first sources (`remote` only); local
   filesystem sources moved under “Advanced — local filesystem (legacy)”.
 * Added: lookup-and-select tree picker for remote repositories with per-repo selection
   modes (`all`, `prefix`, `selected`).
 * Added: admin REST endpoint `GET /remote/tree`.

#### 0.2.0

 * Chunked, async-by-default rebuild pipeline (`scan`  `pages`  `links`  `search``
   finalize`) driven by self-rescheduling WP-Cron ticks. Per-tick wall-clock + memory
   budgets prevent the historical “single 60 s+ PHP request crashes on a large repo”
   failure mode.
 * Atomic staging-cache swap. A failed rebuild leaves the previous index intact 
   instead of wiping the docs and leaving the SPA blank.
 * Built-in vendor / dependency exclusion (`vendor/`, `node_modules/`, `bower_components/`,`.
   git/`, `.github/`, `dist/`, `build/`, `coverage/`, `tests/fixtures/`) applied
   during recursive scan to prune subdirectories before recursion. New `nvoos_docs_hub_force_include_globs`
   filter allow-lists specific vendored docs.
 * Plugin-root `README.md` / `CHANGELOG.md` / `CONTRIBUTING.md` / `SECURITY.md` 
   are now indexed unconditionally when the `root` source is enabled (no longer 
   gated behind `WP_DEBUG`). `.context/*.md` remains gated behind `context_enabled`
   + `manage_options`.
 * New source-priority (`root` > `base` > `addons` > `context` > `remote`) ensures
   the plugin-root README wins the canonical `readme` slug; addon READMEs receive
   suffixed slugs.
 * New REST endpoints: `GET /rebuild/status`, `POST /rebuild/cancel`, `POST /rebuild/
   resume`. `POST /rebuild` returns HTTP 202 by default; pass `?sync=1` for the 
   legacy inline behaviour.
 * New WP-CLI command: `wp nvoos-docs rebuild [--async|--sync|--resume|--cancel]`.
 * Admin UI: live progress panel polls `/rebuild/status` with start / resume / cancel
   buttons.
 * New filters: `nvoos_docs_hub_force_include_globs`, `nvoos_docs_hub_pruned_dir_names`,`
   nvoos_docs_hub_source_priority`, `nvoos_docs_hub_rebuild_chunk_size`, `nvoos_docs_hub_rebuild_tick_budget`,`
   nvoos_docs_hub_max_files_total`. New action: `nvoos_docs_hub_rebuild_phase`.
 * New setting: “Include per-addon README/CHANGELOG” (default on).
 * Performance: `build_search_index()` now reuses cached page payloads instead of
   re-reading every file.

#### 0.1.0

 * Initial release.

## Meta

 *  Version **0.5.1**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/nvoos-docs-hub/)
 * Tags
 * [documentation](https://ibo.wordpress.org/plugins/tags/documentation/)[Github](https://ibo.wordpress.org/plugins/tags/github/)
   [markdown](https://ibo.wordpress.org/plugins/tags/markdown/)
 *  [Advanced View](https://ibo.wordpress.org/plugins/nvoos-docs-hub/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/nvoos-docs-hub/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/nvoos-docs-hub/reviews/)

## Contributors

 *   [ Vijay Samtani ](https://profiles.wordpress.org/vsamtani/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/nvoos-docs-hub/)