Files
tolaria/index.html
2026-05-11 18:21:12 +02:00

147 lines
5.4 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@400;500;600;700&family=JetBrains+Mono&display=swap" rel="stylesheet" />
<style>
:root {
color-scheme: light;
background: #FFFFFF;
color: #37352F;
}
:root[data-theme="dark"] {
color-scheme: dark;
background: #1F1E1B;
color: #E6E1D8;
}
body {
background: inherit;
color: inherit;
}
</style>
<title>Tolaria</title>
</head>
<body>
<pre id="tolaria-boot-diagnostics" style="position:fixed;left:24px;top:24px;z-index:2147483647;max-width:min(760px,calc(100vw - 48px));max-height:calc(100vh - 48px);overflow:auto;margin:0;padding:12px 14px;border-radius:8px;background:#111;color:#fff;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap">Tolaria boot: HTML parsed</pre>
<script>
(function () {
var diagnostics = document.getElementById('tolaria-boot-diagnostics');
function appendDiagnostic(message) {
if (!diagnostics) return;
if (!diagnostics.isConnected) document.body.appendChild(diagnostics);
diagnostics.hidden = false;
diagnostics.textContent += '\n' + message;
}
function isResizeObserverLoopMessage(message) {
return typeof message === 'string'
&& (
message.indexOf('ResizeObserver loop completed with undelivered notifications') !== -1
|| message.indexOf('ResizeObserver loop limit exceeded') !== -1
);
}
window.addEventListener('error', function (event) {
if (isResizeObserverLoopMessage(event.message)) {
event.preventDefault();
return;
}
appendDiagnostic('error: ' + event.message + ' @ ' + event.filename + ':' + event.lineno + ':' + event.colno);
});
window.addEventListener('unhandledrejection', function (event) {
var reason = event.reason && (event.reason.stack || event.reason.message || String(event.reason));
if (isResizeObserverLoopMessage(reason)) {
event.preventDefault();
return;
}
appendDiagnostic('unhandled rejection: ' + reason);
});
window.addEventListener('tolaria:frontend-ready', function () {
if (diagnostics) diagnostics.hidden = true;
}, { once: true });
var key = 'tolaria-theme';
var legacyKey = 'laputa-theme';
var systemDarkQuery = '(prefers-color-scheme: dark)';
function normalizeTheme(value) {
return value === 'dark' || value === 'light' || value === 'system' ? value : null;
}
function prefersDarkTheme() {
try {
return typeof window.matchMedia === 'function' && window.matchMedia(systemDarkQuery).matches;
} catch (err) {
return false;
}
}
function resolveTheme(value) {
var mode = normalizeTheme(value) || 'light';
return mode === 'system' ? (prefersDarkTheme() ? 'dark' : 'light') : mode;
}
function applyTheme(value) {
var mode = resolveTheme(value);
document.documentElement.setAttribute('data-theme', mode);
document.documentElement.classList.toggle('dark', mode === 'dark');
}
try {
var mode = normalizeTheme(localStorage.getItem(key));
if (mode === null) {
mode = normalizeTheme(localStorage.getItem(legacyKey));
if (mode !== null) localStorage.setItem(key, mode);
}
applyTheme(mode);
} catch (err) {
applyTheme('light');
}
})();
</script>
<script>
(function () {
var readyEventName = 'tolaria:frontend-ready';
var reloadAttemptKey = 'tolaria:startup-reload-attempted';
var startupTimeoutMs = 10000;
var isTauri = '__TAURI__' in window || '__TAURI_INTERNALS__' in window;
if (!isTauri) return;
function hasReloadAttempted() {
try {
return sessionStorage.getItem(reloadAttemptKey) === '1';
} catch (err) {
return true;
}
}
function markReloadAttempted() {
try {
sessionStorage.setItem(reloadAttemptKey, '1');
return true;
} catch (err) {
return false;
}
}
function clearReloadAttempt() {
try {
sessionStorage.removeItem(reloadAttemptKey);
} catch (err) {
// Storage can be unavailable in hardened WebView/privacy modes.
}
}
window.addEventListener(readyEventName, clearReloadAttempt, { once: true });
window.setTimeout(function () {
if (window.__tolariaFrontendReady === true) return;
if (hasReloadAttempted()) return;
if (!markReloadAttempted()) return;
window.location.reload();
}, startupTimeoutMs);
})();
</script>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>