v2.9.0August 2026·Release notes

Closed-Beta Waitlist, Exam Prediction on Pro & the Reliability Sweep

A minor release that sets the stage for public launch. Claritii now runs a proper closed-beta waitlist with a full-screen landing-page signup experience and confirmation emails, Exam Prediction moves to Pro where it always belonged, and per-subject difficulty settings finally drive the roadmap planner. Under the hood this is the most reliability-focused release yet: rate limiting actually enforces itself in production for the first time, 40+ silent error paths now surface to the user, edge functions were security-hardened, and 75+ fixes ship across the entire stack.

Share:X (Twitter)

New Features

Closed-Beta WaitlistThe landing page now greets visitors with a full-screen waitlist overlay — pitch copy, email capture, success state, and ESC/backdrop dismissal, shown once per session. Every 'Log in' and 'Get started' call-to-action across the marketing pages routes through it. Joining upserts into a dedicated waitlist table (idempotent on email) and triggers a branded confirmation email via a new edge function. Owner login is preserved so the app stays testable during the closed beta.
Exam Prediction Now on ProThe AI exam prediction engine was gated to Max, but the feature spec, the features page, and the pricing copy all describe it as a Pro feature. Pro subscribers no longer hit an 'Upgrade to Max' wall — tier gating, upgrade copy, and analytics messaging updated everywhere to match.
Per-Subject Difficulty Now Drives the RoadmapThe difficulty slider in each subject's AI Tutor settings was written to the profile but never read — the roadmap planner ignored it entirely. The AI session plan now receives per-subject difficulty and applies a decision rule: subjects rated 4–5 get more study time and active-retrieval methods; subjects rated 1–2 get faster foundation-building methods.

Improvements

Rate Limiting Actually EnforcedA response-envelope bug in the atomic-counter RPC meant every rate-limit check read the window as empty — abuse, load, and quota limits never triggered in production. Fixed and verified end-to-end, with a new migration so capped counter keys reset atomically once their window expires. This is the first release where the limits you configure are real limits.
Resend Webhook Signature Verification FixedSvix signature verification always failed — base64 signature parts were hex-parsed, the signing secret was encoded wrongly, and there was no timestamp check — so email open/click events were never recorded. Now verifies each part correctly with 5-minute freshness and replay protection.
Edge Function Security Hardeningsend-release-announcement now requires the actual service-role bearer token (any Bearer string previously passed and could broadcast); marketing email jobs are claimed atomically with a status guard so overlapping cron invocations can't double-broadcast; and Stripe Customer Portal plan changes now resolve the tier correctly via price lookup instead of silently skipping the update.
Account & Auth FixesDelete account now removes the auth row first — a failed deletion leaves the account fully intact and retryable instead of a half-deleted broken login. Verify-email 'Continue' works without an existing session, and email verification/password reset now work for users beyond the first 50 (pagination fix in auth-actions).
Onboarding Quick Start No Longer DuplicatesThe Quick Start flow called the save path twice, writing every subject and schedule block twice. Now a single write per mount, guarded against double-fires, with user-facing errors on failure.
Spaced Repetition & Mastery IntegrityReview results that failed to save no longer silently reset your cards' intervals (the read path is fail-closed now), and the Review page feeds spaced-repetition ratings into topic mastery — reviewing cards genuinely moves your mastery scores and roadmap signals.
Roadmap AI Plan Matched Per SubjectThe AI's per-day plan was consumed positionally, so subject B's chosen topic could land on subject A's sessions. Plans are now matched by date/subject/assessment key, and roadmap regeneration no longer truncates completed history at 1000 rows.
No More Orphans on DeleteDeleting a subject or assessment now cleans up material chunks, generated content, and materials. Chunk storage writes inserts-first, so a failed insert can never leave your assessment's knowledge base empty.
LaTeX Instructions Actually Reach the AIThe AI's LaTeX teaching text was garbled — JavaScript string escaping ate the backslashes, so the model saw corrupted instructions like control characters instead of TeX. Now double-escaped correctly, so the model is genuinely taught $...$ / $$...$$ formatting for equations, chemical formulas, Greek letters, and scientific notation.
Silent Failure Sweep — 40+ SitesSettings saves, onboarding inserts, dashboard dismissals, friend search, Google login, email changes, session completion, marketing checks, and dozens of other handlers that swallowed errors now log and surface them to the user instead of silently doing nothing.
Crash Guards & UI FixesThe library page no longer crashes on orphaned content rows; diagram embeddings (PostgREST stringified vectors) now parse correctly before similarity search; warning/accent theme colors support opacity modifiers; session-type icons render their descriptions; blurting mode clears stale feedback between questions.
Repo & Engineering HygieneCRLF → LF line endings normalized repo-wide with .gitattributes enforcing the policy going forward, TypeScript 'any' cleanups across cron/ingest/audit, unused parameters removed, and 20+ DEV-only error logs now record in production.

We use cookies to improve your experience and analyze usage. Learn more