web 6.7.2: downloads point at desktop 1.0.1
1.0.1 is the first desktop build that works on Linux at all. It also carries the desktop.callsNotHere string these dictionaries now define for it — calls are not available on the Linux desktop yet and the app says so rather than failing.
This commit is contained in:
@@ -1,5 +1,20 @@
|
||||
# Changelog
|
||||
|
||||
## v6.7.2 — Desktop 1.0.1
|
||||
|
||||
Download links point at desktop 1.0.1, which is the first build that works on
|
||||
Linux at all.
|
||||
|
||||
1.0.0 could not open a channel there. WebKitGTK is built with WebRTC compiled
|
||||
out — its own configuration ties `ENABLE_WEB_RTC` to `ENABLE_EXPERIMENTAL_FEATURES`,
|
||||
which release builds turn off — so `RTCPeerConnection` was not a variable that
|
||||
existed, on any distribution, in any package format. The desktop client now
|
||||
carries its own WebRTC in Rust and presents the browser's API shape to the page,
|
||||
so the connection code stays the same one this repository shares with it.
|
||||
|
||||
Calls are not available on the Linux desktop yet and it says so; they are
|
||||
unaffected on macOS, Windows and here in the browser.
|
||||
|
||||
## v6.7.1 — Download links for desktop 1.0.0
|
||||
|
||||
The desktop client reached 1.0.0, and the buttons on this site now point at it.
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
No accounts. No servers storing your messages. No installation required.
|
||||
|
||||
[](LICENSE)
|
||||
[](CHANGELOG.md)
|
||||
[](CHANGELOG.md)
|
||||
[](#install-as-an-app)
|
||||
[](#security-model)
|
||||
[](#forward-secrecy)
|
||||
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/ar/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/de/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+28
-15
@@ -5258,7 +5258,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Cover traffic active: random fake frames (32-128 B every 15-30 s) on the ratcheted channel",
|
||||
"desktop.sec.coverOff": "The cover traffic generator is not running",
|
||||
"desktop.sec.coverUnsupported": "Cover traffic needs a Double Ratchet session (the peer is on an older release)",
|
||||
"desktop.tagline": "End-to-end freedom"
|
||||
"desktop.tagline": "End-to-end freedom",
|
||||
"desktop.callsNotHere": "Calls are not available in this build yet. Messages, files and group chats work as usual."
|
||||
},
|
||||
"de": {
|
||||
"language.label": "Sprache",
|
||||
@@ -6107,7 +6108,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Verdeckter Verkehr aktiv: zuf\xE4llige Scheinframes (32-128 B alle 15-30 s) auf dem Ratchet-Kanal",
|
||||
"desktop.sec.coverOff": "Der Generator f\xFCr verdeckten Verkehr l\xE4uft nicht",
|
||||
"desktop.sec.coverUnsupported": "Verdeckter Verkehr braucht eine Double-Ratchet-Sitzung (die Gegenstelle nutzt eine \xE4ltere Version)",
|
||||
"desktop.tagline": "Ende-zu-Ende-Freiheit"
|
||||
"desktop.tagline": "Ende-zu-Ende-Freiheit",
|
||||
"desktop.callsNotHere": "Anrufe sind in dieser Version noch nicht verf\xFCgbar. Nachrichten, Dateien und Gruppenchats funktionieren wie gewohnt."
|
||||
},
|
||||
"fr": {
|
||||
"language.label": "Langue",
|
||||
@@ -6956,7 +6958,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Trafic de couverture actif : trames factices al\xE9atoires (32-128 o toutes les 15-30 s) sur le canal \xE0 ratchet",
|
||||
"desktop.sec.coverOff": "Le g\xE9n\xE9rateur de trafic de couverture ne tourne pas",
|
||||
"desktop.sec.coverUnsupported": "Le trafic de couverture exige une session Double Ratchet (le pair utilise une version plus ancienne)",
|
||||
"desktop.tagline": "La libert\xE9 de bout en bout"
|
||||
"desktop.tagline": "La libert\xE9 de bout en bout",
|
||||
"desktop.callsNotHere": "Les appels ne sont pas encore disponibles dans cette version. Les messages, les fichiers et les discussions de groupe fonctionnent normalement."
|
||||
},
|
||||
"es": {
|
||||
"language.label": "Idioma",
|
||||
@@ -7805,7 +7808,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Tr\xE1fico de cobertura activo: tramas falsas aleatorias (32-128 B cada 15-30 s) en el canal con ratchet",
|
||||
"desktop.sec.coverOff": "El generador de tr\xE1fico de cobertura no est\xE1 en marcha",
|
||||
"desktop.sec.coverUnsupported": "El tr\xE1fico de cobertura requiere una sesi\xF3n Double Ratchet (el par usa una versi\xF3n anterior)",
|
||||
"desktop.tagline": "Libertad de extremo a extremo"
|
||||
"desktop.tagline": "Libertad de extremo a extremo",
|
||||
"desktop.callsNotHere": "Las llamadas a\xFAn no est\xE1n disponibles en esta versi\xF3n. Los mensajes, los archivos y los chats grupales funcionan con normalidad."
|
||||
},
|
||||
"uk": {
|
||||
"language.label": "\u041C\u043E\u0432\u0430",
|
||||
@@ -8654,7 +8658,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u041F\u0440\u0438\u043A\u0440\u0438\u0432\u0430\u044E\u0447\u0438\u0439 \u0442\u0440\u0430\u0444\u0456\u043A \u0430\u043A\u0442\u0438\u0432\u043D\u0438\u0439: \u0432\u0438\u043F\u0430\u0434\u043A\u043E\u0432\u0456 \u0444\u0430\u043B\u044C\u0448\u0438\u0432\u0456 \u043A\u0430\u0434\u0440\u0438 (32-128 \u0411 \u043A\u043E\u0436\u043D\u0456 15-30 \u0441) \u0443 \u043A\u0430\u043D\u0430\u043B\u0456 \u0437 \u0440\u0430\u0442\u0447\u0435\u0442\u043E\u043C",
|
||||
"desktop.sec.coverOff": "\u0413\u0435\u043D\u0435\u0440\u0430\u0442\u043E\u0440 \u043F\u0440\u0438\u043A\u0440\u0438\u0432\u0430\u044E\u0447\u043E\u0433\u043E \u0442\u0440\u0430\u0444\u0456\u043A\u0443 \u043D\u0435 \u043F\u0440\u0430\u0446\u044E\u0454",
|
||||
"desktop.sec.coverUnsupported": "\u041F\u0440\u0438\u043A\u0440\u0438\u0432\u0430\u044E\u0447\u0438\u0439 \u0442\u0440\u0430\u0444\u0456\u043A \u043F\u043E\u0442\u0440\u0435\u0431\u0443\u0454 \u0441\u0435\u0430\u043D\u0441\u0443 Double Ratchet (\u0443 \u0441\u043F\u0456\u0432\u0440\u043E\u0437\u043C\u043E\u0432\u043D\u0438\u043A\u0430 \u0441\u0442\u0430\u0440\u0456\u0448\u0430 \u0432\u0435\u0440\u0441\u0456\u044F)",
|
||||
"desktop.tagline": "\u041D\u0430\u0441\u043A\u0440\u0456\u0437\u043D\u0430 \u0441\u0432\u043E\u0431\u043E\u0434\u0430"
|
||||
"desktop.tagline": "\u041D\u0430\u0441\u043A\u0440\u0456\u0437\u043D\u0430 \u0441\u0432\u043E\u0431\u043E\u0434\u0430",
|
||||
"desktop.callsNotHere": "\u0414\u0437\u0432\u0456\u043D\u043A\u0438 \u0432 \u0446\u0456\u0439 \u0437\u0431\u0456\u0440\u0446\u0456 \u043F\u043E\u043A\u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0456. \u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F, \u0444\u0430\u0439\u043B\u0438 \u0442\u0430 \u0433\u0440\u0443\u043F\u043E\u0432\u0456 \u0447\u0430\u0442\u0438 \u043F\u0440\u0430\u0446\u044E\u044E\u0442\u044C \u044F\u043A \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u043E."
|
||||
},
|
||||
"ru": {
|
||||
"language.label": "\u042F\u0437\u044B\u043A",
|
||||
@@ -9503,7 +9508,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u041F\u0440\u0438\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043A \u0430\u043A\u0442\u0438\u0432\u0435\u043D: \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u044B\u0435 \u0444\u0430\u043B\u044C\u0448\u0438\u0432\u044B\u0435 \u043A\u0430\u0434\u0440\u044B (32-128 \u0411 \u043A\u0430\u0436\u0434\u044B\u0435 15-30 \u0441) \u0432 \u043A\u0430\u043D\u0430\u043B\u0435 \u0441 \u0440\u044D\u0442\u0447\u0435\u0442\u043E\u043C",
|
||||
"desktop.sec.coverOff": "\u0413\u0435\u043D\u0435\u0440\u0430\u0442\u043E\u0440 \u043F\u0440\u0438\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E \u0442\u0440\u0430\u0444\u0438\u043A\u0430 \u043D\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442",
|
||||
"desktop.sec.coverUnsupported": "\u041F\u0440\u0438\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u043C\u0443 \u0442\u0440\u0430\u0444\u0438\u043A\u0443 \u043D\u0443\u0436\u0435\u043D \u0441\u0435\u0430\u043D\u0441 Double Ratchet (\u0443 \u0441\u043E\u0431\u0435\u0441\u0435\u0434\u043D\u0438\u043A\u0430 \u0432\u0435\u0440\u0441\u0438\u044F \u043F\u043E\u0441\u0442\u0430\u0440\u0448\u0435)",
|
||||
"desktop.tagline": "\u0421\u043A\u0432\u043E\u0437\u043D\u0430\u044F \u0441\u0432\u043E\u0431\u043E\u0434\u0430"
|
||||
"desktop.tagline": "\u0421\u043A\u0432\u043E\u0437\u043D\u0430\u044F \u0441\u0432\u043E\u0431\u043E\u0434\u0430",
|
||||
"desktop.callsNotHere": "\u0417\u0432\u043E\u043D\u043A\u0438 \u0432 \u044D\u0442\u043E\u0439 \u0441\u0431\u043E\u0440\u043A\u0435 \u043F\u043E\u043A\u0430 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B. \u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F, \u0444\u0430\u0439\u043B\u044B \u0438 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0435 \u0447\u0430\u0442\u044B \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u043A\u0430\u043A \u043E\u0431\u044B\u0447\u043D\u043E."
|
||||
},
|
||||
"zh": {
|
||||
"language.label": "\u8BED\u8A00",
|
||||
@@ -10352,7 +10358,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u63A9\u62A4\u6D41\u91CF\u5DF2\u542F\u7528\uFF1A\u5728\u68D8\u8F6E\u901A\u9053\u4E0A\u53D1\u9001\u968F\u673A\u4F2A\u5E27\uFF08\u6BCF 15-30 \u79D2 32-128 \u5B57\u8282\uFF09",
|
||||
"desktop.sec.coverOff": "\u63A9\u62A4\u6D41\u91CF\u751F\u6210\u5668\u672A\u8FD0\u884C",
|
||||
"desktop.sec.coverUnsupported": "\u63A9\u62A4\u6D41\u91CF\u9700\u8981 Double Ratchet \u4F1A\u8BDD\uFF08\u5BF9\u65B9\u4F7F\u7528\u8F83\u65E7\u7248\u672C\uFF09",
|
||||
"desktop.tagline": "\u7AEF\u5230\u7AEF\u7684\u81EA\u7531"
|
||||
"desktop.tagline": "\u7AEF\u5230\u7AEF\u7684\u81EA\u7531",
|
||||
"desktop.callsNotHere": "\u6B64\u7248\u672C\u6682\u4E0D\u652F\u6301\u901A\u8BDD\u3002\u6D88\u606F\u3001\u6587\u4EF6\u548C\u7FA4\u804A\u4E00\u5207\u6B63\u5E38\u3002"
|
||||
},
|
||||
"ko": {
|
||||
"language.label": "\uC5B8\uC5B4",
|
||||
@@ -11201,7 +11208,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\uC704\uC7A5 \uD2B8\uB798\uD53D \uC791\uB3D9 \uC911: \uB798\uCE6B \uCC44\uB110\uC5D0 \uBB34\uC791\uC704 \uB354\uBBF8 \uD504\uB808\uC784 (15-30\uCD08\uB9C8\uB2E4 32-128 B)",
|
||||
"desktop.sec.coverOff": "\uC704\uC7A5 \uD2B8\uB798\uD53D \uC0DD\uC131\uAE30\uAC00 \uC2E4\uD589\uB418\uACE0 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",
|
||||
"desktop.sec.coverUnsupported": "\uC704\uC7A5 \uD2B8\uB798\uD53D\uC5D0\uB294 Double Ratchet \uC138\uC158\uC774 \uD544\uC694\uD569\uB2C8\uB2E4 (\uC0C1\uB300\uAC00 \uAD6C\uBC84\uC804\uC785\uB2C8\uB2E4)",
|
||||
"desktop.tagline": "\uC885\uB2E8 \uAC04 \uC790\uC720"
|
||||
"desktop.tagline": "\uC885\uB2E8 \uAC04 \uC790\uC720",
|
||||
"desktop.callsNotHere": "\uC774 \uBE4C\uB4DC\uC5D0\uC11C\uB294 \uC544\uC9C1 \uD1B5\uD654\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uBA54\uC2DC\uC9C0, \uD30C\uC77C, \uADF8\uB8F9 \uCC44\uD305\uC740 \uD3C9\uC18C\uB300\uB85C \uC791\uB3D9\uD569\uB2C8\uB2E4."
|
||||
},
|
||||
"hi": {
|
||||
"language.label": "\u092D\u093E\u0937\u093E",
|
||||
@@ -12050,7 +12058,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u0906\u0935\u0930\u0923 \u091F\u094D\u0930\u0948\u092B\u093C\u093F\u0915 \u0938\u0915\u094D\u0930\u093F\u092F: \u0930\u0948\u091A\u0947\u091F \u091A\u0948\u0928\u0932 \u092A\u0930 \u092F\u093E\u0926\u0943\u091A\u094D\u091B\u093F\u0915 \u0928\u0915\u0932\u0940 \u092B\u093C\u094D\u0930\u0947\u092E (\u0939\u0930 15-30 \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 32-128 B)",
|
||||
"desktop.sec.coverOff": "\u0906\u0935\u0930\u0923 \u091F\u094D\u0930\u0948\u092B\u093C\u093F\u0915 \u091C\u0928\u0930\u0947\u091F\u0930 \u0928\u0939\u0940\u0902 \u091A\u0932 \u0930\u0939\u093E",
|
||||
"desktop.sec.coverUnsupported": "\u0906\u0935\u0930\u0923 \u091F\u094D\u0930\u0948\u092B\u093C\u093F\u0915 \u0915\u0947 \u0932\u093F\u090F Double Ratchet \u0938\u0924\u094D\u0930 \u091A\u093E\u0939\u093F\u090F (\u0938\u093E\u0925\u0940 \u092A\u0941\u0930\u093E\u0928\u0947 \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u092A\u0930 \u0939\u0948)",
|
||||
"desktop.tagline": "\u0938\u093F\u0930\u0947 \u0938\u0947 \u0938\u093F\u0930\u0947 \u0924\u0915 \u0906\u091C\u093C\u093E\u0926\u0940"
|
||||
"desktop.tagline": "\u0938\u093F\u0930\u0947 \u0938\u0947 \u0938\u093F\u0930\u0947 \u0924\u0915 \u0906\u091C\u093C\u093E\u0926\u0940",
|
||||
"desktop.callsNotHere": "\u0907\u0938 \u092C\u093F\u0932\u094D\u0921 \u092E\u0947\u0902 \u0915\u0949\u0932 \u0905\u092D\u0940 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964 \u0938\u0902\u0926\u0947\u0936, \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u0914\u0930 \u0938\u092E\u0942\u0939 \u091A\u0948\u091F \u0938\u093E\u092E\u093E\u0928\u094D\u092F \u0930\u0942\u092A \u0938\u0947 \u0915\u093E\u092E \u0915\u0930\u0924\u0947 \u0939\u0948\u0902\u0964"
|
||||
},
|
||||
"ar": {
|
||||
"language.label": "\u0627\u0644\u0644\u063A\u0629",
|
||||
@@ -12899,7 +12908,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u062D\u0631\u0643\u0629 \u0627\u0644\u062A\u0645\u0648\u064A\u0647 \u0646\u0634\u0637\u0629: \u0625\u0637\u0627\u0631\u0627\u062A \u0648\u0647\u0645\u064A\u0629 \u0639\u0634\u0648\u0627\u0626\u064A\u0629 (32-128 \u0628\u0627\u064A\u062A \u0643\u0644 15-30 \u062B\u0627\u0646\u064A\u0629) \u0639\u0644\u0649 \u0642\u0646\u0627\u0629 \u0627\u0644\u0631\u0627\u062A\u0634\u064A\u062A",
|
||||
"desktop.sec.coverOff": "\u0645\u0648\u0644\u0651\u062F \u062D\u0631\u0643\u0629 \u0627\u0644\u062A\u0645\u0648\u064A\u0647 \u0644\u0627 \u064A\u0639\u0645\u0644",
|
||||
"desktop.sec.coverUnsupported": "\u062A\u062D\u062A\u0627\u062C \u062D\u0631\u0643\u0629 \u0627\u0644\u062A\u0645\u0648\u064A\u0647 \u0625\u0644\u0649 \u062C\u0644\u0633\u0629 Double Ratchet (\u0627\u0644\u0637\u0631\u0641 \u0627\u0644\u0622\u062E\u0631 \u0639\u0644\u0649 \u0625\u0635\u062F\u0627\u0631 \u0623\u0642\u062F\u0645)",
|
||||
"desktop.tagline": "\u062D\u0631\u064A\u0629 \u0645\u0646 \u0637\u0631\u0641 \u0625\u0644\u0649 \u0637\u0631\u0641"
|
||||
"desktop.tagline": "\u062D\u0631\u064A\u0629 \u0645\u0646 \u0637\u0631\u0641 \u0625\u0644\u0649 \u0637\u0631\u0641",
|
||||
"desktop.callsNotHere": "\u0627\u0644\u0645\u0643\u0627\u0644\u0645\u0627\u062A \u063A\u064A\u0631 \u0645\u062A\u0627\u062D\u0629 \u0628\u0639\u062F \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0646\u0633\u062E\u0629. \u0627\u0644\u0631\u0633\u0627\u0626\u0644 \u0648\u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0648\u0627\u0644\u062F\u0631\u062F\u0634\u0627\u062A \u0627\u0644\u062C\u0645\u0627\u0639\u064A\u0629 \u062A\u0639\u0645\u0644 \u0643\u0627\u0644\u0645\u0639\u062A\u0627\u062F."
|
||||
},
|
||||
"he": {
|
||||
"language.label": "\u05E9\u05E4\u05D4",
|
||||
@@ -13748,7 +13758,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u05EA\u05E2\u05D1\u05D5\u05E8\u05EA \u05D4\u05E1\u05D5\u05D5\u05D0\u05D4 \u05E4\u05E2\u05D9\u05DC\u05D4: \u05DE\u05E1\u05D2\u05E8\u05D5\u05EA \u05DE\u05D6\u05D5\u05D9\u05E4\u05D5\u05EA \u05D0\u05E7\u05E8\u05D0\u05D9\u05D5\u05EA (32-128 \u05D1\u05EA\u05D9\u05DD \u05DB\u05DC 15-30 \u05E9\u05E0\u05D9\u05D5\u05EA) \u05D1\u05E2\u05E8\u05D5\u05E5 \u05D4\u05E8\u05D0\u05E6\u05F3\u05D8",
|
||||
"desktop.sec.coverOff": "\u05DE\u05D7\u05D5\u05DC\u05DC \u05EA\u05E2\u05D1\u05D5\u05E8\u05EA \u05D4\u05D4\u05E1\u05D5\u05D5\u05D0\u05D4 \u05D0\u05D9\u05E0\u05D5 \u05E4\u05D5\u05E2\u05DC",
|
||||
"desktop.sec.coverUnsupported": "\u05EA\u05E2\u05D1\u05D5\u05E8\u05EA \u05D4\u05E1\u05D5\u05D5\u05D0\u05D4 \u05DE\u05D7\u05D9\u05D9\u05D1\u05EA \u05D4\u05E4\u05E2\u05DC\u05EA Double Ratchet (\u05D4\u05E6\u05D3 \u05D4\u05E9\u05E0\u05D9 \u05D1\u05D2\u05E8\u05E1\u05D4 \u05D9\u05E9\u05E0\u05D4 \u05D9\u05D5\u05EA\u05E8)",
|
||||
"desktop.tagline": "\u05D7\u05D5\u05E4\u05E9 \u05DE\u05E7\u05E6\u05D4 \u05DC\u05E7\u05E6\u05D4"
|
||||
"desktop.tagline": "\u05D7\u05D5\u05E4\u05E9 \u05DE\u05E7\u05E6\u05D4 \u05DC\u05E7\u05E6\u05D4",
|
||||
"desktop.callsNotHere": "\u05E9\u05D9\u05D7\u05D5\u05EA \u05D0\u05D9\u05E0\u05DF \u05D6\u05DE\u05D9\u05E0\u05D5\u05EA \u05E2\u05D3\u05D9\u05D9\u05DF \u05D1\u05D2\u05E8\u05E1\u05D4 \u05D6\u05D5. \u05D4\u05D5\u05D3\u05E2\u05D5\u05EA, \u05E7\u05D1\u05E6\u05D9\u05DD \u05D5\u05E6\u05F3\u05D0\u05D8\u05D9\u05DD \u05E7\u05D1\u05D5\u05E6\u05EA\u05D9\u05D9\u05DD \u05E4\u05D5\u05E2\u05DC\u05D9\u05DD \u05DB\u05E8\u05D2\u05D9\u05DC."
|
||||
},
|
||||
"fa": {
|
||||
"language.label": "\u0632\u0628\u0627\u0646",
|
||||
@@ -14597,7 +14608,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u062A\u0631\u0627\u0641\u06CC\u06A9 \u067E\u0648\u0634\u0634\u06CC \u0641\u0639\u0627\u0644 \u0627\u0633\u062A: \u0642\u0627\u0628\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u06AF\u06CC \u062A\u0635\u0627\u062F\u0641\u06CC (\u06F3\u06F2 \u062A\u0627 \u06F1\u06F2\u06F8 \u0628\u0627\u06CC\u062A \u0647\u0631 \u06F1\u06F5 \u062A\u0627 \u06F3\u06F0 \u062B\u0627\u0646\u06CC\u0647) \u0631\u0648\u06CC \u06A9\u0627\u0646\u0627\u0644 \u0631\u0686\u062A",
|
||||
"desktop.sec.coverOff": "\u0645\u0648\u0644\u062F \u062A\u0631\u0627\u0641\u06CC\u06A9 \u067E\u0648\u0634\u0634\u06CC \u062F\u0631 \u062D\u0627\u0644 \u0627\u062C\u0631\u0627 \u0646\u06CC\u0633\u062A",
|
||||
"desktop.sec.coverUnsupported": "\u062A\u0631\u0627\u0641\u06CC\u06A9 \u067E\u0648\u0634\u0634\u06CC \u0628\u0647 \u0646\u0634\u0633\u062A Double Ratchet \u0646\u06CC\u0627\u0632 \u062F\u0627\u0631\u062F (\u0637\u0631\u0641 \u0645\u0642\u0627\u0628\u0644 \u0646\u0633\u062E\u0647\u0654 \u0642\u062F\u06CC\u0645\u06CC\u200C\u062A\u0631\u06CC \u062F\u0627\u0631\u062F)",
|
||||
"desktop.tagline": "\u0622\u0632\u0627\u062F\u06CC \u0633\u0631\u062A\u0627\u0633\u0631\u06CC"
|
||||
"desktop.tagline": "\u0622\u0632\u0627\u062F\u06CC \u0633\u0631\u062A\u0627\u0633\u0631\u06CC",
|
||||
"desktop.callsNotHere": "\u062A\u0645\u0627\u0633\u200C\u0647\u0627 \u0647\u0646\u0648\u0632 \u062F\u0631 \u0627\u06CC\u0646 \u0646\u0633\u062E\u0647 \u062F\u0631 \u062F\u0633\u062A\u0631\u0633 \u0646\u06CC\u0633\u062A\u0646\u062F. \u067E\u06CC\u0627\u0645\u200C\u0647\u0627\u060C \u0641\u0627\u06CC\u0644\u200C\u0647\u0627 \u0648 \u06AF\u0641\u062A\u200C\u0648\u06AF\u0648\u0647\u0627\u06CC \u06AF\u0631\u0648\u0647\u06CC \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u06A9\u0627\u0631 \u0645\u06CC\u200C\u06A9\u0646\u0646\u062F."
|
||||
},
|
||||
"ur": {
|
||||
"language.label": "\u0632\u0628\u0627\u0646",
|
||||
@@ -15446,7 +15458,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u06A9\u0648\u0631 \u0679\u0631\u06CC\u0641\u06A9 \u0641\u0639\u0627\u0644: \u0631\u06CC\u0686\u0679 \u0686\u06CC\u0646\u0644 \u067E\u0631 \u0628\u06D2 \u062A\u0631\u062A\u06CC\u0628 \u062C\u0639\u0644\u06CC \u0641\u0631\u06CC\u0645 (\u06C1\u0631 15-30 \u0633\u06CC\u06A9\u0646\u0688 \u0645\u06CC\u06BA 32-128 B)",
|
||||
"desktop.sec.coverOff": "\u06A9\u0648\u0631 \u0679\u0631\u06CC\u0641\u06A9 \u062C\u0646\u0631\u06CC\u0679\u0631 \u0646\u06C1\u06CC\u06BA \u0686\u0644 \u0631\u06C1\u0627",
|
||||
"desktop.sec.coverUnsupported": "\u06A9\u0648\u0631 \u0679\u0631\u06CC\u0641\u06A9 \u06A9\u06D2 \u0644\u06CC\u06D2 Double Ratchet \u0633\u06CC\u0634\u0646 \u062F\u0631\u06A9\u0627\u0631 \u06C1\u06D2 (\u0633\u0627\u062A\u06BE\u06CC \u067E\u0631\u0627\u0646\u06D2 \u0648\u0631\u0698\u0646 \u067E\u0631 \u06C1\u06D2)",
|
||||
"desktop.tagline": "\u0633\u0631\u06D2 \u0633\u06D2 \u0633\u0631\u06D2 \u062A\u06A9 \u0622\u0632\u0627\u062F\u06CC"
|
||||
"desktop.tagline": "\u0633\u0631\u06D2 \u0633\u06D2 \u0633\u0631\u06D2 \u062A\u06A9 \u0622\u0632\u0627\u062F\u06CC",
|
||||
"desktop.callsNotHere": "\u0627\u0633 \u0628\u0644\u0688 \u0645\u06CC\u06BA \u06A9\u0627\u0644\u06CC\u06BA \u0627\u0628\u06BE\u06CC \u062F\u0633\u062A\u06CC\u0627\u0628 \u0646\u06C1\u06CC\u06BA \u06C1\u06CC\u06BA\u06D4 \u067E\u06CC\u063A\u0627\u0645\u0627\u062A\u060C \u0641\u0627\u0626\u0644\u06CC\u06BA \u0627\u0648\u0631 \u06AF\u0631\u0648\u067E \u0686\u06CC\u0679\u0633 \u0645\u0639\u0645\u0648\u0644 \u06A9\u06D2 \u0645\u0637\u0627\u0628\u0642 \u06A9\u0627\u0645 \u06A9\u0631\u062A\u06CC \u06C1\u06CC\u06BA\u06D4"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -32659,7 +32672,7 @@ var SecureMasterKeyManager = class {
|
||||
var import_NotificationIntegration = __toESM(require_NotificationIntegration());
|
||||
|
||||
// package.json
|
||||
var version = "6.7.1";
|
||||
var version = "6.7.2";
|
||||
|
||||
// src/components/ui/LanguageSwitcher.jsx
|
||||
var LanguageSwitcher = () => {
|
||||
@@ -33292,7 +33305,7 @@ Right-click or Ctrl+click to disconnect`,
|
||||
window.EnhancedMinimalHeader = EnhancedMinimalHeader;
|
||||
|
||||
// src/components/ui/DownloadApps.jsx
|
||||
var DESKTOP_VERSION = "1.0.0";
|
||||
var DESKTOP_VERSION = "1.0.1";
|
||||
var DESKTOP_RELEASE = `https://github.com/SecureBitChat/securebit-desktop/releases/download/v${DESKTOP_VERSION}`;
|
||||
var DownloadApps = () => {
|
||||
const apps = [
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+27
-14
@@ -1095,7 +1095,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Cover traffic active: random fake frames (32-128 B every 15-30 s) on the ratcheted channel",
|
||||
"desktop.sec.coverOff": "The cover traffic generator is not running",
|
||||
"desktop.sec.coverUnsupported": "Cover traffic needs a Double Ratchet session (the peer is on an older release)",
|
||||
"desktop.tagline": "End-to-end freedom"
|
||||
"desktop.tagline": "End-to-end freedom",
|
||||
"desktop.callsNotHere": "Calls are not available in this build yet. Messages, files and group chats work as usual."
|
||||
},
|
||||
"de": {
|
||||
"language.label": "Sprache",
|
||||
@@ -1944,7 +1945,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Verdeckter Verkehr aktiv: zuf\xE4llige Scheinframes (32-128 B alle 15-30 s) auf dem Ratchet-Kanal",
|
||||
"desktop.sec.coverOff": "Der Generator f\xFCr verdeckten Verkehr l\xE4uft nicht",
|
||||
"desktop.sec.coverUnsupported": "Verdeckter Verkehr braucht eine Double-Ratchet-Sitzung (die Gegenstelle nutzt eine \xE4ltere Version)",
|
||||
"desktop.tagline": "Ende-zu-Ende-Freiheit"
|
||||
"desktop.tagline": "Ende-zu-Ende-Freiheit",
|
||||
"desktop.callsNotHere": "Anrufe sind in dieser Version noch nicht verf\xFCgbar. Nachrichten, Dateien und Gruppenchats funktionieren wie gewohnt."
|
||||
},
|
||||
"fr": {
|
||||
"language.label": "Langue",
|
||||
@@ -2793,7 +2795,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Trafic de couverture actif : trames factices al\xE9atoires (32-128 o toutes les 15-30 s) sur le canal \xE0 ratchet",
|
||||
"desktop.sec.coverOff": "Le g\xE9n\xE9rateur de trafic de couverture ne tourne pas",
|
||||
"desktop.sec.coverUnsupported": "Le trafic de couverture exige une session Double Ratchet (le pair utilise une version plus ancienne)",
|
||||
"desktop.tagline": "La libert\xE9 de bout en bout"
|
||||
"desktop.tagline": "La libert\xE9 de bout en bout",
|
||||
"desktop.callsNotHere": "Les appels ne sont pas encore disponibles dans cette version. Les messages, les fichiers et les discussions de groupe fonctionnent normalement."
|
||||
},
|
||||
"es": {
|
||||
"language.label": "Idioma",
|
||||
@@ -3642,7 +3645,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Tr\xE1fico de cobertura activo: tramas falsas aleatorias (32-128 B cada 15-30 s) en el canal con ratchet",
|
||||
"desktop.sec.coverOff": "El generador de tr\xE1fico de cobertura no est\xE1 en marcha",
|
||||
"desktop.sec.coverUnsupported": "El tr\xE1fico de cobertura requiere una sesi\xF3n Double Ratchet (el par usa una versi\xF3n anterior)",
|
||||
"desktop.tagline": "Libertad de extremo a extremo"
|
||||
"desktop.tagline": "Libertad de extremo a extremo",
|
||||
"desktop.callsNotHere": "Las llamadas a\xFAn no est\xE1n disponibles en esta versi\xF3n. Los mensajes, los archivos y los chats grupales funcionan con normalidad."
|
||||
},
|
||||
"uk": {
|
||||
"language.label": "\u041C\u043E\u0432\u0430",
|
||||
@@ -4491,7 +4495,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u041F\u0440\u0438\u043A\u0440\u0438\u0432\u0430\u044E\u0447\u0438\u0439 \u0442\u0440\u0430\u0444\u0456\u043A \u0430\u043A\u0442\u0438\u0432\u043D\u0438\u0439: \u0432\u0438\u043F\u0430\u0434\u043A\u043E\u0432\u0456 \u0444\u0430\u043B\u044C\u0448\u0438\u0432\u0456 \u043A\u0430\u0434\u0440\u0438 (32-128 \u0411 \u043A\u043E\u0436\u043D\u0456 15-30 \u0441) \u0443 \u043A\u0430\u043D\u0430\u043B\u0456 \u0437 \u0440\u0430\u0442\u0447\u0435\u0442\u043E\u043C",
|
||||
"desktop.sec.coverOff": "\u0413\u0435\u043D\u0435\u0440\u0430\u0442\u043E\u0440 \u043F\u0440\u0438\u043A\u0440\u0438\u0432\u0430\u044E\u0447\u043E\u0433\u043E \u0442\u0440\u0430\u0444\u0456\u043A\u0443 \u043D\u0435 \u043F\u0440\u0430\u0446\u044E\u0454",
|
||||
"desktop.sec.coverUnsupported": "\u041F\u0440\u0438\u043A\u0440\u0438\u0432\u0430\u044E\u0447\u0438\u0439 \u0442\u0440\u0430\u0444\u0456\u043A \u043F\u043E\u0442\u0440\u0435\u0431\u0443\u0454 \u0441\u0435\u0430\u043D\u0441\u0443 Double Ratchet (\u0443 \u0441\u043F\u0456\u0432\u0440\u043E\u0437\u043C\u043E\u0432\u043D\u0438\u043A\u0430 \u0441\u0442\u0430\u0440\u0456\u0448\u0430 \u0432\u0435\u0440\u0441\u0456\u044F)",
|
||||
"desktop.tagline": "\u041D\u0430\u0441\u043A\u0440\u0456\u0437\u043D\u0430 \u0441\u0432\u043E\u0431\u043E\u0434\u0430"
|
||||
"desktop.tagline": "\u041D\u0430\u0441\u043A\u0440\u0456\u0437\u043D\u0430 \u0441\u0432\u043E\u0431\u043E\u0434\u0430",
|
||||
"desktop.callsNotHere": "\u0414\u0437\u0432\u0456\u043D\u043A\u0438 \u0432 \u0446\u0456\u0439 \u0437\u0431\u0456\u0440\u0446\u0456 \u043F\u043E\u043A\u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0456. \u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F, \u0444\u0430\u0439\u043B\u0438 \u0442\u0430 \u0433\u0440\u0443\u043F\u043E\u0432\u0456 \u0447\u0430\u0442\u0438 \u043F\u0440\u0430\u0446\u044E\u044E\u0442\u044C \u044F\u043A \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u043E."
|
||||
},
|
||||
"ru": {
|
||||
"language.label": "\u042F\u0437\u044B\u043A",
|
||||
@@ -5340,7 +5345,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u041F\u0440\u0438\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043A \u0430\u043A\u0442\u0438\u0432\u0435\u043D: \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u044B\u0435 \u0444\u0430\u043B\u044C\u0448\u0438\u0432\u044B\u0435 \u043A\u0430\u0434\u0440\u044B (32-128 \u0411 \u043A\u0430\u0436\u0434\u044B\u0435 15-30 \u0441) \u0432 \u043A\u0430\u043D\u0430\u043B\u0435 \u0441 \u0440\u044D\u0442\u0447\u0435\u0442\u043E\u043C",
|
||||
"desktop.sec.coverOff": "\u0413\u0435\u043D\u0435\u0440\u0430\u0442\u043E\u0440 \u043F\u0440\u0438\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u0433\u043E \u0442\u0440\u0430\u0444\u0438\u043A\u0430 \u043D\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442",
|
||||
"desktop.sec.coverUnsupported": "\u041F\u0440\u0438\u043A\u0440\u044B\u0432\u0430\u044E\u0449\u0435\u043C\u0443 \u0442\u0440\u0430\u0444\u0438\u043A\u0443 \u043D\u0443\u0436\u0435\u043D \u0441\u0435\u0430\u043D\u0441 Double Ratchet (\u0443 \u0441\u043E\u0431\u0435\u0441\u0435\u0434\u043D\u0438\u043A\u0430 \u0432\u0435\u0440\u0441\u0438\u044F \u043F\u043E\u0441\u0442\u0430\u0440\u0448\u0435)",
|
||||
"desktop.tagline": "\u0421\u043A\u0432\u043E\u0437\u043D\u0430\u044F \u0441\u0432\u043E\u0431\u043E\u0434\u0430"
|
||||
"desktop.tagline": "\u0421\u043A\u0432\u043E\u0437\u043D\u0430\u044F \u0441\u0432\u043E\u0431\u043E\u0434\u0430",
|
||||
"desktop.callsNotHere": "\u0417\u0432\u043E\u043D\u043A\u0438 \u0432 \u044D\u0442\u043E\u0439 \u0441\u0431\u043E\u0440\u043A\u0435 \u043F\u043E\u043A\u0430 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B. \u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F, \u0444\u0430\u0439\u043B\u044B \u0438 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0435 \u0447\u0430\u0442\u044B \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u043A\u0430\u043A \u043E\u0431\u044B\u0447\u043D\u043E."
|
||||
},
|
||||
"zh": {
|
||||
"language.label": "\u8BED\u8A00",
|
||||
@@ -6189,7 +6195,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u63A9\u62A4\u6D41\u91CF\u5DF2\u542F\u7528\uFF1A\u5728\u68D8\u8F6E\u901A\u9053\u4E0A\u53D1\u9001\u968F\u673A\u4F2A\u5E27\uFF08\u6BCF 15-30 \u79D2 32-128 \u5B57\u8282\uFF09",
|
||||
"desktop.sec.coverOff": "\u63A9\u62A4\u6D41\u91CF\u751F\u6210\u5668\u672A\u8FD0\u884C",
|
||||
"desktop.sec.coverUnsupported": "\u63A9\u62A4\u6D41\u91CF\u9700\u8981 Double Ratchet \u4F1A\u8BDD\uFF08\u5BF9\u65B9\u4F7F\u7528\u8F83\u65E7\u7248\u672C\uFF09",
|
||||
"desktop.tagline": "\u7AEF\u5230\u7AEF\u7684\u81EA\u7531"
|
||||
"desktop.tagline": "\u7AEF\u5230\u7AEF\u7684\u81EA\u7531",
|
||||
"desktop.callsNotHere": "\u6B64\u7248\u672C\u6682\u4E0D\u652F\u6301\u901A\u8BDD\u3002\u6D88\u606F\u3001\u6587\u4EF6\u548C\u7FA4\u804A\u4E00\u5207\u6B63\u5E38\u3002"
|
||||
},
|
||||
"ko": {
|
||||
"language.label": "\uC5B8\uC5B4",
|
||||
@@ -7038,7 +7045,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\uC704\uC7A5 \uD2B8\uB798\uD53D \uC791\uB3D9 \uC911: \uB798\uCE6B \uCC44\uB110\uC5D0 \uBB34\uC791\uC704 \uB354\uBBF8 \uD504\uB808\uC784 (15-30\uCD08\uB9C8\uB2E4 32-128 B)",
|
||||
"desktop.sec.coverOff": "\uC704\uC7A5 \uD2B8\uB798\uD53D \uC0DD\uC131\uAE30\uAC00 \uC2E4\uD589\uB418\uACE0 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",
|
||||
"desktop.sec.coverUnsupported": "\uC704\uC7A5 \uD2B8\uB798\uD53D\uC5D0\uB294 Double Ratchet \uC138\uC158\uC774 \uD544\uC694\uD569\uB2C8\uB2E4 (\uC0C1\uB300\uAC00 \uAD6C\uBC84\uC804\uC785\uB2C8\uB2E4)",
|
||||
"desktop.tagline": "\uC885\uB2E8 \uAC04 \uC790\uC720"
|
||||
"desktop.tagline": "\uC885\uB2E8 \uAC04 \uC790\uC720",
|
||||
"desktop.callsNotHere": "\uC774 \uBE4C\uB4DC\uC5D0\uC11C\uB294 \uC544\uC9C1 \uD1B5\uD654\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uBA54\uC2DC\uC9C0, \uD30C\uC77C, \uADF8\uB8F9 \uCC44\uD305\uC740 \uD3C9\uC18C\uB300\uB85C \uC791\uB3D9\uD569\uB2C8\uB2E4."
|
||||
},
|
||||
"hi": {
|
||||
"language.label": "\u092D\u093E\u0937\u093E",
|
||||
@@ -7887,7 +7895,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u0906\u0935\u0930\u0923 \u091F\u094D\u0930\u0948\u092B\u093C\u093F\u0915 \u0938\u0915\u094D\u0930\u093F\u092F: \u0930\u0948\u091A\u0947\u091F \u091A\u0948\u0928\u0932 \u092A\u0930 \u092F\u093E\u0926\u0943\u091A\u094D\u091B\u093F\u0915 \u0928\u0915\u0932\u0940 \u092B\u093C\u094D\u0930\u0947\u092E (\u0939\u0930 15-30 \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 32-128 B)",
|
||||
"desktop.sec.coverOff": "\u0906\u0935\u0930\u0923 \u091F\u094D\u0930\u0948\u092B\u093C\u093F\u0915 \u091C\u0928\u0930\u0947\u091F\u0930 \u0928\u0939\u0940\u0902 \u091A\u0932 \u0930\u0939\u093E",
|
||||
"desktop.sec.coverUnsupported": "\u0906\u0935\u0930\u0923 \u091F\u094D\u0930\u0948\u092B\u093C\u093F\u0915 \u0915\u0947 \u0932\u093F\u090F Double Ratchet \u0938\u0924\u094D\u0930 \u091A\u093E\u0939\u093F\u090F (\u0938\u093E\u0925\u0940 \u092A\u0941\u0930\u093E\u0928\u0947 \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u092A\u0930 \u0939\u0948)",
|
||||
"desktop.tagline": "\u0938\u093F\u0930\u0947 \u0938\u0947 \u0938\u093F\u0930\u0947 \u0924\u0915 \u0906\u091C\u093C\u093E\u0926\u0940"
|
||||
"desktop.tagline": "\u0938\u093F\u0930\u0947 \u0938\u0947 \u0938\u093F\u0930\u0947 \u0924\u0915 \u0906\u091C\u093C\u093E\u0926\u0940",
|
||||
"desktop.callsNotHere": "\u0907\u0938 \u092C\u093F\u0932\u094D\u0921 \u092E\u0947\u0902 \u0915\u0949\u0932 \u0905\u092D\u0940 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964 \u0938\u0902\u0926\u0947\u0936, \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u0914\u0930 \u0938\u092E\u0942\u0939 \u091A\u0948\u091F \u0938\u093E\u092E\u093E\u0928\u094D\u092F \u0930\u0942\u092A \u0938\u0947 \u0915\u093E\u092E \u0915\u0930\u0924\u0947 \u0939\u0948\u0902\u0964"
|
||||
},
|
||||
"ar": {
|
||||
"language.label": "\u0627\u0644\u0644\u063A\u0629",
|
||||
@@ -8736,7 +8745,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u062D\u0631\u0643\u0629 \u0627\u0644\u062A\u0645\u0648\u064A\u0647 \u0646\u0634\u0637\u0629: \u0625\u0637\u0627\u0631\u0627\u062A \u0648\u0647\u0645\u064A\u0629 \u0639\u0634\u0648\u0627\u0626\u064A\u0629 (32-128 \u0628\u0627\u064A\u062A \u0643\u0644 15-30 \u062B\u0627\u0646\u064A\u0629) \u0639\u0644\u0649 \u0642\u0646\u0627\u0629 \u0627\u0644\u0631\u0627\u062A\u0634\u064A\u062A",
|
||||
"desktop.sec.coverOff": "\u0645\u0648\u0644\u0651\u062F \u062D\u0631\u0643\u0629 \u0627\u0644\u062A\u0645\u0648\u064A\u0647 \u0644\u0627 \u064A\u0639\u0645\u0644",
|
||||
"desktop.sec.coverUnsupported": "\u062A\u062D\u062A\u0627\u062C \u062D\u0631\u0643\u0629 \u0627\u0644\u062A\u0645\u0648\u064A\u0647 \u0625\u0644\u0649 \u062C\u0644\u0633\u0629 Double Ratchet (\u0627\u0644\u0637\u0631\u0641 \u0627\u0644\u0622\u062E\u0631 \u0639\u0644\u0649 \u0625\u0635\u062F\u0627\u0631 \u0623\u0642\u062F\u0645)",
|
||||
"desktop.tagline": "\u062D\u0631\u064A\u0629 \u0645\u0646 \u0637\u0631\u0641 \u0625\u0644\u0649 \u0637\u0631\u0641"
|
||||
"desktop.tagline": "\u062D\u0631\u064A\u0629 \u0645\u0646 \u0637\u0631\u0641 \u0625\u0644\u0649 \u0637\u0631\u0641",
|
||||
"desktop.callsNotHere": "\u0627\u0644\u0645\u0643\u0627\u0644\u0645\u0627\u062A \u063A\u064A\u0631 \u0645\u062A\u0627\u062D\u0629 \u0628\u0639\u062F \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0646\u0633\u062E\u0629. \u0627\u0644\u0631\u0633\u0627\u0626\u0644 \u0648\u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0648\u0627\u0644\u062F\u0631\u062F\u0634\u0627\u062A \u0627\u0644\u062C\u0645\u0627\u0639\u064A\u0629 \u062A\u0639\u0645\u0644 \u0643\u0627\u0644\u0645\u0639\u062A\u0627\u062F."
|
||||
},
|
||||
"he": {
|
||||
"language.label": "\u05E9\u05E4\u05D4",
|
||||
@@ -9585,7 +9595,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u05EA\u05E2\u05D1\u05D5\u05E8\u05EA \u05D4\u05E1\u05D5\u05D5\u05D0\u05D4 \u05E4\u05E2\u05D9\u05DC\u05D4: \u05DE\u05E1\u05D2\u05E8\u05D5\u05EA \u05DE\u05D6\u05D5\u05D9\u05E4\u05D5\u05EA \u05D0\u05E7\u05E8\u05D0\u05D9\u05D5\u05EA (32-128 \u05D1\u05EA\u05D9\u05DD \u05DB\u05DC 15-30 \u05E9\u05E0\u05D9\u05D5\u05EA) \u05D1\u05E2\u05E8\u05D5\u05E5 \u05D4\u05E8\u05D0\u05E6\u05F3\u05D8",
|
||||
"desktop.sec.coverOff": "\u05DE\u05D7\u05D5\u05DC\u05DC \u05EA\u05E2\u05D1\u05D5\u05E8\u05EA \u05D4\u05D4\u05E1\u05D5\u05D5\u05D0\u05D4 \u05D0\u05D9\u05E0\u05D5 \u05E4\u05D5\u05E2\u05DC",
|
||||
"desktop.sec.coverUnsupported": "\u05EA\u05E2\u05D1\u05D5\u05E8\u05EA \u05D4\u05E1\u05D5\u05D5\u05D0\u05D4 \u05DE\u05D7\u05D9\u05D9\u05D1\u05EA \u05D4\u05E4\u05E2\u05DC\u05EA Double Ratchet (\u05D4\u05E6\u05D3 \u05D4\u05E9\u05E0\u05D9 \u05D1\u05D2\u05E8\u05E1\u05D4 \u05D9\u05E9\u05E0\u05D4 \u05D9\u05D5\u05EA\u05E8)",
|
||||
"desktop.tagline": "\u05D7\u05D5\u05E4\u05E9 \u05DE\u05E7\u05E6\u05D4 \u05DC\u05E7\u05E6\u05D4"
|
||||
"desktop.tagline": "\u05D7\u05D5\u05E4\u05E9 \u05DE\u05E7\u05E6\u05D4 \u05DC\u05E7\u05E6\u05D4",
|
||||
"desktop.callsNotHere": "\u05E9\u05D9\u05D7\u05D5\u05EA \u05D0\u05D9\u05E0\u05DF \u05D6\u05DE\u05D9\u05E0\u05D5\u05EA \u05E2\u05D3\u05D9\u05D9\u05DF \u05D1\u05D2\u05E8\u05E1\u05D4 \u05D6\u05D5. \u05D4\u05D5\u05D3\u05E2\u05D5\u05EA, \u05E7\u05D1\u05E6\u05D9\u05DD \u05D5\u05E6\u05F3\u05D0\u05D8\u05D9\u05DD \u05E7\u05D1\u05D5\u05E6\u05EA\u05D9\u05D9\u05DD \u05E4\u05D5\u05E2\u05DC\u05D9\u05DD \u05DB\u05E8\u05D2\u05D9\u05DC."
|
||||
},
|
||||
"fa": {
|
||||
"language.label": "\u0632\u0628\u0627\u0646",
|
||||
@@ -10434,7 +10445,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u062A\u0631\u0627\u0641\u06CC\u06A9 \u067E\u0648\u0634\u0634\u06CC \u0641\u0639\u0627\u0644 \u0627\u0633\u062A: \u0642\u0627\u0628\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u06AF\u06CC \u062A\u0635\u0627\u062F\u0641\u06CC (\u06F3\u06F2 \u062A\u0627 \u06F1\u06F2\u06F8 \u0628\u0627\u06CC\u062A \u0647\u0631 \u06F1\u06F5 \u062A\u0627 \u06F3\u06F0 \u062B\u0627\u0646\u06CC\u0647) \u0631\u0648\u06CC \u06A9\u0627\u0646\u0627\u0644 \u0631\u0686\u062A",
|
||||
"desktop.sec.coverOff": "\u0645\u0648\u0644\u062F \u062A\u0631\u0627\u0641\u06CC\u06A9 \u067E\u0648\u0634\u0634\u06CC \u062F\u0631 \u062D\u0627\u0644 \u0627\u062C\u0631\u0627 \u0646\u06CC\u0633\u062A",
|
||||
"desktop.sec.coverUnsupported": "\u062A\u0631\u0627\u0641\u06CC\u06A9 \u067E\u0648\u0634\u0634\u06CC \u0628\u0647 \u0646\u0634\u0633\u062A Double Ratchet \u0646\u06CC\u0627\u0632 \u062F\u0627\u0631\u062F (\u0637\u0631\u0641 \u0645\u0642\u0627\u0628\u0644 \u0646\u0633\u062E\u0647\u0654 \u0642\u062F\u06CC\u0645\u06CC\u200C\u062A\u0631\u06CC \u062F\u0627\u0631\u062F)",
|
||||
"desktop.tagline": "\u0622\u0632\u0627\u062F\u06CC \u0633\u0631\u062A\u0627\u0633\u0631\u06CC"
|
||||
"desktop.tagline": "\u0622\u0632\u0627\u062F\u06CC \u0633\u0631\u062A\u0627\u0633\u0631\u06CC",
|
||||
"desktop.callsNotHere": "\u062A\u0645\u0627\u0633\u200C\u0647\u0627 \u0647\u0646\u0648\u0632 \u062F\u0631 \u0627\u06CC\u0646 \u0646\u0633\u062E\u0647 \u062F\u0631 \u062F\u0633\u062A\u0631\u0633 \u0646\u06CC\u0633\u062A\u0646\u062F. \u067E\u06CC\u0627\u0645\u200C\u0647\u0627\u060C \u0641\u0627\u06CC\u0644\u200C\u0647\u0627 \u0648 \u06AF\u0641\u062A\u200C\u0648\u06AF\u0648\u0647\u0627\u06CC \u06AF\u0631\u0648\u0647\u06CC \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u06A9\u0627\u0631 \u0645\u06CC\u200C\u06A9\u0646\u0646\u062F."
|
||||
},
|
||||
"ur": {
|
||||
"language.label": "\u0632\u0628\u0627\u0646",
|
||||
@@ -11283,7 +11295,8 @@ var DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "\u06A9\u0648\u0631 \u0679\u0631\u06CC\u0641\u06A9 \u0641\u0639\u0627\u0644: \u0631\u06CC\u0686\u0679 \u0686\u06CC\u0646\u0644 \u067E\u0631 \u0628\u06D2 \u062A\u0631\u062A\u06CC\u0628 \u062C\u0639\u0644\u06CC \u0641\u0631\u06CC\u0645 (\u06C1\u0631 15-30 \u0633\u06CC\u06A9\u0646\u0688 \u0645\u06CC\u06BA 32-128 B)",
|
||||
"desktop.sec.coverOff": "\u06A9\u0648\u0631 \u0679\u0631\u06CC\u0641\u06A9 \u062C\u0646\u0631\u06CC\u0679\u0631 \u0646\u06C1\u06CC\u06BA \u0686\u0644 \u0631\u06C1\u0627",
|
||||
"desktop.sec.coverUnsupported": "\u06A9\u0648\u0631 \u0679\u0631\u06CC\u0641\u06A9 \u06A9\u06D2 \u0644\u06CC\u06D2 Double Ratchet \u0633\u06CC\u0634\u0646 \u062F\u0631\u06A9\u0627\u0631 \u06C1\u06D2 (\u0633\u0627\u062A\u06BE\u06CC \u067E\u0631\u0627\u0646\u06D2 \u0648\u0631\u0698\u0646 \u067E\u0631 \u06C1\u06D2)",
|
||||
"desktop.tagline": "\u0633\u0631\u06D2 \u0633\u06D2 \u0633\u0631\u06D2 \u062A\u06A9 \u0622\u0632\u0627\u062F\u06CC"
|
||||
"desktop.tagline": "\u0633\u0631\u06D2 \u0633\u06D2 \u0633\u0631\u06D2 \u062A\u06A9 \u0622\u0632\u0627\u062F\u06CC",
|
||||
"desktop.callsNotHere": "\u0627\u0633 \u0628\u0644\u0688 \u0645\u06CC\u06BA \u06A9\u0627\u0644\u06CC\u06BA \u0627\u0628\u06BE\u06CC \u062F\u0633\u062A\u06CC\u0627\u0628 \u0646\u06C1\u06CC\u06BA \u06C1\u06CC\u06BA\u06D4 \u067E\u06CC\u063A\u0627\u0645\u0627\u062A\u060C \u0641\u0627\u0626\u0644\u06CC\u06BA \u0627\u0648\u0631 \u06AF\u0631\u0648\u067E \u0686\u06CC\u0679\u0633 \u0645\u0639\u0645\u0648\u0644 \u06A9\u06D2 \u0645\u0637\u0627\u0628\u0642 \u06A9\u0627\u0645 \u06A9\u0631\u062A\u06CC \u06C1\u06CC\u06BA\u06D4"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -18141,7 +18154,7 @@ var EnhancedConnectionSetup = ({
|
||||
}, disabled: !hasInvite || connectionStatus === "connecting", style: { width: "100%", display: "inline-flex", alignItems: "center", justifyContent: "center", gap: "9px", padding: "14px", borderRadius: "13px", border: "none", background: hasInvite && connectionStatus !== "connecting" ? C_ORANGE : "rgba(255,255,255,0.05)", color: hasInvite && connectionStatus !== "connecting" ? "#1a0f04" : "#56565e", fontFamily: "inherit", fontSize: "15px", fontWeight: 700, cursor: hasInvite && connectionStatus !== "connecting" ? "pointer" : "not-allowed", boxShadow: hasInvite && connectionStatus !== "connecting" ? "0 8px 24px rgba(240,137,42,0.28)" : "none" } }, connectionStatus === "connecting" ? t("intro.connecting") : t("intro.connect"))
|
||||
]);
|
||||
}
|
||||
const SB_DESKTOP_VERSION = "1.0.0";
|
||||
const SB_DESKTOP_VERSION = "1.0.1";
|
||||
const SB_DESKTOP_RELEASE = `https://github.com/SecureBitChat/securebit-desktop/releases/download/v${SB_DESKTOP_VERSION}`;
|
||||
const DOWNLOADS = {
|
||||
mac: { name: "macOS", format: ".dmg \xB7 Apple Silicon & Intel", icon: "fab fa-apple", url: `${SB_DESKTOP_RELEASE}/SecureBit.Chat_${SB_DESKTOP_VERSION}_x64.dmg` },
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
+2
-2
@@ -7,7 +7,7 @@ this document describes.
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
| Release | v6.7.1 |
|
||||
| Release | v6.7.2 |
|
||||
| Protocol version | 4.1 |
|
||||
| Ratchet wire version | 1 |
|
||||
|
||||
@@ -347,5 +347,5 @@ no leg may stop a capture it borrowed.
|
||||
|
||||
## Scope
|
||||
|
||||
This describes the browser implementation as it stands in v6.7.1. It is not a
|
||||
This describes the browser implementation as it stands in v6.7.2. It is not a
|
||||
substitute for independent cryptographic review.
|
||||
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/es/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/fa/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/fr/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/he/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/hi/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/ko/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+2
-1
@@ -881,6 +881,7 @@
|
||||
"desktop.sec.coverOn": "حركة التمويه نشطة: إطارات وهمية عشوائية (32-128 بايت كل 15-30 ثانية) على قناة الراتشيت",
|
||||
"desktop.sec.coverOff": "مولّد حركة التمويه لا يعمل",
|
||||
"desktop.sec.coverUnsupported": "تحتاج حركة التمويه إلى جلسة Double Ratchet (الطرف الآخر على إصدار أقدم)",
|
||||
"desktop.tagline": "حرية من طرف إلى طرف"
|
||||
"desktop.tagline": "حرية من طرف إلى طرف",
|
||||
"desktop.callsNotHere": "المكالمات غير متاحة بعد في هذه النسخة. الرسائل والملفات والدردشات الجماعية تعمل كالمعتاد."
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -881,6 +881,7 @@
|
||||
"desktop.sec.coverOn": "Verdeckter Verkehr aktiv: zufällige Scheinframes (32-128 B alle 15-30 s) auf dem Ratchet-Kanal",
|
||||
"desktop.sec.coverOff": "Der Generator für verdeckten Verkehr läuft nicht",
|
||||
"desktop.sec.coverUnsupported": "Verdeckter Verkehr braucht eine Double-Ratchet-Sitzung (die Gegenstelle nutzt eine ältere Version)",
|
||||
"desktop.tagline": "Ende-zu-Ende-Freiheit"
|
||||
"desktop.tagline": "Ende-zu-Ende-Freiheit",
|
||||
"desktop.callsNotHere": "Anrufe sind in dieser Version noch nicht verfügbar. Nachrichten, Dateien und Gruppenchats funktionieren wie gewohnt."
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -876,6 +876,7 @@
|
||||
"desktop.sec.coverOn": "Cover traffic active: random fake frames (32-128 B every 15-30 s) on the ratcheted channel",
|
||||
"desktop.sec.coverOff": "The cover traffic generator is not running",
|
||||
"desktop.sec.coverUnsupported": "Cover traffic needs a Double Ratchet session (the peer is on an older release)",
|
||||
"desktop.tagline": "End-to-end freedom"
|
||||
"desktop.tagline": "End-to-end freedom",
|
||||
"desktop.callsNotHere": "Calls are not available in this build yet. Messages, files and group chats work as usual."
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -881,6 +881,7 @@
|
||||
"desktop.sec.coverOn": "Tráfico de cobertura activo: tramas falsas aleatorias (32-128 B cada 15-30 s) en el canal con ratchet",
|
||||
"desktop.sec.coverOff": "El generador de tráfico de cobertura no está en marcha",
|
||||
"desktop.sec.coverUnsupported": "El tráfico de cobertura requiere una sesión Double Ratchet (el par usa una versión anterior)",
|
||||
"desktop.tagline": "Libertad de extremo a extremo"
|
||||
"desktop.tagline": "Libertad de extremo a extremo",
|
||||
"desktop.callsNotHere": "Las llamadas aún no están disponibles en esta versión. Los mensajes, los archivos y los chats grupales funcionan con normalidad."
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -881,6 +881,7 @@
|
||||
"desktop.sec.coverOn": "ترافیک پوششی فعال است: قابهای ساختگی تصادفی (۳۲ تا ۱۲۸ بایت هر ۱۵ تا ۳۰ ثانیه) روی کانال رچت",
|
||||
"desktop.sec.coverOff": "مولد ترافیک پوششی در حال اجرا نیست",
|
||||
"desktop.sec.coverUnsupported": "ترافیک پوششی به نشست Double Ratchet نیاز دارد (طرف مقابل نسخهٔ قدیمیتری دارد)",
|
||||
"desktop.tagline": "آزادی سرتاسری"
|
||||
"desktop.tagline": "آزادی سرتاسری",
|
||||
"desktop.callsNotHere": "تماسها هنوز در این نسخه در دسترس نیستند. پیامها، فایلها و گفتوگوهای گروهی طبق معمول کار میکنند."
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -876,7 +876,8 @@
|
||||
"desktop.sec.coverOn": "Trafic de couverture actif : trames factices aléatoires (32-128 o toutes les 15-30 s) sur le canal à ratchet",
|
||||
"desktop.sec.coverOff": "Le générateur de trafic de couverture ne tourne pas",
|
||||
"desktop.sec.coverUnsupported": "Le trafic de couverture exige une session Double Ratchet (le pair utilise une version plus ancienne)",
|
||||
"desktop.tagline": "La liberté de bout en bout"
|
||||
"desktop.tagline": "La liberté de bout en bout",
|
||||
"desktop.callsNotHere": "Les appels ne sont pas encore disponibles dans cette version. Les messages, les fichiers et les discussions de groupe fonctionnent normalement."
|
||||
},
|
||||
"manifest": {
|
||||
"name": "SecureBit.chat - Messagerie privée et chiffrée",
|
||||
|
||||
+2
-1
@@ -881,6 +881,7 @@
|
||||
"desktop.sec.coverOn": "תעבורת הסוואה פעילה: מסגרות מזויפות אקראיות (32-128 בתים כל 15-30 שניות) בערוץ הראצ׳ט",
|
||||
"desktop.sec.coverOff": "מחולל תעבורת ההסוואה אינו פועל",
|
||||
"desktop.sec.coverUnsupported": "תעבורת הסוואה מחייבת הפעלת Double Ratchet (הצד השני בגרסה ישנה יותר)",
|
||||
"desktop.tagline": "חופש מקצה לקצה"
|
||||
"desktop.tagline": "חופש מקצה לקצה",
|
||||
"desktop.callsNotHere": "שיחות אינן זמינות עדיין בגרסה זו. הודעות, קבצים וצ׳אטים קבוצתיים פועלים כרגיל."
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -876,7 +876,8 @@
|
||||
"desktop.sec.coverOn": "आवरण ट्रैफ़िक सक्रिय: रैचेट चैनल पर यादृच्छिक नकली फ़्रेम (हर 15-30 सेकंड में 32-128 B)",
|
||||
"desktop.sec.coverOff": "आवरण ट्रैफ़िक जनरेटर नहीं चल रहा",
|
||||
"desktop.sec.coverUnsupported": "आवरण ट्रैफ़िक के लिए Double Ratchet सत्र चाहिए (साथी पुराने संस्करण पर है)",
|
||||
"desktop.tagline": "सिरे से सिरे तक आज़ादी"
|
||||
"desktop.tagline": "सिरे से सिरे तक आज़ादी",
|
||||
"desktop.callsNotHere": "इस बिल्ड में कॉल अभी उपलब्ध नहीं हैं। संदेश, फ़ाइलें और समूह चैट सामान्य रूप से काम करते हैं।"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "SecureBit.chat - निजी, एन्क्रिप्टेड मैसेंजर",
|
||||
|
||||
+2
-1
@@ -876,7 +876,8 @@
|
||||
"desktop.sec.coverOn": "위장 트래픽 작동 중: 래칫 채널에 무작위 더미 프레임 (15-30초마다 32-128 B)",
|
||||
"desktop.sec.coverOff": "위장 트래픽 생성기가 실행되고 있지 않습니다",
|
||||
"desktop.sec.coverUnsupported": "위장 트래픽에는 Double Ratchet 세션이 필요합니다 (상대가 구버전입니다)",
|
||||
"desktop.tagline": "종단 간 자유"
|
||||
"desktop.tagline": "종단 간 자유",
|
||||
"desktop.callsNotHere": "이 빌드에서는 아직 통화를 사용할 수 없습니다. 메시지, 파일, 그룹 채팅은 평소대로 작동합니다."
|
||||
},
|
||||
"manifest": {
|
||||
"name": "SecureBit.chat - 종단 간 암호화 비공개 메신저",
|
||||
|
||||
+2
-1
@@ -881,6 +881,7 @@
|
||||
"desktop.sec.coverOn": "Прикрывающий трафик активен: случайные фальшивые кадры (32-128 Б каждые 15-30 с) в канале с рэтчетом",
|
||||
"desktop.sec.coverOff": "Генератор прикрывающего трафика не работает",
|
||||
"desktop.sec.coverUnsupported": "Прикрывающему трафику нужен сеанс Double Ratchet (у собеседника версия постарше)",
|
||||
"desktop.tagline": "Сквозная свобода"
|
||||
"desktop.tagline": "Сквозная свобода",
|
||||
"desktop.callsNotHere": "Звонки в этой сборке пока недоступны. Сообщения, файлы и групповые чаты работают как обычно."
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -881,6 +881,7 @@
|
||||
"desktop.sec.coverOn": "Прикриваючий трафік активний: випадкові фальшиві кадри (32-128 Б кожні 15-30 с) у каналі з ратчетом",
|
||||
"desktop.sec.coverOff": "Генератор прикриваючого трафіку не працює",
|
||||
"desktop.sec.coverUnsupported": "Прикриваючий трафік потребує сеансу Double Ratchet (у співрозмовника старіша версія)",
|
||||
"desktop.tagline": "Наскрізна свобода"
|
||||
"desktop.tagline": "Наскрізна свобода",
|
||||
"desktop.callsNotHere": "Дзвінки в цій збірці поки недоступні. Повідомлення, файли та групові чати працюють як звичайно."
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -881,6 +881,7 @@
|
||||
"desktop.sec.coverOn": "کور ٹریفک فعال: ریچٹ چینل پر بے ترتیب جعلی فریم (ہر 15-30 سیکنڈ میں 32-128 B)",
|
||||
"desktop.sec.coverOff": "کور ٹریفک جنریٹر نہیں چل رہا",
|
||||
"desktop.sec.coverUnsupported": "کور ٹریفک کے لیے Double Ratchet سیشن درکار ہے (ساتھی پرانے ورژن پر ہے)",
|
||||
"desktop.tagline": "سرے سے سرے تک آزادی"
|
||||
"desktop.tagline": "سرے سے سرے تک آزادی",
|
||||
"desktop.callsNotHere": "اس بلڈ میں کالیں ابھی دستیاب نہیں ہیں۔ پیغامات، فائلیں اور گروپ چیٹس معمول کے مطابق کام کرتی ہیں۔"
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -876,7 +876,8 @@
|
||||
"desktop.sec.coverOn": "掩护流量已启用:在棘轮通道上发送随机伪帧(每 15-30 秒 32-128 字节)",
|
||||
"desktop.sec.coverOff": "掩护流量生成器未运行",
|
||||
"desktop.sec.coverUnsupported": "掩护流量需要 Double Ratchet 会话(对方使用较旧版本)",
|
||||
"desktop.tagline": "端到端的自由"
|
||||
"desktop.tagline": "端到端的自由",
|
||||
"desktop.callsNotHere": "此版本暂不支持通话。消息、文件和群聊一切正常。"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "SecureBit.chat - 私密的端到端加密通讯工具",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"version": "1788321149505",
|
||||
"buildVersion": "1788321149505",
|
||||
"appVersion": "6.7.1",
|
||||
"buildTime": "2026-09-02T03:52:29.547Z",
|
||||
"buildId": "1788321149505-c5b759e",
|
||||
"gitHash": "c5b759e",
|
||||
"version": "1788382788139",
|
||||
"buildVersion": "1788382788139",
|
||||
"appVersion": "6.7.2",
|
||||
"buildTime": "2026-09-02T20:59:48.213Z",
|
||||
"buildId": "1788382788139-2294e38",
|
||||
"gitHash": "2294e38",
|
||||
"generated": true,
|
||||
"generatedAt": "2026-09-02T03:52:29.548Z"
|
||||
"generatedAt": "2026-09-02T20:59:48.215Z"
|
||||
}
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "securebit-chat",
|
||||
"version": "6.7.1",
|
||||
"version": "6.7.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "securebit-chat",
|
||||
"version": "6.7.1",
|
||||
"version": "6.7.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"base64-js": "1.5.1",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "securebit-chat",
|
||||
"version": "6.7.1",
|
||||
"version": "6.7.2",
|
||||
"description": "Secure P2P Communication Application with End-to-End Encryption",
|
||||
"main": "index.html",
|
||||
"scripts": {
|
||||
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/ru/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+1
-1
@@ -1680,7 +1680,7 @@ import { GroupCallMedia, mediaErrorCode } from './group/groupCallMedia.js';
|
||||
// /download/v0.3.0/SecureBit.Chat_0.1.0_x64-setup.exe, a file that never
|
||||
// existed, and the download 404s. A pinned tag keeps serving a real
|
||||
// installer instead.
|
||||
const SB_DESKTOP_VERSION = '1.0.0';
|
||||
const SB_DESKTOP_VERSION = '1.0.1';
|
||||
const SB_DESKTOP_RELEASE = `https://github.com/SecureBitChat/securebit-desktop/releases/download/v${SB_DESKTOP_VERSION}`;
|
||||
const DOWNLOADS = {
|
||||
mac: { name: 'macOS', format: '.dmg · Apple Silicon & Intel', icon: 'fab fa-apple', url: `${SB_DESKTOP_RELEASE}/SecureBit.Chat_${SB_DESKTOP_VERSION}_x64.dmg` },
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// The tag is pinned rather than using /releases/latest/download/: the filenames
|
||||
// carry the version, so a `latest` link 404s the moment a newer release exists,
|
||||
// whereas a pinned tag keeps serving a working (if older) installer.
|
||||
const DESKTOP_VERSION = '1.0.0';
|
||||
const DESKTOP_VERSION = '1.0.1';
|
||||
const DESKTOP_RELEASE = `https://github.com/SecureBitChat/securebit-desktop/releases/download/v${DESKTOP_VERSION}`;
|
||||
|
||||
const DownloadApps = () => {
|
||||
|
||||
+26
-13
@@ -944,7 +944,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Cover traffic active: random fake frames (32-128 B every 15-30 s) on the ratcheted channel",
|
||||
"desktop.sec.coverOff": "The cover traffic generator is not running",
|
||||
"desktop.sec.coverUnsupported": "Cover traffic needs a Double Ratchet session (the peer is on an older release)",
|
||||
"desktop.tagline": "End-to-end freedom"
|
||||
"desktop.tagline": "End-to-end freedom",
|
||||
"desktop.callsNotHere": "Calls are not available in this build yet. Messages, files and group chats work as usual."
|
||||
},
|
||||
"de": {
|
||||
"language.label": "Sprache",
|
||||
@@ -1793,7 +1794,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Verdeckter Verkehr aktiv: zufällige Scheinframes (32-128 B alle 15-30 s) auf dem Ratchet-Kanal",
|
||||
"desktop.sec.coverOff": "Der Generator für verdeckten Verkehr läuft nicht",
|
||||
"desktop.sec.coverUnsupported": "Verdeckter Verkehr braucht eine Double-Ratchet-Sitzung (die Gegenstelle nutzt eine ältere Version)",
|
||||
"desktop.tagline": "Ende-zu-Ende-Freiheit"
|
||||
"desktop.tagline": "Ende-zu-Ende-Freiheit",
|
||||
"desktop.callsNotHere": "Anrufe sind in dieser Version noch nicht verfügbar. Nachrichten, Dateien und Gruppenchats funktionieren wie gewohnt."
|
||||
},
|
||||
"fr": {
|
||||
"language.label": "Langue",
|
||||
@@ -2642,7 +2644,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Trafic de couverture actif : trames factices aléatoires (32-128 o toutes les 15-30 s) sur le canal à ratchet",
|
||||
"desktop.sec.coverOff": "Le générateur de trafic de couverture ne tourne pas",
|
||||
"desktop.sec.coverUnsupported": "Le trafic de couverture exige une session Double Ratchet (le pair utilise une version plus ancienne)",
|
||||
"desktop.tagline": "La liberté de bout en bout"
|
||||
"desktop.tagline": "La liberté de bout en bout",
|
||||
"desktop.callsNotHere": "Les appels ne sont pas encore disponibles dans cette version. Les messages, les fichiers et les discussions de groupe fonctionnent normalement."
|
||||
},
|
||||
"es": {
|
||||
"language.label": "Idioma",
|
||||
@@ -3491,7 +3494,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Tráfico de cobertura activo: tramas falsas aleatorias (32-128 B cada 15-30 s) en el canal con ratchet",
|
||||
"desktop.sec.coverOff": "El generador de tráfico de cobertura no está en marcha",
|
||||
"desktop.sec.coverUnsupported": "El tráfico de cobertura requiere una sesión Double Ratchet (el par usa una versión anterior)",
|
||||
"desktop.tagline": "Libertad de extremo a extremo"
|
||||
"desktop.tagline": "Libertad de extremo a extremo",
|
||||
"desktop.callsNotHere": "Las llamadas aún no están disponibles en esta versión. Los mensajes, los archivos y los chats grupales funcionan con normalidad."
|
||||
},
|
||||
"uk": {
|
||||
"language.label": "Мова",
|
||||
@@ -4340,7 +4344,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Прикриваючий трафік активний: випадкові фальшиві кадри (32-128 Б кожні 15-30 с) у каналі з ратчетом",
|
||||
"desktop.sec.coverOff": "Генератор прикриваючого трафіку не працює",
|
||||
"desktop.sec.coverUnsupported": "Прикриваючий трафік потребує сеансу Double Ratchet (у співрозмовника старіша версія)",
|
||||
"desktop.tagline": "Наскрізна свобода"
|
||||
"desktop.tagline": "Наскрізна свобода",
|
||||
"desktop.callsNotHere": "Дзвінки в цій збірці поки недоступні. Повідомлення, файли та групові чати працюють як звичайно."
|
||||
},
|
||||
"ru": {
|
||||
"language.label": "Язык",
|
||||
@@ -5189,7 +5194,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "Прикрывающий трафик активен: случайные фальшивые кадры (32-128 Б каждые 15-30 с) в канале с рэтчетом",
|
||||
"desktop.sec.coverOff": "Генератор прикрывающего трафика не работает",
|
||||
"desktop.sec.coverUnsupported": "Прикрывающему трафику нужен сеанс Double Ratchet (у собеседника версия постарше)",
|
||||
"desktop.tagline": "Сквозная свобода"
|
||||
"desktop.tagline": "Сквозная свобода",
|
||||
"desktop.callsNotHere": "Звонки в этой сборке пока недоступны. Сообщения, файлы и групповые чаты работают как обычно."
|
||||
},
|
||||
"zh": {
|
||||
"language.label": "语言",
|
||||
@@ -6038,7 +6044,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "掩护流量已启用:在棘轮通道上发送随机伪帧(每 15-30 秒 32-128 字节)",
|
||||
"desktop.sec.coverOff": "掩护流量生成器未运行",
|
||||
"desktop.sec.coverUnsupported": "掩护流量需要 Double Ratchet 会话(对方使用较旧版本)",
|
||||
"desktop.tagline": "端到端的自由"
|
||||
"desktop.tagline": "端到端的自由",
|
||||
"desktop.callsNotHere": "此版本暂不支持通话。消息、文件和群聊一切正常。"
|
||||
},
|
||||
"ko": {
|
||||
"language.label": "언어",
|
||||
@@ -6887,7 +6894,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "위장 트래픽 작동 중: 래칫 채널에 무작위 더미 프레임 (15-30초마다 32-128 B)",
|
||||
"desktop.sec.coverOff": "위장 트래픽 생성기가 실행되고 있지 않습니다",
|
||||
"desktop.sec.coverUnsupported": "위장 트래픽에는 Double Ratchet 세션이 필요합니다 (상대가 구버전입니다)",
|
||||
"desktop.tagline": "종단 간 자유"
|
||||
"desktop.tagline": "종단 간 자유",
|
||||
"desktop.callsNotHere": "이 빌드에서는 아직 통화를 사용할 수 없습니다. 메시지, 파일, 그룹 채팅은 평소대로 작동합니다."
|
||||
},
|
||||
"hi": {
|
||||
"language.label": "भाषा",
|
||||
@@ -7736,7 +7744,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "आवरण ट्रैफ़िक सक्रिय: रैचेट चैनल पर यादृच्छिक नकली फ़्रेम (हर 15-30 सेकंड में 32-128 B)",
|
||||
"desktop.sec.coverOff": "आवरण ट्रैफ़िक जनरेटर नहीं चल रहा",
|
||||
"desktop.sec.coverUnsupported": "आवरण ट्रैफ़िक के लिए Double Ratchet सत्र चाहिए (साथी पुराने संस्करण पर है)",
|
||||
"desktop.tagline": "सिरे से सिरे तक आज़ादी"
|
||||
"desktop.tagline": "सिरे से सिरे तक आज़ादी",
|
||||
"desktop.callsNotHere": "इस बिल्ड में कॉल अभी उपलब्ध नहीं हैं। संदेश, फ़ाइलें और समूह चैट सामान्य रूप से काम करते हैं।"
|
||||
},
|
||||
"ar": {
|
||||
"language.label": "اللغة",
|
||||
@@ -8585,7 +8594,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "حركة التمويه نشطة: إطارات وهمية عشوائية (32-128 بايت كل 15-30 ثانية) على قناة الراتشيت",
|
||||
"desktop.sec.coverOff": "مولّد حركة التمويه لا يعمل",
|
||||
"desktop.sec.coverUnsupported": "تحتاج حركة التمويه إلى جلسة Double Ratchet (الطرف الآخر على إصدار أقدم)",
|
||||
"desktop.tagline": "حرية من طرف إلى طرف"
|
||||
"desktop.tagline": "حرية من طرف إلى طرف",
|
||||
"desktop.callsNotHere": "المكالمات غير متاحة بعد في هذه النسخة. الرسائل والملفات والدردشات الجماعية تعمل كالمعتاد."
|
||||
},
|
||||
"he": {
|
||||
"language.label": "שפה",
|
||||
@@ -9434,7 +9444,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "תעבורת הסוואה פעילה: מסגרות מזויפות אקראיות (32-128 בתים כל 15-30 שניות) בערוץ הראצ׳ט",
|
||||
"desktop.sec.coverOff": "מחולל תעבורת ההסוואה אינו פועל",
|
||||
"desktop.sec.coverUnsupported": "תעבורת הסוואה מחייבת הפעלת Double Ratchet (הצד השני בגרסה ישנה יותר)",
|
||||
"desktop.tagline": "חופש מקצה לקצה"
|
||||
"desktop.tagline": "חופש מקצה לקצה",
|
||||
"desktop.callsNotHere": "שיחות אינן זמינות עדיין בגרסה זו. הודעות, קבצים וצ׳אטים קבוצתיים פועלים כרגיל."
|
||||
},
|
||||
"fa": {
|
||||
"language.label": "زبان",
|
||||
@@ -10283,7 +10294,8 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "ترافیک پوششی فعال است: قابهای ساختگی تصادفی (۳۲ تا ۱۲۸ بایت هر ۱۵ تا ۳۰ ثانیه) روی کانال رچت",
|
||||
"desktop.sec.coverOff": "مولد ترافیک پوششی در حال اجرا نیست",
|
||||
"desktop.sec.coverUnsupported": "ترافیک پوششی به نشست Double Ratchet نیاز دارد (طرف مقابل نسخهٔ قدیمیتری دارد)",
|
||||
"desktop.tagline": "آزادی سرتاسری"
|
||||
"desktop.tagline": "آزادی سرتاسری",
|
||||
"desktop.callsNotHere": "تماسها هنوز در این نسخه در دسترس نیستند. پیامها، فایلها و گفتوگوهای گروهی طبق معمول کار میکنند."
|
||||
},
|
||||
"ur": {
|
||||
"language.label": "زبان",
|
||||
@@ -11132,6 +11144,7 @@ export const DICTIONARIES = {
|
||||
"desktop.sec.coverOn": "کور ٹریفک فعال: ریچٹ چینل پر بے ترتیب جعلی فریم (ہر 15-30 سیکنڈ میں 32-128 B)",
|
||||
"desktop.sec.coverOff": "کور ٹریفک جنریٹر نہیں چل رہا",
|
||||
"desktop.sec.coverUnsupported": "کور ٹریفک کے لیے Double Ratchet سیشن درکار ہے (ساتھی پرانے ورژن پر ہے)",
|
||||
"desktop.tagline": "سرے سے سرے تک آزادی"
|
||||
"desktop.tagline": "سرے سے سرے تک آزادی",
|
||||
"desktop.callsNotHere": "اس بلڈ میں کالیں ابھی دستیاب نہیں ہیں۔ پیغامات، فائلیں اور گروپ چیٹس معمول کے مطابق کام کرتی ہیں۔"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -11,7 +11,7 @@ let DYNAMIC_CACHE = 'securebit-pwa-dynamic-v4.7.56';
|
||||
// Build stamp — rewritten by scripts/post-build.js on every release so this file's
|
||||
// bytes change each deploy. That is what makes the browser detect a new Service Worker,
|
||||
// reinstall it, drop stale caches and (via controllerchange) prompt the page to update.
|
||||
const SW_BUILD_VERSION = '1788321149505';
|
||||
const SW_BUILD_VERSION = '1788382788139';
|
||||
|
||||
// Locale subdirectories, rewritten by scripts/build-i18n.js. Each localized page is a
|
||||
// separate document at its own URL, so the shell has to be cached and served per
|
||||
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/uk/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/ur/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
+24
-24
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/zh/manifest.json">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
@@ -96,7 +96,7 @@
|
||||
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/logo/splash/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/logo/icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.png">
|
||||
@@ -105,7 +105,7 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/logo/icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/logo/icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788321149505">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788382788139">
|
||||
|
||||
<!-- Microsoft Tiles -->
|
||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||
@@ -222,7 +222,7 @@
|
||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||
both execute in document order after parsing, so React still runs before the
|
||||
app modules below, but the parser / first paint is no longer blocked. -->
|
||||
<script defer src="/config/ice-servers.js?v=1788321149505"></script>
|
||||
<script defer src="/config/ice-servers.js?v=1788382788139"></script>
|
||||
<script defer src="/libs/react/react.production.min.js"></script>
|
||||
<script defer src="/libs/react-dom/react-dom.production.min.js"></script>
|
||||
<!-- Prism syntax highlighting (vendored, offline). Tokenizes code as TEXT only —
|
||||
@@ -230,8 +230,8 @@
|
||||
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||
<script defer src="/libs/prism/prism.js"></script>
|
||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788321149505">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788321149505">
|
||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788382788139">
|
||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788382788139">
|
||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
||||
icons; fa-regular/fa-brands are loaded on demand by their CSS (rarely on the
|
||||
first screen). Inter latin 400/700 cover body text and headings/buttons. -->
|
||||
@@ -239,38 +239,38 @@
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/assets/fonts/inter/files/inter-latin-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788382788139">
|
||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788382788139">
|
||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||
answers all need to settle arguments with the sheets above on source order. -->
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788382788139">
|
||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||
above them, and they only ever apply under [dir="rtl"]. -->
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788321149505">
|
||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788382788139">
|
||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/load-async-css.js?v=1788382788139"></script>
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||
</noscript>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788321149505"></script>
|
||||
<script defer src="/src/scripts/fa-check.js?v=1788382788139"></script>
|
||||
<!-- Update Manager - система принудительного обновления -->
|
||||
<script defer src="/src/utils/updateManager.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788321149505"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788321149505"></script>
|
||||
<script defer src="/src/utils/updateManager.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/qr-local.js?v=1788382788139"></script>
|
||||
<script type="module" src="/src/components/QRScanner.js?v=1788382788139"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788321149505"></script>
|
||||
<script type="module" src="/dist/app-boot.js?v=1788382788139"></script>
|
||||
<script type="module" src="/dist/app.js?v=1788382788139"></script>
|
||||
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788321149505"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788321149505" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788321149505" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788321149505"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788321149505">
|
||||
<script defer src="/src/scripts/pwa-register.js?v=1788382788139"></script>
|
||||
<script src="/src/pwa/install-prompt.js?v=1788382788139" type="module"></script>
|
||||
<script src="/src/pwa/pwa-manager.js?v=1788382788139" type="module"></script>
|
||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788382788139"></script>
|
||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788382788139">
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user