What's Changed
✨ New Features
- Link Check Dashboard - Added a new dashboard page to check whether existing destination URLs are reachable, with configurable timeout and batch size, progress tracking, result statistics, stop/reload/clear actions, and status-code filters.
- Link Check API - Added authenticated
POST /api/link/checkfor server-side URL reachability checks, with OpenAPI metadata, timeout handling, response status/duration reporting, and safeguards against localhost/private/reserved IP checks. - Broken Link CSV Export - Export abnormal link check results as CSV, including slug, URL, status, result, error, duration, checked time, and dashboard detail URL.
💅 Improvements
- Improved link editor advanced settings by grouping expiration, password, unsafe-link, cloaking, and query redirect options under Link Settings.
- Added an expiration description to clarify that expired short links are automatically deleted.
- Refined form field semantics using shared field helpers and improved switch field layout.
- Improved OpenGraph image upload preview layout with a fixed
1200/630aspect ratio. - Standardized export filenames with ISO timestamp-based names across link exports, access exports, and import result downloads.
- Reused shared CSV generation for analytics exports and link check exports.
🌍 Localization
- Added Link Check translations across supported locales.
- Renamed Geo Routing labels to Geo Redirect for clearer wording.
- Added localized expiration descriptions.
🐛 Bug Fixes
- Fixed link editing so disabling the unsafe-link flag is submitted explicitly during edits.
- Added submit-time validation for URL, slug, and comment fields in the link editor.
- Improved CSV escaping to reduce spreadsheet formula injection risk.
Full Changelog: v0.2.9...v0.2.10