Skip to content

Latest commit

 

History

History
384 lines (303 loc) · 30.9 KB

File metadata and controls

384 lines (303 loc) · 30.9 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.22.0 - 2026-08-25

Added

  • Dismissible announcement banner — a new announcement theme option renders a notice at the top of every page (HTML allowed, so you can include emphasis and a link to changelog notes). Readers dismiss it with a ×; the dismissal persists in localStorage and is keyed to a hash of the message, so editing the text re-shows the banner for everyone who dismissed the previous one. An optional announcement_expires ISO date (YYYY-MM-DD) auto-hides the banner after that day — enforced client-side (so it disappears for visitors even without a rebuild) and at build time (an already-expired notice is omitted from the HTML). An invalid expiry date logs a warning and fails open. Two looks are available via announcement_style: bar (default) — a thin full-width strip that scrolls away below the toolbar — or callout — a boxed in-column notice; both adapt to dark mode and RTL. The banner defaults to empty/off, so existing sites are unaffected. The renderer iterates a list of notices internally so per-page announcements can be added additively later (tracked in #403).
  • translators theme option (#426) — a new translators option, parallel to authors, takes a list of {name, url} entries and renders them in the page header behind a visible label, so translated editions can credit the people who produced them. Authors keep the line directly under the page title and translators sit one row lower, right-aligned on the "Last changed" line and sharing its accent rule, so crediting them costs the header no extra vertical space; on narrow screens the two stack. The label defaults to "Translated by" and is overridable via translators_label so each edition renders it in its own language; authors keep their current label-free rendering, and the matching authors_label defaults to empty, so a site that sets neither renders byte-identical HTML. Either list can also be overridden per page in MyST or notebook front matter, which is how a team-translated edition credits whoever produced each lecture: a page value replaces the project value rather than merging with it, an explicit empty list leaves the block out on that page, and an absent key inherits the project value. Only the documented list-of-mappings form counts as an override, because authors is shared ground — docutils treats it as a bibliographic field and nbformat defines it in the notebook schema — so a page already carrying one written for something else keeps the project credit instead of rendering it badly or losing the byline. Author links now carry rel="author"; translator links deliberately do not, and the two lines carry distinct classes so downstream CSS can tell them apart. Front matter is read from the source file rather than through Sphinx's document metadata, because docutils treats authors as a bibliographic field and returns it in a shape that varies with the language setting — unworkable for a feature whose whole purpose is non-English editions. Part of the cross-theme attribution work tracked in QuantEcon/meta#360.

Fixed

  • A malformed authors value no longer renders one empty link per characterauthors given as a bare string (rather than the documented list of {name, url} entries) was iterated character by character, emitting an empty anchor for each. Both authors and translators now normalise a bare string, a list of strings, or a single mapping into the documented form, and drop entries with no usable name.

Documentation

  • Developer setup troubleshooting for stale .nodeenv — documented the nodeenv-version-mismatch error (an in-repo .nodeenv/ left over from an older pinned Node.js version) and its fix (rm -rf .nodeenv then rebuild), which otherwise blocks tox and editable installs locally. Also clarified that tox keeps the toolchain fully repo-local (.tox/, .nodeenv/, node_modules/ are all git-ignored and regenerated), so nothing is installed into the base/global environment.

CI

  • Regenerated visual baselines are now re-checked in the same run (#358) — the snapshot workflow wrote new baselines and committed them with nothing checking that they were any good. Both jobs now re-run the suite without --update-snapshots against the same built site and report the outcome in the summary comment (it reports rather than gates — the commit still happens, so the images are always there to inspect). The re-run writes to its own test-results-verify/ directory, since Playwright clears its output directory on every run and would otherwise erase the regeneration images that the snapshot-update-diff artifact carries. After /update-new-snapshots the comment deliberately does not attribute a failure to the snapshots just added — that job leaves existing baselines untouched, so the cause may be a baseline the PR legitimately invalidated.
  • The snapshot bot's commit can now trigger CI (#358) — commits pushed with GITHUB_TOKEN don't raise push/pull_request events, so regenerated baselines landed while the PR's visual check still showed its old failure, and the author had to push an empty commit. The workflow now pushes with an optional SNAPSHOT_BOT_TOKEN secret when one is set, falling back to GITHUB_TOKEN otherwise; the summary comment says which happened and what to do next. See docs/developer/visual-testing.md for how to add the secret.
  • /update-snapshots now reads the fixtures pin from the PR branch — GitHub always runs the default branch's copy of a workflow on issue_comment events, so update-snapshots.yml was resolving FIXTURES_SHA from main rather than from the PR under test. A PR that bumps the pin (because it needs a fixtures change to exercise a new feature) therefore regenerated against the old fixtures, produced byte-identical baselines, committed nothing — and still posted "✅ regenerated and committed", leaving the PR's visual job failing with no way to fix it. Both jobs now resolve the pin out of the checked-out branch's ci.yml, falling back to the workflow-level value. Both summary comments also report what actually happened (committed vs. unchanged, and which fixtures commit was built against) instead of unconditionally claiming success, and note that the bot's GITHUB_TOKEN commit does not itself trigger CI.
  • /update-snapshots is now restricted to trusted actors — both jobs check out the PR branch and execute its code (pip install . runs the PR's build backend) with a contents: write token, but had no author-association gate, so anyone able to comment on a PR could trigger that. Both now require OWNER, MEMBER, or COLLABORATOR.
  • CI Node bumped 20 → 24 — Node 20 reached end-of-life in April 2026, and the grouped npm updates in #400 raised engine floors (sass-loader 17 requires Node ≥22.11). Node 24 is the current active LTS (supported to April 2028). Applies to ci.yml, docs.yml, and update-snapshots.yml; .nvmrc and the contributor docs (CONTRIBUTING.md, docs/developer/setup.md) move to Node 24 in step so local dev matches CI.
  • Stabilized flaky mobile-chrome visual tests on math-heavy pages — after the Playwright 1.57→1.60 (Chromium) bump in #400, math/proofs/cross-references full-page screenshots intermittently rendered ~60px shorter than baseline, failing Playwright's dimension check before pixel tolerances apply. waitForReady now waits for document.fonts.ready and polls until the document height holds steady for 750ms, instead of a fixed 500ms sleep after MathJax typesetting.
  • Cleared open Dependabot security alerts via npm audit fixwebpack-dev-server 5.2.2→5.2.4 (GHSA-79cf-xcqc-c78w), shell-quote 1.8.1→1.8.4 (GHSA-w7jw-789q-3m8p, critical), qs 6.14.2→6.15.2 (GHSA-q8mj-m7cp-5q26), ws 8.18.0→8.21.0 (GHSA-58qx-3vcg-4xpx). All transitive dev/build-time only; built theme assets unchanged. The remaining uuid alert (GHSA-w5hq-g745-h8pq) was dismissed as not exploitable — sockjs only calls uuid.v4(), the advisory affects v3/v5/v6 with a caller-provided buf.
  • Dependabot now watches npm — added an npm ecosystem entry to dependabot.yml (monthly, grouped into a single PR) alongside the existing github-actions config.

0.21.0 - 2026-06-05

Changed

  • LHS sidebar / content overlap fixed at common laptop widths (#387, #388) — at viewports 1024–1499px (most laptops: 1280, 1366, 1440), .qe-main now pushes content right via a :has(.qe-sidebar:not(.inactive)) conditional padding-left so the centered 900px content column no longer slides underneath the fixed sidebar. At viewports ≥1500px there's natural room for the sidebar as a left rail with content centered in the viewport (the established three-column look). Below 1024px the sidebar remains a drawer overlay (toggle to open). The pre-existing box-shadow: ... 9999px white halo workaround at ≤1340px is removed — it was masking the overlap; no longer needed now that the layout handles it.
  • Toolbar repositioned stickyfixed (#387, #388) — lets the LHS sidebar extend visually to the viewport top, anchoring it to the same top-left corner as the toolbar's toggle button. Content's toolbar clearance moves from .qe-main to .qe-page (no visible change to content position).
  • Books built with this theme will see a small layout shift at 1024–1499px viewports on upgrade — content gets a left margin in that zone instead of overlapping the sidebar. Downstream sites should re-verify their snapshots / visual review.

Fixed

  • RHS "On this page" TOC truncated on long lectures (#387) — .qe-page__toc .inner.sticky now has a bottom fade-mask hint and switches to overflow-y: auto with a discreet scrollbar on :hover / :focus-within, so overflowing TOC entries are reachable.

CI

  • Split visual regression CI into build / visual / preview jobs (#394) — the Netlify preview now deploys regardless of whether visual tests pass, since reviewers need the preview link to decide whether failing visual tests reflect intentional design changes (in which case they /update-snapshots) or genuine regressions. Previously the preview was a later step of a single job and got skipped on visual-test failure. visual and preview both consume the fixtures build artifact produced by build; visual failure no longer blocks preview deploy.
  • Visual regression tests migrated to the quantecon-book-theme-fixtures repo (#390, #392) — replaces the old lecture-python-programming dependency (cloned + conda-built per run, ~3–5 min) with the curated quantecon-book-theme-fixtures repo (pip-built in ~30–60s, pinned to a fixed SHA so test input doesn't drift between PRs). Adds first-ever <dl> / glossary coverage. #392 landed the update-snapshots.yml half early so the issue_comment-triggered workflow on main stayed consistent with the new fixture paths.
  • Cleared all open Dependabot security alerts (#385) — npm audit fix plus major bumps of two build-time devDependencies (css-minimizer-webpack-plugin 7→8, sass) to clear serialize-javascript advisories. Transitive dev/build-time only; no runtime or shipped theme code changed.
  • Bump actions/upload-pages-artifact from 4 to 5 (#382)
  • Bump conda-incubator/setup-miniconda from 3 to 4 (#383)
  • Bump codecov/codecov-action from 6.0.0 to 6.0.1 (#386)
  • Bump actions/download-artifact from 7 to 8 (#395)
  • Bump daun/playwright-report-summary from 3 to 4 (#396)

0.20.3 - 2026-04-14

Fixed

  • h5 headings appearing larger than h4 (#381) — h5 had no dedicated CSS rule, so it inherited the browser default size and "PT Serif" (a visually larger serif font) while h4 used the more compact "Source Sans Pro" at 1.2rem. Added explicit h5 styling (1rem, Source Sans Pro, weight 900) to restore the correct heading size hierarchy.

CI

  • Bump actions/github-script from 8 to 9 (#380)
  • Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (#379)

0.20.2 - 2026-04-06

Fixed

  • Emphasis color on "et al." in textual citations (#378) — the v0.20.1 fix only targeted <em> inside <a class="reference"> links. With bibtex_reference_style: author_year, sphinxcontrib-bibtex places <em>et al.</em> as a sibling of the link, not a child. Added span:has(> a.reference) > em selector to handle this HTML structure across all theme variants.

0.20.1 - 2026-04-06

Fixed

  • Emphasis color applied to "et al." in citation links (#366) — added a.reference em CSS overrides so <em> tags inside sphinxcontrib-bibtex citation reference links inherit color and font-weight from the parent anchor instead of the theme's emphasis styling. Applied across light, dark, and gruvbox color schemes.

Changed

  • Relaxed sphinxcontrib-bibtex upper bound (#366) — updated docs dependency from <=2.5.0 to <3, allowing compatibility with the 2.6.x series (latest 2.6.5).

CI

  • Bump codecov/codecov-action from 5.5.2 to 6.0.0 (#377)
  • Bump actions/deploy-pages from 4 to 5 (#376)

0.20.0 - 2026-03-23

Added

  • Language switcher for multilingual site support (#374) — a globe icon dropdown in the bottom toolbar that enables users to switch between translated versions of a lecture site. Only renders when 2+ languages are configured via html_theme_options. Includes keyboard navigation, click-outside-to-close, and dark mode support.
  • SEO hreflang tags (#374) — automatically injects <link rel="alternate" hreflang="..."> meta tags in <head> for all configured languages, improving search engine discovery of translated content.
  • Multilingual infrastructure documentation (#374) — new developer guide at docs/developer/infrastructure.md covering three hosting options (GitHub Pages, subdomains, reverse proxy) for deploying translated lecture sites.

Changed

  • Renamed lecture-python-programming.myst to lecture-python-programming (#374) — updated all CI workflows, tox config, Playwright config, and documentation to reflect the renamed test repository.

0.19.0 - 2026-03-08

Changed

  • sticky_contents now defaults to True (#371) — the sticky right-hand table of contents with scroll spy is now enabled by default for all projects using the theme. To revert to the classic TOC, set sticky_contents: False in html_theme_options.
  • Increased CSS specificity for custom code highlighting (#373) — replaced :where() wrappers with html body:not(.use-pygments-style) to ensure custom token colors are not overridden by pydata-sphinx-theme's Pygments rules when data-theme is set.

Added

  • data-theme attribute on <html> (#373) — sets the standard data-theme="light" or "dark" attribute used by pydata-sphinx-theme, Furo, and sphinx-book-theme, fixing compatibility with myst-nb 1.4.0+ which uses this attribute for dark mode detection. Resolves dark code cell backgrounds appearing on light-themed sites for users with OS dark mode.
  • inline_literal_box theme option (#373) — new boolean option (default: False) that controls whether inline code literals (code.literal) display with pydata-sphinx-theme's background box and border styling. Set to True to re-enable boxes.
  • --qe-literal-color CSS variable (#373) — inline code literal color integrated into the text color scheme system alongside emphasis, strong, and definition colors:
    • Seoul256: #af5f5f (muted rust) / #d78787 (soft rose) for dark mode
    • Gruvbox: #9d0006 (dark red) / #fb4934 (bright red) for dark mode
    • None: inherits text color
    • Overridable via --qe-literal-color in custom CSS

Fixed

  • Dark code cells with myst-nb 1.4+ (#373) — myst-nb 1.4.0 changed CSS dark mode detection to a space-toggle technique with @media (prefers-color-scheme) fallback; since the theme only used body.dark-theme class, myst-nb fell through to OS preference causing dark backgrounds on light sites. Fixed by setting data-theme attribute.

CI

  • Bump actions/upload-pages-artifact from 3 to 4 (#370)
  • Bump actions/upload-artifact from 6 to 7 (#369)

0.18.0 - 2026-02-24

Changed

  • Complete dark theme overhaul (#365) — rewrote the dark theme for a modern, consistent, and readable experience
    • Replaced ad-hoc grays (#222/#333/#444) with a cohesive navy-charcoal palette (#1a1a2e background, #252540 surfaces, #d4d4e4 text, #6cb6ff links)
    • Images now use subtle opacity reduction instead of aggressive CSS inversion
  • CSS custom properties for dark theme (#365) — all 16 palette colors declared as overridable --qe-dark-* custom properties; downstream projects can now customize colors without duplicating selectors

Added

  • Dark mode syntax highlighting (#365) — complete token colors for all ~40 Pygments syntax classes using a VS Code Dark+ inspired palette
  • FOUC prevention (#365) — early inline script applies dark mode class before first paint, eliminating the flash of white on page load
  • Dark mode documentation (#365) — new "Dark Mode" section in configure.md covering palette, syntax highlighting, admonitions, image handling, and CSS customization with full reference table of all overridable custom properties
  • Dark mode coverage for unstyled elements (#365) — modals, admonitions (type-specific accents), homepage elements, collapse/toggle bars, tooltips, autodoc, footnotes, and non-QuantEcon project overrides

Fixed

  • Double logo in dark theme (#365) — when a dedicated dark logo is configured, both light and dark logos were shown; fixed :only-child selector to check the <a> wrapper instead of the <img>
  • Page header unreadable in dark mode (#365) — title link, authors, "Last changed" button, and changelog dropdown used #444 text on dark backgrounds
  • Unreadable table text in dark mode (#365) — table rows used #333 text on dark backgrounds
  • Indistinguishable links in dark mode (#365) — all links were #fff, same as body text
  • Inline code light border in dark mode (#365) — code spans retained light-theme borders
  • Sidebar search white in dark mode (#365) — search input area remained white
  • Toolbar border in dark mode (#365) — toolbar border remained light gray
  • Syntax highlighting gaps (#365) — only 3 of ~40 token types had dark mode overrides
  • Stderr warnings in dark mode (#365) — updated to use amber accents matching the new palette

0.17.1 - 2026-02-19

Fixed

  • Horizontal scrollbar on sticky TOC (#363) — added overflow-x: hidden to the sticky "On this page" sidebar to prevent an unwanted horizontal scrollbar when long section titles wrap
  • npm security vulnerabilities (#364) — resolved 9 dependency vulnerabilities (5 high, 3 moderate, 1 low) via npm audit fix, updating webpack, node-forge, qs, lodash, cross-spawn, ajv, and nanoid

0.17.0 - 2026-02-19

Breaking Changes

  • Removed individual color options — the following html_theme_options have been removed: emphasis_color, emphasis_color_dark, strong_color, strong_color_dark, definition_color, definition_color_dark. These are replaced by the new color_scheme option (see Changed below). Projects using the old options should migrate to either the built-in seoul256 scheme or a custom_color_scheme.css file.

Added

  • Sticky table of contents with scroll highlighting (#350, #133)
    • New sticky_contents option enables a fixed-position RHS TOC that tracks scroll position
    • Scroll spy highlights the currently visible section in the TOC
    • Auto-expand subsections show the active hierarchy (configurable via contents_autoexpand)
    • Copy section link: hover over any TOC entry to copy the full URL with anchor
    • Back to top button appears after scrolling down 300px
    • New scrollspy.js module with requestAnimationFrame throttling
    • Full documentation in docs/configure.md
  • CI: /update-snapshots command (#362)
    • PR comment command to regenerate all Playwright visual baselines

Changed

  • Text color scheme system (#360) — replaces individual color options with scheme-based approach
    • New color_scheme theme option (seoul256 default, gruvbox, none to disable)
    • Seoul256-inspired palette: dark teal (#005f5f) for emphasis, dark amber (#875f00) for strong (light mode); medium-light teal (#5fafaf) and light amber-gold (#d7af5f) for dark mode
    • Gruvbox palette: earthy aqua (#427b58) for emphasis, warm orange (#af3a03) for strong (light mode); light aqua (#8ec07c) and bright orange (#fe8019) for dark mode
    • Custom override via custom_color_scheme.css in project _static/ (auto-detected)
    • New _color-schemes.scss module for built-in scheme definitions

Fixed

  • Math equation visual test stability (#361)
    • Regenerated stale snapshots for consistent cross-environment rendering
    • Increased tolerance with maxDiffPixelRatio: 0.15 for MathJax font variance

0.16.0 - 2026-02-06

Added

  • Customizable emphasis and bold text colors (#355, #356)
    • Six new html_theme_options: emphasis_color, emphasis_color_dark, strong_color, strong_color_dark, definition_color, definition_color_dark
    • Allows per-site color customization of italic (<em>), bold (<strong>/<b>), and definition list (<dt>) elements
    • Supports light and dark mode independently
    • CSS custom properties (--qe-emphasis-color, --qe-strong-color, --qe-definition-color) with SCSS fallbacks
    • Server-side validation of color values to prevent CSS injection
    • Comprehensive documentation in docs/configure.md with examples

Fixed

  • Math equation visual test stability (#357)
    • Replaced fixed 1000ms timeout with MathJax.startup.promise for reliable math rendering detection
    • Captures paragraph container instead of tiny MathJax element to avoid dimension mismatches
  • Update-snapshots workflow (#357)
    • Added continue-on-error: true to handle missing snapshot exit codes gracefully

Changed

  • Dependency updates (Dependabot)
    • Bump codecov/codecov-action from 5.5.1 to 5.5.2 (#351)
    • Bump actions/upload-artifact from 5 to 6 (#352)

0.15.1 - 2025-12-11

Fixed

  • Notebook launch URLs with path_to_docs (#345)
    • Fixed bug where path_to_docs prefix was incorrectly included in notebook URLs
    • When docs are in a subdirectory (e.g., lectures/) but notebooks are in a flat repo structure, launch buttons (Colab, JupyterHub, Binder) now generate correct URLs
    • Added comprehensive test coverage including backward compatibility tests
  • Visual regression test stability (#350)
    • Fixed flaky MathJax visual regression test by using maxDiffPixels instead of maxDiffPixelRatio
    • Handles minor rendering variations across different environments

Changed

  • Dependency updates (Dependabot)
    • Bump actions/github-script from 7 to 8 (#348)
    • Bump actions/upload-artifact from 4 to 5 (#347)
    • Bump actions/setup-node from 4 to 6 (#346)

0.15.0 - 2025-12-08

Changed

  • Major refactoring and modernization (#335)
    • Updated Node.js from 16.13.2 (EOL) to 18.18.0 LTS
    • Modularized SCSS: Split 2038-line monolithic stylesheet into 11 focused modules
    • Modularized JavaScript: Organized 565 lines into 8 feature-specific modules
    • Updated npm dependencies: sass (1.94.2), sass-loader (16.0.6), css-loader (7.1.2), webpack (5.103.0), and more
    • Updated Python dependencies: Added version constraints for pyyaml, docutils, beautifulsoup4
    • Updated flake8 constraint from <3.8.0 to >=7.0.0
    • Removed unused click dependency

Added

  • Performance optimizations (#335)
    • Preconnect hints for CDN resources (unpkg.com, cdn.jsdelivr.net, fonts.googleapis.com)
    • Reduces connection time by 100-300ms per CDN
  • Security improvements (#335)
    • Fixed 2 npm vulnerabilities (cross-spawn HIGH severity, nanoid MODERATE severity)
    • Added SRI (Subresource Integrity) hashes to all CDN-loaded scripts
  • Testing improvements (#335)
    • New test infrastructure with conftest.py and shared fixtures
    • Added test_module_structure.py with 10 new tests (13→23 total tests)
    • Validates SCSS module structure, JavaScript module exports, layout template configuration
  • Documentation improvements (#335)
    • Comprehensive CONTRIBUTING.md with development guide
    • New testing guide at docs/contributing/testing.md
    • AI-assisted development guide at .github/copilot-instructions.md
    • Added .editorconfig for consistent code formatting
    • Added .nvmrc for Node.js version pinning

Fixed

  • Deprecation warnings (#335)
    • Fixed deprecated datetime.utcnow()datetime.now(timezone.utc)
    • Fixed deprecated datetime.utcfromtimestamp()datetime.fromtimestamp(..., tz=timezone.utc)
    • All 19 deprecation warnings resolved
  • Removed obsolete console polyfill for IE8/9 (#335)
    • Reduces JavaScript bundle size from 8.91 KiB to 8.73 KiB

0.14.0 - 2025-12-01

Added

  • Visual regression testing with Playwright (#339)
    • Automated screenshot comparison for theme styling
    • Tests for code blocks, dark mode, math equations, headers, sidebars
    • Desktop and mobile viewport coverage
    • CI integration with GitHub Actions
  • New /update-new-snapshots PR comment command (#340)
    • Automatically generates baseline snapshots for new visual tests
    • Only creates missing snapshots (won't overwrite existing baselines)
    • Documents workflow in tests/visual/README.md

Fixed

  • Removed italic formatting from f-string interpolation tokens (#324, #329)
    • F-string placeholders like {variable} now render in consistent monospace
    • Improves code readability by matching terminal/REPL output style

0.13.2 - 2025-11-25

Fixed

  • Updated Jupyter Book links to avoid redirects (#337)
    • Footer "Powered by Jupyter Book" link now points directly to jupyterbook.org/v1/
    • Eliminates redirect warnings in lecture linkcheckers

0.13.1 - 2025-11-25

Fixed

  • Colab launch button now correctly generates URLs for flat notebook repositories (#336)
    • Added nb_path_to_notebooks configuration option to specify notebook path independently from path_to_docs
    • Defaults to empty string for flat repositories, fixing incorrect URL generation

0.13.0 - 2024-11-24

Added

  • Collapsible stderr warnings feature (#333)
    • Automatically detects and wraps stderr output in notebook cells with a collapsible interface
    • Displays a compact "⚠ Code warnings" button for cleaner presentation
    • Improves readability when code produces verbose warnings from upstream packages
    • Includes dark theme support and accessibility features (ARIA labels)
    • Works seamlessly with myst-nb's merge_streams configuration option

0.12.0 - 2025-11-23

Added

  • Git-based metadata integration for lecture pages (#328, #331)
    • Last modified timestamp displayed below authors
    • Interactive changelog dropdown showing last 10 commits (configurable)
    • Clickable commit hashes linking to GitHub commit pages
    • Full commit history link for each document
    • Configuration options: last_modified_date_format and changelog_max_entries

Changed

  • Improved lecture header layout (#328, #331)
    • Removed redundant title display from page headers
    • Increased lecture series heading font size by 44%
    • Increased author names font size by 20%
    • Repositioned metadata elements for better visual hierarchy

0.11.0 - 2025-11-20

Added

  • Color-based emphasis system for <em> and <strong> tags (#327)
    • <em> tags now render with distinctive color emphasis instead of italics
    • <strong> tags render with both color emphasis and bold weight
    • New SCSS color variables for consistent emphasis styling

Changed

  • Visual treatment of emphasized text now uses color rather than italics for improved readability

0.10.1 - 2024-XX-XX

Fixed

  • Customized toggle button text to display 'Show'/'Hide' instead of default text (#322)

0.10.0 - 2024-XX-XX

Added

  • Optional custom code style feature (#319)
    • Users can now choose between custom QuantEcon syntax highlighting styles or Pygments built-in themes
    • Configuration option quantecon_book_theme_code_style in conf.py

0.9.3 - 2024-XX-XX

Fixed

  • Collapse functionality bugs: CSS selectors, height parsing, and toggle bar creation (#300)

Changed

  • Increased page max-width to accommodate 80-character code lines (#309)

0.9.2 - 2024-XX-XX

Fixed

  • Reference error in index.js (#311)

Changed

  • Fixed coverage warnings in RTL functionality tests (#313)

0.9.1 - 2024-XX-XX

Changed

  • Updated Jupyter Book footer link to reduce redirects (#303)

0.9.0 - 2024-XX-XX

Added

  • Initial stable release with core theme features