From fff2f288cbd85512630a369e7aea43a74759f18e Mon Sep 17 00:00:00 2001 From: "Winkler, Stefan" Date: Tue, 1 Sep 2026 12:17:02 +0200 Subject: [PATCH] =?UTF-8?q?Info-Men=C3=BC=20im=20Tray=20ergaenzen,=20Sprun?= =?UTF-8?q?ganker=20im=20Benutzerhandbuch=20beheben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tray-Menü bekommt einen "Info"-Untermenüpunkt (Benutzerhandbuch/ Disclaimer/Lizenz), analog zum Menü in der Titelleiste. Markdown- Überschriften erhalten jetzt stabile id-Attribute (marked vergibt seit Version 5 keine eigenen mehr), damit das neue Inhaltsverzeichnis im Benutzerhandbuch als Sprunganker funktioniert. Reine Sprunganker im Info-Fenster navigieren nicht mehr wie externe Links. Nach jedem Abschnitt verlinkt "[nach oben]" zurück zum Inhaltsverzeichnis. Claude-Session: https://claude.ai/code/session_01VeqoaAZDVSCU4QBtiYDC5C --- BENUTZERHANDBUCH.md | 40 +++++++++++++++++++++++++++++++++++-- src/main/index.js | 48 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 85 insertions(+), 3 deletions(-) diff --git a/BENUTZERHANDBUCH.md b/BENUTZERHANDBUCH.md index f27c1a9..bfbf5ce 100644 --- a/BENUTZERHANDBUCH.md +++ b/BENUTZERHANDBUCH.md @@ -4,6 +4,22 @@ Dieses Handbuch richtet sich an Anwender, die Claude Live Dashboard installieren und nutzen möchten. Wer die Anwendung selbst bauen oder am Quellcode arbeiten möchte, findet die technische Dokumentation in der `README.md`. +## Inhalt + +- [Was die Anwendung tut](#was-die-anwendung-tut) +- [Voraussetzungen](#voraussetzungen) +- [Installation](#installation) + - [Windows](#windows) + - [Linux (Ubuntu und verwandte Distributionen)](#linux-ubuntu-und-verwandte-distributionen) +- [Erster Start](#erster-start) +- [Die Oberfläche](#die-oberfläche) + - [Endpunkt-Status und Fehler-/Ereignis-Log](#endpunkt-status-und-fehler-ereignis-log) +- [Einstellungen](#einstellungen) +- [Tray-Menü](#tray-menü) +- [Datenschutz und Sicherheit](#datenschutz-und-sicherheit) +- [Deinstallation](#deinstallation) +- [Häufige Fragen](#häufige-fragen) + ## Was die Anwendung tut Claude Live Dashboard ist ein kleines, immer sichtbares Fenster, das anzeigt, @@ -18,12 +34,16 @@ zusätzlich denselben Server-Endpunkt ab, den auch der Befehl `/usage` in Claude Code nutzt, um exakte statt geschätzter Werte anzuzeigen — dazu weiter unten mehr unter „Datenschutz und Sicherheit“. +[nach oben](#inhalt) + ## Voraussetzungen - Windows 10/11 oder Ubuntu (bzw. eine vergleichbare Linux-Distribution) - Claude Code muss installiert sein und mindestens einmal benutzt worden sein — ohne vorhandene Protokolldateien hat das Dashboard nichts anzuzeigen +[nach oben](#inhalt) + ## Installation ### Windows @@ -56,6 +76,8 @@ Unter GNOME braucht das Tray-Symbol die Erweiterung **AppIndicator** — bei Standard-Ubuntu ist sie bereits vorinstalliert. Fehlt sie, läuft die Anwendung trotzdem, nur ohne sichtbares Symbol in der oberen Leiste. +[nach oben](#inhalt) + ## Erster Start Nach dem Start erscheint das Fenster rechts oben auf dem Bildschirm und bleibt @@ -66,6 +88,8 @@ Unter Windows liegt das Symbol zunächst häufig im Überlaufbereich hinter dem Pfeil `^` — per Drag & Drop lässt es sich dauerhaft sichtbar an die Taskleiste heften. +[nach oben](#inhalt) + ## Die Oberfläche **Kopfzeile** — per Ziehen lässt sich das Fenster frei positionieren, die @@ -110,6 +134,8 @@ einen Neustart hinweg erhalten und lässt sich über den Knopf **Log löschen** jederzeit zurücksetzen. Bei einer Fehlermeldung im Programm ist ein Blick in dieses Log meist der schnellste Weg herauszufinden, was los ist. +[nach oben](#inhalt) + ## Einstellungen Das Zahnrad öffnet den Einstellungsdialog: @@ -137,12 +163,16 @@ Das Zahnrad öffnet den Einstellungsdialog: Updates suchen", siehe oben). `Strg`+`S` speichert, `Esc` schließt den Dialog ohne zu speichern. +[nach oben](#inhalt) + ## Tray-Menü Ein Rechtsklick (Linux) bzw. Klick (Windows) auf das Symbol im Infobereich/der Systemleiste öffnet ein Menü mit: Dashboard anzeigen/ausblenden, -Deckkraft, Klick-Durchlässigkeit, Autostart, Einstellungen, Datenordner öffnen -und Beenden. +Deckkraft, Klick-Durchlässigkeit, Autostart, Einstellungen, Info +(Benutzerhandbuch/Disclaimer/Lizenz), Datenordner öffnen und Beenden. + +[nach oben](#inhalt) ## Datenschutz und Sicherheit @@ -169,6 +199,8 @@ und Beenden. Zugriffstoken und ohne weitere Daten. Abschaltbar in den Einstellungen. - Es findet keine Übertragung an Dritte statt. +[nach oben](#inhalt) + ## Deinstallation **Windows:** über *Einstellungen ▸ Apps* bzw. den mitinstallierten @@ -179,6 +211,8 @@ erneut installieren. **Linux:** `.deb`-Installation mit `sudo apt remove claude-live-dashboard`; ein AppImage genügt zu löschen. +[nach oben](#inhalt) + ## Häufige Fragen **Das Fenster zeigt keine Zahlen an.** Vermutlich wurde Claude Code auf diesem @@ -210,3 +244,5 @@ oder Symbol öffnet die Release-Seite im Browser — heruntergeladen oder installiert wird nichts automatisch. Das Symbol bleibt sichtbar, bis eine neuere Version installiert wurde. Abschaltbar über die Einstellung „Nach Updates suchen". + +[nach oben](#inhalt) diff --git a/src/main/index.js b/src/main/index.js index 27ed87d..0d685f4 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -272,6 +272,14 @@ function buildTrayMenu() { }, { type: 'separator' }, { label: 'Einstellungen …', click: openSettings }, + { + label: 'Info', + submenu: [ + { label: 'Benutzerhandbuch', click: () => openInfoDoc('manual') }, + { label: 'Disclaimer', click: () => openInfoDoc('disclaimer') }, + { label: 'Lizenz', click: () => openInfoDoc('license') }, + ], + }, { label: 'Datenordner öffnen', click: () => shell.openPath(USER_DATA_DIR) }, { type: 'separator' }, { label: 'Beenden', click: () => app.quit() }, @@ -396,6 +404,39 @@ function escapeHtml(text) { .replace(/>/g, '>'); } +/** GitHub-ähnlicher Anker-Slug — reicht für die deutschen Überschriften hier + * (Umlaute bleiben erhalten, nur Satzzeichen fallen weg). */ +function slugify(text) { + return text + .toLowerCase() + .trim() + .replace(/[^\p{L}\p{N}\s-]/gu, '') + .replace(/\s+/g, '-') + .replace(/-+/g, '-'); +} + +/** + * Markdown→HTML mit `id`-Attributen auf jeder Überschrift, damit + * Sprunganker (z. B. aus einem Inhaltsverzeichnis) funktionieren — marked + * vergibt seit Version 5 selbst keine Heading-IDs mehr (früher `headerIds`, + * jetzt eine separate Erweiterung, die wir nicht zusätzlich einbinden). + * Ein frischer Renderer pro Aufruf hält die Dopplungs-Zählung dokumentweise + * sauber getrennt. + */ +function renderMarkdown(raw) { + const renderer = new marked.Renderer(); + const seen = new Map(); + renderer.heading = function ({ tokens, depth, text }) { + const inline = this.parser.parseInline(tokens); + let slug = slugify(text) || 'abschnitt'; + const count = seen.get(slug) || 0; + seen.set(slug, count + 1); + if (count > 0) slug = `${slug}-${count}`; + return `${inline}\n`; + }; + return marked.parse(raw, { renderer }); +} + /** * Behandelt einen Link-Klick im Info-Dialog. Ohne dieses Abfangen navigiert * Electron das Fenster selbst zum verlinkten Ziel — bei einem relativen Link @@ -434,7 +475,7 @@ function openInfoDoc(kind) { let html; try { const raw = fs.readFileSync(doc.file, 'utf8'); - html = marked.parse(raw); + html = renderMarkdown(raw); } catch (err) { html = `

Datei konnte nicht gelesen werden: ${escapeHtml(err.message)}

`; } @@ -480,6 +521,11 @@ function openInfoDoc(kind) { // lassen (siehe handleInfoLink()) — sonst bleibt ein leeres, unschließbares // Fenster zurück. infoWin.webContents.on('will-navigate', (event, url) => { + // Reiner Sprunganker innerhalb desselben Dokuments (z. B. aus dem + // Inhaltsverzeichnis) — Standardverhalten (Scrollen zum Anker) zulassen, + // statt es wie eine echte Navigation zu behandeln. + const currentBase = infoWin.webContents.getURL().split('#')[0]; + if (url.split('#')[0] === currentBase) return; event.preventDefault(); handleInfoLink(url); });