Files
claude-live-dashboard/src/renderer/index.html
T
Winkler, Stefan f8a286f219 Kaputte Links im Info-Dialog beheben, Lizenz-Menüpunkt ergaenzen
Klicks auf Links im gerenderten Markdown (z. B. BENUTZERHANDBUCH.md,
LICENSE.txt) navigierten das Fenster selbst dorthin und liessen einen
leeren, unschliessbaren Dialog zurueck. Main-Prozess faengt jetzt jede
Navigation im Info-Fenster ab: externe http(s)-Links oeffnen im
Standardbrowser, interne Verweise auf Benutzerhandbuch/Disclaimer/
Lizenz wechseln stattdessen den Inhalt desselben Dialogs.

Neuer dritter Menüpunkt "Lizenz" (LICENSE.txt) im Info-Dropdown. Der
README.md-Link in DISCLAIMER.md zeigt jetzt auf die Repo-Seite auf
Gitea statt auf einen kaputten relativen Pfad.

Claude-Session: https://claude.ai/code/session_01VeqoaAZDVSCU4QBtiYDC5C
2026-09-01 11:58:58 +02:00

168 lines
8.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'self'; script-src 'self';" />
<title>Claude Live Dashboard</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<div class="widget" id="widget">
<!-- Kopfzeile: einziger Ziehbereich des rahmenlosen Fensters -->
<header class="titlebar">
<span class="dot-brand" aria-hidden="true"></span>
<span class="title" id="plan-label">Claude</span>
<span class="spacer"></span>
<span class="badge warn" id="stale-badge" hidden>veraltet</span>
<button class="icon-btn status" id="btn-endpoint-status" data-severity="ok" title="Endpunkt-Status" aria-label="Endpunkt-Status">
<span class="status-icon" aria-hidden="true"></span>
</button>
<button class="icon-btn" id="btn-update-available" hidden title="Neues Release verfügbar" aria-label="Neues Release verfügbar"></button>
<button class="icon-btn" id="btn-settings" title="Einstellungen" aria-label="Einstellungen">
<svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true" focusable="false">
<path
fill="currentColor"
d="M8 5.2a2.8 2.8 0 1 0 0 5.6 2.8 2.8 0 0 0 0-5.6Zm0 1.4a1.4 1.4 0 1 1 0 2.8 1.4 1.4 0 0 1 0-2.8Z"
/>
<path
fill="currentColor"
d="M6.9.9a.7.7 0 0 0-.69.58l-.2 1.16a5.6 5.6 0 0 0-1.02.59l-1.1-.42a.7.7 0 0 0-.85.31l-1.1 1.9a.7.7 0 0 0 .16.89l.9.74a5.65 5.65 0 0 0 0 1.18l-.9.74a.7.7 0 0 0-.16.89l1.1 1.9a.7.7 0 0 0 .85.31l1.1-.42c.32.24.66.44 1.02.59l.2 1.16a.7.7 0 0 0 .69.58h2.2a.7.7 0 0 0 .69-.58l.2-1.16c.36-.15.7-.35 1.02-.59l1.1.42a.7.7 0 0 0 .85-.31l1.1-1.9a.7.7 0 0 0-.16-.89l-.9-.74a5.65 5.65 0 0 0 0-1.18l.9-.74a.7.7 0 0 0 .16-.89l-1.1-1.9a.7.7 0 0 0-.85-.31l-1.1.42a5.6 5.6 0 0 0-1.02-.59l-.2-1.16A.7.7 0 0 0 9.1.9H6.9Zm.59 1.4h1.02l.17.99a.7.7 0 0 0 .5.55c.46.14.89.39 1.24.72a.7.7 0 0 0 .73.14l.94-.36.51.88-.77.63a.7.7 0 0 0-.25.7 4.25 4.25 0 0 1 0 1.44.7.7 0 0 0 .25.7l.77.63-.51.88-.94-.36a.7.7 0 0 0-.73.14c-.35.33-.78.58-1.24.72a.7.7 0 0 0-.5.55l-.17.99H7.49l-.17-.99a.7.7 0 0 0-.5-.55 4.2 4.2 0 0 1-1.24-.72.7.7 0 0 0-.73-.14l-.94.36-.51-.88.77-.63a.7.7 0 0 0 .25-.7 4.25 4.25 0 0 1 0-1.44.7.7 0 0 0-.25-.7l-.77-.63.51-.88.94.36a.7.7 0 0 0 .73-.14c.35-.33.78-.58 1.24-.72a.7.7 0 0 0 .5-.55l.17-.99Z"
/>
</svg>
</button>
<div class="info-wrap" id="info-wrap">
<button class="icon-btn" id="btn-info" title="Info" aria-label="Info"></button>
<div class="info-menu" id="info-menu" hidden>
<button class="info-menu-item" id="info-menu-manual">Benutzerhandbuch</button>
<button class="info-menu-item" id="info-menu-disclaimer">Disclaimer</button>
<button class="info-menu-item" id="info-menu-license">Lizenz</button>
</div>
</div>
<button class="icon-btn" id="btn-hide" title="Ausblenden (über das Tray-Symbol zurückholen)"></button>
</header>
<main class="meters">
<!-- Laufende Sitzung: das kurzfristig bindende Limit -->
<section class="meter" id="meter-block">
<div class="meter-head">
<span class="meter-label">Laufende Sitzung</span>
<span class="meter-value" id="block-percent"></span>
</div>
<div class="track" role="img" aria-labelledby="block-a11y">
<div class="fill" id="block-fill"></div>
<div class="projection" id="block-projection" hidden></div>
</div>
<div class="meter-foot">
<span class="status" id="block-status"><span class="status-icon" aria-hidden="true"></span><span class="status-text"></span></span>
<span class="reset" id="block-reset"></span>
</div>
<div class="session-figures">
<div class="figure">
<span class="figure-value" id="session-tokens"></span>
<span class="figure-label">Tokens</span>
</div>
<div class="figure">
<span class="figure-value" id="session-rate"></span>
<span class="figure-label">pro Minute</span>
</div>
</div>
<span class="sr-only" id="block-a11y"></span>
</section>
<!-- Wochenkontingent -->
<section class="meter" id="meter-week">
<div class="meter-head">
<span class="meter-label">Wochenkontingent</span>
<span class="meter-value" id="week-percent"></span>
</div>
<div class="track" role="img" aria-labelledby="week-a11y">
<div class="fill" id="week-fill"></div>
<div class="projection" id="week-projection" hidden></div>
</div>
<div class="meter-foot">
<span class="status" id="week-status"><span class="status-icon" aria-hidden="true"></span><span class="status-text"></span></span>
<span class="reset" id="week-reset"></span>
</div>
<span class="sr-only" id="week-a11y"></span>
</section>
<!-- Nutzungsguthaben — nur wenn der Server es meldet -->
<section class="meter" id="meter-spend" hidden>
<div class="meter-head">
<span class="meter-label">Nutzungsguthaben</span>
<span class="meter-value" id="spend-value"></span>
</div>
<div class="track" role="img" aria-labelledby="spend-a11y">
<div class="fill" id="spend-fill"></div>
</div>
<div class="meter-foot">
<span class="status" id="spend-status"><span class="status-icon" aria-hidden="true"></span><span class="status-text"></span></span>
<span class="reset" id="spend-limit"></span>
</div>
<span class="sr-only" id="spend-a11y"></span>
</section>
<p class="runway" id="session-runway"></p>
</main>
<button class="expander" id="btn-expand" aria-expanded="false" aria-controls="details">
<span id="expander-label">Details</span>
<span class="chevron" aria-hidden="true"></span>
</button>
<!-- Detailansicht -->
<div class="details" id="details" hidden>
<section class="detail-block">
<h2>Tokenverbrauch im laufenden Fenster</h2>
<div class="stacked" id="model-bar" role="img" aria-labelledby="model-a11y"></div>
<ul class="legend" id="model-legend"></ul>
<span class="sr-only" id="model-a11y"></span>
<table class="model-table" id="model-table">
<thead>
<tr>
<th scope="col">Modell</th>
<th scope="col" class="num">Ausgabe</th>
<th scope="col" class="num">Cache</th>
<th scope="col" class="num">Gesamt</th>
</tr>
</thead>
<tbody></tbody>
</table>
</section>
<section class="detail-block">
<h2>Tempo</h2>
<dl class="facts">
<dt>Burn-Rate</dt>
<dd id="fact-burn"></dd>
<dt>Woche in 1 Std.</dt>
<dd id="fact-projection"></dd>
<dt>Kontingent reicht noch</dt>
<dd id="fact-ttl"></dd>
<dt>Nachrichten in der Sitzung</dt>
<dd id="fact-messages"></dd>
</dl>
</section>
<section class="detail-block">
<h2>Datengrundlage</h2>
<dl class="facts">
<dt id="fact-confidence-label" hidden>Genauigkeit 5 Std.</dt>
<dd id="fact-confidence" hidden></dd>
<dt>Genauigkeit Woche</dt>
<dd id="fact-confidence-week"></dd>
<dt>Serverabfrage</dt>
<dd id="fact-oauth"></dd>
<dt>Aktualisiert</dt>
<dd id="fact-updated"></dd>
</dl>
<p class="hint" id="confidence-hint"></p>
<ul class="errors" id="errors" hidden></ul>
</section>
</div>
</div>
<script src="app.js"></script>
</body>
</html>