Skip to content

v2.24.0 — pre-launch audit remediation

Choose a tag to compare

@juan294 juan294 released this 27 Aug 20:11
· 762 commits to develop since this release
a1394e8

Resolves 73 findings from the pre-launch audit across two remediation waves, including both launch-blockers. Adds the WebMCP tool surface, Creator Studio demo mode, and badge localization.

⚠️ Breaking

CLI tokens now expire after 10 days instead of 90. Every existing token invalidates on its next use — run chapa login again to re-authorize.

This bounds the blast radius of a phished device-authorization approval, which previously granted three months of unrevocable write access to another user's scoring inputs.

Launch-blockers fixed

  • Operational alerts were inert in production. All nine P1/P2 signals posted to an unset webhook, and six had no second delivery path. They now fall back to email via the existing Resend integration.
  • Privacy and Terms were unreachable outside the landing page, including from the share page — the surface users actually act on.

Notable correctness fixes

  • Multi-platform users were misclassified. Chained mergeStats calls accumulated primaryReviewsSubmittedCount, so for anyone with two or more linked sources, non-GitHub reviews drove the solo-vs-collaborative classification that gates the Quality dimension and the Quality Champion archetype.
  • A scope-blinded fetch could overwrite private-inclusive cache data via the rejection path, collapsing the Delivery dimension for up to six hours.
  • A lost Redis EXPIRE permanently locked out fail-closed routes including /api/refresh, which is keyed per handle.

Added

  • WebMCP read-only tools on the share, verify and Studio pages (flag-gated)
  • Creator Studio demo mode (flag-gated)
  • Badge localization: /u/{handle}/badge.svg?lang=es|en
  • Site-wide footer; route error boundaries now report to telemetry

Accessibility

Hero CTAs, navigation labels and verification text now meet WCAG AA contrast; touch targets meet the 44px minimum; the activity timeline no longer exposes ~90 tab stops; the badge respects prefers-reduced-motion.

Full detail in CHANGELOG.md.