Skip to content

Releases: miantiao-me/Sink

v0.3.0

v0.3.0 Pre-release
Pre-release

Choose a tag to compare

@miantiao-me miantiao-me released this 18 Jul 16:53

⚠️ BREAKING CHANGES

Sink v0.3.0 moves authoritative link storage from Cloudflare KV to D1. Existing deployments must update their deployment configuration before upgrading.

Required deployment changes

Update your deployment configuration before upgrading:

  1. After deployment, sign in and open Dashboard → Links to complete the KV-to-D1 migration.

Most link management APIs return HTTP 423 until migration completes. Existing short links continue working during migration when the original KV namespace remains bound.


Highlights

  • D1-backed link storage with safe KV migration
  • Link tags, filters, sorting, and improved search
  • Improved dashboard, realtime analytics, and backups
  • Cloudflare Access user and service-token identities
  • Updated documentation and development dependencies

Full Changelog: v0.2.11...v0.3.0

v0.2.11

Choose a tag to compare

@miantiao-me miantiao-me released this 12 Jul 11:48

What's Changed

✨ New Features

  • Cloudflare Access Authentication - Added optional Cloudflare Access authentication as an alternative to NUXT_SITE_TOKEN, including JWT verification, CSRF protection, and Access-aware logout.
  • Click Webhooks - Added best-effort link.clicked webhooks with Dub-style payloads and optional Standard Webhooks-compatible HMAC signatures. Configure using NUXT_WEBHOOK_URL and NUXT_WEBHOOK_SECRET.
  • Duplicate URL Detection - Added real-time duplicate destination URL detection to the link editor, with direct links to existing matching links.

💅 Improvements

  • Configurable Redirect Caching - Added NUXT_REDIRECT_NO_STORE. Set it to true to prevent browsers and CDNs from caching short-link redirects. It defaults to false.
  • Improved iframe cloaking compatibility for navigation and external redirects.
  • Improved R2 binding validation and error messages for image uploads and backups.
  • Added thinner, theme-aware scrollbar styles.
  • Improved image upload errors by displaying the specific failure reason.

🌍 Localization

🐛 Bug Fixes

  • fix: prevent browsers from caching link redirects by @n-WN in #302
  • Fixed cloaked link rendering on mobile devices by adding the viewport meta tag.
  • Fixed globe texture width calculation and added country index bounds checking.

New Contributors

Full Changelog: v0.2.10...v0.2.11

v0.2.10

Choose a tag to compare

@miantiao-me miantiao-me released this 12 May 11:59

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/check for 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/630 aspect 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

v0.2.9

Choose a tag to compare

@miantiao-me miantiao-me released this 10 May 03:21

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 clientTimezone regex 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_PROMPT option.

New Contributors

v0.2.8

Choose a tag to compare

@miantiao-me miantiao-me released this 12 Apr 08:26

What's Changed

  • feat: enhance AI slug generation with page content, allowing the AI helper to use page markdown/HTML context for more relevant slug suggestions
  • fix: strip markdown code blocks from AI responses before JSON parsing for more reliable AI slug generation
  • feat: add a UTM parameter builder to the link editor with live preview, clear/apply actions, and localized copy
  • feat: integrate NumberFlow for animated GitHub stars and forks across the homepage and header

Full Changelog: v0.2.7...v0.2.8

v0.2.7

Choose a tag to compare

@miantiao-me miantiao-me released this 01 Mar 11:02

What's Changed

  • feat(i18n): add Portuguese (PT) and Portuguese (BR) translations by @Rodaviva29 in #256
  • feat(i18n): add Italian (it-IT) language support by @MineraleYT in #260
  • feat(migrate): add manual backup button to R2 by @MineraleYT in #255
  • fix: allow removing a password from a link on edit by @Copilot in #258
  • feat: add unsafe link warning and detection by @miantiao-me
  • feat: add i18n support to redirect pages by @miantiao-me
  • feat(i18n): add current version to update message by @miantiao-me
  • fix: handle optional fields removal in link editing by @miantiao-me
  • fix: add error prop to error page component by @miantiao-me
  • fix(i18n): correct phrasing in image upload and import instructions by @Rodaviva29

New Contributors

  • @Rodaviva29 made their first contribution in #256
  • @Copilot made their first contribution in #258

Full Changelog: v0.2.6...v0.2.7

v0.2.6

Choose a tag to compare

@miantiao-me miantiao-me released this 09 Feb 12:58

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 notFoundRedirect by 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

v0.2.5

Choose a tag to compare

@miantiao-me miantiao-me released this 08 Feb 12:40

⚡ Performance

  • Throttled Analytics: Implemented a 500ms throttle on analytics data fetching to significantly reduce API calls during rapid filter or date range changes.

🛠️ Refactoring

  • Teleport Pattern: Migrated header actions to Vue's Teleport pattern, allowing each page to manage its own controls and reducing component coupling.
  • Simplified Layout: Replaced complex CSS-based responsive logic with VueUse's useMediaQuery for cleaner conditional rendering.

🐞 Fixes & Improvements

  • Password Manager Support: Improved login form compatibility with password managers by adding proper autocomplete attributes and hidden username fields.
  • URL Sanitization: Automatically strip query parameters from URLs before storage to ensure cleaner metadata.
  • Error Handling: Enhanced redirect middleware to explicitly throw a 404 error when a link is not found.

📖 Documentation

  • Worker Deployment: Added configuration notes for the NUXT_HOME_URL environment variable in Worker deployment guides.

Full Changelog: v0.2.4...v0.2.5

v0.2.4

Choose a tag to compare

@miantiao-me miantiao-me released this 07 Feb 10:22

🌏 Visualization Engine Overhaul

  • WebGL Migration: Fully migrated the Globe component to WebGL, significantly improving rendering performance and interaction smoothness.
  • Rendering Optimization: Optimized the render loop and fixed synchronization issues with arcs and ripples during globe rotation.

🏗 Architecture Upgrades

  • Modularization: Extracted the core Dashboard logic into a standalone Nuxt Layer for better reusability.
  • Refactoring: Migrated to Nuxt path aliases and reorganized the structure of composables and type definitions.

📚 Documentation & Specs

  • OpenAPI: Added OpenAPI specifications for the project.
  • AI Integration: Added an "AI Skills" section to the documentation and updated the MCP configuration.

Full Changelog: v0.2.3...v0.2.4

v0.2.3

Choose a tag to compare

@miantiao-me miantiao-me released this 03 Feb 12:39

What's Changed

  • New Feature: Device-based Redirection 📱
    Added the ability to set different destination URLs based on the user's device type (e.g., iOS, Android, or Desktop). Perfect for app download links or device-specific campaigns.

  • New Feature: OpenGraph (OG) Customization 🖼️
    You can now customize the OpenGraph title, description, and image for each short link, ensuring your shared links look professional on social media.

  • New Feature: Heatmap Analytics 🔥
    Introduced a visual Heatmap to track click distribution over time, helping you identify peak engagement periods at a glance.

  • Localization & I18n 🌐
    Revise and improve the Traditional Chinese translation by @ting1197 in #227

  • Enhancements & Bug Fixes 🛠️

    • Optimized the dashboard UI for better performance on mobile.
    • Fixed issues related to slug validation and redirect logic.
    • Improved Cloudflare Workers deployment configuration.

New Contributors

Full Changelog: v0.2.2...v0.2.3