Changelog

What changed, and when.

Notable changes to scammercasefile.com and the WhatsApp Web browser extension, newest first.

  • Rebuilt the Markdown page twins ("this URL plus .md") from the ground up: instead of 17 hand-maintained `.md` routes that each re-described their page (and had drifted far behind it — /index.md carried 62 words of a 1,700-word page), a single middleware in the Worker entry now renders the page's own HTML in-process and converts it to Markdown (rehype-parse → rehype-remark → remark-stringify). Every page — including ones added in the future — gets a twin that says exactly what the page says, FAQ, cited statistics, and report tables included; a page that 404s serves its twin as a 404 too.
  • Completed /llms-full.txt's URL-structure section: it billed itself as the complete reference but omitted six pages (/contact, /extension, /privacy, /terms, /stack, /changelog) and listed /agents only in passing — all seven now have one-line entries, matching the site's actual route list.
  • Added cited sources and concrete figures to the four remaining pages a GEO audit flagged as citation-free: /report and /contact now cite the FBI IC3 2025 totals (with /contact gaining a "lost money? contact these instead" section linking reportfraud.ftc.gov and ic3.gov, plus the official-agencies directory); /extension pairs those totals with the FTC's WhatsApp finding; /mcp and /agents quote the Model Context Protocol's own definition (verified verbatim against modelcontextprotocol.io), with /agents also quoting the llms.txt proposal and linking the WebMCP draft and RFC 9309.
  • Corrected stale copy on /agents claiming the MCP server exposes "two read-only tools" — it has grown to 6 (search, lookup, by-country, by-type, trends, recent); both the surface directory and the new at-a-glance numbers line now say 6.
  • Unified the site's schema.org identity into one entity: the Organization node is now named "Scammer Case File" (matching the domain and the footer byline) with "WhatsApp Scammer Tracker" kept as alternateName, and every page's JSON-LD author now carries the `@id` of that node — so parsers merge all author references into a single rich entity (logo, sameAs) instead of seeing two differently-named organizations. The sitewide WebSite schema also gained the real 2026-07-20 launch date as datePublished. Page titles and the site name are unchanged.
  • Added a cited "official numbers" section to the scam-type directory (`/scam-type`) — the FBI IC3 2025 headline totals (1,008,597 complaints, $20.9 billion lost, +26% over 2024) plus per-category loss/complaint figures for the five biggest types on file, each linking to its own page — and to the About page, pairing the same IC3 totals with the FTC's finding that WhatsApp ranked second among social platforms where reported scam losses started. Both pages' markdown mirrors (`/scam-type.md`, `/about.md`) carry the same cited figures.
  • Grew the server-rendered reports table from 10 to 25 rows on the home, country, and scam-type pages — AI/search crawlers (which don't run JavaScript) now see 2.5× the report data in the raw HTML. The static table body is height-capped to match the interactive table's scroll viewport, so the swap after hydration doesn't shift the layout.
  • Added a visible "maintained by Scammer Case File" byline to the footer, linking to the About page — the on-page attribution now matches the author entity every page's JSON-LD already credits, closing a GEO-audit gap where schema had an author but the page showed none.
  • Wrapped the home page's FBI IC3 report citation in a proper `<cite>` element, matching how the FTC citation next to it was already marked up.
  • Added "Extortion / Threats" as a 16th scam-type category — threats to leak private chats, data, or contacts, or of violence or false criminal charges, distinct from the existing Sextortion/Blackmail category (no intimate-image angle). Backed by the FBI IC3 2025 report's single largest crime type by complaint count (89,129).
  • Re-pulled the FBI IC3 2025 Internet Crime Report's own data tables (not just its prose) and added three-year (2023-2025) complaint-count and loss trend figures for every cited scam type, so citations can show a real rising/falling/flat trend instead of a single-year snapshot.
  • Added citable IC3 figures for two scam types that previously rendered without one: OTP/Verification Code Scam (mapped to IC3's "SIM Swap" category) and "Other" (mapped to IC3's own "Other" line item).
  • Added a `deleted_at` column to `scammer_reports` (migration 0006) so a bad or spam report can be hidden without a hard, irreversible `DELETE` — every read path (site, sitemap, MCP tools) now filters it out automatically.
  • Bumped the WhatsApp Web browser extension to v0.8.1 to ship the new "Extortion / Threats" scam-type option in its report-prefill dropdown, and refreshed the downloadable .zip on the extension page to match.
  • Fixed five `target="_blank"` citation links (FTC, IC3, UNODC) that only had `rel="noreferrer"` instead of the site-wide `rel="nofollow noopener noreferrer"` convention, plus the Contact page's GitHub Issues link, which was missing `nofollow`.
  • Added author + last-updated JSON-LD to every page that was missing it (Home, Country, Scam Type, Contact, Trends, Extension, About, Agents, Changelog, MCP, Report, Tech Stack, Privacy, Terms), following a GEO audit that flagged the site-wide gap. Real dates only — no page got a fabricated timestamp. Also fixed the Trends page's Dataset schema crediting an ad-hoc "WhatsApp Scammer Tracker" org name instead of the shared author entity every other page uses.
  • Added `datePublished` alongside `dateModified` on every page's JSON-LD, sourced from each file's real first-shipped date (`git log --follow`) rather than one blanket launch-day stamp — the "Extortion / Threats" scam-type page correctly gets 2026-07-25 (when that category was added) instead of the original 15 types' 2026-07-20 launch date.
  • Added real, cited official-numbers blockquotes to three page types that were missing them: every case file (`/scammer/{number}`) now cites the IC3 figure for its own dominant scam type; the Country directory (`/country`) cites IC3's global 2025 total; every Country page within East Asia, South-East Asia, Australia, or New Zealand cites the UNODC regional scam-center figure. Extracted the shared IC3-quote block into `Ic3ScamTypeQuote` so the case-file and scam-type pages render the exact same cited numbers instead of two copies that could drift apart.
  • Fixed the reports table silently clipping the Scam Type/Date/Notes columns on narrow (mobile) screens instead of letting you scroll to them: the table's own width was clamped to its scroll container's width, so virtualized body rows -- absolutely positioned and clipped with `overflow: hidden` -- never actually extended far enough to reveal the later columns no matter how far you scrolled, even though the header looked like it had more to show.
  • Redesigned the reports table's pagination controls below 1024px into three clear rows -- page-navigation buttons (two pinned each side), the page count (centered), and the page-size selector (full width) -- instead of a single row that wrapped unpredictably and left controls overlapping or cut off.

  • Added an "Official Resources" component (`OfficialSection`) linking out to 12 government and intergovernmental fraud authorities across the US, UK, EU, Australia, Canada, New Zealand, India, Singapore, and Hong Kong, plus Interpol and econsumer.gov for cross-border complaints.
  • The number, country, and scam-type case-file pages, plus the Trends page, now all render this shared component instead of each having its own one-off citation text — the country page also prioritizes that country's own agency at the top of the list.
  • External citation links site-wide now consistently use `rel="nofollow noopener noreferrer"` for both crawl-weight and tabnabbing-safety hygiene.
  • The "Been targeted by a scammer?" report prompt now appears on every page (it was previously missing from the Privacy, Terms, Contact, and Changelog pages).
  • Removed the long-unused /report/embed layout branch from the site shell.
  • Dependency upgrades (React, TanStack Query/Virtual, Wrangler, Cloudflare Vite plugin, Biome, takumi-js, and others).
  • Fixed the FAQ block's default prop values so React Compiler can memoize it — a destructured-parameter default pattern was silently opting it out of compilation.
  • Cut the shared server bundle by lazy-loading everything that only one route needs: the OG-image renderer (takumi-js, ~3.7MB Wasm) and the Markdown toolchain used by every `.md` page twin now load only when those routes are actually hit, instead of on every request.
  • Removed three unused master/preview favicon images (~1.9MB) that shipped in every deploy without being referenced anywhere.
  • Fixed a brief /og.png outage: fetching the OG image's fonts from inside the Worker via a plain same-zone fetch() could silently return the 404 page instead of font data, since that isn't guaranteed to reach the static-asset layer without an explicit binding. Switched to Cloudflare's purpose-built `env.ASSETS` binding (wrangler.jsonc's `assets.binding`), which reaches the asset store directly with no real network hop.
  • The official-resources citation block now also appears on the homepage, the country and scam-type directories, the About page, and the Report page.
  • Rewrote 11 page meta descriptions to the 140-160 character range search engines display in full, and consolidated the site’s head-building helpers into a single `src/lib/head.ts` (previously split across `og-image.ts` and `seo.ts`), split into focused `buildMeta`/`buildOgTags`/`buildOgImageUrl`/`buildLinks` pieces.
  • Removed the `meta()`/`seo()` composer functions from `src/lib/head.ts` entirely -- every route now builds its own `meta`/`links`/`scripts` head fields directly from `buildMeta`/`buildOgTags`/`buildLinks`/`buildJsonLdScript`/`buildRobotsNoindex`, so each page's head tags are visible at the call site instead of behind a shared wrapper.
  • Split the per-scam-type explainer text into a separate `SCAM_TYPE_META_DESCRIPTIONS` map (140-160 characters each) so `<meta name="description">` on scam type pages no longer reuses the longer explainer written for the page body and FAQ answer.
  • Added an FAQ section and FAQPage structured data to the Agents, Contact, Tech Stack, and Changelog pages, and wrapped the Contact page's email/GitHub links in a semantic `<address>` element.

  • Moved the Tech Stack link out of the footer's "More" column and into the resource links row alongside privacy, terms, and the sitemap.
  • Added a Contact page — email or GitHub Issues, linked from the footer.
  • Added citations to the Trends and Scam Type pages, pointing to the FBI's Internet Crime Complaint Center (IC3) and the FTC for official fraud statistics.
  • Added structured data improvements across the site: a linked GitHub profile for the publishing organization, authorship and last-updated metadata on case file, country, and scam-type pages, and a machine-readable listing for the browser extension (version, price, download link).
  • Redesigned the browser extension's chat-header lookup badge with five distinct states — checking, reports found, no reports, lookup failed, and unsupported chat (e.g. groups). Checking now visibly disables the badge instead of looking clickable, and a short animation marks the moment a result arrives.
  • Fixed the 404 page's "Back to home" button shrinking to fit its text on wide screens instead of spanning the full width.

  • Fixed a bug where a quoted reply in WhatsApp could get the reporter's own words attributed to the counterpart in the report notes.
  • Fixed report-notes extraction so only the counterpart's messages are captured — the reporter's own messages could previously leak in.
  • The extension now auto-scrolls a chat to load its full history before filling in report notes, instead of only what was already on screen.
  • Report notes can now hold a full conversation — the length limit is aligned with the database's real per-field capacity instead of an arbitrary cap.
  • The extension page now offers a direct .zip download and step-by-step manual install instructions while the Chrome Web Store listing is in review.
  • Fixed a layout bug leaving a large blank column on the Terms and Privacy pages on wide screens.
  • Launched the WhatsApp Web browser extension: a chat-header badge that checks the open number against the case file, and a one-click report button with the conversation pre-filled.
  • Added Privacy Policy and Terms of Service pages.
  • Expanded the scam-type taxonomy to 15 categories and reclassified existing reports accordingly.
  • Rewrote every page's FAQ around real user questions, researched from Reddit and Google's "People also ask".
  • Typing a full phone number into the homepage search now jumps straight to that number's case file.
  • Hardened the report-submission path and added a database index for faster, newest-first sorting.

  • Fixed a bug where copying a phone number out of WhatsApp carried invisible bidi-control characters into report submissions.
  • Dependency upgrades and expanded automated test coverage.

  • Initial launch: search and browse scam reports by phone number, country, and scam type.
  • Added a Markdown twin of every page for AI agents and LLMs, plus an MCP server exposing the same data as tools.
  • Integrated Cloudflare Turnstile human verification on the report form.
  • Added sitemap.xml, robots.txt, and llms.txt.

Frequently asked questions

How often is the changelog updated?

Whenever a notable fix, feature, or dependency update ships to production -- not on a fixed schedule.

Where can I see the full commit history, not just the summary?

On GitHub at github.com/sky-flux/scammercasefile. This page is a curated, human-readable summary, not a mirror of every commit message.

Is the WhatsApp Web browser extension on the Chrome Web Store yet?

It's pending Chrome Web Store review. Until it's approved, install it manually from the .zip download on the extension page.

Been targeted by a scammer?

File a report with the number, name, and what happened — it's published immediately and warns the next person who searches.

Report a scammer