Skip to content

chore(release): prepare v2.7.0 - #199

Merged
mmcky merged 1 commit into
mainfrom
chore/release-2.7.0
Sep 10, 2026
Merged

mmcky merged 1 commit into
mainfrom
chore/release-2.7.0

Conversation

@mmcky

@mmcky mmcky commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Release prep for v2.7.0, per the flow in CONTRIBUTING.md. A minor release: it adds new site options (site_url, og_logo_url, twitter_logo_url) and the docs/ feature reference, and it closes out the last two items on the #147 cutover gate.

Included

Change Issue PR
Every site option the theme reads is declared in template.yml, so it reaches the theme; the favicon option works; the page-level git_metadata override is a declared option #173 #194
Pinned, scroll-tracking "On this page" panel with nested h3 entries collapsed to the current branch; smaller outline logo #182, #96 #196
Full OpenGraph / Twitter card set, collapsible stderr warnings, and the docs/ feature reference (Phase 6) #92 #197
Desktop pages no longer overflow the viewport between 1280px and 1328px wide #198
Release bundle manifest declares Node >=20 and installs the shipped lockfile with npm ci #162 #191

#195 (per-lecture live compute, #114) is not included: it is conflicting with main and was taken off the gate on 2026-09-10.

#191 is a consumer-install change that only a real release install exercises, so the consumer bumps after this release are its first real test.

What this PR changes

  • CHANGELOG.md: the Unreleased entries move under ## [2.7.0] - 2026-09-11, the fix(bundle): declare Node >=20 and install the shipped lockfile with npm ci #191 entry gains its PR link, the [2.7.0] compare link is added, and the Unreleased link now compares from v2.7.0.
  • package.json / package-lock.json: version 2.7.0. template.yml is stamped by the release workflow.
  • README.md: the two pinned URLs (the site.template example and the git-metadata plugin) move to v2.7.0.

After merge

Tag the merge commit and push the tag; release.yml builds the bundle and publishes the GitHub Release with this changelog section as the notes:

git tag v2.7.0 <merge-sha> && git push origin v2.7.0

Then bump site.template in lecture-wasm and on lecture-python-programming#363 (jb2) to the v2.7.0 asset.

🤖 Generated with Claude Code

Moves the Unreleased entries under 2.7.0 (#194, #196, #197, #198, #191),
adds the missing #191 PR link, bumps package.json and the two README pins.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings September 10, 2026 22:47
@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-10 22:58 UTC

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are a mechanical version bump and changelog reorganization that fully and consistently follow the documented release process, with no code or logic changes.

Pull request overview

This PR prepares the v2.7.0 minor release following the documented flow in CONTRIBUTING.md. It is a purely mechanical release-cut: it stamps the new version, reorganizes the changelog, and bumps the pinned release URLs in the README. The release bundles previously-merged work (declared site options #194, pinned scroll-tracking outline #196, OpenGraph/Twitter SEO + docs #197, viewport overflow fix #198, and the bundle-manifest Node floor / npm ci change #191).

Changes:

  • Bump the theme version from 2.6.1 to 2.7.0 in package.json and package-lock.json.
  • Move the ## [Unreleased] CHANGELOG entries under a new ## [2.7.0] - 2026-09-11 heading, add the [2.7.0] compare link, re-point [Unreleased] to compare from v2.7.0, and add the missing #191 PR link.
  • Re-point the two pinned vX.Y.Z URLs in README.md (the site.template example and the git-metadata plugin) to v2.7.0.
File summaries
File Description
package.json Bumps the theme version to 2.7.0 (release version source of truth).
package-lock.json Mirrors the 2.7.0 bump in both version fields to keep the lockfile in sync.
CHANGELOG.md Cuts the 2.7.0 section from Unreleased, adds compare links, and adds the #191 PR link.
README.md Updates the two pinned release/plugin URLs so consumer examples point at v2.7.0.

I verified: version consistency across all files (no stale v2.6.1 theme references remain — the leftover 2.6.1 hits are unrelated node-fetch deps); the CHANGELOG structure and compare links match the CONTRIBUTING.md release steps; template.yml is correctly left unbumped since release.yml stamps it from package.json; and the workflow's release-notes extraction keys on ## [2.7.0], so the empty ## [Unreleased] section above it is harmless and the tag/version guard is satisfied. The 2026-09-11 release date is one day ahead of UTC but is the intended publish date and correct in the project's AEST timezone, so I did not flag it. No issues found.

Review details
  • Files reviewed: 3/4 changed files
  • Comments generated: 0
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-actions

Copy link
Copy Markdown
Contributor

🎭 Visual regression results

passed  41 passed
skipped  12 skipped

Details

stats  53 tests across 2 suites
duration  1 minute, 27 seconds
commit  3ec4565

Skipped tests

mobile-chrome › theme.spec.ts › QuantEcon theme — visual regression › without JavaScript › drawer-opens-without-javascript
mobile-chrome › theme.spec.ts › QuantEcon theme — visual regression › drawer-closes-when-search-opens
mobile-chrome › theme.spec.ts › QuantEcon theme — visual regression › launch-colab
mobile-chrome › theme.spec.ts › QuantEcon theme — visual regression › live-compute-toggle
mobile-chrome › theme.spec.ts › QuantEcon theme — visual regression › live-compute-toggle-absent-without-thebe
mobile-chrome › theme.spec.ts › On this page outline (#182) › outline-pinned-and-nested
mobile-chrome › theme.spec.ts › On this page outline (#182) › outline-tracks-scroll
mobile-chrome › theme.spec.ts › On this page outline (#182) › outline-unnumbered
mobile-chrome › theme.spec.ts › On this page outline (#182) › outline-within-viewport
mobile-chrome › theme.spec.ts › Meta/SEO and notebook output polish (#92) › social-meta
mobile-chrome › theme.spec.ts › Meta/SEO and notebook output polish (#92) › stderr-collapsed
mobile-chrome › theme.spec.ts › Site options reach the theme (#173) › site-options

@mmcky
mmcky merged commit d504555 into main Sep 10, 2026
5 checks passed
@mmcky
mmcky deleted the chore/release-2.7.0 branch September 10, 2026 22:58
quantecon-services pushed a commit that referenced this pull request Sep 11, 2026
Reverts the CHANGELOG half of b8b8101, keeping the app/seo.ts og:type
comment it also carried.

I added the entry on a Copilot review flag citing CONTRIBUTING's
"add your change to `## [Unreleased]`" rule, without checking whether this
PR had already taken a position. It had: the description says no entry,
because like #175 -- which corrected the FOUC comments and touched no
CHANGELOG -- this changes nothing a consumer of the theme can see. Verified
that 1aae2c8 (#175) indeed has no CHANGELOG entry, so the cited precedent
holds. The author's call stands.

It was also the sole cause of the merge conflict against main: #199 released
v2.7.0, moving the `## [Unreleased]` entries this added to into `## [2.7.0]`.
With the entry gone the PR no longer touches CHANGELOG.md at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QAy8brFG9x8fXet3AV9dJE
quantecon-services pushed a commit that referenced this pull request Sep 11, 2026
Brings in the v2.7.0 release (#199). No conflicts once the CHANGELOG entry
reverted above is gone -- this branch no longer touches that file.
mmcky added a commit that referenced this pull request Sep 11, 2026
* chore(comments): code comments explain the code, not its history

Comments across app/, styles/, tests/, the workflows and config named
project phases, tracker issues and PLAN.md items, and justified values
by pointing at the Sphinx build. Rewrite them to state the reason
itself: the measurement, the contrast ratio, the constraint. A link
stays only where its thread holds detail a comment cannot give in a
line (a fork feature the code reads, a guarded regression, measured
timings), and ported code keeps one provenance line.

Add a "Code comments" section to CONTRIBUTING.md with the rule.

Comment-only: every changed code file is identical once comments are
stripped (TypeScript printer for TS/JS, postcss for CSS, parsed YAML
and JSON). The one data change drops an issue tag from the stderr
output text in the no-thebe fixture notebook.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* chore(tests): name test suites by behaviour, not by issue number

Drop the issue numbers from four describe titles, the Sphinx framing
from an seo unit-test title, and the tracker link from the FOUC guard's
CI step name. Screenshot baselines are named explicitly in each
toHaveScreenshot call, so no snapshot moves. Also restate the
tailwind.config.js grid-track comment and a FOUC-suite note in the
present tense.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* chore(comments): correct comment facts found in an accuracy review

An adversarial review of the rewritten comments (reviewers over every
changed file, a whole-codebase sweep for missed framing, and a
three-lens panel per finding) confirmed factual errors and leftover
history framing. Each was re-checked before applying:

- contrast: the stderr label is 5.5:1 and the link 5.08:1, six light
  code colours miss AA, and dark-mode ratios are restated for the #222
  content panel the text actually sits on
- sizes: the UNITS root under the toolbar font-size control, and figure
  and paragraph spacing quoted in px for what is em
- comments contradicting the code: the seo and route meta tags, the
  first-paint font, the dark-bg keep-in-sync pointer, the static-build
  claims in playwright.config.ts and preview.yml, the relative-css
  directory note, and the template.yml README pointer
- history framing the first pass missed: Makefile, .npmrc, serve.sh,
  mpl-widget.css, Document.tsx, the launch-urls tests,
  PageHeaderHistory.tsx and a release.yml step comment
- CONTRIBUTING: git log -L rather than git blame, and measurements as
  a reason to keep a link

Still comment-only: every changed file is identical to main once
comments are stripped from both sides.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* chore(comments): say why Colab is the only launch target

Restore the design decision the rewrite dropped from the launch-colab
test comment: Binder and JupyterHub are deliberately not offered. And
reword the code-palette note so it no longer explains the missing
toggle by an option this theme never had.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* chore(comments): keep the reason when the reason is another system

Follow-up to the code-comments rewrite, from an accuracy review of #200.

The rewrite read "matches the Sphinx build" as project framing and removed
it everywhere: Sphinx mentions in source fell from 95 across 15 files to 1.
For this theme that phrase is the specification rather than history -- the
theme reproduces the deployed lecture sites -- so where it was the only
justification for a value, the replacement restated the declaration instead
of giving a reason.

CONTRIBUTING.md: state the section's scope (code comments, including YAML,
shell and fixture comments; prose docs keep their history), fold the
overlapping first two bullets into one ban plus one exception, and say that
a constraint from another system is a reason, with a worked example and a
note to record deliberate divergences.

styles/quantecon.css: restore the derivation for the four values whose only
reason was removed -- the footer's 0.9rem and 0.7 opacity, the 5px rule's
18px gap, and the back-to-top 15.3px, whose comment had come to contradict
itself by deriving a deliberately unpinned size from `.article`. Restore the
two deleted notes: the known divergences on link underlines and `:visited`,
and that self-hosting Source Code Pro is separate work. Add a header note so
a reader knows what the measurements are measurements of. List all six
AA-failing code colours rather than counting them, and record that the
palette is inherited from quantecon-book-theme, so changing it is a decision
for both themes (see #172).

static.spec.ts: the provider `Link` would resolve against the un-slashed SSR
pathname; the code does not use it, so the present tense contradicted the
same explanation in Outline.tsx.

Fixture frontmatter comments: drop the issue labels the rule bans, matching
the myst.yml.in files beside them. The labels in features.md, lists.md and
the lists.md fancy-list line are rendered page text feeding features.png and
lists.png, so they are left for a run of update-snapshots.yml.

Reflow the comment lines that were edited in place and left short.

Comment-only, verified mechanically against 200c4d1 with a comment stripper
for TS/TSX/JS and CSS: no code token changes. tests/unit is unchanged at
17 passing; the 2 failures are missing node_modules in this environment and
are identical before and after.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QAy8brFG9x8fXet3AV9dJE

* docs(contributing): record the match-except-for-WCAG rule

The theme already diverges from the lecture builds in four places and every
one is an accessibility fix -- the outline's undimmed resting entries, its
non-colour-only active state, the dark footer link, and the flat rem-rooted
content size. That rule was only discoverable by reading four scattered
comments, so state it: match the lecture builds, except where matching them
fails WCAG, and say so with the measurement where you diverge. Changing an
inherited value for any other reason stays a two-theme decision (#172 for the
code palette, #201 for the footer).

Note that a contrast ratio must be computed on the composited colour, since
an `opacity` on the element is what the reader actually sees. That is the
step the footer missed: the dark footer link was corrected for it and the
light one never was.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QAy8brFG9x8fXet3AV9dJE

* docs(changelog): record the comment rewrite, and say why og:type is "website"

CONTRIBUTING.md requires every change to land an `## [Unreleased]` entry;
this PR had none. Added under `### Changed`, with the scope, the
comment-only property and the seven string edits it rests on.

app/seo.ts: `og:type "website"` was left without a reason when the Sphinx
reference came off, and "article" is the choice a future reader would reach
for on a page with a byline. Records why it is not: the lectures carry none
of the `article:*` metadata that choice commits to, and the deployed sites
declare "website" throughout (which is what the comment on `main` said).

Both raised in review on this PR -- the CHANGELOG entry by the Copilot
reviewer, the og:type reason by quantecon-services.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QAy8brFG9x8fXet3AV9dJE

* Revert "docs(changelog): record the comment rewrite"

Reverts the CHANGELOG half of b8b8101, keeping the app/seo.ts og:type
comment it also carried.

I added the entry on a Copilot review flag citing CONTRIBUTING's
"add your change to `## [Unreleased]`" rule, without checking whether this
PR had already taken a position. It had: the description says no entry,
because like #175 -- which corrected the FOUC comments and touched no
CHANGELOG -- this changes nothing a consumer of the theme can see. Verified
that 1aae2c8 (#175) indeed has no CHANGELOG entry, so the cited precedent
holds. The author's call stands.

It was also the sole cause of the merge conflict against main: #199 released
v2.7.0, moving the `## [Unreleased]` entries this added to into `## [2.7.0]`.
With the entry gone the PR no longer touches CHANGELOG.md at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QAy8brFG9x8fXet3AV9dJE

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants