Compare commits

..

12 Commits

Author SHA1 Message Date
schlagmichdoch 3fa0873bc4 Increase version to v1.10.6
## Changes
- Fix loading error on older iOS and Mac versions
- Fix websocket-fallback info text position
- Translations update from Hosted Weblate (Turkish, Japanese, Indonesian)
2024-01-21 20:09:11 +01:00
schlagmichdoch a03482bc7f Merge branch 'master' into translate 2024-01-21 20:01:09 +01:00
schlagmichdoch 40aa46fdd9 Merge pull request #245 from weblate/weblate-pairdrop-pairdrop-spa
Translations update from Hosted Weblate
2024-01-21 19:56:08 +01:00
Hosted Weblate 9003094e49 Translated using Weblate (Indonesian)
Currently translated at 93.9% (156 of 166 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Reza Almanda <rezaalmanda27@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pairdrop/pairdrop-spa/id/
Translation: PairDrop/pairdrop-spa
2024-01-21 19:55:10 +01:00
Hosted Weblate 0459a361c3 Translated using Weblate (Japanese)
Currently translated at 98.1% (163 of 166 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: RintanBroadleaf <rintanbroadleaf@outlook.jp>
Translate-URL: https://hosted.weblate.org/projects/pairdrop/pairdrop-spa/ja/
Translation: PairDrop/pairdrop-spa
2024-01-21 19:55:10 +01:00
Hosted Weblate 10a669d7c6 Translated using Weblate (Turkish)
Currently translated at 100.0% (166 of 166 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/pairdrop/pairdrop-spa/tr/
Translation: PairDrop/pairdrop-spa
2024-01-21 19:55:10 +01:00
schlagmichdoch 3fbca72d74 Merge pull request #243 from schlagmichdoch/fix-regex-error
Fix Error Invalid Group Specifier Name on MacOS Safari and iOS Firefox on older MacOS/iOS
2024-01-21 19:53:57 +01:00
schlagmichdoch 59360fb047 Fix websocket-fallback info text not centered when line is broken 2024-01-12 01:43:08 +01:00
schlagmichdoch 2e15a018da Fix Error Invalid Group Specifier Name on Safari by removing REGEX lookbehind group construct (fixes #239) 2024-01-12 01:23:14 +01:00
schlagmichdoch 041261be2a Fix url argument case ?share_target 2024-01-06 16:15:30 +01:00
schlagmichdoch f152645452 Increase version to v1.10.5
## Changes
- Fix Zip Release workflow
2024-01-06 15:41:39 +01:00
schlagmichdoch a7f5d336c3 Fix Zip Release workflow: wrong upload path 2024-01-06 15:37:05 +01:00
12 changed files with 77 additions and 27 deletions
+2 -2
View File
@@ -36,7 +36,7 @@ If applicable, add screenshots to help explain your problem.
**Bug occurs on official PairDrop instance https://pairdrop.net/** **Bug occurs on official PairDrop instance https://pairdrop.net/**
No | Yes No | Yes
Version: v1.10.4 Version: v1.10.6
**Bug occurs on self-hosted PairDrop instance** **Bug occurs on self-hosted PairDrop instance**
No | Yes No | Yes
@@ -44,7 +44,7 @@ No | Yes
**Self-Hosted Setup** **Self-Hosted Setup**
Proxy: Nginx | Apache2 Proxy: Nginx | Apache2
Deployment: docker run | docker compose | npm run start:prod Deployment: docker run | docker compose | npm run start:prod
Version: v1.10.4 Version: v1.10.6
**Additional context** **Additional context**
Add any other context about the problem here. Add any other context about the problem here.
+1 -1
View File
@@ -32,5 +32,5 @@ jobs:
- name: Upload Release - name: Upload Release
uses: ncipollo/release-action@6c75be85e571768fa31b40abf38de58ba0397db5 # v1.13.0 uses: ncipollo/release-action@6c75be85e571768fa31b40abf38de58ba0397db5 # v1.13.0
with: with:
artifacts: "pairdrop-cli.zip" artifacts: "pairdrop-cli/pairdrop-cli.zip"
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
+2 -2
View File
@@ -45,11 +45,11 @@ This pairdrop-cli version was released alongside v1.10.4
#### Linux / Mac #### Linux / Mac
1. Download the latest _pairdrop-cli.zip_ from the [releases page](https://github.com/schlagmichdoch/PairDrop/releases) 1. Download the latest _pairdrop-cli.zip_ from the [releases page](https://github.com/schlagmichdoch/PairDrop/releases)
```shell ```shell
wget "https://github.com/schlagmichdoch/PairDrop/releases/download/v1.10.4/pairdrop-cli.zip" wget "https://github.com/schlagmichdoch/PairDrop/releases/download/v1.10.6/pairdrop-cli.zip"
``` ```
or or
```shell ```shell
curl -LO "https://github.com/schlagmichdoch/PairDrop/releases/download/v1.10.4/pairdrop-cli.zip" curl -LO "https://github.com/schlagmichdoch/PairDrop/releases/download/v1.10.6/pairdrop-cli.zip"
``` ```
2. Unzip the archive to a folder of your choice e.g. `/usr/share/pairdrop-cli/` 2. Unzip the archive to a folder of your choice e.g. `/usr/share/pairdrop-cli/`
```shell ```shell
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "pairdrop", "name": "pairdrop",
"version": "1.10.4", "version": "1.10.6",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "pairdrop", "name": "pairdrop",
"version": "1.10.4", "version": "1.10.6",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"express": "^4.18.2", "express": "^4.18.2",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "pairdrop", "name": "pairdrop",
"version": "1.10.4", "version": "1.10.6",
"type": "module", "type": "module",
"description": "", "description": "",
"main": "server/index.js", "main": "server/index.js",
+2 -2
View File
@@ -139,7 +139,7 @@
<div class="edit-btn btn btn-small btn-rounded btn-dark text-white" data-i18n-key="header.edit-share-mode" data-i18n-attrs="text" hidden></div> <div class="edit-btn btn btn-small btn-rounded btn-dark text-white" data-i18n-key="header.edit-share-mode" data-i18n-attrs="text" hidden></div>
</div> </div>
</div> </div>
<div id="websocket-fallback" hidden> <div id="websocket-fallback" class="text-center" hidden>
<span data-i18n-key="footer.traffic" data-i18n-attrs="text"></span> <span data-i18n-key="footer.traffic" data-i18n-attrs="text"></span>
<span data-i18n-key="footer.routed" data-i18n-attrs="text"></span> <span data-i18n-key="footer.routed" data-i18n-attrs="text"></span>
<span data-i18n-key="footer.webrtc" data-i18n-attrs="text"></span> <span data-i18n-key="footer.webrtc" data-i18n-attrs="text"></span>
@@ -582,7 +582,7 @@
</svg> </svg>
<div class="title-wrapper" dir="ltr"> <div class="title-wrapper" dir="ltr">
<h1>PairDrop</h1> <h1>PairDrop</h1>
<div class="font-subheading">v1.10.4</div> <div class="font-subheading">v1.10.6</div>
</div> </div>
<div class="font-subheading" data-i18n-key="about.claim" data-i18n-attrs="text"></div> <div class="font-subheading" data-i18n-key="about.claim" data-i18n-attrs="text"></div>
<div class="row"> <div class="row">
+15 -5
View File
@@ -69,7 +69,9 @@
"language-selector_title": "Atur Bahasa", "language-selector_title": "Atur Bahasa",
"about_title": "Tentang PairDrop", "about_title": "Tentang PairDrop",
"about_aria-label": "Buka Tentang PairDrop", "about_aria-label": "Buka Tentang PairDrop",
"theme-light_title": "Selalu gunakan tema terang" "theme-light_title": "Selalu gunakan tema terang",
"edit-share-mode": "Sunting",
"expand_title": "Perluas baris tombol header"
}, },
"instructions": { "instructions": {
"x-instructions_mobile": "Ketuk untuk mengirim file atau ketuk lama untuk mengirim pesan", "x-instructions_mobile": "Ketuk untuk mengirim file atau ketuk lama untuk mengirim pesan",
@@ -83,7 +85,11 @@
"no-peers-title": "Buka PairDrop di perangkat lain untuk berkirim file", "no-peers-title": "Buka PairDrop di perangkat lain untuk berkirim file",
"x-instructions_data-drop-peer": "Lepaskan untuk mengirim ke rekan", "x-instructions_data-drop-peer": "Lepaskan untuk mengirim ke rekan",
"x-instructions_data-drop-bg": "Lepaskan untuk memilih penerima", "x-instructions_data-drop-bg": "Lepaskan untuk memilih penerima",
"no-peers_data-drop-bg": "Lepaskan untuk memilih penerima" "no-peers_data-drop-bg": "Lepaskan untuk memilih penerima",
"activate-share-mode-and-other-file": "dan 1 file lainnya",
"activate-share-mode-shared-file": "file yang dibagikan",
"activate-share-mode-shared-files-plural": "{{count}} file yang dibagikan",
"webrtc-requirement": "Untuk menggunakan instance PairDrop ini, WebRTC harus diaktifkan!"
}, },
"peer-ui": { "peer-ui": {
"processing": "Memproses…", "processing": "Memproses…",
@@ -111,7 +117,7 @@
"join": "Gabung", "join": "Gabung",
"title-image-plural": "Gambar", "title-image-plural": "Gambar",
"send": "Kirim", "send": "Kirim",
"base64-tap-to-paste": "Ketuk di sini untuk menempelkan {{type}}", "base64-tap-to-paste": "Ketuk di sini untuk membagikan{{type}}",
"base64-text": "teks", "base64-text": "teks",
"copy": "Salin", "copy": "Salin",
"file-other-description-image": "dan 1 gambar lainnya", "file-other-description-image": "dan 1 gambar lainnya",
@@ -125,7 +131,7 @@
"title-image": "Gambar", "title-image": "Gambar",
"file-other-description-file-plural": "dan {{count}} file lainnya", "file-other-description-file-plural": "dan {{count}} file lainnya",
"would-like-to-share": "ingin berbagi", "would-like-to-share": "ingin berbagi",
"send-message-to": "Kirim pesan ke", "send-message-to": "Ke:",
"language-selector-title": "Pilih Bahasa", "language-selector-title": "Pilih Bahasa",
"pair": "Pasangkan", "pair": "Pasangkan",
"hr-or": "ATAU", "hr-or": "ATAU",
@@ -144,7 +150,11 @@
"enter-room-id-from-another-device": "Masukkan room ID dari perangkat lain untuk bergabung dengan room.", "enter-room-id-from-another-device": "Masukkan room ID dari perangkat lain untuk bergabung dengan room.",
"message_title": "Masukkan pesan untuk dikirim", "message_title": "Masukkan pesan untuk dikirim",
"pair-devices-qr-code_title": "Klik untuk menyalin tautan untuk memasangkan perangkat ini", "pair-devices-qr-code_title": "Klik untuk menyalin tautan untuk memasangkan perangkat ini",
"public-room-qr-code_title": "Klik untuk menyalin tautan ke ruang publik" "public-room-qr-code_title": "Klik untuk menyalin tautan ke ruang publik",
"base64-title-files": "Bagikan File",
"base64-title-text": "Bagikan Teks",
"message_placeholder": "Teks",
"paired-device-removed": "Perangkat yang dipasangkan telah dihapus."
}, },
"about": { "about": {
"claim": "Cara termudah untuk mentransfer file lintas perangkat", "claim": "Cara termudah untuk mentransfer file lintas perangkat",
+23 -4
View File
@@ -69,7 +69,9 @@
"language-selector_title": "言語を設定", "language-selector_title": "言語を設定",
"about_title": "PairDropについて", "about_title": "PairDropについて",
"about_aria-label": "PairDropについてを開く", "about_aria-label": "PairDropについてを開く",
"theme-light_title": "常にライトテーマを使用する" "theme-light_title": "常にライトテーマを使用する",
"edit-share-mode": "編集",
"expand_title": "ヘッダーボタン列を拡大する"
}, },
"instructions": { "instructions": {
"x-instructions_mobile": "タップしてファイルを送信または長押ししてメッセージを送信します", "x-instructions_mobile": "タップしてファイルを送信または長押ししてメッセージを送信します",
@@ -83,7 +85,11 @@
"no-peers-title": "他のデバイスでPairDropを開いてファイルを送信します", "no-peers-title": "他のデバイスでPairDropを開いてファイルを送信します",
"x-instructions_data-drop-peer": "離すとこの相手に送信します", "x-instructions_data-drop-peer": "離すとこの相手に送信します",
"x-instructions_data-drop-bg": "送信したい相手の上で離してください", "x-instructions_data-drop-bg": "送信したい相手の上で離してください",
"no-peers_data-drop-bg": "送信したい相手の上で離してください" "no-peers_data-drop-bg": "送信したい相手の上で離してください",
"activate-share-mode-and-other-file": "もう1つの別のファイル",
"activate-share-mode-shared-file": "共有されたファイル",
"activate-share-mode-shared-files-plural": "{{count}}個の共有されたファイル",
"webrtc-requirement": "このPairDropインスタンスを使用するには、WebRTCを有効にする必要があります!"
}, },
"peer-ui": { "peer-ui": {
"processing": "処理中…", "processing": "処理中…",
@@ -144,7 +150,16 @@
"enter-room-id-from-another-device": "他のデバイスに表示された参加したいルームのIDを入力します。", "enter-room-id-from-another-device": "他のデバイスに表示された参加したいルームのIDを入力します。",
"message_title": "送信するメッセージを挿入", "message_title": "送信するメッセージを挿入",
"pair-devices-qr-code_title": "クリックしてこのデバイスをペア設定するリンクをコピー", "pair-devices-qr-code_title": "クリックしてこのデバイスをペア設定するリンクをコピー",
"public-room-qr-code_title": "クリックしてパブリックルームへのリンクをコピー" "public-room-qr-code_title": "クリックしてパブリックルームへのリンクをコピー",
"paired-device-removed": "ペア設定されたデバイスが削除されました。",
"message_placeholder": "テキスト",
"base64-title-files": "共有されたファイル",
"base64-title-text": "テキストを共有",
"approve": "承諾",
"share-text-subtitle": "送信する前にメッセージを編集する:",
"share-text-checkbox": "テキストを共有するときに常にこのダイアログを表示する",
"close-toast_title": "通知を閉じる",
"share-text-title": "テキストメッセージを共有します"
}, },
"about": { "about": {
"claim": "デバイス間でファイルを転送する最も簡単な方法", "claim": "デバイス間でファイルを転送する最も簡単な方法",
@@ -152,7 +167,11 @@
"close-about_aria-label": "PairDropについてを閉じる", "close-about_aria-label": "PairDropについてを閉じる",
"buy-me-a-coffee_title": "コーヒーをおごってください!", "buy-me-a-coffee_title": "コーヒーをおごってください!",
"github_title": "GitHubでPairDropを見る", "github_title": "GitHubでPairDropを見る",
"faq_title": "FAQ" "faq_title": "FAQ",
"mastodon_title": "MastodonにPairDropについて書く",
"bluesky_title": "BlueSkyでフォロー",
"custom_title": "フォロー",
"privacypolicy_title": "プライバシーポリシーを開く"
}, },
"document-titles": { "document-titles": {
"file-transfer-requested": "ファイルの転送がリクエストされました", "file-transfer-requested": "ファイルの転送がリクエストされました",
+7 -2
View File
@@ -12,7 +12,8 @@
"cancel-share-mode": "Bitti", "cancel-share-mode": "Bitti",
"join-public-room_title": "Geçici olarak genel odaya katılın", "join-public-room_title": "Geçici olarak genel odaya katılın",
"language-selector_title": "Dili Seç", "language-selector_title": "Dili Seç",
"edit-share-mode": "Düzenle" "edit-share-mode": "Düzenle",
"expand_title": "Başlık düğmesi satırını genişlet"
}, },
"instructions": { "instructions": {
"no-peers_data-drop-bg": "Alıcıyı seçmek için bırakın", "no-peers_data-drop-bg": "Alıcıyı seçmek için bırakın",
@@ -166,7 +167,11 @@
"close-about_aria-label": "PairDrop Hakkında'yı Kapat", "close-about_aria-label": "PairDrop Hakkında'yı Kapat",
"buy-me-a-coffee_title": "Bana bir kahve al!", "buy-me-a-coffee_title": "Bana bir kahve al!",
"github_title": "GitHub'da PairDrop", "github_title": "GitHub'da PairDrop",
"faq_title": "Sıkça sorulan sorular" "faq_title": "Sıkça sorulan sorular",
"custom_title": "Bizi takip edin",
"privacypolicy_title": "Gizlilik politikamızı açın",
"mastodon_title": "Mastodon'da PairDrop hakkında yazın",
"bluesky_title": "Bizi BlueSky'da takip edin"
}, },
"document-titles": { "document-titles": {
"file-transfer-requested": "Dosya Transferi Talep Edildi", "file-transfer-requested": "Dosya Transferi Talep Edildi",
+9 -3
View File
@@ -2019,8 +2019,8 @@ class ReceiveTextDialog extends Dialog {
if (text.length < 2000) { if (text.length < 2000) {
// replace URLs with actual links // replace URLs with actual links
this.$text.innerHTML = this.$text.innerHTML this.$text.innerHTML = this.$text.innerHTML
.replace(/(^|(?<=(<br>|\s)))(https?:\/\/|www.)(([a-z]|[A-Z]|[0-9]|[\-_~:\/?#\[\]@!$&'()*+,;=%]){2,}\.)(([a-z]|[A-Z]|[0-9]|[\-_~:\/?#\[\]@!$&'()*+,;=%.]){2,})/g, .replace(/(^|<br>|\s|")((https?:\/\/|www.)(([a-z]|[A-Z]|[0-9]|[\-_~:\/?#\[\]@!$&'()*+,;=%]){2,}\.)(([a-z]|[A-Z]|[0-9]|[\-_~:\/?#\[\]@!$&'()*+,;=%.]){2,}))/g,
(url) => { (match, whitespace, url) => {
let link = url; let link = url;
// prefix www.example.com with http protocol to prevent it from being a relative link // prefix www.example.com with http protocol to prevent it from being a relative link
@@ -2028,7 +2028,13 @@ class ReceiveTextDialog extends Dialog {
link = "http://" + link link = "http://" + link
} }
return `<a href="${link}" target="_blank">${url}</a>`; // Check if link is valid
if (isUrlValid(link)) {
return `${whitespace}<a href="${link}" target="_blank">${url}</a>`;
}
else {
return match;
}
}); });
} }
+10
View File
@@ -584,3 +584,13 @@ async function decodeBase64Text(base64) {
return decodeURIComponent(escape(window.atob(base64))) return decodeURIComponent(escape(window.atob(base64)))
} }
function isUrlValid(url) {
try {
let urlObj = new URL(url);
return true;
}
catch (e) {
return false;
}
}
+3 -3
View File
@@ -1,4 +1,4 @@
const cacheVersion = 'v1.10.4'; const cacheVersion = 'v1.10.6';
const cacheTitle = `pairdrop-cache-${cacheVersion}`; const cacheTitle = `pairdrop-cache-${cacheVersion}`;
const forceFetch = false; // FOR DEVELOPMENT: Set to true to always update assets instead of using cached versions const forceFetch = false; // FOR DEVELOPMENT: Set to true to always update assets instead of using cached versions
const relativePathsToCache = [ const relativePathsToCache = [
@@ -193,7 +193,7 @@ const evaluateRequestData = function (request) {
const objectStoreRequest = objectStore.add(fileObjects[i]); const objectStoreRequest = objectStore.add(fileObjects[i]);
objectStoreRequest.onsuccess = _ => { objectStoreRequest.onsuccess = _ => {
if (i === fileObjects.length - 1) resolve(pairDropUrl + '?share-target=files'); if (i === fileObjects.length - 1) resolve(pairDropUrl + '?share_target=files');
} }
} }
} }
@@ -202,7 +202,7 @@ const evaluateRequestData = function (request) {
} }
} }
else { else {
let urlArgument = '?share-target=text'; let urlArgument = '?share_target=text';
if (title) urlArgument += `&title=${title}`; if (title) urlArgument += `&title=${title}`;
if (text) urlArgument += `&text=${text}`; if (text) urlArgument += `&text=${text}`;