Skip to content

Refactor the website around a Typst-backed reduction graph - #1156

Merged
GiggleLiu merged 14 commits into
mainfrom
refactor/website-main
Sep 18, 2026
Merged

GiggleLiu merged 14 commits into
mainfrom
refactor/website-main

Conversation

@isPANN

@isPANN isPANN commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Scope

Standalone website PR based directly on main, replacing the stacked delivery in #1153. Includes all 13 website commits through 0a95d08, including the maintainer review fixes. No dependency on #1151. The maintainer approved the website scope exception (36 files).

Website

  • Primary Graph explorer with problem/variant/rule navigation, persistent resizable details, keyboard controls, and precomputed layout.
  • Shared Typst definitions, examples, proofs, footnotes, and references for Graph and Atlas; retained PDF export.
  • On-demand data loading, bounded article caching, consistent navigation, legacy URL redirects, and responsive layouts.
  • Release-specific assets, CSP, build validation, and restricted deployment permissions.

No library API changes

Rust library, solver, macro, and CLI source files match main. Public ProblemSchemaJson is unchanged.

The website needs module_path only to construct Open implementation links. The existing ProblemSchemaEntry registry already provides it; examples/export_schemas.rs adds it solely to the generated documentation JSON. A regression checks both the exported path and the unchanged public schema JSON. Browser fixtures use the actual CircuitSAT-to-SpinGlass edge on main.

Verification

  • make doc and Typst PDF compilation passed on main-based code.
  • 48 Chrome browser tests passed, including implementation/API links, graph interactions, maintainer regressions, responsive layouts, and CSP.
  • 3 build-security tests and both graph JavaScript test suites passed.
  • Schema export integration test passed; changed Rust lines have 100% coverage (30 lines, including exporter and regression; examples/tests included explicitly in the coverage report).
  • Exporter Clippy with warnings denied, formatting, and diff checks passed.
  • npm audit: zero vulnerabilities.

No deployment or merge performed. #1153 remains available for its review history.

isPANN and others added 14 commits September 18, 2026 00:19
fCoSE draws its initial positions from Math.random and has no seed option, so
every build shuffled the published node positions. Install a fixed mulberry32
stream in the Node generator and assert that two runs are byte-identical.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The global keydown handler only exempted #graph-search, so typing "/" in the
list search moved focus and split the query, and Escape in any field cleared
the whole selection. Mirror the typing guard from site.js; Escape inside a
field now clears that field through its own input handler and blurs it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
renderBrowser replaces every button, so Enter on a list item dropped focus to
<body>. When focus was inside the list, move it to the re-rendered counterpart
of the focused item; canvas and mouse-free selections leave focus alone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
build_website.py compiles docs/paper/reductions.typ, which reads the generated
docs/paper/data/examples.json, but only `make website` exported it, so
`make doc` and `make mdbook` failed on a clean checkout. Move the export into
a paper-data target that website, doc, mdbook and paper all depend on, and
let mdbook copy the API docs before the website builder finalizes them, as
doc already does. The README names mdBook 0.5.2 as the deployment version.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
design.md still linked the deleted open-problems.md, and the published
reduction-graph.html and open-problems.html had no successor. Link the
Open questions tab and add mdBook redirects to graph.html and
index.html#open-questions; the meta refresh works under the site CSP.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
aria-valuemax was only written by the first resize, so the separator exposed
an incomplete range until then.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
window.REDUCTIONS was read before the try block, so a failed graph-data.js
left the workspace inert with no message. The preamble moves inside the try
(whitespace-only re-indent) and a missing payload raises a readable error.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Typst 0.15 puts role=doc-noteref on the <sup>, not the link, so the footnote
lookup never matched and footnotes were never shown. Match the link inside
the noteref, and report a failed footnotes fetch in the footnote block instead
of replacing the rendered article.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@codecov

codecov Bot commented Sep 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.93%. Comparing base (7dd5fcd) to head (4b97b0b).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1156   +/-   ##
=======================================
  Coverage   95.93%   95.93%           
=======================================
  Files        1074     1074           
  Lines      132106   132106           
=======================================
  Hits       126730   126730           
  Misses       5376     5376           

☔ 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.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@GiggleLiu

Copy link
Copy Markdown
Contributor

Follow-up items (recorded during final review):

  • The website suites (scripts/test_website_build.py, npm run test:reduction-graph-js, scripts/test_website.py) run only in docs.yml on a push to main. A website regression would surface as a failed Pages deploy rather than a red PR check. Consider running them in ci.yml on pull requests too.

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

Final review: diffed against the maintainer-approved #1153 state (0a95d08); only the rebase deltas differ. Locally: make check, make doc, make paper, 3 build-contract tests, JS suite, and 48 Playwright tests all pass. Approving as-is.

@GiggleLiu
GiggleLiu merged commit dfdd270 into main Sep 18, 2026
9 checks passed
@isPANN
isPANN deleted the refactor/website-main branch September 18, 2026 10:22
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