Skip to content

docs: add announcements landing page - #1971

Open
ChenhanYu wants to merge 9 commits into
mainfrom
chenhany/omniml-5476
Open

docs: add announcements landing page#1971
ChenhanYu wants to merge 9 commits into
mainfrom
chenhany/omniml-5476

Conversation

@ChenhanYu

@ChenhanYu ChenhanYu commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add a JS/static announcements landing page for GitHub Pages
  • Keep existing Sphinx docs available under the api/ subpath
  • Add PR-authored announcement posts with tags, search/filtering, image support, and a DSpark vs Domino sample post

Jira: https://jirasw.nvidia.com/browse/OMNIML-5476

Verification

  • python3 docs/build_site.py --output docs/build/html
  • Local preview checked at http://127.0.0.1:8088/

Publishing approval

User explicitly approved publishing the dspark-vs-domino sample post and copied image assets from modelopt-site to public GitHub in NVIDIA/Model-Optimizer.

Notes

  • Full uv run nox -s docs was attempted locally, but dependency setup/download did not complete in a reasonable time; CI should provide the authoritative full docs build and PR Pages preview.

Summary by CodeRabbit

  • New Features

    • Added an interactive announcements hub on the documentation homepage, including sorting, tag filtering, search, pagination, and an empty-state message.
    • Added new announcements content covering the GitHub Pages announcement hub migration and a DSpark versus Domino comparison.
    • Improved the announcements look-and-feel with consistent layout, card styling, and control states.
  • Documentation

    • Added guidance for authoring future announcements pages and linking them into the announcements index.
    • Updated documentation navigation so announcements are featured while other sections remain accessible.

@copy-pr-bot

copy-pr-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

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: Enterprise

Run ID: 26c827a3-539b-4f4a-8328-27b42a9e8935

📥 Commits

Reviewing files that changed from the base of the PR and between 278c3ca and 8c7fc05.

📒 Files selected for processing (4)
  • docs/source/_static/announcements.js
  • docs/source/announcements/dspark-vs-domino.rst
  • docs/source/announcements/github-pages-announcements.rst
  • docs/source/index.rst
🚧 Files skipped from review as they are similar to previous changes (3)
  • docs/source/announcements/github-pages-announcements.rst
  • docs/source/announcements/dspark-vs-domino.rst
  • docs/source/index.rst

📝 Walkthrough

Walkthrough

The documentation landing page now presents an announcements hub with searchable, tag-filtered, paginated cards. Sphinx loads supporting CSS and JavaScript, navigation is adjusted for announcement pages, and two announcement documents are added.

Changes

Announcements hub

Layer / File(s) Summary
Landing page and asset wiring
docs/source/index.rst, docs/source/_static/announcements.css, docs/source/conf.py
Adds announcement controls and cards, styles the announcements layout and controls, hides section toctrees, and loads the supporting CSS and JavaScript.
Filtering and pagination behavior
docs/source/_static/announcements.js
Sorts cards by date, filters by tags and search text, paginates results, handles empty states, and updates pager controls.
Announcement content and authoring guidance
docs/source/announcements/*
Adds GitHub Pages announcement guidance and a DSpark-versus-Domino technical comparison with metadata, references, links, and authoring instructions.

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

Suggested reviewers: kevalmorabia97, aanoosheh, achidiac-nv

Sequence Diagram(s)

sequenceDiagram
  participant Visitor
  participant AnnouncementPage
  participant announcements.js
  participant AnnouncementCards
  Visitor->>AnnouncementPage: Open announcements landing page
  AnnouncementPage->>announcements.js: Handle DOMContentLoaded
  announcements.js->>AnnouncementCards: Sort, filter, and paginate cards
  announcements.js-->>AnnouncementPage: Toggle card visibility and pager state
  Visitor->>AnnouncementPage: Search or select a tag
  AnnouncementPage->>announcements.js: Dispatch input or click event
  announcements.js->>AnnouncementCards: Recompute matching cards
Loading
🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 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 main change: adding an announcements landing page to the docs.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Security Anti-Patterns ✅ Passed Only docs files changed in HEAD; no modelopt/examples Python or dependency files were modified, so none of the SECURITY.md anti-patterns apply.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chenhany/omniml-5476

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

@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://NVIDIA.github.io/Model-Optimizer/pr-preview/pr-1971/

Built to branch gh-pages at 2026-07-28 15:09 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@codecov

codecov Bot commented Jul 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.82%. Comparing base (33d05b0) to head (8c7fc05).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1971      +/-   ##
==========================================
- Coverage   66.83%   66.82%   -0.02%     
==========================================
  Files         519      519              
  Lines       58916    58916              
==========================================
- Hits        39376    39370       -6     
- Misses      19540    19546       +6     
Flag Coverage Δ
unit 54.88% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
@ChenhanYu
ChenhanYu force-pushed the chenhany/omniml-5476 branch from b26e4e9 to 278c3ca Compare July 28, 2026 03:16
@ChenhanYu

Copy link
Copy Markdown
Collaborator Author

/ok to test 278c3ca

@ChenhanYu
ChenhanYu marked this pull request as ready for review July 28, 2026 03:43
@ChenhanYu
ChenhanYu requested a review from a team as a code owner July 28, 2026 03:43
@ChenhanYu

Copy link
Copy Markdown
Collaborator Author

/claude review

Comment thread docs/source/_static/announcements.js Outdated
Comment on lines +11 to +19

menu.innerHTML = `
<p class="caption" role="heading"><span class="caption-text">Announcements</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../index.html">Announcements</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/1_modelopt_api.html">API Docs</a></li>
</ul>
`;
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[SUGGESTION] This replaces the theme-generated sidebar wholesale via innerHTML with two hardcoded relative links. It works today (both ../index.html and ../reference/1_modelopt_api.html resolve correctly from /announcements/*.html), but it's fragile in two ways worth noting:

  1. The relative paths assume announcement posts live exactly one directory deep. A future post under announcements/<subdir>/ would get a broken ../reference/... link.
  2. It discards the RTD theme's built-in search box and version selector on announcement pages, which are present everywhere else in the docs — a small navigation inconsistency for readers who land on a post.

Not blocking. If you want to keep the trimmed sidebar, consider deriving the API-docs href from an existing link in the menu rather than hardcoding the depth, or gating the replacement so it only fires at the expected depth.

Comment on lines +106 to +118
* Xin Cheng et al., `DSpark: Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation <https://arxiv.org/abs/2607.05147>`_,
arXiv:2607.05147, 2026.
* Jianuo Huang et al., `Domino: Decoupling Causal Modeling from Autoregressive Drafting in Speculative Decoding <https://arxiv.org/abs/2605.29707>`_,
arXiv:2605.29707, 2026.

Links
*****

* `DeepSpec / DSpark repo <https://github.com/deepseek-ai/DeepSpec>`_
* `DeepSeek-V4-Pro-DSpark checkpoint <https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-DSpark>`_
* `Domino repo <https://github.com/jianuo-huang/Domino>`_
* `Domino checkpoint: Qwen3-8B-Domino-b16 <https://huggingface.co/Huang2020/Qwen3-8B-Domino-b16>`_
* `ModelOpt PR #1710 <https://github.com/NVIDIA/Model-Optimizer/pull/1710>`_

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[SUGGESTION] Since this post publishes to the public NVIDIA.github.io/Model-Optimizer site, it's worth a final manual check that every external reference here resolves before merge: the two arXiv IDs (2607.05147, 2605.29707), the HuggingFace checkpoints (deepseek-ai/DeepSeek-V4-Pro-DSpark, Huang2020/Qwen3-8B-Domino-b16), and the GitHub repos (deepseek-ai/DeepSpec, jianuo-huang/Domino). I couldn't verify these from the review environment. A dead or wrong link on an official NVIDIA announcement is a bad look; a 30-second click-through avoids it.

@claude claude 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.

Claude review passed — no blocking issues found. LGTM

Scope applied: This is a docs-only PR (10 files, all under docs/). No modelopt/ source, mode registration, config schema, export path, or public API is touched, so the ModelOpt-specific correctness / mode-state / export categories do not apply. I reviewed all reviewable files: the two .rst posts, index.rst, conf.py, and the new announcements.js / announcements.css. The four .png assets were not opened (binary).

Findings by severity: CRITICAL: 0, IMPORTANT: 0, SUGGESTION: 2

What I verified:

  • conf.py correctly registers announcements.css (alongside existing custom.css) and announcements.js; both files exist in _static/.
  • The hardcoded sidebar links injected by announcements.js (../index.html, ../reference/1_modelopt_api.html) resolve — reference/1_modelopt_api.rst exists.
  • announcements.js early-returns on non-announcement pages and guards on !search || cards.length === 0, so it's inert on the rest of the docs.
  • The .. raw:: html block in index.rst is tag-balanced (section/div/nav all closed).
  • Both new posts carry :orphan: and the toctrees are switched to :hidden:, consistent with the new announcements-first landing layout.

Non-blocking suggestions (posted inline):

  1. The innerHTML sidebar replacement hardcodes one-level-deep relative paths and drops the RTD search box / version selector on announcement pages — fine today, fragile for future nested posts.
  2. Recommend a final manual click-through of the external arXiv / HuggingFace / GitHub links in dspark-vs-domino.rst before merge, since this publishes to the public NVIDIA site.

Risk level: Low. Documentation/static-site change with no impact on library behavior; codecov confirms no source lines changed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Warning

CodeRabbit couldn't request changes on this pull request because it doesn't have sufficient GitHub permissions.

Please grant CodeRabbit Pull requests: Read and write permission and re-run the review.

👉 Steps to fix this

Actionable comments posted: 2

🤖 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/source/announcements/github-pages-announcements.rst`:
- Line 23: Update the announcement workflow guidance in
github-pages-announcements.rst to require adding the corresponding
.announcement-card entry in docs/source/index.rst, including its title, summary,
date, tags, and HTML link, alongside the Sphinx page and toctree link;
alternatively, document automation that generates this card.

In `@docs/source/index.rst`:
- Around line 12-16: Update the announcement filter buttons and the
tag-selection logic in announcements.js to expose selection through
aria-pressed, initializing “All” as true and the other tags as false. Whenever
the selected tag changes, keep each button’s aria-pressed value synchronized
with its is-active class.
🪄 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: Enterprise

Run ID: 717affd1-3f45-48b2-ad01-25447b388158

📥 Commits

Reviewing files that changed from the base of the PR and between 33d05b0 and 278c3ca.

⛔ Files ignored due to path filters (4)
  • docs/source/announcements/assets/domino_fig.png is excluded by !**/*.png
  • docs/source/announcements/assets/dspark_domino_al_qwen3_8b.png is excluded by !**/*.png
  • docs/source/announcements/assets/dspark_fig1.png is excluded by !**/*.png
  • docs/source/announcements/assets/dspark_fig7.png is excluded by !**/*.png
📒 Files selected for processing (6)
  • docs/source/_static/announcements.css
  • docs/source/_static/announcements.js
  • docs/source/announcements/dspark-vs-domino.rst
  • docs/source/announcements/github-pages-announcements.rst
  • docs/source/conf.py
  • docs/source/index.rst

Comment thread docs/source/announcements/github-pages-announcements.rst Outdated
Comment thread docs/source/index.rst Outdated
Comment on lines +12 to +16
<div class="announcement-tags" aria-label="Announcement tags">
<button class="announcement-tag is-active" type="button" data-tag="all">All</button>
<button class="announcement-tag" type="button" data-tag="speculative-decoding">Speculative decoding</button>
<button class="announcement-tag" type="button" data-tag="docs">Docs</button>
<button class="announcement-tag" type="button" data-tag="github-pages">GitHub Pages</button>

Copy link
Copy Markdown
Contributor

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

Expose the selected tag state to assistive technology.

The active filter is represented only by the is-active class. Add aria-pressed to each button and update it when the selected tag changes; otherwise screen readers cannot determine which filter is active.

Suggested change
-<button class="announcement-tag is-active" type="button" data-tag="all">All</button>
+<button class="announcement-tag is-active" type="button" data-tag="all" aria-pressed="true">All</button>
-<button class="announcement-tag" type="button" data-tag="docs">Docs</button>
+<button class="announcement-tag" type="button" data-tag="docs" aria-pressed="false">Docs</button>

Update the corresponding state in announcements.js alongside the class toggle.

🤖 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/source/index.rst` around lines 12 - 16, Update the announcement filter
buttons and the tag-selection logic in announcements.js to expose selection
through aria-pressed, initializing “All” as true and the other tags as false.
Whenever the selected tag changes, keep each button’s aria-pressed value
synchronized with its is-active class.

@ChenhanYu

Copy link
Copy Markdown
Collaborator Author

/claude review perform a technical blog review

@claude claude 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.

Claude review — technical blog review (PR #1971)

Docs-only PR (10 files changed, +444/-4): an announcements landing page for GitHub Pages (RST + CSS + JS), plus two announcement posts — a GitHub-Pages migration note and a DSpark-vs-Domino technical comparison — and image assets. Reviewed per the requested technical blog review: content/citations of the posts, the JS/CSS wiring, and the index.rst/conf.py changes. No modelopt/ or examples/ code touched, so mode/state/export categories are N/A. Image assets and CSS were not deeply audited.

Findings

  • CRITICAL: 0
  • IMPORTANT: 1
  • SUGGESTION: 2

Most impactful

  • [IMPORTANT] Date vs. citation contradiction in dspark-vs-domino.rst. The post is dated June 29, 2026, yet cites DSpark as arXiv:2607.05147 — arXiv's YYMM scheme puts 2607 in July 2026, i.e. after the post's own date. On a public NVIDIA blog this internal contradiction is worth fixing before publish. (Domino's 2605… = May 2026 is consistent.)
  • [SUGGESTION] External links unverified. Web access wasn't available in this review, so I could not confirm the two arXiv IDs, the DeepSpec repo, and the two HF checkpoints actually resolve. Please spot-check each before merge — a dead link on the public docs site is worse than none.
  • [SUGGESTION] Brittle sidebar override in announcements.js. trimAnnouncementPostSidebar() replaces the whole .wy-menu-vertical with a hardcoded two-item list including a literal reference/1_modelopt_api.html path (fragile against glob-renumbering) and drops all other doc-nav sections on announcement pages — confirm that trimmed nav is the intended UX.

Risk assessment

Low risk. Docs/site-only; no library code, no dependency or security-surface changes (CodeRabbit's pre-merge checks passed). The one IMPORTANT item is a content-accuracy issue on a public-facing post, not a functional defect. Once the date/citation is reconciled and the external links are confirmed to resolve, this is good to publish.

Comment on lines +106 to +109
* Xin Cheng et al., `DSpark: Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation <https://arxiv.org/abs/2607.05147>`_,
arXiv:2607.05147, 2026.
* Jianuo Huang et al., `Domino: Decoupling Causal Modeling from Autoregressive Drafting in Speculative Decoding <https://arxiv.org/abs/2605.29707>`_,
arXiv:2605.29707, 2026.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[IMPORTANT Compatibility] Internal date inconsistency between the post and its citation.

What: The post is dated June 29, 2026 (line 7), but it cites DSpark as arXiv:2607.05147. Under arXiv's YYMM.NNNNN identifier scheme, 2607 decodes to July 2026 — so the post is dated before the paper it references would have been submitted. (Domino's 2605... → May 2026 is consistent with a June post.)

Why it matters: This is a public-facing NVIDIA technical blog. A post that cites a paper dated after its own publication date is an internal contradiction that undercuts the post's credibility, and it's the kind of thing readers notice immediately.

Fix: Reconcile the two — either bump the post :Date: to a date on/after the DSpark submission, or correct the arXiv ID if 2607 is a typo.

Additionally (SUGGESTION): I was unable to verify that the external references resolve (web access wasn't available in this review). Before publishing, please confirm each link actually loads — the two arXiv IDs (2607.05147, 2605.29707), the github.com/deepseek-ai/DeepSpec repo, and the deepseek-ai/DeepSeek-V4-Pro-DSpark / Huang2020/Qwen3-8B-Domino-b16 HF checkpoints. A dead or wrong link on the public docs site is worse than no link.

Comment thread docs/source/_static/announcements.js Outdated
Comment on lines +12 to +19
menu.innerHTML = `
<p class="caption" role="heading"><span class="caption-text">Announcements</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../index.html">Announcements</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/1_modelopt_api.html">API Docs</a></li>
</ul>
`;
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[SUGGESTION] Hardcoded sidebar replacement is brittle and silently drops the rest of the doc nav.

trimAnnouncementPostSidebar() overwrites the entire .wy-menu-vertical with a two-item list on any /announcements/ page. Two concerns:

  1. Hardcoded path. ../reference/1_modelopt_api.html is coupled to the current filename. If reference/1_modelopt_api.rst is ever renamed/renumbered (these files are glob-numbered, so reordering is plausible), this link 404s with no build-time signal. Consider deriving the target from the theme's generated nav instead of a literal string.
  2. Wholesale innerHTML replace discards every other section (Getting Started, Guides, Deployment, Examples, Reference sub-pages) from the sidebar when viewing an announcement post. If that's intentional (a deliberately trimmed reading view) it's fine — but it means announcement pages become a nav dead-end back into the rest of the docs except via the single "API Docs" link. Worth confirming that's the intended UX.

Signed-off-by: Chenhan Yu <chenhany@nvidia.com>
DSpark vs Domino: Same DFlash Backbone, Different Correction Heads
##################################################################

:Author: ModelOpt Team

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

we user ModelOpt Team in some places and Model Optimizer Team in other places. Can you use same everywhere?

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants