What's Changed
✨ New Features
- Password Protection for Short Links - Secure short links with a password; visitors must enter the correct password to access the destination URL
- Link Cloaking - Masks destination URLs by displaying the short link domain in the browser address bar, loading the target page in a full-screen iframe
- Per-Link Query Parameter Control - Override global query parameter settings for individual links with
redirectWithQuery - Custom 404 Redirect - Redirect to a custom page when a slug is not found @Realitaa in #239
- Visitor Statistics on Link Cards - Display visit count, visitor count, and referrer count directly on each link card
- Version Update Notification - Shows a notification in the sidebar when a new release is available, linking to GitHub Releases
- Duplicate Issue Detection Workflow - GitHub Actions workflow using AI to automatically identify and flag duplicate issues
⚡ Performance
- Globe Component Optimization - Prebuilds sphere geometry as binary asset, dynamically scales texture resolution based on container size, supports OffscreenCanvas for background rendering
🐛 Bug Fixes
- Fixed filters sync with URL parameters to prevent UI and URL state desync
- Fixed date range restoration logic to prioritize custom time ranges over presets
- Fixed infinite redirect loop when on the not-found redirect path
- Disabled
notFoundRedirectby default to prevent unexpected behavior - Added cache headers for static geographic data files
♻️ Refactoring
- Centralized state management in stores, removing URL sync logic from components
- Extracted meta tag generation into reusable helper functions
- Filters component now receives filters as props for better separation of concerns
📝 Documentation
- Updated API docs with cloaking, query parameter handling, and password protection options
- Updated FAQs with link cloaking usage instructions and limitations
New Contributors
Full Changelog: v0.2.5...v0.2.6