6bf8bebf51
CI / Test and Build (push) Failing after 1s
CI / Migrate Dev DB (push) Has been skipped
CI / Migrate DB (push) Has been skipped
CodeQL / Analyze actions (push) Has been cancelled
CodeQL / Analyze javascript-typescript (push) Has been cancelled
CI / Detect Version (push) Has been cancelled
CI / Detect Desktop Changes (push) Has been cancelled
CI / Build AMD64 (blacksmith-2vcpu-ubuntu-2404, ./docker/cron.Dockerfile, ubuntu-latest, ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Build AMD64 (blacksmith-2vcpu-ubuntu-2404, ./docker/db.Dockerfile, ECR_MIGRATIONS, ubuntu-latest, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (blacksmith-4vcpu-ubuntu-2404, ./docker/pii.Dockerfile, ECR_PII, ubuntu-latest, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (blacksmith-4vcpu-ubuntu-2404, ./docker/realtime.Dockerfile, ECR_REALTIME, ubuntu-latest, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build AMD64 (blacksmith-8vcpu-ubuntu-2404, ./docker/app.Dockerfile, ECR_APP, linux-x64-8-core, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/cron.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/db.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/pii.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/realtime.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-8vcpu-ubuntu-2404-arm, ./docker/app.Dockerfile, linux-arm64-8-core, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
Helm Chart / Lint, test, and validate chart (push) Has been cancelled
Helm Chart / Chart version bumped (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
CI / Build Dev ECR (blacksmith-8vcpu-ubuntu-2404, ./docker/app.Dockerfile, ECR_APP, linux-x64-8-core) (push) Has been cancelled
CI / Promote Images (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-2vcpu-ubuntu-2404, ./docker/db.Dockerfile, ECR_MIGRATIONS, ubuntu-latest) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-4vcpu-ubuntu-2404, ./docker/pii.Dockerfile, ECR_PII, ubuntu-latest) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-4vcpu-ubuntu-2404, ./docker/realtime.Dockerfile, ECR_REALTIME, ubuntu-latest) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Check Desktop Signing Secrets (push) Has been cancelled
CI / Desktop Release (push) Has been cancelled
CI / Create Desktop Prerelease (push) Has been cancelled
CI / Desktop Prerelease Build (push) Has been cancelled
CI / Publish Desktop Prerelease (push) Has been cancelled
CI / Prune Desktop Prereleases (push) Has been cancelled
Helm Chart / Install on kind and run helm test (push) Has been cancelled
176 lines
4.9 KiB
HTML
176 lines
4.9 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta
|
||
http-equiv="Content-Security-Policy"
|
||
content="default-src 'none'; style-src 'unsafe-inline'; script-src 'unsafe-inline'"
|
||
/>
|
||
<title>Sim — Can’t connect</title>
|
||
<style>
|
||
:root {
|
||
color-scheme: light dark;
|
||
--bg: #ffffff;
|
||
--fg: #0c0c0c;
|
||
--muted: #6b6b6b;
|
||
--border: #e4e4e4;
|
||
--accent: #701ffc;
|
||
--accent-fg: #ffffff;
|
||
}
|
||
@media (prefers-color-scheme: dark) {
|
||
:root {
|
||
--bg: #0c0c0c;
|
||
--fg: #f4f4f4;
|
||
--muted: #9a9a9a;
|
||
--border: #262626;
|
||
}
|
||
}
|
||
* {
|
||
box-sizing: border-box;
|
||
}
|
||
html,
|
||
body {
|
||
height: 100%;
|
||
margin: 0;
|
||
}
|
||
body {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background: var(--bg);
|
||
color: var(--fg);
|
||
font-family:
|
||
-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
|
||
-webkit-font-smoothing: antialiased;
|
||
user-select: none;
|
||
}
|
||
main {
|
||
max-width: 420px;
|
||
padding: 32px;
|
||
text-align: center;
|
||
}
|
||
.mark {
|
||
width: 56px;
|
||
height: 56px;
|
||
margin: 0 auto 20px;
|
||
border-radius: 14px;
|
||
background: var(--accent);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: var(--accent-fg);
|
||
font-size: 26px;
|
||
font-weight: 600;
|
||
letter-spacing: -0.02em;
|
||
}
|
||
h1 {
|
||
font-size: 17px;
|
||
font-weight: 600;
|
||
margin: 0 0 8px;
|
||
}
|
||
p {
|
||
font-size: 13px;
|
||
line-height: 1.5;
|
||
color: var(--muted);
|
||
margin: 0 0 24px;
|
||
}
|
||
.actions {
|
||
display: flex;
|
||
gap: 8px;
|
||
justify-content: center;
|
||
}
|
||
button {
|
||
appearance: none;
|
||
border: 1px solid var(--border);
|
||
background: transparent;
|
||
color: var(--fg);
|
||
border-radius: 8px;
|
||
padding: 7px 14px;
|
||
font-size: 13px;
|
||
font-weight: 500;
|
||
cursor: pointer;
|
||
}
|
||
button.primary {
|
||
background: var(--accent);
|
||
border-color: var(--accent);
|
||
color: var(--accent-fg);
|
||
}
|
||
button:active {
|
||
opacity: 0.8;
|
||
}
|
||
.links {
|
||
margin-top: 20px;
|
||
font-size: 12px;
|
||
}
|
||
.links a {
|
||
color: var(--muted);
|
||
text-decoration: none;
|
||
margin: 0 8px;
|
||
cursor: pointer;
|
||
}
|
||
.links a:hover {
|
||
color: var(--fg);
|
||
}
|
||
#detail {
|
||
font-size: 11px;
|
||
color: var(--muted);
|
||
margin-top: 16px;
|
||
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<main>
|
||
<div class="mark">S</div>
|
||
<h1 id="title">Can’t connect to Sim</h1>
|
||
<p id="message">
|
||
Sim couldn’t reach the server. Check your internet connection, then try again.
|
||
</p>
|
||
<div class="actions">
|
||
<button class="primary" id="retry">Retry</button>
|
||
</div>
|
||
<div class="links">
|
||
<a id="status">Check status</a>
|
||
</div>
|
||
<div id="detail"></div>
|
||
</main>
|
||
<script>
|
||
const params = new URLSearchParams(location.search)
|
||
const copy = {
|
||
offline: {
|
||
title: 'You’re offline',
|
||
message: 'Sim needs an internet connection. Reconnect, then try again — we’ll also retry automatically.',
|
||
},
|
||
dns: {
|
||
title: 'Can’t find the server',
|
||
message: 'The server address couldn’t be resolved. Check your connection or the configured server.',
|
||
},
|
||
tls: {
|
||
title: 'Connection isn’t secure',
|
||
message: 'The server’s TLS certificate couldn’t be verified, so the connection was refused.',
|
||
},
|
||
timeout: {
|
||
title: 'The server isn’t responding',
|
||
message: 'The connection timed out. The server may be down or your network may be blocking it.',
|
||
},
|
||
unreachable: {
|
||
title: 'Can’t connect to Sim',
|
||
message: 'Sim couldn’t reach the server. Check your internet connection, then try again.',
|
||
},
|
||
}
|
||
const kind = params.get('kind') || 'unreachable'
|
||
const chosen = copy[kind] || copy.unreachable
|
||
document.getElementById('title').textContent = chosen.title
|
||
document.getElementById('message').textContent = chosen.message
|
||
const detail = params.get('detail')
|
||
if (detail) document.getElementById('detail').textContent = detail
|
||
|
||
const bridge = window.simDesktop
|
||
document.getElementById('retry').addEventListener('click', () => bridge?.offlineRetry())
|
||
document
|
||
.getElementById('status')
|
||
.addEventListener('click', () => bridge?.openExternal('https://status.sim.ai'))
|
||
</script>
|
||
</body>
|
||
</html>
|