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)