v2.24.0 — pre-launch audit remediation
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
mergeStatscalls accumulatedprimaryReviewsSubmittedCount, 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
EXPIREpermanently 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.