What's Changed
✨ New Features
- Geo-Routing Support - Route visitors to country-specific destination URLs based on Cloudflare country detection. Device routing still takes precedence when matched. by @MineraleYT in #288
- AI-powered OpenGraph Metadata Generation - Generate OpenGraph titles and descriptions from page content directly in the link editor, with locale-aware output. by @MineraleYT in #289
- Access Analytics Export - Export access analytics as CSV from the dashboard or via
GET /api/stats/export. - Improved Password Handling - Link passwords are now masked in exports and stored/processed with safer hashing behavior.
🌍 Localization
- Indonesian Localization - Added Indonesian (
id-ID) language support for the application. by @dyzulk in #276 - Improved localization coverage across dashboard and redirect pages.
🐛 Bug Fixes
- Fixed AI response parsing with more robust JSON extraction, fallback handling, and disabled thinking mode for AI chat responses. by @MineraleYT in #289
- Fixed Chrome iOS (
CriOS) device redirection detection. - Updated
clientTimezoneregex to support additional characters and added tests for analytics endpoints. Fixed #277 by @c-c-epr in #281
🧪 Tests & Reliability
- Added tests for backup, link migration, password handling, redirect behavior, and analytics endpoints.
- Improved import/export handling for geo routing and optional link fields.
📝 Documentation
- Updated API documentation for smart routing, password-protected links, unsafe-link handling, AI OpenGraph generation, and analytics CSV export.
- Updated configuration docs for the new
NUXT_AI_OG_PROMPToption.
New Contributors
- @dyzulk made their first contribution in #276
Full Changelog: v0.2.8...v0.2.9