diff --git a/site/scripts/build-history.mjs b/site/scripts/build-history.mjs index 381b6169f906..a5bca67aabaf 100644 --- a/site/scripts/build-history.mjs +++ b/site/scripts/build-history.mjs @@ -26,12 +26,17 @@ const TRACKED = "site/public/v1/index.json"; const OUT = resolve(SITE_DIR, "public/v1/history.json"); const REPO_URL = "https://github.com/GetTechAPI/TechAPI"; -// Categories we sum into the record total (matches the public dump manifest). -const ORDER = ["smartphones", "tablets", "watches", "pdas", "socs", "gpus", "cpus", "brands"]; +// Categories we sum into the record total: every collection in the public dump +// manifest (v1/index.json). Old manifests that predate a collection just lack it. +const ORDER = [ + "smartphones", "tablets", "laptops", "monitors", "watches", "pdas", "socs", "gpus", "cpus", + "brands", "software", "websites", "device-catalog", +]; // The data/ folder behind each of those collections. const DATA_DIR = { - smartphones: "smartphone", tablets: "tablet", watches: "watch", pdas: "pda", - socs: "soc", gpus: "gpu", cpus: "cpu", brands: "brand", + smartphones: "smartphone", tablets: "tablet", laptops: "laptop", monitors: "monitor", + watches: "watch", pdas: "pda", socs: "soc", gpus: "gpu", cpus: "cpu", brands: "brand", + software: "software", websites: "website", "device-catalog": "device_catalog", }; // Keep the chart legible if the history ever grows large: downsample to at most // MAX points, always preserving the first (baseline) and last (latest) commits. @@ -41,9 +46,12 @@ const MAX = 40; const DATA_MAX = 20; function git(args) { + // stderr is captured, not printed: a commit without the manifest (such as the + // one that stopped committing it) is skipped, not a "fatal:" line in the log. return execFileSync("git", ["-C", REPO_ROOT, ...args], { encoding: "utf8", maxBuffer: 64 * 1024 * 1024, + stdio: ["ignore", "pipe", "pipe"], }); } diff --git a/site/src/scripts/techapi.js b/site/src/scripts/techapi.js index 78502724482c..09239e4a22be 100644 --- a/site/src/scripts/techapi.js +++ b/site/src/scripts/techapi.js @@ -179,10 +179,12 @@ async function loadList(resource) { (function stats() { const el = document.getElementById("stats"); if (!el) return; - const order = ["games", "software", "smartphones", "laptops", "tablets", "monitors", "watches", "pdas", "socs", "gpus", "cpus", "brands"]; + const order = ["games", "software", "websites", "smartphones", "laptops", "tablets", "monitors", "watches", "pdas", "device-catalog", "socs", "gpus", "cpus", "brands"]; const label = { games: "games", software: "software", + websites: "websites", + "device-catalog": "device catalog", smartphones: "phones", laptops: "laptops", tablets: "tablets", @@ -244,10 +246,12 @@ function countUp(node, target, opts = {}) { const listEl = document.getElementById("history-list"); if (!totalEl || !countsEl || !chartEl || !listEl) return; - const order = ["games", "software", "smartphones", "laptops", "tablets", "monitors", "watches", "pdas", "socs", "gpus", "cpus", "brands"]; + const order = ["games", "software", "websites", "smartphones", "laptops", "tablets", "monitors", "watches", "pdas", "device-catalog", "socs", "gpus", "cpus", "brands"]; const label = { games: "Games", software: "Software", + websites: "Websites", + "device-catalog": "Device catalog", smartphones: "Phones", laptops: "Laptops", tablets: "Tablets", @@ -263,6 +267,8 @@ function countUp(node, target, opts = {}) { const shortLabel = { games: "games", software: "software", + websites: "websites", + "device-catalog": "device catalog", smartphones: "phones", laptops: "laptops", tablets: "tablets", @@ -295,7 +301,7 @@ function countUp(node, target, opts = {}) { const total = rows.reduce((sum, row) => sum + row.count, 0); totalEl.textContent = total.toLocaleString() + " records"; countsEl.innerHTML = rows.map((row) => - `