Implements v6 website#300
Conversation
✅ Deploy Preview for yarn-v6 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
| @@ -0,0 +1,267 @@ | |||
| --- | |||
| slug: 2026-05-08-package-maps-import-maps | |||
There was a problem hiding this comment.
Blog post slug contains typo causing wrong URL
Medium Severity
The frontmatter slug is 2026-05-08-package-maps-import-maps but the filename and title say "package-managers". The word "managers" was accidentally shortened to "maps", resulting in a URL with "maps" appearing twice (package-maps-import-maps) that doesn't match the post's title or filename.
Reviewed by Cursor Bugbot for commit 9c6fe6c. Configure here.
| } | ||
| return line.textContent; | ||
| }) | ||
| .join(`\n`) || el.textContent; |
There was a problem hiding this comment.
Computed text variable is never used
Low Severity
The text variable (which formats terminal lines with $ and # prefixes) is computed but never read. Only the separately-computed toCopy variable is passed to navigator.clipboard.writeText. This is dead code that adds confusion about what actually gets copied to the clipboard.
Reviewed by Cursor Bugbot for commit 9c6fe6c. Configure here.
| const N = points?.length ?? 0; | ||
| if (!N) return null; | ||
|
|
||
| const xScale = (i: number) => ML + (i / (N - 1)) * pw; |
There was a problem hiding this comment.
Division by zero when chart has single data point
Low Severity
The xScale function divides by (N - 1). When N === 1 (a single data point), this produces 0 / 0 = NaN, causing the chart paths and hover logic to break. The guard on line 72 only checks for N === 0.
Reviewed by Cursor Bugbot for commit 9c6fe6c. Configure here.
⏱️ Benchmark Resultsgatsby install-full-cold
📊 Raw benchmark data (gatsby install-full-cold)Base times: 4.290s, 4.304s, 4.238s, 4.307s, 4.248s, 4.254s, 4.274s, 4.314s, 4.250s, 4.225s, 4.257s, 4.191s, 4.253s, 4.299s, 4.306s, 4.241s, 4.168s, 4.309s, 4.246s, 4.276s, 4.305s, 4.281s, 4.317s, 4.330s, 4.284s, 4.335s, 4.275s, 4.257s, 4.285s, 4.194s Head times: 4.311s, 4.232s, 4.277s, 4.299s, 4.261s, 4.292s, 4.212s, 4.300s, 4.313s, 4.305s, 4.278s, 4.188s, 4.280s, 4.304s, 4.344s, 4.206s, 4.246s, 4.316s, 4.286s, 4.277s, 4.262s, 4.276s, 4.303s, 4.253s, 4.309s, 4.294s, 4.286s, 4.321s, 4.307s, 4.255s gatsby install-cache-only
📊 Raw benchmark data (gatsby install-cache-only)Base times: 1.274s, 1.254s, 1.274s, 1.268s, 1.267s, 1.261s, 1.278s, 1.250s, 1.278s, 1.248s, 1.267s, 1.266s, 1.275s, 1.266s, 1.260s, 1.271s, 1.262s, 1.266s, 1.268s, 1.261s, 1.269s, 1.275s, 1.281s, 1.278s, 1.253s, 1.257s, 1.257s, 1.280s, 1.254s, 1.267s Head times: 1.274s, 1.272s, 1.267s, 1.244s, 1.249s, 1.286s, 1.270s, 1.265s, 1.270s, 1.256s, 1.244s, 1.264s, 1.266s, 1.251s, 1.262s, 1.243s, 1.267s, 1.263s, 1.268s, 1.265s, 1.260s, 1.257s, 1.267s, 1.245s, 1.246s, 1.259s, 1.277s, 1.267s, 1.272s, 1.273s gatsby install-cache-and-lock (warm, with lockfile)
📊 Raw benchmark data (gatsby install-cache-and-lock (warm, with lockfile))Base times: 0.332s, 0.341s, 0.341s, 0.338s, 0.337s, 0.342s, 0.341s, 0.340s, 0.345s, 0.342s, 0.342s, 0.349s, 0.340s, 0.349s, 0.349s, 0.342s, 0.339s, 0.349s, 0.340s, 0.339s, 0.339s, 0.343s, 0.342s, 0.356s, 0.336s, 0.336s, 0.339s, 0.334s, 0.339s, 0.334s Head times: 0.340s, 0.341s, 0.334s, 0.338s, 0.340s, 0.337s, 0.342s, 0.335s, 0.342s, 0.339s, 0.342s, 0.339s, 0.337s, 0.337s, 0.334s, 0.336s, 0.335s, 0.343s, 0.342s, 0.339s, 0.337s, 0.340s, 0.338s, 0.340s, 0.340s, 0.337s, 0.337s, 0.336s, 0.341s, 0.340s |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 4 total unresolved issues (including 3 from previous reviews).
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: TOC script crashes without h2
- Added a guard so TOC scroll activation only runs when at least one h2 heading exists.
Or push these changes by commenting:
@cursor push 1371d626dc
Preview (1371d626dc)
diff --git a/website/public/blog/blog.js b/website/public/blog/blog.js
--- a/website/public/blog/blog.js
+++ b/website/public/blog/blog.js
@@ -53,19 +53,21 @@
var toc = document.querySelector('.toc');
if (toc) {
var h2s = headings.filter(function (h) { return h.tagName === 'H2'; });
- var links = Array.from(toc.querySelectorAll('a'));
- function onScroll() {
- var y = window.scrollY + 140;
- var activeId = h2s[0].id;
- for (var i = 0; i < h2s.length; i++) {
- if (h2s[i].offsetTop <= y) activeId = h2s[i].id;
+ if (h2s.length) {
+ var links = Array.from(toc.querySelectorAll('a'));
+ function onScroll() {
+ var y = window.scrollY + 140;
+ var activeId = h2s[0].id;
+ for (var i = 0; i < h2s.length; i++) {
+ if (h2s[i].offsetTop <= y) activeId = h2s[i].id;
+ }
+ links.forEach(function (l) {
+ l.classList.toggle('active', l.getAttribute('href') === '#' + activeId);
+ });
}
- links.forEach(function (l) {
- l.classList.toggle('active', l.getAttribute('href') === '#' + activeId);
- });
+ window.addEventListener('scroll', onScroll, { passive: true });
+ onScroll();
}
- window.addEventListener('scroll', onScroll, { passive: true });
- onScroll();
}
document.querySelectorAll('[data-share="copy-url"]').forEach(function (btn) {You can send follow-ups to the cloud agent here.
Reviewed by Cursor Bugbot for commit 844a900. Configure here.
| var links = Array.from(toc.querySelectorAll('a')); | ||
| function onScroll() { | ||
| var y = window.scrollY + 140; | ||
| var activeId = h2s[0].id; |
There was a problem hiding this comment.
TOC script crashes without h2
Medium Severity
When a .toc element exists but the article has no h2 headings, onScroll reads h2s[0].id on an empty list and throws, breaking scroll handling on that blog page.
Reviewed by Cursor Bugbot for commit 844a900. Configure here.



Note
Medium Risk
Large addition of a new
websiteworkspace with custom markdown/HTML transforms and multiple client-side scripts; main risk is build/runtime regressions (Puppeteer-based rendering, Algolia search integration) and content/URL routing issues.Overview
Adds a new
websiteworkspace (Astro + React + Tailwind) and wires it into the monorepo workspaces to build the v6 yarnpkg.com site.Implements site navigation/config (
navigation.json, release/stable version JSON, tips + quiz content), new markdown processing plugins (admonitions, heading anchors, code/terminal rendering with Shiki, Mermaid rendering via Puppeteer, footnote tooltips, auto-linking config field references, Bluesky embeds), plus supporting public scripts for docs/blog UX, a quiz app, and a presentationdeck-stagecomponent.Also adds build utilities to generate OG images and record terminal output, and removes the old
.claude/skills/running-tests.mddoc.Reviewed by Cursor Bugbot for commit 844a900. Bugbot is set up for automated code reviews on this repo. Configure here.