Skip to content

docs(structure): reorganize website content and navigation - #704

Open
singhsrijan46 wants to merge 1 commit into
Project-HAMi:masterfrom
singhsrijan46:feature/reorganize-website-content
Open

docs(structure): reorganize website content and navigation#704
singhsrijan46 wants to merge 1 commit into
Project-HAMi:masterfrom
singhsrijan46:feature/reorganize-website-content

Conversation

@singhsrijan46

@singhsrijan46 singhsrijan46 commented Aug 2, 2026

Copy link
Copy Markdown

What type of PR is this?

/kind documentation
/kind feature

What this PR does / why we need it:

Reorganized the docs and homepage architecture section to make website navigation easier and fix outdated commands.

Changes made:

  1. Homepage Architecture Toggle
  • Added a toggle button under Architecture & How It Works on src/pages/index.js so users can switch between HAMi (Device Plugin) and HAMi-DRA.
  • Updated control plane, data plane, and commands for both modes.
  1. Re-arranged Introduction & Created Design and Develop
  • Replaced Core Concepts with Introduction at the top of the sidebar (has What is HAMi?, Device sharing, Device resource isolation).
  • Moved deep architecture pages into a new section called Design and Develop along with developer docs.
  1. Simplified Get Started
  • Made Get Started a single page (deploy-with-helm.md) instead of a category with sub-pages.
  • Added NVIDIA Container Toolkit to prerequisites and removed extra setup steps from the quick start.
  1. Grouped Installation into 4 Parts
  • Split the long installation list into 4 sub-categories:
    • HAMi (Prerequisites, Online Installation, Offline Installation, Upgrade, Uninstall)
    • HAMi-DRA (HAMi-DRA Guide, NVIDIA CDI Support)
    • Volcano-HAMi (Use Volcano vGPU, Volcano Ascend vNPU)
    • KAI-scheduler-HAMi (WebUI Installation, HAMi on AWS)
  1. Updated Online Installation Page
  • Removed kubectl version step and old --set scheduler.kubeScheduler.image.tag=v1.29.0 flag from online-installation.md.
  • Updated it to the default Helm install command.
  1. Device Support Matrix & Cleaned Up Sidebar
  • Updated device-supported.md with a matrix table for supported devices across HAMi, HAMi-DRA, Volcano-vGPU, and KAI-scheduler with links to guides.
  • Removed 12 duplicate vendor categories from the sidebar.
  1. Added Component Tags on Feature Pages
  • Added clickable tags (HAMi, Volcano, HAMi-DRA) at the top of feature pages like dynamic-mig-support.md.
  1. Translations and Version Sync
  • Updated Chinese docs (i18n/zh/) and synced changes with version-v2.9.0.

Navigation: Before vs Now

  • Top Sidebar: Previously had Core Concepts (7 docs) and Key Features (2 docs). Now starts with Introduction (3 docs).
  • Get Started: Was a category with 2 sub-pages. Now it is a single quick-start page.
  • Installation: Was a flat list of 11 docs. Now grouped into 4 sub-categories (HAMi, HAMi-DRA, Volcano-HAMi, KAI-scheduler-HAMi).
  • User Guide: Had 12 repetitive vendor sections. Now cleaned up, and vendor setup links are in the Device supported by HAMi page table.

Which issue(s) this PR fixes:

Fixes #689

Checklist:

  • npm run lint and npm run format:check pass
  • npm run build succeeds for both en and zh
  • Chinese translation updated if English docs changed (or noted why not)
  • Commits are signed off (git commit -s)

Summary by CodeRabbit

  • New Features

    • Added a view toggle for switching between HAMi Device Plugin and HAMi-DRA architecture flows.
    • Architecture diagrams now show mode-specific control and data-plane steps, request interfaces, and resource handling.
    • Added localized labels and accessibility improvements for the architecture view.
  • Style

    • Added responsive light and dark theme styling for the architecture mode selector, including active, hover, and pill-shaped button states.

@hami-robot hami-robot Bot added the kind/documentation Improvements or additions to documentation label Aug 2, 2026
@hami-robot
hami-robot Bot requested a review from rootsongjc August 2, 2026 23:03
@hami-robot
hami-robot Bot requested a review from windsonsea August 2, 2026 23:03
@hami-robot

hami-robot Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: singhsrijan46
Once this PR has been reviewed and has the lgtm label, please assign wawa0210 for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@hami-robot hami-robot Bot added the kind/feature new function label Aug 2, 2026
@netlify

netlify Bot commented Aug 2, 2026

Copy link
Copy Markdown

Deploy Preview for project-hami ready!

Name Link
🔨 Latest commit 09950d0
🔍 Latest deploy log https://app.netlify.com/projects/project-hami/deploys/6a70acc60d7caa00081ca7a3
😎 Deploy Preview https://deploy-preview-704--project-hami.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@hami-robot

hami-robot Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Welcome @singhsrijan46! It looks like this is your first PR to Project-HAMi/website 🎉

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 14902b96-631a-4dde-b8a7-96efb99dee36

📥 Commits

Reviewing files that changed from the base of the PR and between 9bdaadb and 09950d0.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (3)
  • package.json
  • src/pages/index.js
  • src/pages/styles.module.css
🚧 Files skipped from review as they are similar to previous changes (2)
  • package.json
  • src/pages/index.js

📝 Walkthrough

Walkthrough

Changes

Architecture view

Layer / File(s) Summary
Mode-specific architecture configurations
src/pages/index.js
Defines separate HAMi Device Plugin and HAMi-DRA flows, labels, pipeline steps, request interfaces, and resource semantics.
Mode selection and diagram rendering
src/pages/index.js, src/pages/styles.module.css, package.json
Adds mode state, localized toggle buttons, dynamic diagram content, toggle styling, and the Font Awesome SVG core dependency.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Home
  participant archMode
  participant modeConfigurations
  participant ArchitectureDiagram
  Home->>archMode: set HAMi Device Plugin or HAMi-DRA
  archMode->>modeConfigurations: select active configuration
  modeConfigurations->>ArchitectureDiagram: provide pipeline and resource semantics
  ArchitectureDiagram-->>Home: render selected architecture view
Loading

Suggested reviewers: windsonsea, rootsongjc

🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (2 warnings, 1 inconclusive)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The Font Awesome dependency addition is not linked to the website reorganization objectives and has no documented use in the reviewed changes. Remove the unrelated dependency change or document its required use for the website reorganization.
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.
Linked Issues check ❓ Inconclusive The homepage implements separate HAMi and HAMi-DRA architecture flows, but the reviewed summary does not verify capability comparisons or setup guidance for all approaches. Provide evidence that the documentation compares all four approaches and directs users to the correct documentation and setup guidance.
✅ 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 describes the website content and navigation reorganization represented by the pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@hami-robot hami-robot Bot added the size/XXL label Aug 2, 2026

@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: 10

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
sidebars.js (1)

94-141: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

The reorganization removes sidebar entries for documents that still exist. Both sidebars drop the device-specific user-guide categories and collapse Get Started to a single document. The removed documents remain in docs/ and versioned_docs/version-v2.9.0/, so they become unlisted. Docusaurus warns about unlisted documents, and users lose navigation access to them.

  • sidebars.js#L94-L141: restore sidebar entries for the device documents under docs/userguide/, or link them from docs/userguide/device-supported.md.
  • sidebars.js#L18-L22: list the remaining docs/get-started/ documents, including get-started/verify-hami, under a Get Started category.
  • versioned_sidebars/version-v2.9.0-sidebars.json#L92-L131: apply the same device-document fix to the v2.9.0 snapshot.
  • versioned_sidebars/version-v2.9.0-sidebars.json#L18-L22: apply the same Get Started fix to the v2.9.0 snapshot.
#!/bin/bash
# Report every doc that no sidebar lists, for both current and versioned docs
check() {
  root="$1"; sidebar="$2"
  fd . "$root" --extension md --extension mdx \
    | sed "s|^${root}/||; s|\.mdx\?$||" | sort -u \
    | while IFS= read -r id; do
        rg -qF "$id" "$sidebar" || echo "UNLISTED [$root]: $id"
      done
}
check docs sidebars.js
check versioned_docs/version-v2.9.0 versioned_sidebars/version-v2.9.0-sidebars.json
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sidebars.js` around lines 94 - 141, Restore the removed device-specific
documentation entries in sidebars.js lines 94-141, linking them under the
existing device navigation or from device-supported.md; update sidebars.js lines
18-22 to list all remaining docs/get-started documents, including
get-started/verify-hami, under Get Started. Apply the equivalent device-document
restoration in versioned_sidebars/version-v2.9.0-sidebars.json lines 92-131 and
the complete Get Started listing in lines 18-22, ensuring every current and
v2.9.0 document remains discoverable.
🧹 Nitpick comments (2)
src/pages/styles.module.css (1)

707-727: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Optional: replace !important with an equally specific selector.

color: #ffffff !important at Line 725 exists because .archModeBtn:hover at Line 719 is more specific than .archModeBtnActive. Raising the specificity of the active rule removes the need for !important in the light theme.

♻️ Proposed refactor
-.archModeBtnActive {
+.archModeBtn.archModeBtnActive,
+.archModeBtn.archModeBtnActive:hover {
   background: `#10b981`;
-  color: `#ffffff` !important;
+  color: `#ffffff`;
   box-shadow: 0 2px 8px rgba(16, 185, 129, 0.35);
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/styles.module.css` around lines 707 - 727, Update the
.archModeBtnActive rule to match or exceed the specificity of
.archModeBtn:hover, allowing the active color declaration to remove !important
while preserving the white active-state text color.
src/pages/index.js (1)

904-928: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Optional: drive the lanes and the resource block from the data.

Two small couplings exist:

  • Line 905 and Line 906 index lanes[0] and lanes[1] directly. Both modes define exactly two lanes today, so this works. Mapping over activeMode.lanes removes the assumption.
  • Line 914 branches on activeMode.key, but each mode already declares resources.type ("extended" / "dra"). That field is never read. Use one source of truth, or remove resources.type.

Also confirm that the empty runtimeResourcesDivider span at Line 925 is intended as spacing only. The hami branch renders + in the same element.

♻️ Proposed refactor for the lane grid
                         <div className={styles.runtimeLaneGrid}>
-                          <RuntimeLaneCard lane={activeMode.lanes[0]} locale={i18n.currentLocale} />
-                          <RuntimeLaneCard lane={activeMode.lanes[1]} locale={i18n.currentLocale} />
+                          {activeMode.lanes.map((lane) => (
+                            <RuntimeLaneCard
+                              key={lane.key}
+                              lane={lane}
+                              locale={i18n.currentLocale}
+                            />
+                          ))}
                         </div>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/index.js` around lines 904 - 928, Update the runtime lane grid
around RuntimeLaneCard to map over activeMode.lanes instead of indexing lanes[0]
and lanes[1]. Replace the activeMode.key resource branch with the existing
activeMode.resources.type field, or remove that unused field if the key remains
the intended source; also verify whether the empty runtimeResourcesDivider span
is intentional spacing and preserve or simplify it accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/get-started/deploy-with-helm.md`:
- Around line 86-99: Update the GPU isolation output documentation: in
docs/get-started/deploy-with-helm.md lines 86-99, change “Expected output” to
“Example output” and state that driver, CUDA, GPU model, and usage values vary
by environment while retaining 10240MiB as the hard memory-limit assertion;
apply the equivalent clarification in
i18n/zh/docusaurus-plugin-content-docs/current/get-started/deploy-with-helm.md
lines 86-99,
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/get-started/deploy-with-helm.md
lines 86-99, and versioned_docs/version-v2.9.0/get-started/deploy-with-helm.md
lines 86-99.

In `@docs/installation/online-installation.md`:
- Around line 17-31: The documentation presents two sequential Helm installs
with the same release name. In docs/installation/online-installation.md lines
17-31, replace the customization command with the corresponding helm upgrade
command; apply the same correction in
i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md
lines 18-32,
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md
lines 18-32, and
versioned_docs/version-v2.9.0/installation/online-installation.md lines 17-31,
clarifying that customization is performed as an alternative upgrade after the
initial deployment.
- Line 6: Update the online installation flow to add the required gpu=on
node-label command before helm install in
docs/installation/online-installation.md:6,
i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md:7,
versioned_docs/version-v2.9.0/installation/online-installation.md:6, and
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md:7;
keep the English and Chinese current/v2.9.0 snapshots consistent.

In `@docs/userguide/device-supported.md`:
- Around line 22-36: Keep the Device Capability Summary aligned with the support
matrix by adding AWS Neuron with verified Memory Isolation, Core Isolation, and
MultiCard Support values, or explicitly scoping the summary to documented
manufacturers. Apply the same consistent update to
docs/userguide/device-supported.md lines 22-36,
i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md
lines 23-37, versioned_docs/version-v2.9.0/userguide/device-supported.md lines
22-36, and
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md
lines 23-37.

In `@docs/userguide/nvidia-device/dynamic-mig-support.md`:
- Around line 5-10: Update the supported-component pill styles in
docs/userguide/nvidia-device/dynamic-mig-support.md lines 5-10,
docs/userguide/nvidia-device/dynamic-resource-allocation.md lines 6-11, and
i18n/zh/docusaurus-plugin-content-docs/current/userguide/nvidia-device/dynamic-mig-support.md
lines 6-11: replace the bright backgrounds or white text with accessible
contrast for every listed pill, and preserve a clearly visible keyboard focus
style on the links.

In `@i18n/zh/docusaurus-plugin-content-docs/current.json`:
- Around line 6-13: Add the four missing generated-index translation keys for
the Introduction and Design and Develop categories in the Chinese translations,
covering each link title and description. Generate them with docusaurus
write-translations --locale zh, then replace the generated English values with
appropriate Chinese translations while preserving the existing category keys.

In
`@i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md`:
- Line 16: Standardize the manufacturer name from “Mthreads” to “Moore Threads”
in both the current and v2.9.0 Chinese device-supported documentation tables,
updating the matching capability rows as well as the GPU rows:
i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md
lines 16 and 32, and
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md
lines 16 and 32.

In `@sidebars.js`:
- Around line 59-67: The category in sidebars.js lines 59-67 must no longer mix
KAI-scheduler and unrelated installation guides: move the Web UI and AWS
installation entries to a content-appropriate category, keep
userguide/kai-scheduler/how-to-use-kai-scheduler only in its existing single
location, and update the corresponding Chinese label in
i18n/zh/docusaurus-plugin-content-docs/current.json line 39. In
versioned_sidebars/version-v2.9.0-sidebars.json lines 59-66, rename the category
to match the two installation documents or add the v2.9.0 KAI-scheduler document
if that snapshot contains one.

In `@src/pages/index.js`:
- Around line 844-867: Update the archModeToggle group around the two mode
buttons to include an accessible group label, and add aria-pressed to each
button based on whether archMode matches its mode value. Preserve the existing
visual active-state classes and click behavior.
- Around line 869-885: Remove the duplicate aria-label from either the outer
article or inner runtimeDiagramFrame, retaining a single accessible title.
Replace role="img" on the inner runtimeDiagramFrame with an appropriate group
role so its descendant lane steps, notes, and resource text remain exposed to
assistive technology.

---

Outside diff comments:
In `@sidebars.js`:
- Around line 94-141: Restore the removed device-specific documentation entries
in sidebars.js lines 94-141, linking them under the existing device navigation
or from device-supported.md; update sidebars.js lines 18-22 to list all
remaining docs/get-started documents, including get-started/verify-hami, under
Get Started. Apply the equivalent device-document restoration in
versioned_sidebars/version-v2.9.0-sidebars.json lines 92-131 and the complete
Get Started listing in lines 18-22, ensuring every current and v2.9.0 document
remains discoverable.

---

Nitpick comments:
In `@src/pages/index.js`:
- Around line 904-928: Update the runtime lane grid around RuntimeLaneCard to
map over activeMode.lanes instead of indexing lanes[0] and lanes[1]. Replace the
activeMode.key resource branch with the existing activeMode.resources.type
field, or remove that unused field if the key remains the intended source; also
verify whether the empty runtimeResourcesDivider span is intentional spacing and
preserve or simplify it accordingly.

In `@src/pages/styles.module.css`:
- Around line 707-727: Update the .archModeBtnActive rule to match or exceed the
specificity of .archModeBtn:hover, allowing the active color declaration to
remove !important while preserving the white active-state text color.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: f9d73a05-a344-40c2-b19d-3d7327e7cebd

📥 Commits

Reviewing files that changed from the base of the PR and between a0b4368 and 9bdaadb.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (21)
  • docs/get-started/deploy-with-helm.md
  • docs/installation/online-installation.md
  • docs/userguide/device-supported.md
  • docs/userguide/nvidia-device/dynamic-mig-support.md
  • docs/userguide/nvidia-device/dynamic-resource-allocation.md
  • i18n/zh/docusaurus-plugin-content-docs/current.json
  • i18n/zh/docusaurus-plugin-content-docs/current/get-started/deploy-with-helm.md
  • i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md
  • i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md
  • i18n/zh/docusaurus-plugin-content-docs/current/userguide/nvidia-device/dynamic-mig-support.md
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/get-started/deploy-with-helm.md
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md
  • package.json
  • sidebars.js
  • src/pages/index.js
  • src/pages/styles.module.css
  • versioned_docs/version-v2.9.0/get-started/deploy-with-helm.md
  • versioned_docs/version-v2.9.0/installation/online-installation.md
  • versioned_docs/version-v2.9.0/userguide/device-supported.md
  • versioned_sidebars/version-v2.9.0-sidebars.json

Comment thread docs/get-started/deploy-with-helm.md Outdated
Comment on lines 86 to 99
Expected output showing HAMi-core hard memory limit (`10240MiB`):

```text
[HAMI-core Msg(28:140561996502848:libvgpu.c:836)]: Initializing.....
Wed Apr 10 09:28:58 2024
[HAMI-core Msg]: Initializing.....
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 Tesla V100-PCIE-32GB On | 00000000:3E:00.0 Off | 0 |
| N/A 29C P0 24W / 250W | 0MiB / 10240MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
[HAMI-core Msg(28:140561996502848:multiprocess_memory_limit.c:434)]: Calling exit handler 28
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use representative output for the GPU isolation example.

The current block presents node-specific values as expected output. Keep the 10240MiB memory limit as the assertion, and label the remaining values as environment-dependent.

  • docs/get-started/deploy-with-helm.md#L86-L99: change “Expected output” to “Example output” and note that driver, CUDA, GPU model, and usage values vary.
  • i18n/zh/docusaurus-plugin-content-docs/current/get-started/deploy-with-helm.md#L86-L99: change the Chinese wording to identify the block as example output and document environment-dependent fields.
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/get-started/deploy-with-helm.md#L86-L99: apply the same representative-output clarification.
  • versioned_docs/version-v2.9.0/get-started/deploy-with-helm.md#L86-L99: apply the same representative-output clarification.
📍 Affects 4 files
  • docs/get-started/deploy-with-helm.md#L86-L99 (this comment)
  • i18n/zh/docusaurus-plugin-content-docs/current/get-started/deploy-with-helm.md#L86-L99
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/get-started/deploy-with-helm.md#L86-L99
  • versioned_docs/version-v2.9.0/get-started/deploy-with-helm.md#L86-L99
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/get-started/deploy-with-helm.md` around lines 86 - 99, Update the GPU
isolation output documentation: in docs/get-started/deploy-with-helm.md lines
86-99, change “Expected output” to “Example output” and state that driver, CUDA,
GPU model, and usage values vary by environment while retaining 10240MiB as the
hard memory-limit assertion; apply the equivalent clarification in
i18n/zh/docusaurus-plugin-content-docs/current/get-started/deploy-with-helm.md
lines 86-99,
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/get-started/deploy-with-helm.md
lines 86-99, and versioned_docs/version-v2.9.0/get-started/deploy-with-helm.md
lines 86-99.

---

The recommended way to deploy HAMi is via Helm.
The recommended way to deploy HAMi in a Kubernetes cluster is via the official Helm chart.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n -C 3 'gpu=on|nodeSelector|nodeSelectorTerms|hami-device-plugin' .

Repository: Project-HAMi/website

Length of output: 50379


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== target files =="
for f in \
  docs/installation/online-installation.md \
  i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md \
  i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md \
  versioned_docs/version-v2.9.0/installation/online-installation.md \
  docs/get-started/deploy-with-helm.md \
  i18n/zh/docusaurus-plugin-content-docs/current/get-started/deploy-with-helm.md \
  i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/get-started/deploy-with-helm.md \
  docs/installation/prerequisites.md \
  i18n/zh/docusaurus-plugin-content-docs/current/installation/prerequisites.md \
  versioned_docs/version-v2.9.0/installation/prerequisites.md
do
  if [ -f "$f" ]; then
    echo "--- $f"
    wc -l "$f"
    rg -n 'Label your nodes|label your nodes|label your GPU nodes|标记节点|gpu=on|helm install|helm repo|install hami|hami-scheduler|hami-device-plugin|nodeSelector|nodeSelectorTerms|--set|value' "$f" || true
  fi
done

echo "== quick focused search for exact default/config contracts =="
rg -n 'nodeSelector|gpu=on|label.*nodes.*gpu| HAMi .*label|label.*HAMi|unlabeled|without.*label|not managed|不能*管理|不会由 HAMi 管理|节点未标注|no action required|MIG|mode.*hami-core|ENABLE_GPU_NODE' docs i18n versioned_docs --glob '!**/node_modules/**' --glob '!**/dist/**' | head -n 200

Repository: Project-HAMi/website

Length of output: 37819


🌐 Web query:

HAMi helm chart default nodeSelector gpu=on hami-device-plugin nodeSelector

💡 Result:

In the HAMi Helm chart, the default nodeSelector for the NVIDIA device plugin is configured as {"gpu": "on"} [1][2][3]. This setting instructs the hami-device-plugin DaemonSet to only deploy on Kubernetes nodes that have been labeled with gpu=on [4][5]. Key details: - Helm Parameter: The default value for the parameter devicePlugin.nvidiaNodeSelector is {"gpu": "on"} [1][2]. - Implementation: In the Helm chart templates, this is applied to the DaemonSet via the nodeSelector field: {{- if.Values.devicePlugin.nvidiaNodeSelector }} nodeSelector: {{ toYaml.Values.devicePlugin.nvidiaNodeSelector | nindent 8 }} {{- end }} [5] - Node Labeling: Users are required to label their GPU nodes accordingly for the plugin to be scheduled: kubectl label nodes gpu=on [4] If you wish to change this default behavior, you can override the parameter during Helm installation or upgrade using the --set flag: helm install hami hami-charts/hami --set devicePlugin.nvidiaNodeSelector.gpu=off

Citations:


Require the gpu=on node-label step in the online installation flow.

The Helm chart defaults devicePlugin.nvidiaNodeSelector to gpu=on for the NVIDIA DaemonSet, so nodes without that label do not get hami-device-plugin pods. Add the node-labelling step before helm install in the online-installation pages and keep the v2.9.0 and Chinese snapshots consistent.

📍 Affects 4 files
  • docs/installation/online-installation.md#L6-L6 (this comment)
  • i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md#L7-L7
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md#L7-L7
  • versioned_docs/version-v2.9.0/installation/online-installation.md#L6-L6
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/installation/online-installation.md` at line 6, Update the online
installation flow to add the required gpu=on node-label command before helm
install in docs/installation/online-installation.md:6,
i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md:7,
versioned_docs/version-v2.9.0/installation/online-installation.md:6, and
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md:7;
keep the English and Chinese current/v2.9.0 snapshots consistent.

Comment on lines 17 to 31
## 2. Deploy HAMi {#deploy-hami}

A Kubernetes version is required for proper installation. You can retrieve your Kubernetes server version with:
Deploy HAMi into the `kube-system` namespace using standard Helm installation:

```bash
kubectl version
helm install hami hami-charts/hami -n kube-system
```

## Installation
### Customizing Helm Configurations

Ensure the `scheduler.kubeScheduler.image.tag` matches your Kubernetes server version. For instance, if your cluster server is v1.29.0, use the following command to deploy:
You can customize your deployment by passing parameters with `--set` or providing a custom `values.yaml` file:

```bash
helm install hami hami-charts/hami --set scheduler.kubeScheduler.image.tag=v1.29.0 -n kube-system
helm install hami hami-charts/hami -n kube-system -f custom-values.yaml
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make the custom Helm command an alternative or an upgrade.

The documentation currently shows two sequential helm install hami commands. The second command fails because the release name already exists.

  • docs/installation/online-installation.md#L17-L31: replace the second command with helm upgrade hami hami-charts/hami -n kube-system -f custom-values.yaml, or mark it as an alternative.
  • i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md#L18-L32: apply the same Helm command correction and clarify the execution order.
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md#L18-L32: apply the same correction in the v2.9.0 Chinese snapshot.
  • versioned_docs/version-v2.9.0/installation/online-installation.md#L17-L31: apply the same correction in the v2.9.0 English snapshot.
📍 Affects 4 files
  • docs/installation/online-installation.md#L17-L31 (this comment)
  • i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md#L18-L32
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md#L18-L32
  • versioned_docs/version-v2.9.0/installation/online-installation.md#L17-L31
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/installation/online-installation.md` around lines 17 - 31, The
documentation presents two sequential Helm installs with the same release name.
In docs/installation/online-installation.md lines 17-31, replace the
customization command with the corresponding helm upgrade command; apply the
same correction in
i18n/zh/docusaurus-plugin-content-docs/current/installation/online-installation.md
lines 18-32,
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/online-installation.md
lines 18-32, and
versioned_docs/version-v2.9.0/installation/online-installation.md lines 17-31,
clarifying that customization is performed as an alternative upgrade after the
initial deployment.

Comment thread docs/userguide/device-supported.md Outdated
Comment on lines +22 to +36
## Device Capability Summary

| Manufacturer | Memory Isolation | Core Isolation | MultiCard Support |
| ------------ | ---------------- | -------------- | ----------------- |
| NVIDIA | Yes | Yes | Yes |
| Cambricon | Yes | Yes | No |
| Hygon | Yes | Yes | No |
| Huawei Ascend | Yes | Yes | No |
| Iluvatar | Yes | Yes | No |
| Moore Threads | Yes | Yes | No |
| MetaX | Yes | Yes | No |
| Enflame | Yes | Yes | No |
| Kunlunxin | Yes | Yes | No |
| Vastai | Yes | Yes | No |
| Teco DPU | In progress | In progress | No |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Keep the capability summary aligned with the support matrix.

The support matrix adds AWS Neuron, but each capability summary omits it. Add verified capability values, or explicitly scope the summary to manufacturers with documented capability data.

  • docs/userguide/device-supported.md#L22-L36: add or scope the AWS Neuron entry in Device Capability Summary.
  • i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md#L23-L37: add or scope the AWS Neuron entry in 设备隔离与特性汇总.
  • versioned_docs/version-v2.9.0/userguide/device-supported.md#L22-L36: keep the v2.9.0 summary consistent with its support matrix.
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md#L23-L37: keep the v2.9.0 Chinese summary consistent with its support matrix.
📍 Affects 4 files
  • docs/userguide/device-supported.md#L22-L36 (this comment)
  • i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md#L23-L37
  • versioned_docs/version-v2.9.0/userguide/device-supported.md#L22-L36
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md#L23-L37
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/userguide/device-supported.md` around lines 22 - 36, Keep the Device
Capability Summary aligned with the support matrix by adding AWS Neuron with
verified Memory Isolation, Core Isolation, and MultiCard Support values, or
explicitly scoping the summary to documented manufacturers. Apply the same
consistent update to docs/userguide/device-supported.md lines 22-36,
i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md
lines 23-37, versioned_docs/version-v2.9.0/userguide/device-supported.md lines
22-36, and
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md
lines 23-37.

Comment on lines +5 to +10
<div style={{ display: 'flex', alignItems: 'center', gap: '8px', marginBottom: '20px', flexWrap: 'wrap' }}>
<strong style={{ fontSize: '0.9rem' }}>Supported Components:</strong>
<a href="/docs/get-started/deploy-with-helm" style={{ display: 'inline-block', padding: '3px 12px', borderRadius: '12px', background: '#10b981', color: '#fff', fontWeight: 600, fontSize: '0.82rem', textDecoration: 'none' }}>HAMi</a>
<a href="/docs/userguide/volcano-vgpu/nvidia-gpu/how-to-use-volcano-vgpu" style={{ display: 'inline-block', padding: '3px 12px', borderRadius: '12px', background: '#3b82f6', color: '#fff', fontWeight: 600, fontSize: '0.82rem', textDecoration: 'none' }}>Volcano</a>
<a href="/docs/userguide/nvidia-device/dynamic-resource-allocation" style={{ display: 'inline-block', padding: '3px 12px', borderRadius: '12px', background: '#8b5cf6', color: '#fff', fontWeight: 600, fontSize: '0.82rem', textDecoration: 'none' }}>HAMi-DRA</a>
</div>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fix contrast for the supported-component pills.

All three banners use small white text on bright backgrounds. Use darker backgrounds or dark text, and preserve a visible keyboard focus style.

  • docs/userguide/nvidia-device/dynamic-mig-support.md#L5-L10: update the HAMi, Volcano, and HAMi-DRA pill colors.
  • docs/userguide/nvidia-device/dynamic-resource-allocation.md#L6-L11: update the HAMi-DRA, HAMi, and CDI Support pill colors.
  • i18n/zh/docusaurus-plugin-content-docs/current/userguide/nvidia-device/dynamic-mig-support.md#L6-L11: mirror the accessible colors in the Chinese banner.
📍 Affects 3 files
  • docs/userguide/nvidia-device/dynamic-mig-support.md#L5-L10 (this comment)
  • docs/userguide/nvidia-device/dynamic-resource-allocation.md#L6-L11
  • i18n/zh/docusaurus-plugin-content-docs/current/userguide/nvidia-device/dynamic-mig-support.md#L6-L11
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/userguide/nvidia-device/dynamic-mig-support.md` around lines 5 - 10,
Update the supported-component pill styles in
docs/userguide/nvidia-device/dynamic-mig-support.md lines 5-10,
docs/userguide/nvidia-device/dynamic-resource-allocation.md lines 6-11, and
i18n/zh/docusaurus-plugin-content-docs/current/userguide/nvidia-device/dynamic-mig-support.md
lines 6-11: replace the bright backgrounds or white text with accessible
contrast for every listed pill, and preserve a clearly visible keyboard focus
style on the links.

Comment on lines +6 to +13
"sidebar.docs.category.Introduction": {
"message": "简介",
"description": "The label for category 'Introduction' in sidebar 'docs'"
},
"sidebar.docs.category.Design and Develop": {
"message": "设计与开发",
"description": "The label for category 'Design and Develop' in sidebar 'docs'"
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Show all keys currently defined for the two new categories
rg -n 'sidebar\.docs\.category\.(Introduction|Design and Develop)' i18n/zh/docusaurus-plugin-content-docs/current.json
echo "----- existing generated-index keys for comparison -----"
rg -n 'generated-index' i18n/zh/docusaurus-plugin-content-docs/current.json

Repository: Project-HAMi/website

Length of output: 2868


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "----- locate sidebars files -----"
fd -a 'sidebars.*' . | sed 's#^\./##'

echo "----- sidebars category definitions -----"
for f in $(fd 'sidebars.*' .); do
  echo "### $f"
  rg -n -C 6 'category.*link|Introduction|Design and Develop' "$f" || true
done

echo "----- package command / docusaurus version -----"
if [ -f package.json ]; then
  node - <<'JS'
const fs = require('fs');
const pkg = JSON.parse(fs.readFileSync('package.json','utf8'));
console.log('dependencies', pkg.dependencies && Object.fromEntries(Object.entries(pkg.dependencies).filter(([k])=>k.includes('docusaurus'))));
console.log('devDependencies', pkg.devDependencies && Object.fromEntries(Object.entries(pkg.devDependencies).filter(([k])=>k.includes('docusaurus'))));
console.log('scripts', pkg.scripts || {});
JS
fi

echo "----- translation file snippet -----"
sed -n '1,35p;168,236p' i18n/zh/docusaurus-plugin-content-docs/current.json

Repository: Project-HAMi/website

Length of output: 12212


🌐 Web query:

Docusaurus plugin-content-docs category generated-index link translation keys generated-index.title description

💡 Result:

In Docusaurus, the generated-index page for a sidebar category can be translated using specific keys in your i18n translation files [1]. When a category uses a generated-index link, its title and description are translated using the following key pattern based on the category's key or label [1]: sidebar.[sidebarName].category.[categoryKey].link.generated-index.title sidebar.[sidebarName].category.[categoryKey].link.generated-index.description In these keys: - [sidebarName] is the name of your sidebar (as defined in sidebars.js or sidebars.ts) [1]. - [categoryKey] is the unique key of the category. If a custom key is provided (via category.json or sidebar configuration), that key is used [2]. If no custom key is provided, the category's label is used as the key [1]. Important Implementation Details: - Lookup Logic: The translation system uses category.key?? category.label to identify the correct category [1][2]. It is critical that your translation keys match this resolution logic; otherwise, the translations will not be applied [2]. - Pagination Fixes: Recent updates have ensured that these translated titles are correctly propagated to pagination links (previous/next) at the bottom of documentation pages [3][4]. Previously, these pagination links often displayed the untranslated English title even when other parts of the site were localized [5][4][6]. If you find that your generated-index pages are not displaying translated content, verify that: 1. The translation files (e.g., in i18n/[locale]/docusaurus-plugin-content-docs/current.json) correctly define these specific keys [1][7][4]. 2. You are using the correct category key if you have defined one in category.json [2]. 3. Your Docusaurus version is up to date, as issues regarding the propagation of these translations to pagination were addressed in releases leading up to mid-2026 [8][4].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "----- installed Docusaurus translations.ts location if node_modules exists -----"
fd -a 'translations.ts' . | rg 'docusaurus-plugin-content-docs|plugin-content-docs' || true

if [ -f node_modules/@docusaurus/plugin-content-docs/src/translations.ts ]; then
  echo "----- generated-index translation generation -----"
  rg -n -C 8 'generated-index|generatedIndex|generated Index|generated index|categoryKey|category\.key' node_modules/@docusaurus/plugin-content-docs/src/translations.ts
else
  echo "node_modules/@docusaurus/plugin-content-docs/src/translations.ts not present"
fi

echo "----- all docs plugin translation file occurrences for introduced categories -----"
python3 - <<'PY'
import json, pathlib
p = pathlib.Path('i18n/zh/docusaurus-plugin-content-docs/current.json')
try:
    data = json.loads(p.read_text())
except Exception as e:
    print(f'ERROR: {e}')
    raise
for needle in [
    'sidebar.docs.category.Introduction',
    'sidebar.docs.category.Design and Develop',
]:
    hits = [k for k in data if k.startswith(needle)]
    hits = sorted(hits, key=len)
    print(f'{needle}:')
    for h in hits[:20]:
        print(' - ', h)
    print()
PY

Repository: Project-HAMi/website

Length of output: 4629


Add the missing generated-index translation keys.

Introduction and Design and Develop use link.type: "generated-index" with English title and description, but i18n/zh/.../current.json only defines the category label keys. As a result, the localized generated-index pages still render those English strings. Add matching keys for both categories:

  • sidebar.docs.category.Introduction.link.generated-index.title
  • sidebar.docs.category.Introduction.link.generated-index.description
  • sidebar.docs.category.Design and Develop.link.generated-index.title
  • sidebar.docs.category.Design and Develop.link.generated-index.description

Run docusaurus write-translations --locale zh to generate the keys, then translate the values.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/zh/docusaurus-plugin-content-docs/current.json` around lines 6 - 13, Add
the four missing generated-index translation keys for the Introduction and
Design and Develop categories in the Chinese translations, covering each link
title and description. Generate them with docusaurus write-translations --locale
zh, then replace the generated English values with appropriate Chinese
translations while preserving the existing category keys.

Source: Coding guidelines

| DCU | 海光(Hygon) | 全系列 | [支持](./hygon-device/enable-hygon-dcu-sharing) | - | - | - |
| NPU | 华为昇腾(Huawei Ascend) | 910B、910B3、910C、310P | [支持](./ascend-device/enable-ascend-sharing) | - | [支持](../installation/how-to-use-volcano-ascend) | - |
| GPU | 天数智芯(Iluvatar) | 全部 | [支持](./iluvatar-device/enable-iluvatar-gpu-sharing) | - | - | - |
| GPU | 摩尔线程(Mthreads) | MTT S4000 | [支持](./mthreads-device/enable-mthreads-gpu-sharing) | - | - | - |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Keep the manufacturer name consistent across Chinese snapshots.

  • i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md#L16-L16: replace Mthreads with Moore Threads and update the matching capability row at Line 32.
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md#L16-L16: replace Mthreads with Moore Threads and update the matching capability row at Line 32.

As per coding guidelines, when updating English documentation, mirror applicable changes in the Chinese documentation.

📍 Affects 2 files
  • i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md#L16-L16 (this comment)
  • i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md#L16-L16
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md`
at line 16, Standardize the manufacturer name from “Mthreads” to “Moore Threads”
in both the current and v2.9.0 Chinese device-supported documentation tables,
updating the matching capability rows as well as the GPU rows:
i18n/zh/docusaurus-plugin-content-docs/current/userguide/device-supported.md
lines 16 and 32, and
i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/userguide/device-supported.md
lines 16 and 32.

Source: Coding guidelines

Comment thread sidebars.js Outdated
Comment on lines +59 to +67
{
type: "category",
label: "KAI-scheduler-HAMi",
items: [
"userguide/kai-scheduler/how-to-use-kai-scheduler",
"installation/webui-installation",
"installation/aws-installation",
],
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

The KAI-scheduler-HAMi category groups unrelated installation guides. Both sidebars place installation/webui-installation and installation/aws-installation under a category named for KAI-scheduler. Neither document relates to KAI-scheduler. In sidebars.js the category also repeats userguide/kai-scheduler/how-to-use-kai-scheduler, which Line 137 already lists in the same sidebar. The Chinese label at i18n/zh/docusaurus-plugin-content-docs/current.json Line 39 reads "KAI-scheduler-HAMi 集成", which repeats the same mismatch.

  • sidebars.js#L59-L67: move installation/webui-installation and installation/aws-installation to a category that matches their content, and keep userguide/kai-scheduler/how-to-use-kai-scheduler in one location only.
  • versioned_sidebars/version-v2.9.0-sidebars.json#L59-L66: rename the category to match the two installation documents it contains, or add the v2.9.0 KAI-scheduler document if that snapshot has one.
📍 Affects 2 files
  • sidebars.js#L59-L67 (this comment)
  • versioned_sidebars/version-v2.9.0-sidebars.json#L59-L66
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sidebars.js` around lines 59 - 67, The category in sidebars.js lines 59-67
must no longer mix KAI-scheduler and unrelated installation guides: move the Web
UI and AWS installation entries to a content-appropriate category, keep
userguide/kai-scheduler/how-to-use-kai-scheduler only in its existing single
location, and update the corresponding Chinese label in
i18n/zh/docusaurus-plugin-content-docs/current.json line 39. In
versioned_sidebars/version-v2.9.0-sidebars.json lines 59-66, rename the category
to match the two installation documents or add the v2.9.0 KAI-scheduler document
if that snapshot contains one.

Comment thread src/pages/index.js
Comment on lines +844 to +867
<div className={styles.archModeToggleRow}>
<div className={styles.archModeToggle}>
<button
type="button"
className={clsx(
styles.archModeBtn,
archMode === "hami" && styles.archModeBtnActive,
)}
onClick={() => setArchMode("hami")}
>
{pickLocalized(i18n.currentLocale, runtimeModesData.hami.label)}
</button>
<button
type="button"
className={clsx(
styles.archModeBtn,
archMode === "hami-dra" && styles.archModeBtnActive,
)}
onClick={() => setArchMode("hami-dra")}
>
{pickLocalized(i18n.currentLocale, runtimeModesData["hami-dra"].label)}
</button>
</div>
</div>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Expose the selected mode to assistive technology.

The active mode is communicated only by background color. Screen reader users cannot determine the current selection. Add aria-pressed to each button and label the group.

♿ Proposed fix
-              <div className={styles.archModeToggleRow}>
-                <div className={styles.archModeToggle}>
+              <div className={styles.archModeToggleRow}>
+                <div
+                  className={styles.archModeToggle}
+                  role="group"
+                  aria-label={isZh ? "架构模式选择" : "Architecture mode selection"}
+                >
                   <button
                     type="button"
+                    aria-pressed={archMode === "hami"}
                     className={clsx(
                       styles.archModeBtn,
                       archMode === "hami" && styles.archModeBtnActive,
                     )}
                     onClick={() => setArchMode("hami")}
                   >
                     {pickLocalized(i18n.currentLocale, runtimeModesData.hami.label)}
                   </button>
                   <button
                     type="button"
+                    aria-pressed={archMode === "hami-dra"}
                     className={clsx(
                       styles.archModeBtn,
                       archMode === "hami-dra" && styles.archModeBtnActive,
                     )}
                     onClick={() => setArchMode("hami-dra")}
                   >
                     {pickLocalized(i18n.currentLocale, runtimeModesData["hami-dra"].label)}
                   </button>
                 </div>
               </div>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/index.js` around lines 844 - 867, Update the archModeToggle group
around the two mode buttons to include an accessible group label, and add
aria-pressed to each button based on whether archMode matches its mode value.
Preserve the existing visual active-state classes and click behavior.

Comment thread src/pages/index.js
Comment on lines 869 to +885
<article
ref={addRevealRef}
data-reveal-scale="1"
className={clsx(styles.runtimeMechanism, styles.reveal)}
aria-label={isZh ? "HAMi 运行时机制架构图" : "HAMi runtime architecture diagram"}
aria-label={pickLocalized(
i18n.currentLocale,
(runtimeModesData[archMode] || runtimeModesData.hami).title,
)}
>
<div
className={styles.runtimeDiagramFrame}
role="img"
aria-label={isZh ? "HAMi 运行时机制架构图" : "HAMi runtime architecture diagram"}
>
<h3 className={styles.runtimeDiagramTitle}>
{pickLocalized(i18n.currentLocale, runtimeDiagramCopy.title)}
</h3>
<section className={styles.runtimeStage} data-runtime-part="entry">
<span className={styles.runtimeSectionLabel}>
{pickLocalized(i18n.currentLocale, runtimeDiagramCopy.entryLabel)}
</span>
<div className={styles.runtimeStageCard}>
{pickLocalized(i18n.currentLocale, runtimeDiagramCopy.entryValue)}
</div>
</section>
<div className={styles.runtimeStageConnector} aria-hidden="true">
<span className={styles.runtimeConnectorLine} />
</div>
<section className={styles.runtimePipelineSection} data-runtime-part="pipeline">
<div className={styles.runtimeLaneGrid}>
<RuntimeLaneCard lane={runtimeLanes[0]} locale={i18n.currentLocale} />
<RuntimeLaneCard lane={runtimeLanes[1]} locale={i18n.currentLocale} />
</div>
</section>
<section className={styles.runtimeResources} data-runtime-part="resources">
<span className={styles.runtimeResourcesLabel}>
{isZh ? "资源语义" : "Resource Semantics"}
</span>
<div className={styles.runtimeResourcesValue}>
<code>nvidia.com/gpu</code>
<span className={styles.runtimeResourcesDivider}>+</span>
<code>gpumem</code>
<span className={styles.runtimeResourcesSlash}>/</span>
<code>gpucores</code>
{(() => {
const activeMode = runtimeModesData[archMode] || runtimeModesData.hami;
return (
<div
className={styles.runtimeDiagramFrame}
role="img"
aria-label={pickLocalized(i18n.currentLocale, activeMode.title)}
>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Remove the duplicate label and reconsider role="img" on text content.

Two problems exist in this wrapper:

  1. The article at Line 873 and the inner div at Line 884 carry the same aria-label. Assistive technology announces the title twice.
  2. role="img" makes the element an atomic image. All descendant text is hidden from assistive technology. The lane steps, notes, and resource semantics rendered inside are therefore unreachable, and only the title is announced.

The diagram content here is real text, not a graphic. Keep it exposed and label it as a group.

♿ Proposed fix
               <article
                 ref={addRevealRef}
                 data-reveal-scale="1"
                 className={clsx(styles.runtimeMechanism, styles.reveal)}
-                aria-label={pickLocalized(
-                  i18n.currentLocale,
-                  (runtimeModesData[archMode] || runtimeModesData.hami).title,
-                )}
               >
                 {(() => {
                   const activeMode = runtimeModesData[archMode] || runtimeModesData.hami;
                   return (
-                    <div
-                      className={styles.runtimeDiagramFrame}
-                      role="img"
-                      aria-label={pickLocalized(i18n.currentLocale, activeMode.title)}
-                    >
+                    <div className={styles.runtimeDiagramFrame} role="group">
                       <h3 className={styles.runtimeDiagramTitle}>
                         {pickLocalized(i18n.currentLocale, activeMode.title)}
                       </h3>
📝 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
<article
ref={addRevealRef}
data-reveal-scale="1"
className={clsx(styles.runtimeMechanism, styles.reveal)}
aria-label={isZh ? "HAMi 运行时机制架构图" : "HAMi runtime architecture diagram"}
aria-label={pickLocalized(
i18n.currentLocale,
(runtimeModesData[archMode] || runtimeModesData.hami).title,
)}
>
<div
className={styles.runtimeDiagramFrame}
role="img"
aria-label={isZh ? "HAMi 运行时机制架构图" : "HAMi runtime architecture diagram"}
>
<h3 className={styles.runtimeDiagramTitle}>
{pickLocalized(i18n.currentLocale, runtimeDiagramCopy.title)}
</h3>
<section className={styles.runtimeStage} data-runtime-part="entry">
<span className={styles.runtimeSectionLabel}>
{pickLocalized(i18n.currentLocale, runtimeDiagramCopy.entryLabel)}
</span>
<div className={styles.runtimeStageCard}>
{pickLocalized(i18n.currentLocale, runtimeDiagramCopy.entryValue)}
</div>
</section>
<div className={styles.runtimeStageConnector} aria-hidden="true">
<span className={styles.runtimeConnectorLine} />
</div>
<section className={styles.runtimePipelineSection} data-runtime-part="pipeline">
<div className={styles.runtimeLaneGrid}>
<RuntimeLaneCard lane={runtimeLanes[0]} locale={i18n.currentLocale} />
<RuntimeLaneCard lane={runtimeLanes[1]} locale={i18n.currentLocale} />
</div>
</section>
<section className={styles.runtimeResources} data-runtime-part="resources">
<span className={styles.runtimeResourcesLabel}>
{isZh ? "资源语义" : "Resource Semantics"}
</span>
<div className={styles.runtimeResourcesValue}>
<code>nvidia.com/gpu</code>
<span className={styles.runtimeResourcesDivider}>+</span>
<code>gpumem</code>
<span className={styles.runtimeResourcesSlash}>/</span>
<code>gpucores</code>
{(() => {
const activeMode = runtimeModesData[archMode] || runtimeModesData.hami;
return (
<div
className={styles.runtimeDiagramFrame}
role="img"
aria-label={pickLocalized(i18n.currentLocale, activeMode.title)}
>
<article
ref={addRevealRef}
data-reveal-scale="1"
className={clsx(styles.runtimeMechanism, styles.reveal)}
>
{(() => {
const activeMode = runtimeModesData[archMode] || runtimeModesData.hami;
return (
<div className={styles.runtimeDiagramFrame} role="group">
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/pages/index.js` around lines 869 - 885, Remove the duplicate aria-label
from either the outer article or inner runtimeDiagramFrame, retaining a single
accessible title. Replace role="img" on the inner runtimeDiagramFrame with an
appropriate group role so its descendant lane steps, notes, and resource text
remain exposed to assistive technology.

@singhsrijan46 singhsrijan46 changed the title docs(structure): re-organize HAMi website content, architecture, and … docs(structure): reorganize website content and navigation Aug 2, 2026
@coderabbitai coderabbitai Bot mentioned this pull request Aug 3, 2026
4 tasks
@archlitchi

Copy link
Copy Markdown
Member

please resolve these conflicts

@archlitchi

Copy link
Copy Markdown
Member

CC @rootsongjc

@rootsongjc

Copy link
Copy Markdown
Contributor

@singhsrijan46 This is solid work, but the PR is large (22 files) and part of it overlaps with #684. Would you be open to splitting it into smaller PRs? Two reasons:

  1. Easier to review - mixing the homepage UI, doc content, and sidebar restructuring into one PR makes it hard to review and slows down merging.
  2. Avoids conflicts - device-supported.md is also being reworked in docs: audit supported devices matrix and clarify support status #684, so the two PRs will conflict regardless of merge order.

Suggested split:

PR Scope Files
A Homepage architecture toggle src/pages/index.js, src/pages/styles.module.css
B Device matrix Drop — adopt #684 instead
C Quick Start + Online Installation simplification deploy-with-helm.md, online-installation.md (en/zh/v2.9.0)
D Component tags dynamic-mig-support.md, dynamic-resource-allocation.md (en/zh)
E Sidebar restructuring sidebars.js, version-v2.9.0-sidebars.json, i18n label files

A, C, and D are self-contained and can land first. E needs a closer look on its own — removing the 12 vendor categories orphans ~56 guide pages (examples, per-resource config, scheduling policy) that become reachable only by direct link. The device-supported.md matrix links one entry page per vendor, so the sub-pages lose all navigation. That should be resolved before E merges.

One more note for E: the zh translation for the new v2.9.0 sidebar labels (version-v2.9.0.json) is missing, so the v2.9.0 Chinese site shows English category names.

Signed-off-by: Srijan <singhsrijangkp@gmail.com>
@singhsrijan46

Copy link
Copy Markdown
Author

Thanks @archlitchi @rootsongjc for the feedback

Here is what I have done:

  1. Updated this PR (Re-arrange website contents #689): Trimmed this PR down to focus only on PR A (Homepage architecture toggle) in src/pages/index.js and src/pages/styles.module.css. Force-pushed and ready for review.
  2. Dropped PR B (Device matrix): Dropped in favor of docs: audit supported devices matrix and clarify support status #684 to avoid conflicts.
  3. Opened PR C (docs(get-started): simplify quick start and online installation guides #712): Simplified deploy-with-helm.md and online-installation.md.
  4. Opened PR D (docs(userguide): add component support tags to feature pages #713): Added component tags to dynamic-mig-support.md and dynamic-resource-allocation.md.
  5. PR E (Sidebar restructuring): Once A, C, and D are merged, I will open a separate PR for sidebar restructuring after fixing the missing Chinese labels for v2.9.0 and making sure all sub-page links stay accessible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Re-arrange website contents

3 participants