Skip to content

v2.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Sep 23:00
· 2 commits to main since this release
d504555

Added

  • The full OpenGraph / Twitter card set the Sphinx lecture sites emit, on every page: og:type, og:site_name, og:url (from a new site_url option; myst's site.domains never reaches the theme), a site-level og:image / twitter:image when the page has no thumbnail (new og_logo_url / twitter_logo_url options, named as in the book theme), twitter:site, and og:locale from current_language. twitter:site had never rendered: upstream puts it in the root route's meta, which the article route's replaces under Remix v2 semantics. Phase 6 of the book-theme parity plan (#92) (#197).
  • Collapsible stderr: a notebook cell's stderr stream is folded behind a "⚠ Code warnings" disclosure, closed by default, as the Sphinx build's stderr-warnings.js does. A native <details> around the stream at render time rather than DOM surgery after load, so it holds in server-rendered HTML without a script; stdout in the same cell stays visible (#92) (#197).
  • A docs/ feature reference mirroring the book theme's docs/user/* pages (configuration, layout, authors, launch, notebooks, git metadata, code highlighting, text colour schemes, dark mode, RTL and editions, announcements), each naming its myst.yml keys and what has no counterpart (#92) (#197).

Fixed

  • The "On this page" panel is pinned, tracks scrolling and lists subsections, as the Sphinx sites' sticky_contents panel does. It scrolled off with the page, never marked the current section (the hook computed an active id the component threw away) and listed h2 headings only. It is now position: fixed in the margin track (not sticky, which has no travel inside the self-start wrapper); the current section follows the Sphinx scrollspy rule (the last heading past 120px, the last section at the page bottom) and is marked with aria-current, QuantEcon blue, weight 600 and an inset rule; h3 entries nest under their h2 and collapse to the current branch as contents_autoexpand does, with the parent of a current subsection expanded but not marked; each entry's number comes from the heading itself rather than the list index. Capped at the viewport with an internal scroll behind a mask fade (#182) (#196).
  • Desktop pages no longer overflow the viewport between 1280px and 1328px wide. The two-column grid's fixed tracks plus its six column gaps needed 1328px, so in that band the grid outgrew its box: left-to-right pages scrolled sideways with the end of the "On this page" panel clipped, and in right-to-left editions the panel started off-screen. The empty track left of the body is now minmax(0, 200px) and absorbs the shortfall; from 1328px up the layout is unchanged. An outline-within-viewport assertion covers 1280, 1300 and 1328px in both directions (#198).
  • Every site option the theme reads is now declared in template.yml, so it actually arrives. The MyST CLI validates site.options against the template's declarations and drops every undeclared key, and until now only the six multilingual options were declared: twitter, favicon, analytics_google, analytics_plausible, hide_toc, hide_search and the five launch_* launcher keys were read by the theme but never reached it from myst.yml. favicon is a file option, so the CLI copies it into the build. A fixture assertion (site-options in theme.spec.ts) proves a declared option reaches the rendered page. Options the theme never read (hide_outline, hide_title_block, hide_footer_links, outline_maxdepth) are dropped from its types rather than declared as dead knobs (#173) (#194).
  • The favicon option now takes effect at all. Beyond being undeclared, it was shadowed by a static public/favicon.ico, served ahead of the theme's favicon route on every request. That file is the QuantEcon lectures favicon (byte-identical to the Sphinx sites'), so it moves to public/logos/lectures-favicon.png and becomes the route's default when no option is set; a configured favicon is fetched from the content server as the CLI copied it (#173) (#194).
  • The page-level git_metadata override is a declared option too, written as a YAML block string (template options are scalar-only). It previously survived only because the CLI leaves a page's raw site: block alone when nothing in it validates, so a page that also set any declared key (a translator credit, hide_search, and the per-lecture live-compute flag to come) silently lost its override. An object is still accepted (#173) (#194).

Changed

  • The QuantEcon logo in the "On this page" panel is smaller (100px), so it reads as a quiet brand mark; it stays below the list and above "Powered by", where the Sphinx panel keeps it (#96). Its entries are 15px, navigation chrome rather than reading copy, and the outline's inert useOutlineHeight scroll listener is gone (#182) (#196).
  • The release bundle's manifest now declares Node >=20 (it said >=16, contradicting CONTRIBUTING.md and every real floor in the repo) and installs the shipped lockfile with npm ci instead of npm install, so consumer installs from the release asset are reproducible and never mutate the lockfile in place (#162) (#191).