Geo-Routing Support: route visitors to country-specific destination URLs using Cloudflare country detection (device routing still takes precedence)
AI-powered OpenGraph Metadata Generation with locale‑aware output
Access Analytics Export as CSV via dashboard or GET /api/stats/export
Full changelog
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 https://github.com/miantiao-me/Sink/pull/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 https://github.com/miantiao-me/Sink/pull/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 https://github.com/miantiao-me/Sink/pull/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 https://github.com/miantiao-me/Sink/pull/289
Updated clientTimezone regex to support additional characters and added tests for analytics endpoints. Fixed #277 by @c-c-epr in https://github.com/miantiao-me/Sink/pull/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_PROMPT option.
New Contributors
@dyzulk made their first contribution in https://github.com/miantiao-me/Sink/pull/276 Full Changelog: https://github.com/miantiao-me/Sink/compare/v0.2.8...v0.2.9