File size: 2,456 Bytes
917af0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!DOCTYPE html>
<html lang="en" data-safe-theme="dark">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>Agent Zero — Safe mode</title>
    <link rel="icon" href="data:,">
    <script>
        try {
            if (localStorage.getItem("darkMode") === "false") document.documentElement.dataset.safeTheme = "light"
        } catch (_) {}
    </script>
    <style>
        html, body { width: 100%; height: 100%; margin: 0; }
        html { background: #131313; color: #fff; }
        html[data-safe-theme="light"] { background: #fafafa; color: #111; }
        body { display: grid; place-items: center; font-family: system-ui, sans-serif; }
        main { display: grid; justify-items: center; gap: .75rem; padding: 2rem; text-align: center; }
        strong { font-size: 1.15rem; }
        p { margin: 0; color: #aaa; }
        html[data-safe-theme="light"] p { color: #666; }
    </style>
</head>

<body>
    <main role="status" aria-live="polite">
        <strong>Starting Agent Zero in safe mode</strong>
        <p>Disabling the offline worker before loading the application…</p>
    </main>

    <script>
        (() => {
            const DIRECT_PARAMETER = "__direct"
            const FALLBACK_TIMEOUT_MS = 3000
            let navigationStarted = false

            const navigateToApp = () => {
                if (navigationStarted) return
                navigationStarted = true
                const target = new URL(location.href)
                target.pathname = "/safe"
                target.searchParams.set(DIRECT_PARAMETER, "1")
                location.replace(target.href)
            }

            const fallbackTimer = setTimeout(navigateToApp, FALLBACK_TIMEOUT_MS)

            const disableServiceWorkers = async () => {
                if (!("serviceWorker" in navigator)) return
                const registrations = await navigator.serviceWorker.getRegistrations()
                await Promise.allSettled(
                    registrations.map((registration) => registration.unregister()),
                )
            }

            disableServiceWorkers()
                .catch((error) => console.warn("Unable to disable service workers.", error))
                .finally(() => {
                    clearTimeout(fallbackTimer)
                    navigateToApp()
                })
        })()
    </script>
</body>

</html>