Version 1.2.1
July 26, 2026
Fixed
- "Broken Links Found" no longer overstates the total. It counted each check rather than each stored record, so a dead URL linked more than once on the same page was counted more than once
- The scan no longer counts and queues entries it cannot crawl. Nested Matrix-block entries and entries in sections without URL formats have no URL of their own, so they inflated the reported total and padded the queue with work that was only skipped
Changed
- The "URLs Scanned" scan statistic is now labelled "Pages Scanned", which is what it has always counted — the pages crawled, not the individual links checked on them
Version 1.2.0
July 5, 2026
Added
- Ignore list: skip known-noisy URLs during scans. Add patterns on the new Ignore List page, or click "Ignore" next to a result to silence that domain and remove its existing records (#1 — thanks @john-henry!)
Version 1.1.1
July 1, 2026
Fixed
- Broken-link records are now pruned when a page is recrawled and a previously-broken link is fixed, instead of persisting in the report indefinitely until "Clear All Data" is used
Version 1.1.0
June 26, 2026
Added
- A
Manage broken linksuser permission, now required to view the Control Panel page and run scans - Foreign key from broken-link rows to their entry, so records are cleared automatically when an entry is deleted
Removed
- JSON export — CSV covers the broken-link reporting use case
- The unused "Field" column from the results table and export (reserved for a future release)
- The unused base-url scan option (the console
--base-urlflag and its plumbing); scans always crawl each entry's own URL
Fixed
- SSRF hardening: outbound link checks now refuse requests that resolve to private, loopback, link-local, or reserved IP ranges (the site's own hosts are still allowed), and redirects are validated per hop
- Scan completion is now tracked with an atomic per-scan batch counter, so scans with multiple batches complete reliably under concurrent queue workers instead of finishing early
- Broken-link totals are incremented atomically to prevent lost updates across concurrent workers
- Link extraction now uses a real HTML parser (
DOMDocument) instead of a regex, so single-quoted, unquoted, and otherwise non-standardhrefs are no longer missed - Clearing data while a scan is in progress is now blocked, preventing a running job from resurrecting a deleted scan record
Security
- Control Panel and export endpoints now require the
Manage broken linkspermission - External links in the results table and widget render with
rel="noopener noreferrer"and only as links when using anhttp(s)scheme
Version 1.0.0
May 22, 2025
Added
- Initial release
- Background queue-based scanning with configurable batch size
- Incremental scans (only re-scans entries updated since the last scan)
- Force full scan option
- Dashboard widget showing broken link summary
- CSV and JSON export
- Console commands (
scan,status,clear-data)