From d6b542fb9deb95c6f42a76fbd397beb6e2852edf Mon Sep 17 00:00:00 2001 From: ccbikai Date: Tue, 18 Mar 2025 22:09:02 +0800 Subject: [PATCH 01/13] chore: 0.1.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4e85a68..1e7d088 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sink", "type": "module", - "version": "0.1.9", + "version": "0.1.10", "private": true, "packageManager": "pnpm@9.15.1", "engines": { From 320f34cf2376de655a47f47b62b98f52e58321d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BE=BF=E7=8E=B9/Eric?= <164621612+Ericxpert@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:09:48 +0000 Subject: [PATCH 02/13] feat: add Traditional Chinese (zh-TW) translation --- i18n/i18n.ts | 7 ++ i18n/locales/zh-TW.json | 170 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 i18n/locales/zh-TW.json diff --git a/i18n/i18n.ts b/i18n/i18n.ts index 52fb640..25570de 100644 --- a/i18n/i18n.ts +++ b/i18n/i18n.ts @@ -7,6 +7,13 @@ const locales: LocaleObject[] = [ name: '简体中文', emoji: '🇨🇳', }, + { + code: 'zh-TW', + file: 'zh-TW.json', + name: '繁體中文', + emoji: '🇹🇼', + }, + { code: 'en-US', file: 'en-US.json', diff --git a/i18n/locales/zh-TW.json b/i18n/locales/zh-TW.json new file mode 100644 index 0000000..ef9ca23 --- /dev/null +++ b/i18n/locales/zh-TW.json @@ -0,0 +1,170 @@ +{ + "common": { + "i18n": "多語言", + "abbreviations": "繁", + "current_language": "繁體中文", + "try_again": "重試", + "cancel": "取消", + "continue": "繼續", + "close": "關閉", + "save": "保存", + "edit": "編輯", + "delete": "刪除", + "delete_success": "刪除成功!", + "search": "搜尋" + }, + "theme": { + "toggle": "切換主题", + "light": "淺色", + "dark": "深色", + "system": "跟隨系統" + }, + "login": { + "title": "登入", + "description": "請輸入站點密碼以登入", + "tips": "提示", + "preview_token": "預覽模式的站點密碼是", + "submit": "登入", + "failed": "登入失敗,請重試" + }, + "logout": { + "title": "登出?", + "confirm": "確定要登出嗎?", + "action": "登出" + }, + "layouts": { + "footer": { + "copyright": "產品來自 HTML.ZONE", + "social": { + "email": "郵箱", + "telegram": "Telegram", + "blog": "部落個", + "twitter": "Twitter", + "mastodon": "Mastodon", + "github": "GitHub" + } + }, + "header": { + "select_language": "選擇語言" + } + }, + "nav": { + "links": "連結", + "analysis": "分析" + }, + "home": { + "features": { + "title": "功能特色", + "subtitle": "簡單而實用的功能", + "url_shortening": { + "title": "URL 縮短", + "description": "將您的 URL 壓縮到最小長度" + }, + "analytics": { + "title": "數據分析", + "description": "監控連結分析病收集有價值的統計數據" + }, + "serverless": { + "title": "免伺服器", + "description": "無需傳統伺服器即可部署" + }, + "customizable_slug": { + "title": "自定義短連結", + "description": "支持自訂連結和大小寫敏感" + }, + "ai_slug": { + "title": "AI 短連結", + "description": "利用 AI 生成短連接" + }, + "link_expiration": { + "title": "短連結過期", + "description": "為您的短連結設置過期日期" + } + }, + "cta": { + "title": "立即部署", + "description": "只需幾個簡單的點擊,您就可以免費開始部署", + "button": "開始部署" + }, + "logos": { + "title": "使用優秀的技術構建" + }, + "twitter": { + "follow": "在 X(Twitter) 上關注我" + } + }, + "dashboard": { + "title": "儀表板", + "visits": "訪問次數", + "views": "瀏覽次數", + "visitors": "訪客人數", + "referers": "引薦來源", + "stats": "的統計", + "custom_date": "自定義日期", + "date": "日期", + "date_range": "日期範圍", + "locations": "地理位置", + "details": "詳細資料", + "name": "名稱", + "count": "數量", + "loading": "載入中", + "no_data": "暫無數據", + "none": "(無)", + "filter_placeholder": "過濾連結...", + "date_picker": { + "today": "今天", + "last_24h": "最近24小時", + "this_week": "本週", + "last_7d": "最近7天", + "this_month": "本月", + "last_30d": "最近30天", + "last_90d": "最近90天", + "custom": "自定義", + "custom_title": "自定義日期", + "single_date": "單個日期", + "date_range": "日期範圍" + }, + "metrics": { + "country": "國家", + "region": "地區", + "city": "城市", + "referer": "來源", + "slug": "短連結", + "language": "語言", + "timezone": "時區", + "device": "設備", + "deviceType": "設備類型", + "os": "操作系統", + "browser": "瀏覽器", + "browserType": "瀏覽器類型" + } + }, + "links": { + "create": "創建連結", + "edit": "編輯連結", + "delete_confirm_title": "確定要刪除嗎?", + "delete_confirm_desc": "此操作無法撤銷。这將從伺服器中永久刪除您的連結。", + "delete_success": "刪除成功!", + "update_success": "連結更新成功", + "create_success": "連結創建成功", + "preview_mode_tip": "預覽模式下的連結最多有效5分鐘", + "search_placeholder": "搜尋連結...", + "no_results": "未找到連結。", + "group_title": "連結列表", + "copy_success": "複製成功!", + "created_at": "創建時間", + "updated_at": "更新時間", + "expires_at": "過期時間", + "no_more": "沒有更多連結", + "load_failed": "加載連接失敗,", + "download_qr_code": "下載QR code", + "sort": { + "newest": "最新", + "oldest": "最舊", + "az": "短連結(A-Z)", + "za": "短連結(Z-A)", + "tip": "體驗功能: 僅對已經加載的連結有效" + } + } + } + \ No newline at end of file From c1ac0bf9f3104c7a8dbd2c8f240c76b22d778d9f Mon Sep 17 00:00:00 2001 From: "anirut.k" Date: Fri, 21 Mar 2025 13:45:41 +0700 Subject: [PATCH 03/13] feat: implement link upsert API endpoint - Adds a new API endpoint for creating and retrieving links - Validates link data using LinkSchema - Supports case sensitivity for link slugs - Handles existing links by returning the short link and status - Creates new links with expiration metadata in Cloudflare KV store --- server/api/link/upsert.post.ts | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 server/api/link/upsert.post.ts diff --git a/server/api/link/upsert.post.ts b/server/api/link/upsert.post.ts new file mode 100644 index 0000000..2b7da43 --- /dev/null +++ b/server/api/link/upsert.post.ts @@ -0,0 +1,38 @@ +import { LinkSchema } from '@/schemas/link' + +export default eventHandler(async (event) => { + const link = await readValidatedBody(event, LinkSchema.parse) + const { caseSensitive } = useRuntimeConfig(event) + + if (!caseSensitive) { + link.slug = link.slug.toLowerCase() + } + + const { cloudflare } = event.context + const { KV } = cloudflare.env + + // Check if link exists + const existingLink = await KV.get(`link:${link.slug}`, { type: 'json' }) + + if (existingLink) { + // If link exists, return it along with the short link + const shortLink = `${getRequestProtocol(event)}://${getRequestHost(event)}/${link.slug}` + return { link: existingLink, shortLink, status: 'existing' } + } + + // If link doesn't exist, create it + const expiration = getExpiration(event, link.expiration) + + await KV.put(`link:${link.slug}`, JSON.stringify(link), { + expiration, + metadata: { + expiration, + url: link.url, + comment: link.comment, + }, + }) + + setResponseStatus(event, 201) + const shortLink = `${getRequestProtocol(event)}://${getRequestHost(event)}/${link.slug}` + return { link, shortLink, status: 'created' } +}) From e381570b441c88609e46bae2cecb4df56c665967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Hennequin?= Date: Wed, 26 Mar 2025 10:05:00 +0100 Subject: [PATCH 04/13] refactor: add french locale --- i18n/locales/fr-FR.json | 169 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 i18n/locales/fr-FR.json diff --git a/i18n/locales/fr-FR.json b/i18n/locales/fr-FR.json new file mode 100644 index 0000000..7a3441b --- /dev/null +++ b/i18n/locales/fr-FR.json @@ -0,0 +1,169 @@ +{ + "common": { + "i18n": "Multi Langue", + "abbreviations": "Fr", + "current_language": "Français", + "try_again": "Réessayer", + "cancel": "Annuler", + "continue": "Continuer", + "close": "Fermer", + "save": "Enregistrer", + "edit": "Modifier", + "delete": "Supprimer", + "delete_success": "Suppression réussie !", + "search": "Rechercher" + }, + "theme": { + "toggle": "Changer de thème", + "light": "Clair", + "dark": "Sombre", + "system": "Système" + }, + "login": { + "title": "Connexion", + "description": "Entrez votre jeton pour vous connecter", + "tips": "Astuces", + "preview_token": "Le jeton du site pour le mode aperçu est", + "submit": "Connexion", + "failed": "Échec de la connexion, veuillez réessayer" + }, + "logout": { + "title": "Déconnexion ?", + "confirm": "Êtes-vous sûr de vouloir vous déconnecter ?", + "action": "Déconnexion" + }, + "layouts": { + "footer": { + "copyright": "Produits de HTML.ZONE", + "social": { + "email": "Email", + "telegram": "Telegram", + "blog": "Blog", + "twitter": "Twitter", + "mastodon": "Mastodon", + "github": "GitHub" + } + }, + "header": { + "select_language": "Choisir la langue" + } + }, + "nav": { + "links": "Liens", + "analysis": "Statistique" + }, + "home": { + "features": { + "title": "Fonctionnalités", + "subtitle": "Fonctionnalité simple et adéquate", + "url_shortening": { + "title": "Raccourcissement d'URL", + "description": "Raccourcissez la taille de vos liens" + }, + "analytics": { + "title": "Statistique", + "description": "Suivre l'analyse des liens et recueillir des statistiques pertinentes" + }, + "serverless": { + "title": "Serverless", + "description": "Déployez sans avoir besoin de serveurs traditionnels" + }, + "customizable_slug": { + "title": "Slug personnalisable", + "description": "Prise en charge des slugs personnalisés et de la sensibilité à la casse" + }, + "ai_slug": { + "title": "Slug IA", + "description": "Utilisez l'IA pour créer des slugs" + }, + "link_expiration": { + "title": "Expiration des liens", + "description": "Définissez des dates d'expiration pour vos liens" + } + }, + "cta": { + "title": "Déploiement immédiat", + "description": "En quelques clics, vous pouvez commencer à déployer sans aucun frais", + "button": "Lancer le déploiement" + }, + "logos": { + "title": "Construit avec de superbes technologies" + }, + "twitter": { + "follow": "Suivez-moi sur X(Twitter)" + } + }, + "dashboard": { + "title": "Tableau de bord", + "visits": "Visites", + "views": "Vues", + "visitors": "Visiteurs", + "referers": "Referrers", + "stats": "Statistiques", + "custom_date": "Date personnalisée", + "date": "Date", + "date_range": "Intervalle de temps", + "locations": "Localisations", + "details": "Détails", + "name": "Nom", + "count": "Nombre", + "loading": "Chargement", + "no_data": "Aucune donnée", + "none": "(Aucun)", + "filter_placeholder": "Filtrer les liens...", + "date_picker": { + "today": "Aujourd'hui", + "last_24h": "Dernières 24 heures", + "this_week": "Cette semaine", + "last_7d": "7 derniers jours", + "this_month": "Ce mois-ci", + "last_30d": "30 derniers jours", + "last_90d": "90 derniers jours", + "custom": "Personnalisé", + "custom_title": "Date personnalisée", + "single_date": "Date", + "date_range": "Plage de dates" + }, + "metrics": { + "country": "Pays", + "region": "Région", + "city": "Ville", + "referer": "Referrer", + "slug": "Slug", + "language": "Langue", + "timezone": "Fuseau horaire", + "device": "Appareil", + "deviceType": "Type d'appareil", + "os": "OS", + "browser": "Navigateur", + "browserType": "Type de navigateur" + } + }, + "links": { + "create": "Créer un lien", + "edit": "Modifier le lien", + "delete_confirm_title": "Êtes-vous absolument sûr ?", + "delete_confirm_desc": "Cette action est irréversible. Cela supprimera votre lien des serveurs.", + "delete_success": "Suppression réussie !", + "update_success": "Lien mis à jour avec succès", + "create_success": "Lien créé avec succès", + "preview_mode_tip": "Le lien en mode aperçu est valide jusqu'à 5 minutes.", + "search_placeholder": "Rechercher des liens...", + "no_results": "Aucun lien trouvé.", + "group_title": "Liens", + "copy_success": "Copie réussie !", + "created_at": "Créé le", + "updated_at": "Mis à jour le", + "expires_at": "Expire le", + "no_more": "Plus de liens", + "load_failed": "Échec du chargement des liens,", + "download_qr_code": "Télécharger le code QR", + "sort": { + "newest": "Les plus récents", + "oldest": "Les plus anciens", + "az": "Slug A-Z", + "za": "Slug Z-A", + "tip": "Essai : uniquement pour les liens chargés" + } + } +} From ab717a81111500ee6e2a34d31af77c3c7f794680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Hennequin?= Date: Wed, 26 Mar 2025 10:05:18 +0100 Subject: [PATCH 05/13] refactor: add locale settings --- i18n/i18n.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/i18n/i18n.ts b/i18n/i18n.ts index 52fb640..a271883 100644 --- a/i18n/i18n.ts +++ b/i18n/i18n.ts @@ -13,6 +13,12 @@ const locales: LocaleObject[] = [ name: 'English', emoji: '🇺🇸', }, + { + code: 'fr-FR', + file: 'fr-FR.json', + name: 'Français', + emoji: '🇫🇷', + }, ] function buildLocales() { From 7594366adb94a52037c4c13b2ac7d7169fdbfbff Mon Sep 17 00:00:00 2001 From: Lam Ngoc Khuong Date: Mon, 31 Mar 2025 10:59:51 +0700 Subject: [PATCH 06/13] feat: add Vietnamese translation --- i18n/i18n.ts | 6 ++ i18n/locales/vi-VN.json | 169 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 i18n/locales/vi-VN.json diff --git a/i18n/i18n.ts b/i18n/i18n.ts index 52fb640..f80bafb 100644 --- a/i18n/i18n.ts +++ b/i18n/i18n.ts @@ -13,6 +13,12 @@ const locales: LocaleObject[] = [ name: 'English', emoji: '🇺🇸', }, + { + code: 'vi-VN', + file: 'vi-VN.json', + name: 'Tiếng Việt', + emoji: '🇻🇳', + } ] function buildLocales() { diff --git a/i18n/locales/vi-VN.json b/i18n/locales/vi-VN.json new file mode 100644 index 0000000..5eb08e9 --- /dev/null +++ b/i18n/locales/vi-VN.json @@ -0,0 +1,169 @@ +{ + "common": { + "i18n": "Đa ngôn ngữ", + "abbreviations": "Vi", + "current_language": "Tiếng Việt", + "try_again": "Thử lại", + "cancel": "Hủy", + "continue": "Tiếp tục", + "close": "Đóng", + "save": "Lưu", + "edit": "Chỉnh sửa", + "delete": "Xóa", + "delete_success": "Xóa thành công!", + "search": "Tìm kiếm" + }, + "theme": { + "toggle": "Chuyển đổi giao diện", + "light": "Sáng", + "dark": "Tối", + "system": "Hệ thống" + }, + "login": { + "title": "Đăng nhập", + "description": "Nhập token của trang để đăng nhập", + "tips": "Mẹo", + "preview_token": "Token của chế độ xem trước là", + "submit": "Đăng nhập", + "failed": "Đăng nhập thất bại, vui lòng thử lại" + }, + "logout": { + "title": "Đăng xuất?", + "confirm": "Bạn có chắc chắn muốn đăng xuất không?", + "action": "Đăng xuất" + }, + "layouts": { + "footer": { + "copyright": "Sản phẩm của HTML.ZONE", + "social": { + "email": "Email", + "telegram": "Telegram", + "blog": "Blog", + "twitter": "Twitter", + "mastodon": "Mastodon", + "github": "GitHub" + } + }, + "header": { + "select_language": "Chọn ngôn ngữ" + } + }, + "nav": { + "links": "Liên kết", + "analysis": "Phân tích" + }, + "home": { + "features": { + "title": "Tính năng", + "subtitle": "Đơn giản và đủ dùng", + "url_shortening": { + "title": "Rút gọn URL", + "description": "Rút gọn liên kết đến độ dài tối thiểu" + }, + "analytics": { + "title": "Phân tích", + "description": "Theo dõi dữ liệu và thu thập thống kê hữu ích" + }, + "serverless": { + "title": "Không máy chủ", + "description": "Triển khai mà không cần máy chủ truyền thống" + }, + "customizable_slug": { + "title": "Slug tùy chỉnh", + "description": "Hỗ trợ slug cá nhân hóa và phân biệt chữ hoa/thường" + }, + "ai_slug": { + "title": "Slug AI", + "description": "Tạo slug bằng trí tuệ nhân tạo" + }, + "link_expiration": { + "title": "Hết hạn liên kết", + "description": "Đặt ngày hết hạn cho liên kết" + } + }, + "cta": { + "title": "Triển khai ngay", + "description": "Chỉ với vài cú nhấp chuột, bạn có thể triển khai miễn phí", + "button": "Bắt đầu triển khai" + }, + "logos": { + "title": "Xây dựng bằng những công nghệ tuyệt vời" + }, + "twitter": { + "follow": "Theo dõi tôi trên X (Twitter)" + } + }, + "dashboard": { + "title": "Bảng điều khiển", + "visits": "Lượt truy cập", + "views": "Lượt xem", + "visitors": "Khách truy cập", + "referers": "Nguồn giới thiệu", + "stats": "Thống kê của", + "custom_date": "Ngày tùy chỉnh", + "date": "Ngày", + "date_range": "Khoảng ngày", + "locations": "Vị trí", + "details": "Chi tiết", + "name": "Tên", + "count": "Số lượng", + "loading": "Đang tải", + "no_data": "Không có dữ liệu", + "none": "(Không có)", + "filter_placeholder": "Lọc liên kết...", + "date_picker": { + "today": "Hôm nay", + "last_24h": "24 giờ qua", + "this_week": "Tuần này", + "last_7d": "7 ngày qua", + "this_month": "Tháng này", + "last_30d": "30 ngày qua", + "last_90d": "90 ngày qua", + "custom": "Tùy chỉnh", + "custom_title": "Chọn ngày", + "single_date": "Ngày", + "date_range": "Khoảng ngày" + }, + "metrics": { + "country": "Quốc gia", + "region": "Vùng", + "city": "Thành phố", + "referer": "Nguồn giới thiệu", + "slug": "Slug", + "language": "Ngôn ngữ", + "timezone": "Múi giờ", + "device": "Thiết bị", + "deviceType": "Loại thiết bị", + "os": "Hệ điều hành", + "browser": "Trình duyệt", + "browserType": "Loại trình duyệt" + } + }, + "links": { + "create": "Tạo liên kết", + "edit": "Chỉnh sửa liên kết", + "delete_confirm_title": "Bạn có chắc chắn không?", + "delete_confirm_desc": "Hành động này không thể hoàn tác. Điều này sẽ xóa hoàn toàn liên kết khỏi máy chủ.", + "delete_success": "Xóa thành công!", + "update_success": "Cập nhật liên kết thành công", + "create_success": "Tạo liên kết thành công", + "preview_mode_tip": "Liên kết ở chế độ xem trước có hiệu lực trong 5 phút.", + "search_placeholder": "Tìm liên kết...", + "no_results": "Không tìm thấy liên kết nào.", + "group_title": "Liên kết", + "copy_success": "Sao chép thành công!", + "created_at": "Ngày tạo", + "updated_at": "Ngày cập nhật", + "expires_at": "Ngày hết hạn", + "no_more": "Không còn liên kết nào", + "load_failed": "Tải liên kết thất bại,", + "download_qr_code": "Tải mã QR", + "sort": { + "newest": "Mới nhất trước", + "oldest": "Cũ nhất trước", + "az": "Slug A-Z", + "za": "Slug Z-A", + "tip": "Trải nghiệm: Chỉ áp dụng với các liên kết đã tải" + } + } +} From d935fe7970ee105ae6c0748851ae10d05db10aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=A2=E6=9D=A1?= <2959393+ccbikai@users.noreply.github.com> Date: Sun, 13 Apr 2025 12:21:47 +0800 Subject: [PATCH 07/13] buy_me_a_coffee --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 94dab65..f57d70e 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,2 @@ github: ccbikai -buy_me_a_coffee: ccbikai +buy_me_a_coffee: miantiao From 11fdaeeb19e99c38287191234cd06a69c9f181ec Mon Sep 17 00:00:00 2001 From: wiresslend <332542601@qq.com> Date: Tue, 15 Apr 2025 11:12:53 +0800 Subject: [PATCH 08/13] solve not being able to correctly obtain CF IP --- server/utils/access-log.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/utils/access-log.ts b/server/utils/access-log.ts index d3b60cf..92d362a 100644 --- a/server/utils/access-log.ts +++ b/server/utils/access-log.ts @@ -60,7 +60,7 @@ function blobs2logs(blobs: string[]) { } export function useAccessLog(event: H3Event) { - const ip = getHeader(event, 'x-real-ip') || getRequestIP(event, { xForwardedFor: true }) + const ip = getHeader(event, 'cf-connecting-ip') || getHeader(event, 'x-real-ip') || getRequestIP(event, { xForwardedFor: true }) const { host: referer } = parseURL(getHeader(event, 'referer')) From b07e6e348c30d08d65d34b1a23f646046b35c5cf Mon Sep 17 00:00:00 2001 From: ygnask Date: Thu, 17 Apr 2025 16:40:08 +0900 Subject: [PATCH 09/13] Display creation and expiration dates on a single line --- components/dashboard/links/Link.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/dashboard/links/Link.vue b/components/dashboard/links/Link.vue index 4b36f53..ccec374 100644 --- a/components/dashboard/links/Link.vue +++ b/components/dashboard/links/Link.vue @@ -165,7 +165,7 @@ function copyLink() { - {{ shortDate(link.createdAt) }} + {{ shortDate(link.createdAt) }}

Created At: {{ longDate(link.createdAt) }}

@@ -178,7 +178,7 @@ function copyLink() { - {{ shortDate(link.expiration) }} + {{ shortDate(link.expiration) }}

Expires At: {{ longDate(link.expiration) }}

From d9b0465ea01a76cb2b02665b15bc2c86c46b0605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=A2=E6=9D=A1?= <2959393+ccbikai@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:27:41 +0800 Subject: [PATCH 10/13] docs: add deepwiki --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8f3b632..cfe81a9 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ /> +[DeepWiki](https://deepwiki.com/ccbikai/Sink) ![Cloudflare](https://img.shields.io/badge/Cloudflare-F69652?style=flat&logo=cloudflare&logoColor=white) ![Nuxt](https://img.shields.io/badge/Nuxt-00DC82?style=flat&logo=nuxtdotjs&logoColor=white) ![Tailwind CSS](https://img.shields.io/badge/Tailwind%20CSS-06B6D4?style=flat&logo=tailwindcss&logoColor=white) From 66fa4e66502307a1dff49157c4e359e5c7b30bb2 Mon Sep 17 00:00:00 2001 From: ccbikai Date: Sun, 11 May 2025 13:16:45 +0800 Subject: [PATCH 11/13] fix: update footer link to point to the new site - Changes the footer logo link from the root path to the new URL "https://sink.cool" for better accessibility and branding. --- components/layouts/Footer.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/layouts/Footer.vue b/components/layouts/Footer.vue index 3ca84ec..6b0adec 100644 --- a/components/layouts/Footer.vue +++ b/components/layouts/Footer.vue @@ -8,7 +8,7 @@ const { title, email, telegram, blog, twitter, mastodon, github } = useAppConfig
From 54d689a901c37874efe1ded0d3942ffbec05efcf Mon Sep 17 00:00:00 2001 From: ccbikai Date: Sun, 11 May 2025 13:34:39 +0800 Subject: [PATCH 12/13] docs: add iOS app to supported platforms Adds iOS app link to supported platforms in README Adjusts formatting for KV namespace setup instructions The iOS app is now available on the App Store at id6745417598 --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cfe81a9..bcfec92 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,8 @@ We welcome your contributions and PRs. - [Raycast-Sink](https://github.com/foru17/raycast-sink) - [x] Apple Shortcuts - [Sink Shortcuts](https://s.search1api.com/sink001) +- [x] iOS App + - [Sink](https://apps.apple.com/app/id6745417598) - [ ] Enhanced Link Management (with Cloudflare D1) - [ ] Analytics Enhancements (Support for merging filter conditions) - [ ] Dashboard Performance Optimization (Infinite loading) @@ -99,7 +101,7 @@ We welcome your contributions and PRs. 5. Save and deploy the project. 6. Cancel the deployment, then navigate to **Settings** -> **Bindings** -> **Add**: - - **KV Namespace**: Bind the variable name `KV` to a [KV namespace](https://developers.cloudflare.com/kv/) (create a new one under **Storage & Databases** -> **KV**). + - **KV Namespace**: Bind the variable name `KV` to a [KV namespace](https://developers.cloudflare.com/kv/) (create a new one under **Storage & Databases** -> **KV**). - **Workers AI** (_Optional_): Bind the variable name `AI` to the Workers AI Catalog. - **Analytics Engine**: - In **Workers & Pages**, go to **Account details** on the right side, find `Analytics Engine`, and click `Set up` to enable the free version. From f9d76b75622b319ad8d6737eb0c088fa1a8cdf9e Mon Sep 17 00:00:00 2001 From: ccbikai Date: Sun, 11 May 2025 13:35:01 +0800 Subject: [PATCH 13/13] chore: 0.1.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1e7d088..0387a28 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sink", "type": "module", - "version": "0.1.10", + "version": "0.1.11", "private": true, "packageManager": "pnpm@9.15.1", "engines": {