mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-07 23:01:06 +02:00
/assets was served uncompressed and without Cache-Control, so phones downloaded the full 11 MB bundle and revalidated it on every load. Text assets are now gzip-compressed once per file and kept in memory, and files with a content hash in their name are marked immutable. The pdf.js runtime data has no hash and is revalidated instead. ----- Load pages and languages when they are needed (#3175) Every page and all 15 languages were one 11 MB script. Pages are now separate files loaded on first open, and only English is bundled; the language in use loads before the first render. A tab left on an older build reloads once when a file is gone, after the server answers again, so a kiosk is never left on the browser's connection error page. The service worker serves hashed files from its cache and drops the previous build's files.
63 lines
3.5 KiB
HTML
63 lines
3.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
|
<!-- L-4: Restrict Referer header to origin-only on cross-origin navigation so
|
|
sensitive tokens in query parameters are not leaked to third-party servers. -->
|
|
<meta name="referrer" content="strict-origin-when-cross-origin" />
|
|
<title>Bambuddy</title>
|
|
|
|
<!-- PWA Meta Tags -->
|
|
<meta name="description" content="Monitor and manage your Bambu Lab 3D printers" />
|
|
<meta name="theme-color" content="#00ae42" />
|
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
<meta name="apple-mobile-web-app-title" content="Bambuddy" />
|
|
|
|
<!-- Manifest -->
|
|
<link rel="manifest" href="/manifest.json" />
|
|
|
|
<!-- Favicons -->
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon-16x16.png" />
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png" />
|
|
|
|
<!-- Splash screens for iOS -->
|
|
<link rel="apple-touch-startup-image" href="/img/android-chrome-512x512.png" />
|
|
<script type="module" crossorigin src="/assets/index-BoVbGTav.js"></script>
|
|
<link rel="modulepreload" crossorigin href="/assets/chunk-aKtaBQYM.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/client-BdOyoZJz.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/QueryClientProvider-Clbyr4Jg.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/useMutation-qh3Iyscy.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/useQuery-CCy0EwsM.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/useQueries-C87lFrjE.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-Yo2YoYjm.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/arrow-down-C4OBNDqJ.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/arrow-up-Dam8cLfE.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/calendar-DiVEdzUw.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/check-D1Pn8T1J.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/info-DcT0QU8O.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/loader-circle-CB4leTZa.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/x-Dctff5l9.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/file-DDkFXH-b.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/ToastContext-VFOrCCoA.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-gIik0G2C.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/react-dom-xhkz5--P.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/Button-pwVKPiYn.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/Card-OUAj0Ayh.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/filamentSwatchHelpers-D3oXQSGk.js">
|
|
<link rel="modulepreload" crossorigin href="/assets/date-G9KUauqz.js">
|
|
<link rel="stylesheet" crossorigin href="/assets/index-jO4mF6Tu.css">
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
|
|
<!-- Service Worker Registration (skip on SpoolBuddy kiosk).
|
|
Kept as an external file so the CSP `script-src 'self'` covers it
|
|
without needing 'unsafe-inline' or per-build hashes. -->
|
|
<script src="/sw-register.js"></script>
|
|
</body>
|
|
</html>
|