From 21208d50ab3a4cffb6f206ad09d7405bc36b6542 Mon Sep 17 00:00:00 2001 From: CLU Date: Thu, 29 Oct 2026 17:24:33 -0500 Subject: [PATCH] feat: the rating badge, served from our domain and regenerated from the record Christian: 'I want them to put the BigTech.Sucks rating badge on their site. It should be marketing for them.' A sticker anyone can copy is worthless, so it is not a sticker. - badge/.svg is generated from the assessment row on every build. Score, grade and date are never typed by a human. - Served from bigtech.sucks. A copy pasted onto a vendor's own server is not a badge and its link will not resolve. The domain is the signature. - Regenerated every build, so improving earns a better badge without asking and regressing loses it without warning. - The SVG carries the record id, version and method in a comment, so a real badge can be traced back to one assessment. badges.html publishes the rules: free forever, only rated products, no badge as a favour, and misuse called out publicly. Free matters, because charging for it would make it worthless to both sides: marketing for the vendor, receipts for their customer. Also rewrote the write pass to emit report + badge per assessment in one loop, so they can never drift apart. --- packages/core/db/render.mjs | 86 +++++++++++++++- packages/core/src/data/generated/catalog.json | 32 +++--- packages/core/src/data/generated/catalog.ts | 32 +++--- packages/web/public/badge/signal-desktop.svg | 9 ++ packages/web/public/badges.html | 99 +++++++++++++++++++ packages/web/public/catalog.json | 32 +++--- packages/web/public/index.html | 1 + packages/web/public/method.html | 1 + packages/web/public/oath.json | 4 +- .../web/public/report/signal-desktop.html | 1 + 10 files changed, 246 insertions(+), 51 deletions(-) create mode 100644 packages/web/public/badge/signal-desktop.svg create mode 100644 packages/web/public/badges.html diff --git a/packages/core/db/render.mjs b/packages/core/db/render.mjs index ceed840..1e57241 100644 --- a/packages/core/db/render.mjs +++ b/packages/core/db/render.mjs @@ -65,6 +65,7 @@ footer{margin-top:5rem;padding-top:1.5rem;border-top:1px solid var(--rule);color const NAV = `