All checks were successful
Deploy / deploy (push) Successful in 30s
- Full FastAPI sync engine: master→replica document sync via paperless REST API - Web UI: dashboard, replicas, logs, settings (Jinja2 + HTMX + Pico CSS) - APScheduler background sync, SSE live log stream, Prometheus metrics - Fernet encryption for API tokens at rest - pngx.env credential file: written on save, pre-fills forms on load - Dockerfile with layer-cached uv build, Python healthcheck - docker-compose with host networking for Tailscale access - Gitea Actions workflow: version bump, secret injection, docker compose deploy Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
56 lines
2.2 KiB
HTML
56 lines
2.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" data-theme="light">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>{% block title %}pngx-controller{% endblock %}</title>
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css">
|
|
<script src="https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js"></script>
|
|
<script src="https://unpkg.com/htmx-ext-sse@2.2.2/sse.js"></script>
|
|
<style>
|
|
nav { padding: 0.5rem 1rem; }
|
|
.badge { display: inline-block; padding: 0.15em 0.6em; border-radius: 1em; font-size: 0.8em; font-weight: 600; }
|
|
.badge-synced { background: #d1fae5; color: #065f46; }
|
|
.badge-syncing { background: #dbeafe; color: #1e40af; }
|
|
.badge-error { background: #fee2e2; color: #991b1b; }
|
|
.badge-suspended { background: #fef3c7; color: #92400e; }
|
|
.badge-pending { background: #f3f4f6; color: #374151; }
|
|
.badge-ok { background: #d1fae5; color: #065f46; }
|
|
.badge-info { background: #eff6ff; color: #1d4ed8; }
|
|
.badge-warning { background: #fffbeb; color: #b45309; }
|
|
small.muted { color: var(--pico-muted-color); }
|
|
#progress-bar { display: none; }
|
|
#progress-bar.active { display: block; }
|
|
.log-entry-error td { background: #fff5f5; }
|
|
.log-entry-warning td { background: #fffbeb; }
|
|
pre { white-space: pre-wrap; font-size: 0.8em; }
|
|
table { font-size: 0.9em; }
|
|
.actions { white-space: nowrap; }
|
|
details summary { cursor: pointer; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header class="container-fluid">
|
|
<nav>
|
|
<ul>
|
|
<li><strong><a href="/" style="text-decoration:none;">📄 pngx-controller</a></strong></li>
|
|
</ul>
|
|
<ul>
|
|
<li><a href="/">Dashboard</a></li>
|
|
<li><a href="/replicas">Replicas</a></li>
|
|
<li><a href="/logs">Logs</a></li>
|
|
<li><a href="/settings">Settings</a></li>
|
|
</ul>
|
|
</nav>
|
|
</header>
|
|
|
|
<main class="container">
|
|
{% block content %}{% endblock %}
|
|
</main>
|
|
|
|
<footer class="container-fluid" style="text-align:center; padding:1rem; color:var(--pico-muted-color); font-size:0.8em;">
|
|
pngx-controller — <a href="/healthz">health</a> — <a href="/metrics">metrics</a>
|
|
</footer>
|
|
</body>
|
|
</html>
|