7309d78344
Checks for updates on startup (silent, badge on button if available) and on manual click. Downloads new portable .exe to temp dir, creates a batch script to swap the running executable after quit, then relaunches. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
111 lines
5.1 KiB
HTML
111 lines
5.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:;">
|
|
<title>Alta Video Camera Proxy with API</title>
|
|
<link rel="stylesheet" href="styles.css">
|
|
</head>
|
|
<body>
|
|
<div class="app-container">
|
|
<!-- Main Content Layout -->
|
|
<div class="main-layout">
|
|
<!-- Left Sidebar - Available Devices -->
|
|
<aside class="devices-sidebar">
|
|
<div class="sidebar-header">
|
|
<h2>Available Devices</h2>
|
|
</div>
|
|
|
|
<div id="deviceStatus" class="status-message"></div>
|
|
|
|
<!-- Device Search -->
|
|
<div class="device-search-container">
|
|
<input type="text" id="deviceSearch" placeholder="Search devices..." class="device-search-input">
|
|
</div>
|
|
|
|
<div class="device-list-container">
|
|
<div id="deviceList" class="device-list">
|
|
<p class="placeholder-text">Connect to API to load devices</p>
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
|
|
<!-- Main Content Area -->
|
|
<main class="main-content">
|
|
<div class="content-header">
|
|
<h1>Alta Video Camera Proxy</h1>
|
|
<button type="button" id="checkUpdateBtn" class="btn-update" title="Check for Updates">
|
|
<span class="update-icon">↻</span>
|
|
<span class="update-text">Check for Updates</span>
|
|
</button>
|
|
</div>
|
|
|
|
<!-- API Connection Section -->
|
|
<section class="content-section">
|
|
<h2>API Connection</h2>
|
|
<div class="connection-status">
|
|
<div class="status-row">
|
|
<label>Status:</label>
|
|
<div class="status-indicator" id="statusIndicator">
|
|
<span class="status-dot offline"></span>
|
|
<span class="status-text">Disconnected</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="connection-controls">
|
|
<button type="button" id="disconnectBtn" class="btn-outline" disabled>Disconnect</button>
|
|
</div>
|
|
<div id="connectionStatus" class="status-message"></div>
|
|
</section>
|
|
|
|
<!-- Cookie-Based Camera Proxy Section -->
|
|
<section class="content-section">
|
|
<h2>Camera Proxy</h2>
|
|
<div class="proxy-controls">
|
|
<div class="input-row">
|
|
<label for="cookieDeviceUUID">Device UUID:</label>
|
|
<input type="text" id="cookieDeviceUUID" placeholder="(Auto-filled when you select a device from the list)" readonly>
|
|
</div>
|
|
<div class="input-row" style="display: none;">
|
|
<label for="cookieKey">Cookie Key:</label>
|
|
<input type="text" id="cookieKey" placeholder="Paste your cookie key here">
|
|
</div>
|
|
<div class="proxy-buttons">
|
|
<button type="button" id="startCookieProxyBtn" class="btn-primary" disabled>Start Proxy</button>
|
|
<button type="button" id="stopCookieProxyBtn" class="btn-outline" disabled>Stop Proxy</button>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Update Modal -->
|
|
<div id="updateModalOverlay" class="update-modal-overlay" style="display: none;">
|
|
<div class="update-modal-card">
|
|
<div class="update-modal-header">
|
|
<h3>Update Available</h3>
|
|
<button type="button" id="updateModalCloseBtn" class="update-modal-close">×</button>
|
|
</div>
|
|
<div class="update-modal-body">
|
|
<p id="updateModalMessage" class="update-modal-message"></p>
|
|
<div id="updateModalNotes" class="update-modal-notes"></div>
|
|
<div id="updateProgressContainer" class="update-progress-container" style="display: none;">
|
|
<div class="update-progress-track">
|
|
<div id="updateProgressFill" class="update-progress-fill" style="width: 0%"></div>
|
|
</div>
|
|
<span id="updateProgressText" class="update-progress-text">0%</span>
|
|
</div>
|
|
</div>
|
|
<div class="update-modal-footer">
|
|
<button type="button" id="updateInstallBtn" class="btn-primary">Install Update</button>
|
|
<button type="button" id="updateLaterBtn" class="btn-outline">Later</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="renderer.js"></script>
|
|
</body>
|
|
</html>
|