What’s New — May 1 – 12, 2026

New

  • Realtime alert emails use a single body block — Email events render through one cleanly assembled body instead of stitched-together slots, producing more consistent formatting.

Improved

  • Daily sync skips plugins with no changelog file — Plugins flagged as having no dedicated changelog are no longer retried on every sync, cutting wasted work and ops noise.
  • Daily sync repair pass deduplicates by slug — The repair pass no longer attempts the same plugin twice in one run.
  • Changelog parser accepts both header styles — Plugins using ## Changelog (Markdown-style) headers are now detected alongside the standard format.
  • Daily-sync holds back last-updated date on SVN fetch failure — When the readme SVN fetch fails, the plugin’s last_updated timestamp is preserved instead of being overwritten with a wrong value.
  • Quieter daily-digest framing for N=1 events — When the digest contains only one event, the subject and body framing now agree instead of saying “1 update” with multi-event copy.
  • Ops report renders repair-budget warning correctly — The repair-budget hit warning now displays even when no null hashes were found.

Fixed

  • Daily sync no longer crashes during its repair pass — A fault that broke daily sync runs is resolved.
  • Carry-forward lookups now read each column independently — A missing piece of the change-detection setup was restored, so per-column repairs work as designed.