Skip to content

Implements v6 website#300

Open
arcanis wants to merge 30 commits into
mainfrom
mael/website
Open

Implements v6 website#300
arcanis wants to merge 30 commits into
mainfrom
mael/website

Conversation

@arcanis
Copy link
Copy Markdown
Member

@arcanis arcanis commented May 17, 2026

Note

Medium Risk
Large addition of a new website workspace 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 website workspace (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 presentation deck-stage component.

Also adds build utilities to generate OG images and record terminal output, and removes the old .claude/skills/running-tests.md doc.

Reviewed by Cursor Bugbot for commit 844a900. Bugbot is set up for automated code reviews on this repo. Configure here.

@netlify
Copy link
Copy Markdown

netlify Bot commented May 17, 2026

Deploy Preview for yarn-v6 ready!

Name Link
🔨 Latest commit 844a900
🔍 Latest deploy log https://app.netlify.com/projects/yarn-v6/deploys/6a0d994c4d3c6f0008490e17
😎 Deploy Preview https://deploy-preview-300--yarn-v6.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

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
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9c6fe6c. Configure here.

}
return line.textContent;
})
.join(`\n`) || el.textContent;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Fix in Cursor Fix in Web

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;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9c6fe6c. Configure here.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 17, 2026

⏱️ Benchmark Results

gatsby install-full-cold

Metric Base Head Difference
Mean 4.270s 4.280s +0.22% ⚠️
Median 4.275s 4.286s +0.24% ⚠️
Min 4.168s 4.188s
Max 4.335s 4.344s
Std Dev 0.041s 0.036s
📊 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

Metric Base Head Difference
Mean 1.266s 1.262s -0.30% ✅
Median 1.267s 1.265s -0.13% ✅
Min 1.248s 1.243s
Max 1.281s 1.286s
Std Dev 0.009s 0.011s
📊 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)

Metric Base Head Difference
Mean 0.341s 0.339s -0.81% ✅
Median 0.341s 0.339s -0.47% ✅
Min 0.332s 0.334s
Max 0.356s 0.343s
Std Dev 0.005s 0.003s
📊 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

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 4 total unresolved issues (including 3 from previous reviews).

Fix All in Cursor

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.

Create PR

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;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 844a900. Configure here.

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.

1 participant