Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
161 lines
3.9 KiB
HTML
161 lines
3.9 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta
|
|
http-equiv="Content-Security-Policy"
|
|
content="default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; img-src 'self' data:; connect-src 'self' https://* http://localhost:* http://127.0.0.1:*;"
|
|
/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Service Proxy Demo</title>
|
|
<style>
|
|
:root {
|
|
color-scheme: light dark;
|
|
--bg: #ffffff;
|
|
--fg: #111827;
|
|
--card-bg: rgba(255, 255, 255, 0.85);
|
|
--border: rgba(15, 23, 42, 0.08);
|
|
--muted: #475569;
|
|
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, 'Noto Sans',
|
|
'Helvetica Neue', Arial, 'Apple Color Emoji', 'Segoe UI Emoji', sans-serif;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--bg: #0b1120;
|
|
--fg: #e2e8f0;
|
|
--card-bg: rgba(15, 23, 42, 0.6);
|
|
--border: rgba(148, 163, 184, 0.15);
|
|
--muted: #94a3b8;
|
|
}
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
min-height: 100vh;
|
|
background: var(--bg);
|
|
color: var(--fg);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 32px 16px;
|
|
}
|
|
|
|
.card {
|
|
width: min(720px, 100%);
|
|
background: var(--card-bg);
|
|
border-radius: 16px;
|
|
border: 1px solid var(--border);
|
|
box-shadow: 0 20px 45px rgba(15, 23, 42, 0.08);
|
|
padding: 24px 28px;
|
|
display: grid;
|
|
gap: 16px;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 24px;
|
|
margin: 0;
|
|
}
|
|
|
|
p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
}
|
|
|
|
table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
background: rgba(255, 255, 255, 0.6);
|
|
border-radius: 12px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
thead {
|
|
background: rgba(148, 163, 184, 0.25);
|
|
}
|
|
|
|
th,
|
|
td {
|
|
padding: 12px 16px;
|
|
text-align: left;
|
|
border-bottom: 1px solid var(--border);
|
|
font-size: 14px;
|
|
}
|
|
|
|
tbody tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.status-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
padding: 4px 10px;
|
|
border-radius: 999px;
|
|
font-size: 12px;
|
|
text-transform: capitalize;
|
|
background: rgba(59, 130, 246, 0.12);
|
|
color: #1d4ed8;
|
|
}
|
|
|
|
.status-pill[data-status='closed'] {
|
|
background: rgba(22, 163, 74, 0.12);
|
|
color: #15803d;
|
|
}
|
|
|
|
.status-pill[data-status='open'] {
|
|
background: rgba(239, 68, 68, 0.12);
|
|
color: #b91c1c;
|
|
}
|
|
|
|
.pill-muted {
|
|
color: var(--muted);
|
|
}
|
|
|
|
.error {
|
|
border: 1px solid rgba(239, 68, 68, 0.3);
|
|
background: rgba(239, 68, 68, 0.08);
|
|
color: #b91c1c;
|
|
border-radius: 12px;
|
|
padding: 16px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
button {
|
|
appearance: none;
|
|
border: none;
|
|
border-radius: 999px;
|
|
padding: 10px 16px;
|
|
font-size: 14px;
|
|
background: #2563eb;
|
|
color: white;
|
|
cursor: pointer;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
button:hover {
|
|
background: #1d4ed8;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="card" id="app">
|
|
<header>
|
|
<h1>Service Proxy Demo</h1>
|
|
<p>This extension fetches tickets via the runner service proxy without exposing API keys to the browser.</p>
|
|
</header>
|
|
<section id="ticket-content">
|
|
<p id="loading" data-state="loading">Loading ticket list…</p>
|
|
</section>
|
|
<footer>
|
|
<button type="button" id="refresh-btn">
|
|
<span aria-hidden="true">⟳</span>
|
|
Refresh Tickets
|
|
</button>
|
|
</footer>
|
|
</div>
|
|
<script type="module" src="./main.js"></script>
|
|
</body>
|
|
</html>
|