All checks were successful
Build & Release Plugin / build (push) Successful in 12s
New WFC dashboard page (wfc.html) showing real-time node status, protocol listeners, plugin info, and primary server connection. Auto-refreshes every 2 seconds via local status proxy endpoint. Added /api/local/status route that proxies to the thin client's built-in status HTTP server. Updated Makefile with FCL source paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
106 lines
3.5 KiB
HTML
106 lines
3.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Fastway BBS — Wait For Call</title>
|
|
<link rel="stylesheet" href="/css/webui.css?v=3">
|
|
<link rel="stylesheet" href="/css/wfc.css?v=1">
|
|
<script>document.documentElement.setAttribute('data-theme', localStorage.getItem('fw_theme') || 'dark');</script>
|
|
</head>
|
|
<body>
|
|
<!-- Navbar -->
|
|
<nav class="navbar">
|
|
<span class="navbar-brand">Fastway BBS <span class="version" id="wfc-version"></span></span>
|
|
<ul class="navbar-nav">
|
|
<li><a href="/wfc.html" class="active">WFC</a></li>
|
|
<li><a href="/messages.html">Messages</a></li>
|
|
<li><button class="theme-toggle" id="theme-toggle" onclick="FWUI.toggleTheme()"></button></li>
|
|
<li><button class="btn btn-sm btn-outline" onclick="FWUI.logout()">Logout</button></li>
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- WFC Header -->
|
|
<div class="wfc-header">
|
|
<div class="wfc-header-left">
|
|
<h1 class="wfc-bbs-name" id="wfc-bbs-name">Fastway BBS</h1>
|
|
<span class="wfc-node-label" id="wfc-node-name">Connecting...</span>
|
|
</div>
|
|
<div class="wfc-header-right">
|
|
<div class="wfc-date" id="wfc-date"></div>
|
|
<div class="wfc-time" id="wfc-time"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Main Content -->
|
|
<div class="wfc-content">
|
|
|
|
<!-- Summary Bar -->
|
|
<div class="wfc-summary">
|
|
<div class="wfc-summary-item">
|
|
<span class="wfc-summary-value" id="wfc-active">0</span>
|
|
<span class="wfc-summary-label">Active</span>
|
|
</div>
|
|
<div class="wfc-summary-item">
|
|
<span class="wfc-summary-value" id="wfc-available">0</span>
|
|
<span class="wfc-summary-label">Available</span>
|
|
</div>
|
|
<div class="wfc-summary-item">
|
|
<span class="wfc-summary-value" id="wfc-uptime">0:00</span>
|
|
<span class="wfc-summary-label">Uptime</span>
|
|
</div>
|
|
<div class="wfc-summary-item" id="wfc-primary-summary">
|
|
<span class="wfc-summary-value"><span class="wfc-dot online" id="wfc-primary-dot"></span></span>
|
|
<span class="wfc-summary-label">Primary</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Node Grid -->
|
|
<div class="wfc-section">
|
|
<div class="wfc-section-header">
|
|
<h2 class="wfc-section-title">Nodes</h2>
|
|
<span class="wfc-section-badge" id="wfc-nodes-badge">0 / 0</span>
|
|
</div>
|
|
<div class="wfc-node-grid" id="wfc-nodes"></div>
|
|
</div>
|
|
|
|
<!-- Info Panels -->
|
|
<div class="wfc-panels">
|
|
<!-- Protocols -->
|
|
<div class="wfc-panel">
|
|
<div class="wfc-panel-header">
|
|
<h3 class="wfc-panel-title">Protocols</h3>
|
|
</div>
|
|
<div class="wfc-panel-body" id="wfc-protocols"></div>
|
|
</div>
|
|
|
|
<!-- Plugins -->
|
|
<div class="wfc-panel">
|
|
<div class="wfc-panel-header">
|
|
<h3 class="wfc-panel-title">Plugins</h3>
|
|
</div>
|
|
<div class="wfc-panel-body" id="wfc-plugins"></div>
|
|
</div>
|
|
|
|
<!-- Server Connection -->
|
|
<div class="wfc-panel">
|
|
<div class="wfc-panel-header">
|
|
<h3 class="wfc-panel-title">Primary Server</h3>
|
|
</div>
|
|
<div class="wfc-panel-body" id="wfc-primary"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Status Bar -->
|
|
<div class="wfc-statusbar">
|
|
<span id="wfc-sb-left"></span>
|
|
<span id="wfc-sb-center"></span>
|
|
<span id="wfc-sb-right">Refresh: 2s</span>
|
|
</div>
|
|
|
|
<script src="/js/webui.js?v=3"></script>
|
|
<script src="/js/wfc.js?v=1"></script>
|
|
</body>
|
|
</html>
|