Signal Timeline now splits into two zones — Recent signals (last 30 days) are shown expanded, and older signals collapse into an accordion. No more endless scroll on active competitors.
Inline diffs in readme and changelog history — History rows now show exactly what changed between versions without leaving the page. You can see the added and removed lines side by side.
Beta signup auto-swaps mailing lists — When a user upgrades from the waitlist into the closed beta, Loops automatically moves them to the right list. No more manual list juggling.
Improved
Forum Intelligence now reads directly from WordPress.org RSS — Forum metrics and playbooks are sourced from the live RSS feed, with health driven by unanswered thread ratios. More accurate, fewer stale numbers.
Signal Timeline surfaces errors instead of going silent — If the timeline query fails, you’ll now see the error. Before, it could silently show an empty state even when data existed.
Fixed
Positive reviews appear under Strengths, not Low-Star — The Signal Timeline was mistakenly routing 4–5 star reviews into the Low-Star Alerts section. They now go where they belong.
First-competitor welcome email sends immediately — When you add your very first competitor, the welcome milestone email now fires right away instead of waiting until the next cron run.
AI change classifier no longer chokes on markdown wrappers — The AI occasionally returned JSON wrapped in code fences, which caused parsing to fail silently. Rivale now strips those wrappers before parsing.
Readme history healed for corrupted newest rows — Some newest-row snapshots were missing content, which left the history UI blank. Those rows are repaired and the UI now falls back gracefully if a row is ever bare again.
Signal Timeline no longer errors on a removed column — A leftover reference to a dropped database column was breaking the timeline query. Cleaned up.
Impersonation no longer leaks admin email into notification settings — When an admin impersonated a user, the email input was pre-filled with the admin’s address. It now shows the impersonated user’s email correctly.