Website: Public flashdreams website landing, documentation, and community pages#144
Conversation
…rials, community) Adds a marketing-style website on top of the existing Sphinx autodoc setup: a landing page rewrite plus new benchmarks, tutorials, and community sections. Skeleton-only — content artifacts that don't exist yet (showcase video, benchmark numbers, Discord URL, maintainers list, code-of-conduct) are marked as PLACEHOLDER admonitions and are grep-discoverable via: grep -rn ':class: placeholder' docs/source/ Adds Poppins (body) + Chivo (headings) via Google Fonts in _templates/layout.html, plus a small set of layout components in _static/custom.css: hero, split-hero, feature card, video embed, CTA row, stat block, comparison table, callout, placeholder admonition, section-rule, feature-section. Shape inspired by shader-slang.org; palette is a neutral placeholder (--fd-accent #3f7c87) to be re-themed later by editing the token. Untouched: - docs/source/apis/*.rst (autodoc-driven) - docs/source/examples/*.rst (existing per-recipe walkthroughs) - docs/source/developer_guides/*.rst - docs/source/conf.py (top navbar uses nvidia-sphinx-theme defaults) Build: uv run --group docs sphinx-build -W -b html docs/source /tmp/out finishes with 13 pre-existing autodoc-docstring warnings; zero new from this PR. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…TING render, scrubs)
- Top navbar arrangement (logo / centered nav / GitHub + search) via
html_theme_options. New html_sidebars dict hides the primary sidebar
on marketing pages (index, benchmarks/**, community/**). Docs-style
sections (tutorials, api, examples, dev_guides) keep their sidebar,
now scoped to the current section only via show_nav_level=2,
collapse_navigation=True, and a CSS rule that hides sibling
toctree-l1 entries.
- Marketing-page chrome hide: body.fd-layout-marketing CSS drops the
version subtitle, search button, and persistent navbar containers
on landing / benchmarks / community. Implemented via layout.html
body-class tagging for the master doc plus marketing path prefixes.
- CONTRIBUTING.md now renders on-site via myst-parser .. include::
in community/contributing.rst; myst-parser added to the docs
dependency group + extensions list; myst_heading_anchors=3 and
suppress_warnings=["myst.xref_missing"] keep the build clean
against CONTRIBUTING.md's internal links.
- Landing tagline rewritten to a punchier marketing claim
("Sub-second autoregressive video diffusion on a single GPU")
grounded in PERFORMANCE.md latency numbers. Added a 4-cell
headline-stat grid that mirrors the benchmarks page headline
metrics (single source of truth, both placements update together).
- Removed meta-commentary from all pages: PLACEHOLDER convention
references in prose, Owner/Tracking coordination notes inside
admonitions, "stub today" / "see placeholder below" / "filled in
as we land" wordings. The PLACEHOLDER admonitions themselves stay
(they are the explicit needs-content markers).
- Accuracy fixes from review: tutorials/quickstart now lists
correct wan21 flags (--output-dir, --pixel-height), notes
--total-blocks is streaming-only; your-first-generation drops the
total-block-count reference; advanced-cuda-graphs cites the
correct line for TEMPLATE_AUTOREGRESSIVE_COMPILED; benchmarks/
index adds alpadreams to the streaming-runner list and removes
a placeholder reference to a fabricated --ring-size flag;
community/index softens the CODEOWNERS claim (no such file
exists yet).
- UI fix: hover-lift on .sd-card.fd-feature is now scoped to
cards with sphinx_design's .sd-card-hover class so link-less
placeholder channel cards don't pretend to be clickable.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Prepare for a dual-build site where: - docs/marketing/source/ hosts marketing-style pages (landing, benchmarks, community) under the nvidia-sphinx-theme + fd-* design system. Deploys to flashdreams.org/. - docs/source/ continues to host the developer documentation tree (getting_started, models, developer_guides, reference, apis) under whatever theme main wants. Will deploy to flashdreams.org/docs/. This commit moves the marketing-owned files (index.rst, benchmarks/, community/, conf.py, _static/, _templates/) out of docs/source/ to clear the way for main's docs restructure to land via merge. The two small directories that don't survive the merge (api/ umbrella and tutorials/) are deleted -- main's apis/index.rst + getting_started/ take their place. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…s-site-merge # Conflicts: # docs/marketing/source/conf.py # docs/source/_static/custom.css # docs/source/index.rst
The landing pages (homepage, benchmarks, community) live in `docs/landing/source/` on the nvidia-sphinx-theme and deploy at the version root. The reference docs (getting_started, models, developer_guides, apis, reference) stay in `docs/source/` on the furo theme and deploy under `/docs/`. A single Pages publish writes both projects so cross-links across the boundary resolve at flashdreams.org. - `.github/workflows/doc.yml`: dual sphinx-build, assemble combined `_build/site/` with the landing project at root and reference docs under `docs/`, single Pages deploy. - Landing pages: rewire dead `:doc:` refs to relative URLs into the `/docs/` sibling project. Rename Alpadreams → OmniDreams. - `docs/landing/source/conf.py`: derive the "Documentation" top-nav link target from `DOCS_SUBDIR` so it resolves from every page depth on deployed builds.
Replace the single "Documentation" top-nav link with five entries that route directly into the reference-docs project: Getting Started, Developer Guides, Models, CLI Reference, API Reference. Each is a root-relative URL derived from `DOCS_SUBDIR` on deploy, so it resolves from every page depth at flashdreams.org. Bumps `header_links_before_dropdown` to 7 (2 toctree + 5 external) to keep all entries in the primary navbar instead of a "More" overflow.
Move the landing project to the upstream pydata-sphinx-theme directly and adopt the shared FlashDreams logo (`assets/logo/flashdreams_logo_ horizontal.png`) — the same asset the reference-docs project uses — so the two halves of the site share visual identity. - Drop nvidia-specific theme options (`copyright_override`, `footer_links`). - Add `html_logo` pointing at the shared logo asset. - Set `footer_start=["copyright"]` / `footer_end=[]` to suppress pydata's "Built with the PyData Sphinx Theme" footer credit. - Swap the docs dep group: `nvidia-sphinx-theme` → `pydata-sphinx-theme`.
Same-repo PRs deploy the assembled site to `pr-previews/<PR_NUMBER>/` on the `gh-pages` branch, and a sticky comment on the PR carries the landing + reference-docs preview URLs. A separate workflow (`doc-preview-cleanup.yml`) removes the subdirectory when the PR closes, so dead previews don't accumulate. Fork PRs are skipped — they don't get GITHUB_TOKEN write access, so the deploy + comment steps would fail. Reviewers on fork PRs still get the build-check signal from the warnings-as-errors sphinx-build.
This reverts commit 8acdd98.
`flashdreams.core.attention.rope_kernel` does `import triton` at module load. CPU-only torch wheels don't ship triton, so the docs-ci env (which uses pytorch.org's `+cpu` index) can't import it — autodoc fails to import every recipe and infra module that transitively loads rope_kernel, which warningiserror turns into a build failure. Mock `triton` so autodoc can introspect signatures without the actual package on the runner. Avoids dragging the 176 MB wheel onto CI.
Landing project:
- Drop the `fd-layout-landing` body class and the template that emitted
it. The homepage now renders with the same right-side TOC and column
width as every other page in the project; the dual chrome-class
scheme was a vestige from before the landing/reference-docs split.
- Drop the `fd-layout-marketing` body-class gate. With every page in
this project wanting the docs-y chrome hidden (logo subtitle, search
button), the rules apply unconditionally — no gate needed.
- `_templates/layout.html` is no longer overriding the body tag, so
the file is gone.
Reference-docs project (`docs/source/_static/custom.css`):
- Remove `.bd-links__title { display: none }` — pydata-sphinx-theme
class; furo doesn't emit it.
- Remove `body.index .content h1 { ... }` — furo's body has no class
and the content wrapper isn't `.content`.
- Strip `var(--nv-color-neutral-*, fallback)` indirections from
`.video-slot`; the nvidia-theme variables don't resolve under furo,
so the fallback was always in effect.
Collapse the dual-build architecture into a single Sphinx project at `docs/source/` on `pydata-sphinx-theme`. The front-of-site pages (landing, benchmarks, community) and the reference docs (getting started, developer guides, models, APIs, CLI reference) build together, share one stylesheet, and route via `:doc:` refs — no more cross- project relative URLs or `DOCS_SUBDIR`-derived `external_links`. - Move landing pages from the old `docs/landing/source/` into `docs/source/`; delete the landing project tree. - Replace `docs/source/index.rst` with the hero / stat grid / showcase / "Why FlashDreams" / feature grid / supported-models / quick-start landing layout. Master toctree carries seven captioned sections in navbar order (Benchmarks, Getting Started, Developer Guides, Models, CLI Reference, API Reference, Community). - Switch `docs/source/` from `furo` to `pydata-sphinx-theme`. Adopt the shared `assets/logo/flashdreams_logo_horizontal.png` via `html_logo`. Merge the `fd-*` design-system CSS with the existing model-page raw-HTML helpers (`.model-link-button`, `.model-video-*`) into a single `docs/source/_static/custom.css`. - Drop the furo-specific `_templates/sidebar/brand.html` (pydata uses a different brand-block template path). - Rewrite all cross-page links from the old relative-URL form (`docs/<section>/<page>.html`) to `:doc:` refs. `:doc:` resolves per-page through Sphinx, so adding a section or renaming a path is a one-edit change. - Collapse `.github/workflows/doc.yml` back to a single `sphinx-build` step over `docs/source/` and a single Pages deploy. PRs build but don't publish. - Swap `furo` for `pydata-sphinx-theme` in `pyproject.toml`'s docs group; add `myst-parser` (used by the `CONTRIBUTING.md` include in `community/contributing.rst`).
Reference-docs pages (`getting_started/`, `developer_guides/`,
`models/`, `apis/`, `reference/`) now show the section's sub-pages in
a populated left sidebar. Front-of-site surfaces (`index`,
`benchmarks/`, `community/`) stay sidebar-less.
- `docs/source/conf.py`: explicit per-page-pattern `html_sidebars`
mapping. Docs sections get the `sidebar-nav-bs` component; the
homepage and front-of-site sections get an empty list. Also flips
`collapse_navigation` to `False` so the current section's sub-tree
stays open in the sidebar, and pins `show_nav_level` to `1` so the
navbar carries only the seven top-level entries everywhere.
- Master toctree in `docs/source/index.rst` is one flat 7-entry block
in the navbar order (Benchmarks → Getting Started → Developer Guides
→ Models → CLI Reference → API Reference → Community).
- Section index files (`getting_started/`, `developer_guides/`,
`models/`, `reference/`) drop the `:orphan:` directive (they're now
in the master toctree) and add their own `:hidden:` toctree of
sub-pages, which is what pydata-sphinx-theme reads to render the
per-section sidebar.
- `docs/source/_static/custom.css`: drop the
`.bd-sidenav > li.toctree-l1:not(.current) { display: none }` rule
that was meant to trim the sidebar to the current section but ended
up hiding everything once the master toctree became flat.
Reconcile the landing/community/benchmarks pages with main's post-rebase reference-docs structure: - `apis/` was renamed to `api/`; `reference/` was removed and the CLI reference moved to `api/cli`. Section indexes and cross-references updated to the new paths. - `getting_started/` was renamed to `quickstart/`. Master toctree label kept as "Getting Started" (Title <target> syntax) so the navbar order remains Benchmarks → Getting Started → Developer Guides → Models → CLI Reference → API Reference → Community. - `developer_guides/`: dropped removed pages (`new_recipes`, `system_overview`, `configs`); the section now lists main's `inference_pipeline_overview`, `config_system`, `new_integration`, with `usage_patterns` and `interactive_serving` carried as intentionally-hidden orphans per main's comment block. - `models/`: added `cosmos_predict2`, `flashvsr`, renamed `fastvideo_wan22` to `causal_wan22`. Hidden toctree updated to match. - `_static/custom.css`: kept the `fd-*` design tokens for accent color; dropped the furo-specific selectors main re-added (`.sidebar-github-link`, `.sidebar-brand`, `.mobile-header`, `body.index .content h1`, `.homepage-logo-wrap`) since the site is on pydata-sphinx-theme. - `_templates/sidebar/brand.html`: kept deleted (furo-specific). - `conf.py`: kept pydata-sphinx-theme + the `html_sidebars` mapping that wires `sidebar-nav-bs` per reference-docs section. Adopted main's `flashdreams-logo-horizontal*.png` filenames and split light/dark via pydata's `html_theme_options["logo"]`.
|
…bing prose - Collapse type scale to 4 sizes (body 16px / lede 20px / section-head 28px / hero 52px); alias legacy xs/sm/2xl tokens to the 4-step scale. - Drop hero title from bold to font-weight 500; keep code-mono as the only explicit second font family. - Default dynamic visual placeholders to animated AVIF (fd-video and fd-media-tile support <picture><source type="image/avif"> with MP4 fallback). - Strip `uv` and `flashdreams-run` from marketing prose across landing, benchmarks, community, dev-guides, models index, and all 8 model sub-pages. Keep them in code blocks and in quickstart/installation.rst (the explicit install-uv pointer page). Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- Move benchmarks Hardware / Software stack into a methodology dropdown (collapsed by default) so internal QA artifacts don't dominate the page; populate result tables from _static/performance/*/perf-0521.md; switch bidirectional schema to per-step ms to match the available data; strip broken PERFORMANCE.md links. - Convert four FAQ placeholders to sourced answers (hardware / supported recipes / packaging / new-recipe pointer); drop the unsourced Cosmos/NeMo/NIM FAQ; scrub remaining `flashdreams-run` / `uv sync` mentions out of FAQ narrative prose. - Add a dedicated "Born from OmniDreams" spotlight band on the landing page (sources from README); add explicit baseline labels to each headline stat tile; cut process-meta commentary about "the final reel will replace the placeholder tiles". - Rewrite developer_guides/index Guides grid for 5 cards (was 3) — fix the eyebrow count, expand the lede to cover all five, and rebalance :columns: to 8/4/4/4/4 (was 6/2/2/2/2, which summed to 14 and produced an ugly 4+1 row layout). - Restore developer_guides/usage_patterns.rst and interactive_serving.rst to the toctree (removed :orphan: directives). - Drop the invented "Cross-cutting topics" stub card on developer_guides/index (no link target, no source). - Consolidate Self-Forcing slug to self-forcing-wan2.1-t2v-1.3b-taehv across all marketing pages (matches integrations/self_forcing/README and quickstart/first_world_model.rst). - Fix entry-point group name in models/index.rst: flashdreams.runners -> flashdreams.runner_configs. - Fix typo: docs/source/apis/*.rst -> docs/source/api/*.rst in community/contributing.rst. - Drop unsupported CODEOWNERS claim from community/index.rst (no CODEOWNERS file in tree). - Wrap the "Frequently asked" intro paragraph in fd-lede to match the page's eyebrow -> H2 -> lede pattern. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- docs/source/index.rst: "What's inside" four-card grid was cramped (one fd-feature-hero at 6/12 + three supporting cards at 2/12 each, all on row 1). Words didn't fit at 2/12 width. Reformat to a clean 2x2: drop fd-feature-hero on card 1, all four cards at 6/12. - docs/source/developer_guides/index.rst: revert the "Guides" grid back to the previously-directed 8/4 row 1 + 4/4/4 row 2 layout (was briefly changed to uniform 6/12 which created an orphan trailing card on row 3). Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…hdreams-site-text
…hdreams-site-text
…hdreams-site-text
…hdreams-site-text
Greptile SummaryThis PR converts the FlashDreams docs site from a furo-themed documentation portal into a public-facing marketing + documentation website using the pydata-sphinx-theme, adding landing pages for the homepage, community, and documentation hub, a per-PR preview deploy pipeline, and a JS-driven "Supported Models" nav rail.
Confidence Score: 4/5Safe to merge with one fix: the The pydata docs/source/conf.py — the Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Sphinx page request] --> B{_fd_is_reference?}
B -->|Yes| C[pydata docs scaffold]
B -->|No| D[Marketing layout fd-landing-main]
C --> H{secondary_sidebar_items first-match wins}
H -->|community/* matches before community/index| I[page-toc unintentionally hits community/index]
H -->|models/* matches before models/index| J[page-toc unintentionally hits models/index]
D --> K{pagename == master_doc?}
K -->|Yes| L[Inject fd-models-nav aside]
K -->|No| M[No secondary rail]
L --> N[IntersectionObserver scroll-spy]
Reviews (5): Last reviewed commit: "Fix typo on Discord page" | Re-trigger Greptile |
| {# | ||
| Render-mode switch: reference-docs scaffold vs. marketing layout. | ||
|
|
||
| pydata's default `docs_main` wraps the body in the docs scaffold | ||
| (bd-content > bd-article-container > bd-article, a secondary page-TOC | ||
| sidebar, and a footer-content footer) — right for reference material, | ||
| wrong for a marketing flow. `_fd_is_reference` keeps that scaffold for | ||
| the reference side and bypasses it everywhere else, rendering the body | ||
| into a full-bleed `fd-landing-main` (the `fd-*` components bring their | ||
| own layout via `--fd-max-content`). | ||
|
|
||
| Reference side (`pagename` is the source path without extension): | ||
| api/*, the `documentation` hub, developer_guides/*, the viewcode source | ||
| listings under _modules/*, and the generated search / genindex / | ||
| py-modindex pages. Everything else (homepage, community, quickstart, | ||
| models gallery + per-model pages) is marketing. | ||
| #} | ||
| {% set _fd_is_reference = pagename == 'documentation' | ||
| or pagename.startswith('api/') | ||
| or pagename.startswith('developer_guides/') | ||
| or pagename.startswith('models/') | ||
| or pagename.startswith('_modules/') | ||
| or pagename in ('search', 'genindex', 'py-modindex') %} |
There was a problem hiding this comment.
Stale comment contradicts the code for
models/*
The header comment says "Everything else (homepage, community, quickstart, models gallery + per-model pages) is marketing," but _fd_is_reference explicitly includes pagename.startswith('models/'), so models pages are rendered with the docs scaffold (bd-content/bd-article-container, secondary TOC sidebar), not the marketing fd-landing-main layout. This matches html_sidebars (sidebar-nav-bs) and secondary_sidebar_items (page-toc) in conf.py, so the code is internally consistent — the comment just describes the wrong partition and will mislead anyone touching this layout later.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
| # --no-project: the "Override version" step above rewrites the version | ||
| # field to "main" which is not PEP 440 compliant. Without --no-project | ||
| # uv would try to parse the workspace pyproject.toml and fail. |
There was a problem hiding this comment.
The comment on the Sphinx build step still says the version field is set to
"main", but the new "Override version for PR previews" step that was just added above now writes "pr-<number>" for PR builds. On push/release paths the comment is still accurate, but it will confuse anyone adding future version logic for PR builds.
| # --no-project: the "Override version" step above rewrites the version | |
| # field to "main" which is not PEP 440 compliant. Without --no-project | |
| # uv would try to parse the workspace pyproject.toml and fail. | |
| # --no-project: the "Override version" step above may rewrite the | |
| # version field to "main" (push/release) or "pr-<number>" (PR previews), | |
| # both of which are not PEP 440 compliant. Without --no-project uv would | |
| # try to parse the workspace pyproject.toml and fail. |
What this change does:
What this change does not do (for follow-up changes):