Skip to content

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 03:42
· 11 commits to main since this release
5102716

Headline: lecture pages gain in-page live compute (a JupyterLite/Pyodide Power toggle in the header toolbar) and an inline git-history changelog on the page header's author line. All third-party CDN stylesheets are gone — KaTeX and jupyter-matplotlib are served from the site's own origin and Font Awesome is dropped — so maths and styling no longer degrade where jsdelivr/cdnjs are unreachable (notably mainland China). Consumers upgrade by bumping the pinned release URL in site.template.

Added

  • In-page live compute via Thebe (Phase 2 of PLAN.md, closes #88): setting the standard MyST project.thebe config surfaces a Power toggle in the header toolbar next to Launch on notebook pages (desktop); clicking it boots the kernel, after which Run / Restart / Clear take its place and cells execute live. The control is the @myst-theme/jupyter notebook toolbar, portaled into the header (ComputeToolbarSlot.tsx#qe-compute-slot) so it stays inside the Thebe providers while living in the always-visible header — no provider-tree lift. The QuantEcon default is JupyterLite (thebe: { lite: true }): Python runs in the browser via Pyodide, with no server or Binder to host; binder:/server: backends remain available through the same config. Pyodide package caveat (numba/JAX unavailable) documented in the README. Covered by a presence test scoped to the header slot and a disabled-path test against a second no-thebe fixture served on its own port, proving the toggle is gated on the project opting in (#98).
  • Git history in page headers (Phase 1 of PLAN.md): a "Last changed" control on the page-header author line expands an inline changelog with GitHub-linked commit hashes and a full-history link, mirroring the quantecon-book-theme header. The panel opens above the header's blue divider, pushing it down and sitting flush on it, so the divider reads as the panel's own bottom edge and the changelog stays clear of the lecture content. It grows to fit rather than scrolling — length is bounded at the source, with the plugin capping entries per page (default 6). Data is injected at build time by a new MyST transform plugin (plugins/git-metadata.mjs, git log --follow per page → mdast.data.git_metadata), with a site.git_metadata page-frontmatter override for manual pinning. mystmd has no built-in last-modified support (jupyter-book/mystmd#2213), and plugin transforms cannot modify page frontmatter, hence the AST channel (#83).

Changed

  • The KaTeX and jupyter-matplotlib stylesheets are now served from the site's own origin instead of cdn.jsdelivr.net. jsdelivr is intermittently unreachable from mainland China, and when it is blocked the maths markup still renders but arrives unstyled — fractions, radicals and matrices collapse into run-together text. The KaTeX CSS (plus the font files it references) is bundled from the installed katex package, which also retires the KaTeX 0.15.2 pin in the upstream KatexCSS export; the 316-byte jupyter-matplotlib stylesheet is vendored into the Tailwind bundle, costing no request at all (#125).

Removed

  • The render-blocking Font Awesome 4.7 stylesheet from cdnjs. Nothing used it: the theme renders no fa-* classes (the toolbar uses the bundled lucide-react icons), and the library has been end-of-life since 2016. Dropping it removes a third-party origin (a DNS lookup and TLS handshake) from the critical rendering path (#124).

Fixed

  • Contents sidebar no longer flashes open on page load. On static builds the first paint can happen before app.css applies, leaving the panel in flow and fully visible; it then animated itself shut over 300ms because the transition predated the stylesheet. The inlined critical CSS now parks the panel off-screen on that first frame, and the transition is withheld until after mount (#123).