Files
Live_RC/index.html
larssand 71b3451b13 Show update-available link in the sidebar, not only in Settings
The update card lived inside Settings, easy to miss on an app people
mostly leave on the Dashboard or Timing view. A small link now sits
next to the version number in the sidebar footer, on every view, and
appears automatically from the same startup update check Settings
already used - no new endpoint. Clicking it jumps straight into
Settings with the update ready to run.

Verified with a real headless-browser run against a throwaway git
clone: the link appears on its own without ever opening Settings,
names the real new version, survives navigating to another view, and
clicking it lands on Settings with the update already available there.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-10 14:51:46 +02:00

80 lines
3.0 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>RC RaceCore</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=Orbitron:wght@500;700;800&display=swap"
rel="stylesheet"
/>
<link rel="stylesheet" href="/src/styles.css" />
</head>
<body>
<div class="app-shell">
<aside class="sidebar">
<div class="brand">
<div id="brandMark" class="brand-mark"><span>RC</span><img id="brandLogo" class="brand-logo" alt="" hidden /></div>
<div>
<h1 id="brandTitle">RC RaceCore</h1>
<p id="brandSubtitle">Live Timing &amp; Race Control</p>
</div>
</div>
<nav id="nav" class="nav"></nav>
<div class="sidebar-footer">
<div id="syncStatus" class="sync-status">
<strong id="syncStatusLabel" role="status" aria-live="polite"></strong>
<small id="syncStatusDetail"></small>
<button id="syncStatusRetry" class="btn btn-mini" type="button" hidden></button>
</div>
<p id="connectionBadge" class="badge badge-offline">Decoder Offline</p>
<small id="clock"></small>
<small id="appVersionLabel" class="app-version" hidden></small>
<button id="appUpdateAvailable" class="app-update-link" type="button" hidden></button>
</div>
</aside>
<main class="content">
<p id="syncWarning" class="sync-warning" role="status" hidden></p>
<header class="topbar">
<div>
<h2 id="pageTitle">Dashboard</h2>
<p id="pageSubtitle">RC race timing with AMMC integration</p>
</div>
<div class="topbar-right">
<label class="lang-wrap theme-wrap">
<span id="themeLabel">Theme</span>
<select id="themeSelect" class="lang-select theme-select">
<option value="dark">Dark</option>
<option value="nord">Nord</option>
<option value="light">Light</option>
</select>
</label>
<label class="lang-wrap">
<span id="languageLabel">Language</span>
<select id="languageSelect" class="lang-select">
<option value="sv">SV</option>
<option value="en">EN</option>
</select>
</label>
<p class="chip" id="activeSessionChip">No Active Session</p>
</div>
</header>
<section id="view" class="view"></section>
</main>
</div>
<template id="tableTemplate">
<table class="data-table">
<thead></thead>
<tbody></tbody>
</table>
</template>
<script type="module" src="/src/app.js"></script>
</body>
</html>