-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
110 lines (98 loc) · 5.81 KB
/
Copy pathindex.html
File metadata and controls
110 lines (98 loc) · 5.81 KB
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>AHL · System Status</title>
<meta name="description" content="Live health of every Augmented Human Lab service — sites, Apps Script apps, deployments and upstream providers.">
<link rel="canonical" href="https://status.ahlab.org/">
<!-- Open Graph / social preview. og-image.png is generated from og-card.html;
see that file's header for the regeneration command. -->
<meta property="og:type" content="website">
<meta property="og:site_name" content="Augmented Human Lab">
<meta property="og:title" content="AHL · System Status">
<meta property="og:description" content="Live health of every Augmented Human Lab service — sites, Apps Script apps, deployments and upstream providers.">
<meta property="og:url" content="https://status.ahlab.org/">
<meta property="og:image" content="https://status.ahlab.org/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="AHL System Status — live health of every Augmented Human Lab service">
<meta property="og:locale" content="en_SG">
<!-- Twitter / X -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="AHL · System Status">
<meta name="twitter:description" content="Live health of every Augmented Human Lab service — sites, Apps Script apps, deployments and upstream providers.">
<meta name="twitter:image" content="https://status.ahlab.org/og-image.png">
<!-- PWA / icons -->
<link rel="manifest" href="manifest.webmanifest">
<meta name="theme-color" content="#6100FF">
<link rel="icon" href="https://cdn.ahlab.org/media/site/black_logo_circle.png">
<link rel="apple-touch-icon" href="https://cdn.ahlab.org/media/site/black_logo_circle.png">
<link rel="stylesheet" href="https://use.typekit.net/zws2qzx.css">
<style>
/* ── EXEC_URL ────────────────────────────────────────────────────────
Paste the FIXED Apps Script /exec URL here after the first
`node deploy.js`. It must stay constant for the custom domain. */
:root { --gstart: #00D7EE; --gend: #6100FF; }
html, body { margin: 0; height: 100%; overflow: hidden; background: #F4F7F9; }
body { font-family: "neue-haas-grotesk-text", system-ui, sans-serif; }
#app { position: fixed; inset: 0; width: 100%; height: 100%; border: 0; }
/* Branded splash, fades out once the embedded app reports loaded */
#splash {
position: fixed; inset: 0; z-index: 10;
display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px;
background:
radial-gradient(60% 40% at 0% 0%, rgba(0,215,238,0.10), transparent 70%),
radial-gradient(50% 50% at 100% 100%, rgba(97,0,255,0.08), transparent 70%),
#F4F7F9;
transition: opacity .5s ease; text-align: center; padding: 24px;
}
#splash.hide { opacity: 0; pointer-events: none; }
#splash img { width: 56px; height: 56px; border-radius: 50%; animation: float 2.4s ease-in-out infinite; }
#splash .title { font-family: "neue-haas-grotesk-display", system-ui, sans-serif; font-weight: 800; font-size: 18px; color: #0E0F11; }
#splash .sub { font-size: 13px; color: #5E6875; }
.bar { width: 160px; height: 4px; border-radius: 999px; background: #E2E8F0; overflow: hidden; }
.bar > i { display: block; height: 100%; width: 40%; border-radius: 999px;
background: linear-gradient(90deg, var(--gstart), var(--gend)); animation: slide 1.2s ease-in-out infinite; }
.fallback { margin-top: 6px; font-size: 12px; }
.fallback a { color: #6100FF; text-decoration: none; font-weight: 600; }
.fallback a:hover { text-decoration: underline; }
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }
@keyframes slide { 0% { transform: translateX(-100%); } 100% { transform: translateX(320%); } }
</style>
</head>
<body>
<!-- The gated Apps Script dashboard is embedded full-bleed. All checks,
admin tokens and the @ahlab.org sign-in gate live inside it; this shell
only provides the custom domain, splash, social card and PWA wrapper.
Because the dashboard talks to its server via google.script.run (Apps
Script's internal bridge, not a cross-origin fetch) there is no CORS. -->
<iframe id="app"
src="https://script.google.com/macros/s/AKfycbw6CiTs4U4PK4_iSmI75doYHTEXQSeRQngM_-TB1_pvqQMjkIyLz9iL_Yzm7imPWH4/exec"
title="AHL System Status"
allow="clipboard-read; clipboard-write"></iframe>
<div id="splash">
<img src="https://cdn.ahlab.org/media/site/black_logo_circle.png" alt="AHL">
<div>
<div class="title">AHL System Status</div>
<div class="sub">Loading the live status board…</div>
</div>
<div class="bar"><i></i></div>
<div class="fallback">
Trouble signing in inside the frame?
<a id="openFull" href="https://script.google.com/macros/s/AKfycbw6CiTs4U4PK4_iSmI75doYHTEXQSeRQngM_-TB1_pvqQMjkIyLz9iL_Yzm7imPWH4/exec" target="_blank" rel="noopener">Open full screen →</a>
</div>
</div>
<script>
(function () {
var iframe = document.getElementById('app');
var splash = document.getElementById('splash');
var hidden = false;
function hide() { if (hidden) return; hidden = true; splash.classList.add('hide'); setTimeout(function () { splash.style.display = 'none'; }, 600); }
iframe.addEventListener('load', function () { setTimeout(hide, 400); });
// Safety net: never trap the user behind the splash.
setTimeout(hide, 6000);
})();
</script>
</body>
</html>