feat: move to mystmd#792
Open
henryiii wants to merge 23 commits into
Open
Conversation
- Replace Jekyll + just-the-docs with MyST using scientific-python-myst-theme
- Add docs/myst.yml with full TOC structure (29 pages across 5 sections)
- Add docs/config/scientific-python.yml for book-theme configuration
- Add docs/rr-role.mjs custom MyST plugin replacing repo_review.rb Liquid tag
- Add docs/assets/css/site.css with SP theme CSS and .rr-btn styles
- Convert all Liquid tags: {%rr%}→{rr} role, tabs→tab-set/tab-item,
details→{dropdown}, callouts→admonitions, links→relative paths
- Inline interactive_repo_review.html as raw html block with Pyodide loading
- Move _includes/pyproject.md to _partials/ and update include paths
- Update .readthedocs.yaml from Ruby/Jekyll to Node.js/mystmd build
- Update .pre-commit-config.yaml for new _partials/ path
- Remove all Jekyll infrastructure: Gemfile, _config.yml, _plugins/,
_sass/, _includes/, assets/js/tabs.js
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Assisted-by: copilot-cli:claude-sonnet-4.6
- Replace raw HTML block in repo_review.md with {iframe} directive pointing
to https://scientific-python.github.io/repo-review/ — the book-theme has
no renderer for type:"html" blocks, so raw HTML was rendered as escaped
text in the static output; iframe is natively supported
- Remove html_head_extra frontmatter from repo_review.md (unsupported by
the book-theme, was generating a build warning)
- Remove fetch_repo_review_app.sh step from .readthedocs.yaml (no longer
needed with external iframe URL)
- Simplify rr-role.mjs: remove broken rawHtmlTransform (ran after
htmlTransform so type:"html" nodes were never further processed)
- Restore style.md (was accidentally emptied by shell redirection in prior
session); re-converted from original Jekyll source
- Fix myst.yml: add .md extensions to all 29 TOC entries to resolve
build warnings about missing file extensions
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Assisted-by: cli:claude-sonnet-4.6
- Fix {% rr PP007 %} unconverted liquid tag in _partials/pyproject.md
- Remove {% raw %}/{% endraw %} from coverage.md
- Fix split note box title in packaging_simple.md
- Hide right-sidebar outline on homepage (site.hide_outline)
- Fix TOC duplication: use file+children instead of title+children
- Add {tableofcontents} to all section index pages (tutorials, guides, principles, patterns)
- Add sync:coverage-tool to coverage page tab-sets
- Add sync:docs-framework to all Sphinx/MkDocs tab-sets in docs.md
- Remove id attribute from rr-btn spans to fix duplicate identifier warnings
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Assisted-by: copilot-cli:claude-sonnet-4.6
- Add explicit MyST labels to testing.md headings to fix implicit target warnings (public-interface-tests, project-level-integration-tests, unit-tests, additional-types-of-test-suites, fuzz-tests, end-to-end-tests) - Add sync:publish-method to Trusted Publishing/Token tabs in gha_pure.md and gha_wheels.md (cross-page sync) - Add sync:compiled-backend to Scikit-build-core/Meson-python/Maturin tabs in packaging_compiled.md (4 tab-sets now sync) - Update AGENTS.md: docs site is now MyST (not Jekyll) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Assisted-by: copilot-cli:claude-sonnet-4.6
Sync keys must match the tab label, not a group name, so that MyST can identify matching tabs across tab-sets. - docs.md: sphinx, mkdocs - gha_pure.md + gha_wheels.md: trusted-publishing, token - packaging_compiled.md: scikit-build-core, meson-python, maturin - coverage.md was already correct (coverage, pytest-cov) - Update AGENTS.md with correct sync key convention Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Assisted-by: copilot-cli:claude-sonnet-4.6
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
434de60 to
82d474d
Compare
Assisted-by: CopilotCLI:claude-hauku-4.5 Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Assisted-by: CopilotCLI:claude-haiku-4.5 Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu> Assisted-by: CopilotCLI:GPT-5.4-mini
5ebe005 to
f94e6ed
Compare
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR migrates the documentation site from the previous Jekyll/Ruby setup to a MystMD (MyST) build, updating pages to MyST-native directives (tabs/admonitions/includes), replacing the interactive repo-review embed, and switching Markdown formatting from Prettier to rumdl (MyST flavor).
Changes:
- Replace Jekyll/Ruby docs tooling with MystMD config, Node/Bun scaffolding, and updated RTD build commands.
- Convert docs content to MyST-native constructs (tab-sets, admonitions, includes, internal links) and add a custom
{rr}role plugin. - Adopt rumdl for Markdown formatting/linting and update related ignore/disable markers.
Reviewed changes
Copilot reviewed 60 out of 63 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/sp_repo_review/checks/ruff.py | Adjusts fenced-code language tags in check guidance text. |
| src/sp_repo_review/checks/pyproject.py | Adjusts fenced-code language tags in check guidance text. |
| src/sp_repo_review/checks/noxfile.py | Adjusts fenced-code language tags in check guidance text. |
| src/sp_repo_review/checks/mypy.py | Adjusts fenced-code language tags in check guidance text. |
| README.md | Updates Markdown formatting/ignore markers and minor heading/list formatting. |
| pyproject.toml | Adds [tool.rumdl] configuration for MyST-flavored Markdown lint/format. |
| package.json | Adds MystMD dependency and build/serve scripts for docs. |
| helpers/fetch_repo_review_app.sh | Removes helper used to fetch the legacy repo-review JS bundle. |
| helpers/cog_helpers.py | Updates code-fence helper to use rumdl markers and TOML→INI highlighting workaround. |
| Gemfile.lock | Removes Ruby dependency lockfile (Jekyll toolchain removal). |
| Gemfile | Removes Ruby/Jekyll dependency definitions. |
| docs/rr-role.mjs | Adds Myst plugin for {rr} inline role used in docs. |
| docs/pages/tutorials/test.md | Converts Jekyll frontmatter/TOC and links to MyST-native structure. |
| docs/pages/tutorials/packaging.md | Converts Jekyll frontmatter/TOC and links to MyST-native structure. |
| docs/pages/tutorials/module.md | Converts Jekyll frontmatter/TOC and links to MyST-native structure. |
| docs/pages/tutorials/index.md | Converts Jekyll frontmatter and adds MyST table-of-contents directive. |
| docs/pages/tutorials/docs.md | Converts headings/directives/links to MyST-native forms. |
| docs/pages/tutorials/dev-environment.md | Replaces Liquid tabs/admonitions and removes tabs.js dependency. |
| docs/pages/principles/testing.md | Converts headings, anchors, admonitions, and links to MyST-native forms. |
| docs/pages/principles/process.md | Converts headings/directives to MyST-native forms. |
| docs/pages/principles/index.md | Converts links and adds MyST table-of-contents directive. |
| docs/pages/principles/design.md | Converts admonitions and removes legacy prettier ignore markers. |
| docs/pages/patterns/index.md | Converts links and adds MyST table-of-contents directive. |
| docs/pages/patterns/exports.md | Converts admonitions/headings to MyST-native forms. |
| docs/pages/patterns/data_files.md | Converts details blocks to MyST dropdown directives and updates formatting. |
| docs/pages/patterns/backports.md | Converts headings and fenced-code language tags for highlighting. |
| docs/pages/index.md | Converts home page content/admonitions/links to MyST-native forms. |
| docs/pages/guides/tasks.md | Converts tabs/admonitions/rr markers and replaces legacy Jekyll constructs. |
| docs/pages/guides/style.md | Large MyST conversion: tabs, dropdowns, admonitions, rr markers, and link updates. |
| docs/pages/guides/repo_review.md | Replaces legacy iframe/include with an {anywidget} embed configuration. |
| docs/pages/guides/pytest.md | Converts tabs/admonitions/headings and updates fenced-code language tags. |
| docs/pages/guides/packaging_simple.md | Converts tabs/admonitions and uses MyST {include} for shared partial content. |
| docs/pages/guides/packaging_compiled.md | Converts tab-sets with :sync: keys and updates code-fence markers. |
| docs/pages/guides/packaging_classic.md | Converts admonitions/headings and link references to MyST-native forms. |
| docs/pages/guides/mypy.md | Converts headings/links to MyST-native forms. |
| docs/pages/guides/index.md | Converts links and adds MyST table-of-contents directive. |
| docs/pages/guides/gha_wheels.md | Converts tabs/admonitions/headings and updates code fences and raw blocks. |
| docs/pages/guides/gha_pure.md | Converts tabs/admonitions and updates links/headings for MyST. |
| docs/pages/guides/gha_basic.md | Converts tabs/admonitions and updates code-fence markers. |
| docs/pages/guides/docs.md | Converts extensive tabs/admonitions/includes to MyST-native directives. |
| docs/pages/guides/coverage.md | Converts tabs/headings and updates coverage guidance structure. |
| docs/myst.yml | Adds MystMD project/site configuration and explicit TOC structure. |
| docs/config/scientific-python.yml | Adds shared MystMD theme options/config extension. |
| docs/assets/js/tabs.js | Removes legacy JS used to implement Jekyll-era tabs. |
| docs/assets/css/site.css | Adds custom CSS overrides for the MystMD theme and {rr} badges. |
| docs/_sass/custom/custom.scss | Removes Jekyll-era SCSS customizations. |
| docs/_sass/color_schemes/skhep.scss | Removes Jekyll-era color scheme SCSS. |
| docs/_plugins/tabs.rb | Removes Jekyll Liquid plugin for tabs. |
| docs/_plugins/repo_review.rb | Removes Jekyll Liquid plugin for repo-review badges. |
| docs/_plugins/details.rb | Removes Jekyll Liquid plugin for details/summary blocks. |
| docs/_partials/pyproject.md | Updates shared partial used via MyST {include} and adjusts formatting. |
| docs/_includes/toc.html | Removes Jekyll include for TOC. |
| docs/_includes/interactive_repo_review.html | Removes Jekyll include for interactive repo-review embed. |
| docs/_includes/head.html | Removes Jekyll custom head include. |
| docs/_includes/head_custom.html | Removes Jekyll custom head include for repo-review assets. |
| bun.lock | Adds Bun lockfile for the MystMD dependency. |
| AGENTS.md | Adds repository agent/contributor guide, including docs tooling notes. |
| action.yml | Removes legacy prettier-ignore comment in the action steps. |
| .ruby-version | Removes Ruby version pin (Jekyll toolchain removal). |
| .readthedocs.yaml | Updates RTD build to MystMD/Node-based commands and output copy. |
| .pre-commit-config.yaml | Switches Markdown formatting from Prettier to rumdl and updates cog target paths. |
| .gitignore | Stops ignoring package.json and keeps Node-related ignores relevant to new tooling. |
| _config.yml | Removes Jekyll site configuration. |
Comments suppressed due to low confidence (2)
docs/_partials/pyproject.md:1
- This file is included into other pages via the
{include}directive. Starting the partial with an H1 (# ...) can create multiple top-level headings on the rendered page and distort the ToC. Consider using a lower heading level (e.g.##/###) or removing the heading and letting the parent page introduce the section.
docs/_partials/pyproject.md:67 - Within this included partial,
## Licensejumps heading levels relative to nearby subsections (e.g.### Extras,### Command line). This can produce a confusing outline when included. Consider making this heading consistent with the rest of the partial (likely### License).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Assisted-by: OpenCode:glm-5.1 Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Assisted-by: OpenCode:glm-5.1 Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Remove unnecessary HTML head meta tag from configuration.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Experimenting with a MystMD version.
Used CopilotCLI:claude-sonnet-4.6.
Moved prettier -> rumdl, works nicely with myst. Fewer ignores.
Some remaining issues:
{%commands still show up in output.And I'm not sure these are solvable:
Positives:
bun servefrom docs folder.