Conversation
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>
Review of #1153I built the site from a clean copy of this branch and ran every suite locally. The 43 browser tests passed (the description says 42), and so did the build tests, the JS test and the Rust schema test. I pushed eight fix commits ( Fixed in the pushed commits
Please handle
Smaller notes
StackThis PR has no code dependency on #1151. Everything it reads is already on main: |
Stack
Depends on #1151. The base is
refactor/reduction-contracts-clean; this PR contains only the website refactor on top of that branch.Summary
Verification
Remote CI and coverage remain to be verified. This PR does not deploy or merge the site.