All notable changes to @curvenote/quantecon-book (the QuantEcon MyST theme) are
documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Release flow. This theme is developed here in
quantecon-theme-srcand deployed (bundled) toQuantEcon/quantecon-themeviamake deploy. The deploy step copies this file into the bundled repo, so this is the canonical changelog. The version comes frompackage.json; each release is a deploy commit (🚀 vX.Y.Z from <sha>) in the bundled repo. There are currently no git tags (see Phase 0 inPLAN.md).
2.0.0 - 2026-06-04
Major release: the substantial
@myst-theme0.14 → 1.x upgrade, a technical-review pass, and a modernised release/test setup (Phase 0). It is a major bump because it carries backwards-incompatible changes for consumers:@myst-themev1.0.0's new notebook output-node AST (content built with an oldermystmdmay not render correctly) and a raised runtime requirement (Node>=14→>=20). The previously deployed bundle (QuantEcon/quantecon-theme) was v1.1.1 and predates everything below; amake deployships it.The three "Fixed" items marked (1.x regression) are bugs the upgrade itself introduced. They never reached users — they were caught pre-release by validating the build against the visual-regression harness and real
lecture-wasmcontent before deploying.
- Upgrade all
@myst-theme/*packages from0.14.xto1.3.0, andmyst-common/myst-configto1.9.5, tracking current upstreammyst-theme/book(#30 brought 0.14→1.1.2; later bumped to 1.3.0 to match latest upstream). Upstream breaking change:@myst-themev1.0.0 introduced a new AST structure for notebook output nodes (jupyter-book/myst-theme#571). - Raise the Node engine floor from
>=14to>=20(drops EOL Node 18) and move local/CI tooling to Node 24 (.nvmrc+ CI + release workflow), matching upstream's build; bump release-workflow actions v3 → v4 (#31).
- Playwright visual-regression harness: renders a small fixture project (plain Markdown + a notebook) through a live
myst startagainst a chosen theme version and snapshots each surface, so styling/markup regressions across the upgrade are caught before deploy (#60). - CI workflow (
.github/workflows/ci.yml) running type-check (npm run compile) and a production build (npm run prod:build) on every push/PR tomain(#31). CONTRIBUTING.mddocumenting development setup, available scripts, project structure, commit conventions, and the release process (#31).
- (1.x regression) Every page returned HTTP 500 under
@myst-theme1.x (useBannerState must be used from within a BannerStateProvider). Wrap the page tree (article and error page) inBannerStateProviderso the newuseBannerState/useSidebarHeighthooks resolve (#61). - (1.x regression) The article body rendered full-bleed (flush-left, no centered content column, right-hand "On this page" margin swallowed).
@myst-theme1.x emits.col-screenin a later cascade layer than our base-layer centering rule, so the body'scol-screenwrapper won; drop it so blocks fall back to the centeredcol-bodydefault (matching upstream'smyst-content-blockspattern) (#62). - (1.x regression) Pages flashed continuously (a hard-reload loop) and the in-page "On this page" outline never rendered. Keep
@remix-run/*pinned to~1.17.0(restoring the long-standing v1.0.1 pin; reverting the #29 bump to 1.19) — Remix 1.19's client callswindow.location.reload()wheneverwindow.__remixContext.urlis undefined, which it always is under the mystmd CLI's SSR. Adds.npmrclegacy-peer-deps=trueand an explicittypescriptdevDependency so installs accept@myst-theme/site's stricter^1.19peer range (#63). aria-labeltypo (aira-label) inProjectFrontmatter.tsx— the authors section is now exposed to screen readers (#31).- Missing React
keyprop on author<span>elements built in a.reduce()inProjectFrontmatter.tsx(#31). - Swapped
SidebarToggle.tsxARIA labels so each matches its visible icon state ("Show"/"Hide table of contents") (#31). - TypeScript errors surfaced by the new CI: add
@types/lodash.throttle; wrapBufferinnew Uint8Array(...)for theResponsebody in the[objects.inv]and[favicon.ico]routes (#32).
- Add
overridesforprismjs(^1.30.0, GHSA-x7hr-w5r2-h6wg DOM-clobbering) andkatex(^0.16.21, five CVEs), resolving those advisories (#29, #30). The remainingnpm auditfindings live in the older Remix v1 build toolchain (esbuild/webpack and friends); pinning@remix-run/*back to~1.17.0for rendering correctness (see Fixed, #63) keeps those present until the Remix v2 migration (#28).
- Numerous Dependabot security updates merged, including
webpack,vite,vm2,tar-fs,lodash/lodash-es,qs/express,js-yaml,form-data,brace-expansion,@babel/*,diff, andminimatch.
1.1.1 - 2025-06-13
Deployed to the bundle repo on 2025-06-13. The source version-bump PR (#8) was merged much later, on 2026-02-25, as bookkeeping — it did not change what users were running.
- Strip the
.mystsuffix from the derivedorg/repowhen building Colab / JupyterHub launch URLs, so lecture repos namedlecture-*.mystproduce working notebook links (6e39113, #4).
- Dropped the no-longer-needed
@types/react-syntax-highlighterpatch (#8).
1.1.0 - 2025-02-28
- Update
@myst-theme/*to0.14.0(df3bcd4, #2).
1.0.6 - 2025-02-18
- Update the margin Outline ("On this page") text (
9071f34).
1.0.5 - 2025-02-17
- Use
useLinkProviderfor internal links instead of constructing them directly (dd76b21).
1.0.4 - 2025-02-17
- Fix a missing slash in generated links (
26772b0).
1.0.3 - 2025-02-17
- Fix Home, Contents, and ProjectHeader link targets (
c0369e8).
1.0.2 - 2025-02-17
- Fix
baseurlhandling in the toolbar and outline links (73c72f2).
1.0.1 - 2025-02-17
- Pin to
remix@1.17for compatibility (8066c00).
1.0.0 - 2025-02-14
- Initial version of the QuantEcon MyST theme: Remix +
@myst-themebook theme with QuantEcon branding, toolbar (home, search, fullscreen, font scaling, dark mode, downloads, Colab/JupyterHub launch, edit-on-GitHub), content-driven site footer, and bundled brand assets.