chore(release): renumber group calls as v6.7.0
Group calls are a new capability, and 6.6.6 only landed as a patch because the version was bumped once per deploy while the feature was being tested. The number is the release's, not the deploy's. No code changes: version, badge, changelog heading, docs and build stamp. Claude-Session: https://claude.ai/code/session_01XSxAkET3hQTkYDQfbjCQwZ
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## v6.6.6 — Group calls
|
## v6.7.0 — Group calls
|
||||||
|
|
||||||
Groups can call now. Press the handset in a group's header for voice, the camera
|
Groups can call now. Press the handset in a group's header for voice, the camera
|
||||||
for video, and everyone in the group gets a ring. Whoever joins appears as a tile
|
for video, and everyone in the group gets a ring. Whoever joins appears as a tile
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
No accounts. No servers storing your messages. No installation required.
|
No accounts. No servers storing your messages. No installation required.
|
||||||
|
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||
[](CHANGELOG.md)
|
[](CHANGELOG.md)
|
||||||
[](#install-as-an-app)
|
[](#install-as-an-app)
|
||||||
[](#security-model)
|
[](#security-model)
|
||||||
[](#forward-secrecy)
|
[](#forward-secrecy)
|
||||||
|
|||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/ar/manifest.json">
|
<link rel="manifest" href="/ar/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/de/manifest.json">
|
<link rel="manifest" href="/de/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Vendored
+1
-1
@@ -31684,7 +31684,7 @@ var SecureMasterKeyManager = class {
|
|||||||
var import_NotificationIntegration = __toESM(require_NotificationIntegration());
|
var import_NotificationIntegration = __toESM(require_NotificationIntegration());
|
||||||
|
|
||||||
// package.json
|
// package.json
|
||||||
var version = "6.6.6";
|
var version = "6.7.0";
|
||||||
|
|
||||||
// src/components/ui/LanguageSwitcher.jsx
|
// src/components/ui/LanguageSwitcher.jsx
|
||||||
var LanguageSwitcher = () => {
|
var LanguageSwitcher = () => {
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+2
-2
@@ -7,7 +7,7 @@ this document describes.
|
|||||||
|
|
||||||
| | |
|
| | |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| Release | v6.6.6 |
|
| Release | v6.7.0 |
|
||||||
| Protocol version | 4.1 |
|
| Protocol version | 4.1 |
|
||||||
| Ratchet wire version | 1 |
|
| Ratchet wire version | 1 |
|
||||||
|
|
||||||
@@ -347,5 +347,5 @@ no leg may stop a capture it borrowed.
|
|||||||
|
|
||||||
## Scope
|
## Scope
|
||||||
|
|
||||||
This describes the browser implementation as it stands in v6.6.6. It is not a
|
This describes the browser implementation as it stands in v6.7.0. It is not a
|
||||||
substitute for independent cryptographic review.
|
substitute for independent cryptographic review.
|
||||||
|
|||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/es/manifest.json">
|
<link rel="manifest" href="/es/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/fa/manifest.json">
|
<link rel="manifest" href="/fa/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/fr/manifest.json">
|
<link rel="manifest" href="/fr/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/he/manifest.json">
|
<link rel="manifest" href="/he/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/hi/manifest.json">
|
<link rel="manifest" href="/hi/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/ko/manifest.json">
|
<link rel="manifest" href="/ko/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"version": "1788237895492",
|
"version": "1788239352576",
|
||||||
"buildVersion": "1788237895492",
|
"buildVersion": "1788239352576",
|
||||||
"appVersion": "6.6.6",
|
"appVersion": "6.7.0",
|
||||||
"buildTime": "2026-09-01T04:44:55.550Z",
|
"buildTime": "2026-09-01T05:09:12.623Z",
|
||||||
"buildId": "1788237895492-5e32f54",
|
"buildId": "1788239352576-113bb10",
|
||||||
"gitHash": "5e32f54",
|
"gitHash": "113bb10",
|
||||||
"generated": true,
|
"generated": true,
|
||||||
"generatedAt": "2026-09-01T04:44:55.553Z"
|
"generatedAt": "2026-09-01T05:09:12.625Z"
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "securebit-chat",
|
"name": "securebit-chat",
|
||||||
"version": "6.6.6",
|
"version": "6.7.0",
|
||||||
"description": "Secure P2P Communication Application with End-to-End Encryption",
|
"description": "Secure P2P Communication Application with End-to-End Encryption",
|
||||||
"main": "index.html",
|
"main": "index.html",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/ru/manifest.json">
|
<link rel="manifest" href="/ru/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -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
|
// 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,
|
// 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.
|
// reinstall it, drop stale caches and (via controllerchange) prompt the page to update.
|
||||||
const SW_BUILD_VERSION = '1788237895492';
|
const SW_BUILD_VERSION = '1788239352576';
|
||||||
|
|
||||||
// Locale subdirectories, rewritten by scripts/build-i18n.js. Each localized page is a
|
// 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
|
// separate document at its own URL, so the shell has to be cached and served per
|
||||||
|
|||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/uk/manifest.json">
|
<link rel="manifest" href="/uk/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/ur/manifest.json">
|
<link rel="manifest" href="/ur/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+24
-24
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<!-- PWA Manifest -->
|
<!-- PWA Manifest -->
|
||||||
<link rel="manifest" href="/zh/manifest.json">
|
<link rel="manifest" href="/zh/manifest.json">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
|
|
||||||
<!-- PWA Meta Tags -->
|
<!-- PWA Meta Tags -->
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<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">
|
<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 -->
|
<!-- Apple Touch Icons -->
|
||||||
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="/logo/icon-57x57.png">
|
<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="60x60" href="/logo/icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="/logo/icon-72x72.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="120x120" href="/logo/icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="/logo/icon-144x144.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="152x152" href="/logo/icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788237895492">
|
<link rel="apple-touch-icon" sizes="180x180" href="/logo/icon-180x180.png?v=1788239352576">
|
||||||
|
|
||||||
<!-- Microsoft Tiles -->
|
<!-- Microsoft Tiles -->
|
||||||
<meta name="msapplication-TileColor" content="#ff6b35">
|
<meta name="msapplication-TileColor" content="#ff6b35">
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
<!-- Render-blocking JS is deferred: classic deferred scripts and module scripts
|
||||||
both execute in document order after parsing, so React still runs before the
|
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. -->
|
app modules below, but the parser / first paint is no longer blocked. -->
|
||||||
<script defer src="/config/ice-servers.js?v=1788237895492"></script>
|
<script defer src="/config/ice-servers.js?v=1788239352576"></script>
|
||||||
<script defer src="/libs/react/react.production.min.js"></script>
|
<script defer src="/libs/react/react.production.min.js"></script>
|
||||||
<script defer src="/libs/react-dom/react-dom.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 —
|
<!-- 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). -->
|
Its CSS is loaded async via load-async-css.js (not paint-critical). -->
|
||||||
<script defer src="/libs/prism/prism.js"></script>
|
<script defer src="/libs/prism/prism.js"></script>
|
||||||
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
<!-- Critical, paint-defining CSS stays render-blocking (avoids FOUC / layout shift). -->
|
||||||
<link rel="stylesheet" href="/assets/tailwind.css?v=1788237895492">
|
<link rel="stylesheet" href="/assets/tailwind.css?v=1788239352576">
|
||||||
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788237895492">
|
<link rel="icon" type="image/x-icon" href="/logo/favicon.ico?v=1788239352576">
|
||||||
<!-- Preload only the fonts needed for first paint. fa-solid covers the bulk of UI
|
<!-- 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
|
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. -->
|
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-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="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="/assets/fonts/inter/inter.css">
|
||||||
<link rel="stylesheet" href="/src/styles/main.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/main.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/animations.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/animations.css?v=1788239352576">
|
||||||
<link rel="stylesheet" href="/src/styles/components.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/components.css?v=1788239352576">
|
||||||
<!-- Loads after components.css on purpose: press feedback, material weight,
|
<!-- Loads after components.css on purpose: press feedback, material weight,
|
||||||
size-specific tracking and the reduced-motion / -transparency / -contrast
|
size-specific tracking and the reduced-motion / -transparency / -contrast
|
||||||
answers all need to settle arguments with the sheets above on source order. -->
|
answers all need to settle arguments with the sheets above on source order. -->
|
||||||
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/apple-motion.css?v=1788239352576">
|
||||||
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
<!-- Last of the hand-written sheets: the mirroring rules must win over anything
|
||||||
above them, and they only ever apply under [dir="rtl"]. -->
|
above them, and they only ever apply under [dir="rtl"]. -->
|
||||||
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/rtl.css?v=1788239352576">
|
||||||
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
<!-- Non-critical CSS (FontAwesome ~102KB, Prism) loaded async — no longer blocks paint. -->
|
||||||
<script defer src="/src/scripts/load-async-css.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/load-async-css.js?v=1788239352576"></script>
|
||||||
<noscript>
|
<noscript>
|
||||||
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
<link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
|
||||||
<link rel="stylesheet" href="/libs/prism/prism.css">
|
<link rel="stylesheet" href="/libs/prism/prism.css">
|
||||||
</noscript>
|
</noscript>
|
||||||
<script defer src="/src/scripts/fa-check.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/fa-check.js?v=1788239352576"></script>
|
||||||
<!-- Update Manager - система принудительного обновления -->
|
<!-- Update Manager - система принудительного обновления -->
|
||||||
<script defer src="/src/utils/updateManager.js?v=1788237895492"></script>
|
<script defer src="/src/utils/updateManager.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788237895492"></script>
|
<script type="module" src="/src/components/UpdateChecker.jsx?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/qr-local.js?v=1788237895492"></script>
|
<script type="module" src="/dist/qr-local.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/src/components/QRScanner.js?v=1788237895492"></script>
|
<script type="module" src="/src/components/QRScanner.js?v=1788239352576"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/dist/app-boot.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app-boot.js?v=1788239352576"></script>
|
||||||
<script type="module" src="/dist/app.js?v=1788237895492"></script>
|
<script type="module" src="/dist/app.js?v=1788239352576"></script>
|
||||||
|
|
||||||
<script defer src="/src/scripts/pwa-register.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-register.js?v=1788239352576"></script>
|
||||||
<script src="/src/pwa/install-prompt.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/install-prompt.js?v=1788239352576" type="module"></script>
|
||||||
<script src="/src/pwa/pwa-manager.js?v=1788237895492" type="module"></script>
|
<script src="/src/pwa/pwa-manager.js?v=1788239352576" type="module"></script>
|
||||||
<script defer src="/src/scripts/pwa-offline-test.js?v=1788237895492"></script>
|
<script defer src="/src/scripts/pwa-offline-test.js?v=1788239352576"></script>
|
||||||
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788237895492">
|
<link rel="stylesheet" href="/src/styles/pwa.css?v=1788239352576">
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user