docs: Add Sphinx docs site and move docs into site. - #61
Conversation
WalkthroughThis pull request introduces a comprehensive documentation system for the Spider project using Sphinx. The changes include setting up a documentation structure with configuration files, requirements, and tasks for building and serving the documentation. The documentation is organized into user and developer sections, with a focus on providing clear, navigable guides for using and developing the Spider distributed system. Changes
Possibly related PRs
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (10)
docs/conf/conf.py (1)
39-39: Consider using a local favicon instead of an external URL.Using an external URL for the favicon might cause issues if the external server is unavailable. Consider downloading and storing the favicon locally in the
_staticdirectory.tools/scripts/find-broken-docs-links.py (1)
87-89: Enhance error handling for grep command.The current implementation silently ignores all subprocess errors. Consider logging non-zero exit codes that aren't related to pattern matching (exit code 1).
- except subprocess.CalledProcessError: - pass + except subprocess.CalledProcessError as e: + # Exit code 1 means no matches found + if e.returncode != 1: + print(f"Error running grep: {e}", file=sys.stderr)docs/src/dev-docs/index.md (1)
6-15: Consider adding more documentation sections to the grid.The grid layout currently only contains a "Testing" section. Consider adding other essential developer documentation sections such as:
- Architecture Overview
- Contributing Guidelines
- Development Setup
🧰 Tools
🪛 LanguageTool
[duplication] ~10-~10: Possible typo: you repeated a word.
Context: ... :gutter: 2 :::{grid-item-card} 🔗 testing Testing ^^^ How to test Spider. ::: :::: :::{t...(ENGLISH_WORD_REPEAT_RULE)
docs/src/user-docs/index.md (1)
7-16: Consider expanding the grid with more user guide sections.The grid layout could benefit from additional sections such as:
- Troubleshooting Guide
- Configuration Guide
- Best Practices
docs/src/_static/custom.css (1)
1-4: Consider extracting colour values into custom properties.For better maintainability, consider defining the hex values as separate custom properties:
+:root { + --spider-blue: #3399ff; + --spider-purple: #9580ff; +} + html[data-theme="dark"], html[data-theme="light"] { - --pst-color-primary: #3399ff; - --pst-color-secondary: #9580ff; + --pst-color-primary: var(--spider-blue); + --pst-color-secondary: var(--spider-purple); }docs/tasks.yaml (2)
3-10: Add comments describing the purpose of each path.Consider documenting the purpose and usage of each path variable for better maintainability:
vars: # Paths + # Directory where the built HTML documentation will be stored G_DOCS_BUILD_DIR: "{{.G_BUILD_DIR}}/docs/html" + # Directory for Python virtual environment used by documentation tools G_DOCS_VENV_DIR: "{{.G_BUILD_DIR}}/docs-venv" + # Directory for Node.js dependencies used by the documentation server G_NODE_DEPS_DIR: "{{.G_BUILD_DIR}}/docs-node" # Target checksum files + # Checksum file to track changes in the documentation virtual environment G_DOCS_VENV_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/docs#docs-venv.md5"
107-107: Pin the http-server package version.For reproducible builds, consider pinning the http-server package version:
- - "npm --prefix '{{.OUTPUT_DIR}}' install http-server" + - "npm --prefix '{{.OUTPUT_DIR}}' install http-server@14.1.1"docs/src/user-docs/guides-quick-start.md (2)
13-14: Consider enhancing the example source code referenceThe link to examples could be more descriptive for users.
-The example source code for this guide is in [examples/quick-start]. +The complete example source code used throughout this guide can be found in the [examples/quick-start] directory.
192-195: Enhance worker scaling guidanceThe tip about multiple workers could be more informative.
:::{tip} -You can start multiple workers to increase the number of concurrent tasks that can be run on the -cluster. +You can start multiple workers to increase the cluster's processing capacity. Consider factors like: +* Available system resources (CPU, memory) +* Expected task workload +* Network bandwidth +When scaling your worker count. :::docs/README.md (1)
11-13: Add version checking commandsConsider adding commands to verify installed versions.
* [Node.js] >= 16 to be able to [view the output](#viewing-the-output) * Python 3.10 or higher * [Task] 3.40.0 or higher + +You can verify your installed versions using: +```shell +node --version +python --version +task --version +```
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
docs/README.md(1 hunks)docs/conf/conf.py(1 hunks)docs/requirements.txt(1 hunks)docs/src/_static/custom.css(1 hunks)docs/src/dev-docs/index.md(1 hunks)docs/src/dev-docs/testing.md(1 hunks)docs/src/index.md(1 hunks)docs/src/user-docs/guides-overview.md(1 hunks)docs/src/user-docs/guides-quick-start.md(6 hunks)docs/src/user-docs/index.md(1 hunks)docs/tasks.yaml(1 hunks)lint-tasks.yaml(1 hunks)taskfile.yaml(1 hunks)tools/scripts/find-broken-docs-links.py(1 hunks)
✅ Files skipped from review due to trivial changes (3)
- docs/src/user-docs/guides-overview.md
- docs/src/dev-docs/testing.md
- docs/requirements.txt
🧰 Additional context used
🪛 LanguageTool
docs/src/dev-docs/index.md
[uncategorized] ~4-~4: Did you mean “I”?
Context: ...left sidebar (if it's hidden, click the icon) to naviga...
(I_LOWERCASE_PREMIUM)
[duplication] ~10-~10: Possible typo: you repeated a word.
Context: ... :gutter: 2 :::{grid-item-card} 🔗 testing Testing ^^^ How to test Spider. ::: :::: :::{t...
(ENGLISH_WORD_REPEAT_RULE)
docs/src/user-docs/index.md
[uncategorized] ~4-~4: Did you mean “I”?
Context: ...left sidebar (if it's hidden, click the icon) to naviga...
(I_LOWERCASE_PREMIUM)
🪛 markdownlint-cli2 (0.17.2)
docs/README.md
23-23: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
38-38: Bare URL used
null
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: non-storage-unit-tests (ubuntu-24.04)
- GitHub Check: lint
- GitHub Check: non-storage-unit-tests (ubuntu-22.04)
🔇 Additional comments (9)
docs/conf/conf.py (1)
65-70: LGTM! Well-configured source buttons.The GitHub repository configuration is properly set up for the edit buttons and source links.
tools/scripts/find-broken-docs-links.py (1)
93-106: Consider adding unit tests for the match parsing function.The
_parse_and_print_matchfunction handles critical output formatting but lacks test coverage.Would you like me to help create unit tests for this function?
docs/src/user-docs/index.md (1)
22-23: LGTM! Clear organization of guides.The table of contents is well-structured with a logical progression from overview to quick start guide.
docs/src/index.md (1)
1-31: Well-structured documentation layout!The documentation is organized effectively with clear sections for users and developers. The grid layout provides an intuitive navigation experience.
docs/src/_static/custom.css (2)
14-23: Well-documented style implementation!The hover style is properly documented with a reference to the original pydata-sphinx-theme implementation.
25-32: Good optimization!The removal of unnecessary margins effectively eliminates the scrollbar issue.
taskfile.yaml (1)
6-6: Clean integration of documentation tasks!The new docs tasks are properly integrated into the existing task structure.
docs/tasks.yaml (1)
24-63: Excellent build process implementation!The site task is well-structured with:
- Proper dependency management
- Broken link validation
- Comprehensive Sphinx build configuration
- Checksum validation for caching
lint-tasks.yaml (1)
174-174: Clean addition to yamllint configuration!The new docs/tasks.yaml file is properly integrated into the linting process.
| :::{warning} | ||
| When the container above is stopped, the database will be deleted. In production, you should set up | ||
| a database instance with some form of data persistence. | ||
| ::: | ||
|
|
||
| > [!WARNING] | ||
| > The container above is using hardcoded default credentials that shouldn't be used in production. | ||
| :::{warning} | ||
| The container above is using hardcoded default credentials that shouldn't be used in production. | ||
| ::: |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Strengthen security warnings for production deployment
The security warnings should be more explicit about the risks.
:::{warning}
-When the container above is stopped, the database will be deleted. In production, you should set up
-a database instance with some form of data persistence.
+When the container above is stopped, all data will be permanently lost. For production deployments,
+ensure proper database persistence and backup strategies are implemented.
:::
:::{warning}
-The container above is using hardcoded default credentials that shouldn't be used in production.
+The container above uses hardcoded default credentials, which poses a significant security risk.
+For production deployments, always use strong, unique credentials and follow your organization's
+security policies for credential management.
:::📝 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.
| :::{warning} | |
| When the container above is stopped, the database will be deleted. In production, you should set up | |
| a database instance with some form of data persistence. | |
| ::: | |
| > [!WARNING] | |
| > The container above is using hardcoded default credentials that shouldn't be used in production. | |
| :::{warning} | |
| The container above is using hardcoded default credentials that shouldn't be used in production. | |
| ::: | |
| :::{warning} | |
| When the container above is stopped, all data will be permanently lost. For production deployments, | |
| ensure proper database persistence and backup strategies are implemented. | |
| ::: | |
| :::{warning} | |
| The container above uses hardcoded default credentials, which poses a significant security risk. | |
| For production deployments, always use strong, unique credentials and follow your organization's | |
| security policies for credential management. | |
| ::: |
| task docs:site | ||
| ``` | ||
|
|
||
| * The output of the build will be in `../build/docs/html`. |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Fix list indentation
The unordered list item is incorrectly indented.
- * The output of the build will be in `../build/docs/html`.
+ * The output of the build will be in `../build/docs/html`.📝 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.
| * The output of the build will be in `../build/docs/html`. | |
| * The output of the build will be in `../build/docs/html`. |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
23-23: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
| The command above will install [http-server] and serve the built docs site; `http-server` will print | ||
| the address it binds to (usually http://localhost:8080). |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Fix bare URL and enhance server information
The documentation contains a bare URL and could provide more detailed server information.
-The command above will install [http-server] and serve the built docs site; http-server will print
-the address it binds to (usually http://localhost:8080).
+The command above will install [http-server] and serve the built docs site. The server will print
+its bound address (typically `http://localhost:8080`). You can access the documentation through
+your web browser at this address.📝 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.
| The command above will install [http-server] and serve the built docs site; `http-server` will print | |
| the address it binds to (usually http://localhost:8080). | |
| The command above will install [http-server] and serve the built docs site. The server will print | |
| its bound address (typically `http://localhost:8080`). You can access the documentation through | |
| your web browser at this address. |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
38-38: Bare URL used
null
(MD034, no-bare-urls)
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (4)
docs/README.md (3)
3-8: Consider enhancing the directory descriptions.The introduction could be more helpful by providing additional details about:
- What Sphinx is and why it was chosen
- What types of configuration files are in the
confdirectory- What documentation content is expected in the
srcdirectoryThis directory contains the files necessary to generate a Sphinx-based documentation website for -this project: +this project. Sphinx is a powerful documentation generator that supports multiple output formats +and is widely used in the Python ecosystem: -* `conf` - Configuration files -* `src` - The actual docs +* `conf` - Configuration files for Sphinx settings, themes, and extensions +* `src` - Source documentation files in reStructuredText or Markdown format
11-13: Add a link for Python requirement.For consistency with other requirements, consider adding a link to the Python download page.
* [Node.js] >= 16 to be able to [view the output](#viewing-the-output) -* Python 3.10 or higher +* [Python] 3.10 or higher * [Task] 3.40.0 or higherAdd at the bottom with other links:
[http-server]: https://www.npmjs.com/package/http-server [Node.js]: https://nodejs.org/en/download/current +[Python]: https://www.python.org/downloads/ [Task]: https://taskfile.dev/🧰 Tools
🪛 LanguageTool
[uncategorized] ~12-~12: Possible missing preposition found.
Context: ...view the output](#viewing-the-output) * Python 3.10 or higher * [Task] 3.40.0 or highe...(AI_HYDRA_LEO_MISSING_OF)
23-23: Enhance the build output description.Consider providing more details about what users will find in the output directory.
- * The output of the build will be in `../build/docs/html`. + * The output of the build will be in `../build/docs/html`, containing the complete + static website with HTML files, stylesheets, and JavaScript assets.tools/scripts/find-broken-docs-links.py (1)
8-38: Add docstring and use constants for regex patterns.The main function would benefit from:
- A docstring explaining its purpose and return values
- Constants for the regex patterns to improve maintainability
Here's a suggested improvement:
+# Constants for regex patterns +DOCS_MD_SUFFIX_PATTERN = r"docs\.yscope\.com/.+\.md" +SPHINX_LINK_MD_SUFFIX_PATTERN = r":link:[[:space:]]*.+\.md" + def main(argv: List[str] = None): + """ + Check for documentation link violations in the repository. + + Args: + argv: Command line arguments (defaults to sys.argv) + + Returns: + int: 0 if no violations found, 1 otherwise + """ if argv is None: argv = sys.argv repo_root = _get_repo_root() found_violation = False # Check for docs.yscope.com links with ".md" suffixes if _check_tracked_files( - r"docs\.yscope\.com/.+\.md", + DOCS_MD_SUFFIX_PATTERN, repo_root, repo_root, 'docs.yscope.com links cannot have ".md" suffixes.', ): found_violation = True # Check for sphinx :link: attributes that have ".md" suffixes if _check_tracked_files( - r":link:[[:space:]]*.+\.md", + SPHINX_LINK_MD_SUFFIX_PATTERN, repo_root, repo_root / "docs", 'sphinx :link: attributes cannot have ".md" suffixes', ): found_violation = True
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
docs/README.md(1 hunks)tools/scripts/find-broken-docs-links.py(1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/README.md
[uncategorized] ~12-~12: Possible missing preposition found.
Context: ...view the output](#viewing-the-output) * Python 3.10 or higher * [Task] 3.40.0 or highe...
(AI_HYDRA_LEO_MISSING_OF)
🪛 markdownlint-cli2 (0.17.2)
docs/README.md
38-38: Bare URL used
null
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: non-storage-unit-tests (ubuntu-24.04)
- GitHub Check: lint
- GitHub Check: non-storage-unit-tests (ubuntu-22.04)
🔇 Additional comments (3)
docs/README.md (2)
23-23: Fix list indentation.The unordered list item is incorrectly indented.
- * The output of the build will be in `../build/docs/html`. + * The output of the build will be in `../build/docs/html`.
37-38: Fix bare URL and enhance server information.The documentation contains a bare URL and could provide more detailed server information.
-The command above will install [http-server] and serve the built docs site; http-server will print -the address it binds to (usually http://localhost:8080). +The command above will install [http-server] and serve the built docs site. The server will print +its bound address (typically `http://localhost:8080`). You can access the documentation through +your web browser at this address.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
38-38: Bare URL used
null(MD034, no-bare-urls)
tools/scripts/find-broken-docs-links.py (1)
109-110: LGTM!The script entry point is well-implemented, following Python best practices.
| def _parse_and_print_match(match: str, error_msg: str): | ||
| """ | ||
| Parses and prints grep matches in a format relevant to the current environment. | ||
| :param match: The match to parse and print. | ||
| :param error_msg: Error message if the pattern is found. | ||
| """ | ||
| if os.getenv("GITHUB_ACTIONS") == "true": | ||
| # Print a GitHub Actions error annotation | ||
| file, line, _ = match.split(":", 2) | ||
| print(f"::error file={file},line={line}::{error_msg}") | ||
| else: | ||
| print(error_msg, file=sys.stderr) | ||
| print(match, file=sys.stderr) | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
Add error handling for malformed grep output.
The _parse_and_print_match function should handle potential malformed grep output.
Here's a suggested improvement:
def _parse_and_print_match(match: str, error_msg: str):
if os.getenv("GITHUB_ACTIONS") == "true":
# Print a GitHub Actions error annotation
- file, line, _ = match.split(":", 2)
- print(f"::error file={file},line={line}::{error_msg}")
+ try:
+ file, line, _ = match.split(":", 2)
+ print(f"::error file={file},line={line}::{error_msg}")
+ except ValueError:
+ print(f"::error::Malformed grep output: {match}")
else:
print(error_msg, file=sys.stderr)
print(match, file=sys.stderr)📝 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.
| def _parse_and_print_match(match: str, error_msg: str): | |
| """ | |
| Parses and prints grep matches in a format relevant to the current environment. | |
| :param match: The match to parse and print. | |
| :param error_msg: Error message if the pattern is found. | |
| """ | |
| if os.getenv("GITHUB_ACTIONS") == "true": | |
| # Print a GitHub Actions error annotation | |
| file, line, _ = match.split(":", 2) | |
| print(f"::error file={file},line={line}::{error_msg}") | |
| else: | |
| print(error_msg, file=sys.stderr) | |
| print(match, file=sys.stderr) | |
| def _parse_and_print_match(match: str, error_msg: str): | |
| """ | |
| Parses and prints grep matches in a format relevant to the current environment. | |
| :param match: The match to parse and print. | |
| :param error_msg: Error message if the pattern is found. | |
| """ | |
| if os.getenv("GITHUB_ACTIONS") == "true": | |
| # Print a GitHub Actions error annotation | |
| try: | |
| file, line, _ = match.split(":", 2) | |
| print(f"::error file={file},line={line}::{error_msg}") | |
| except ValueError: | |
| print(f"::error::Malformed grep output: {match}") | |
| else: | |
| print(error_msg, file=sys.stderr) | |
| print(match, file=sys.stderr) |
| def _get_repo_root() -> Path: | ||
| path_str = subprocess.check_output( | ||
| ["git", "rev-parse", "--show-toplevel"], cwd=Path(__file__).parent, text=True | ||
| ) | ||
| return Path(path_str.strip()) | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
Add error handling for git command failure.
The _get_repo_root function should handle potential git command failures gracefully.
Here's a suggested improvement:
def _get_repo_root() -> Path:
- path_str = subprocess.check_output(
- ["git", "rev-parse", "--show-toplevel"], cwd=Path(__file__).parent, text=True
- )
- return Path(path_str.strip())
+ try:
+ path_str = subprocess.check_output(
+ ["git", "rev-parse", "--show-toplevel"],
+ cwd=Path(__file__).parent,
+ text=True,
+ stderr=subprocess.PIPE
+ )
+ return Path(path_str.strip())
+ except subprocess.CalledProcessError as ex:
+ print(f"Error: Not a git repository or git command failed: {ex.stderr.decode()}",
+ file=sys.stderr)
+ sys.exit(1)Committable suggestion skipped: line range outside the PR's diff.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
docs/src/user-docs/guides-quick-start.md (3)
15-20: Consider clarifying the repository root contextThe note about relative paths could be more explicit about the repository root.
:::{note} In the rest of this guide: -1. we specify source file paths relative to `examples/quick-start`. -2. all CMake commands should be run from inside `examples/quick-start`. +1. we specify source file paths relative to the `examples/quick-start` directory from the repository root. +2. all CMake commands should be run from inside the `examples/quick-start` directory. :::
42-45: Add a comma for better readabilityAdd a comma after "Data types" to improve readability.
:::{note} -You don't immediately need to understand the TaskContext, Serializable, or Data types as we'll +You don't immediately need to understand the TaskContext, Serializable, or Data types, as we'll explain them in other guides. :::🧰 Tools
🪛 LanguageTool
[uncategorized] ~43-~43: Possible missing comma found.
Context: ... the TaskContext, Serializable, or Data types as we'll explain them in other guides. ...(AI_HYDRA_LEO_MISSING_COMMA)
207-210: Enhance the scaling tip with more detailsConsider adding more context about worker scaling considerations.
:::{tip} -You can start multiple workers to increase the number of concurrent tasks that can be run on the -cluster. +You can start multiple workers to increase the number of concurrent tasks that can be run on the +cluster. Consider factors such as: +* Available system resources (CPU, memory) per worker +* Network bandwidth between workers and storage +* Task execution patterns in your workload :::
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
docs/src/user-docs/guides-quick-start.md(6 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/src/user-docs/guides-quick-start.md
[uncategorized] ~43-~43: Possible missing comma found.
Context: ... the TaskContext, Serializable, or Data types as we'll explain them in other guides. ...
(AI_HYDRA_LEO_MISSING_COMMA)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: non-storage-unit-tests (ubuntu-24.04)
- GitHub Check: non-storage-unit-tests (ubuntu-22.04)
- GitHub Check: lint
🔇 Additional comments (3)
docs/src/user-docs/guides-quick-start.md (3)
13-14: Well done on making the example source reference clickable!This improves navigation and makes it easier for users to find the example code.
49-55: Excellent use of literalinclude directive!The code block is well-formatted with appropriate syntax highlighting and line numbers.
144-151: Strengthen security warnings as previously suggestedThe security warnings should be more explicit about the risks, as mentioned in a previous review.
:::{warning} -When the container above is stopped, the database will be deleted. In production, you should set up -a database instance with some form of data persistence. +When the container above is stopped, all data will be permanently lost. For production deployments, +ensure proper database persistence and backup strategies are implemented. ::: :::{warning} -The container above is using hardcoded default credentials that shouldn't be used in production. +The container above uses hardcoded default credentials, which poses a significant security risk. +For production deployments, always use strong, unique credentials and follow your organization's +security policies for credential management. :::
Description
This PR adds a Sphinx docs site for this project and moves most docs into the site.
Unfortunately, this PR is quite large, but it is somewhat unavoidable since we need to move all the docs at once to avoid confusing the user with some docs that exist as READMEs and some docs that exist on docs.yscope.com. That said, we've tried to keep the changes simple (just moving files around for the most part). Any additional changes were made either to make the docs look presentable in the new site or because it was more convenient to fix something than let it lie.
This PR adds these docs-related tasks:
docs:cleandocs:serveto build and serve the docs sitedocs:siteto build the docs siteValidation performed
Summary by CodeRabbit
Release Notes
Documentation
New Features
Chores
These changes significantly enhance the project's documentation infrastructure and user guidance.