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
Neues (i)-Symbol in der Titelleiste öffnet ein Dropdown mit den
Einträgen "Benutzerhandbuch" und "Disclaimer". Klick auf einen Eintrag
zeigt den jeweiligen Text als modalen, scrollbaren Dialog (marked
wandelt die .md-Dateien zur Laufzeit im Main-Prozess in HTML um).
Beide Dateien sind jetzt auch in build.files gelistet, damit sie im
gepackten Release verfügbar sind.
Claude-Session: https://claude.ai/code/session_01VeqoaAZDVSCU4QBtiYDC5C
Eine veraltete "<=1 -> *100"-Heuristik verfälschte einen echten
Serverwert von 1% zu 100%, sobald der Prozentwert zufällig im Bereich
0-1 lag. Der Endpunkt liefert bereits einen echten 0-100-Prozentwert,
_rememberServerLimit() ging schon immer korrekt davon aus.
Claude-Session: https://claude.ai/code/session_01VeqoaAZDVSCU4QBtiYDC5C
Der erste automatische Kalibrierungsschritt einer Sitzung lief bisher
lautlos ab. Jetzt erscheint dafür einmalig pro Woche/Block ein Eintrag
im Ereignisprotokoll.
Claude-Session: https://claude.ai/code/session_01VeqoaAZDVSCU4QBtiYDC5C
Die App prueft ca. 60 s nach dem Start einmalig, ob auf dem Gitea-Server
ein neueres Release vorliegt. Bei einem Treffer erscheint eine
Systembenachrichtigung, und ein Symbol im Titelbalken bleibt sichtbar,
bis aktualisiert wird -- Klick auf beides oeffnet die Release-Seite im
Browser. Ueber die neue Einstellung "Nach Updates suchen" abschaltbar
(Standard: aktiv).
Ein Button "Zugriffstoken erneuern" tauscht das Refresh-Token aus
.credentials.json aktiv gegen ein neues Zugriffstoken und schreibt es in
dieselbe Datei zurueck, die auch Claude Code verwendet -- statt nur auf
den naechsten Start von Claude Code zu warten. Nur auf expliziten Klick,
nie automatisch im Hintergrund; Token wird dabei nie geloggt.
Der Wechsel auf X11 (noetig, weil Wayland weder Selbstpositionierung noch
Always-on-Top erlaubt) startete die App unter Wayland gar nicht neu: Electrons
app.relaunch() legt den Nachfolger ueber einen Hilfsprozess an, der im
/tmp-Mount des AppImage liegt. Beim Beenden der alten Instanz wird der Mount
abgehaengt und reisst den Hilfsprozess mit, bevor er den Nachfolger starten
kann -- die App war nach dem Doppelklick einfach weg.
Fuer das AppImage den Nachfolger jetzt selbst als abgekoppelten Prozess
(child_process.spawn mit detached/unref) auf das echte Abbild starten; das
ueberlebt das Abhaengen des Mounts. Quelle und .deb behalten app.relaunch(),
da dort der Hilfsprozess auf einem bleibenden Pfad liegt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ein neues Status-Icon im Titelbalken zeigt den Zustand der lokalen
Transkripte und der Serverabfrage; ein Klick oeffnet ein eigenes Fenster
mit persistiertem, zeitgestempeltem Ereignis-/Fehlerprotokoll (loeschbar).
Ausserdem erkennt die App beim Start Erstinstallation vs. Update
(plattformunabhaengig fuer Windows und Linux) und meldet Updates per
nativer Benachrichtigung.
Dazu: Versionierungs-Policy dokumentiert (package.json vor jedem Release
erhoehen, sonst greift weder die Update-Erkennung noch bleiben alte
Release-Dateien in release/ erhalten), sowie zwei neue Dokumente fuer
Endanwender (BENUTZERHANDBUCH.md) und eine Download-Webseite
(PRODUKTSEITE.md).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Die Fachlogik war bereits plattformneutral — paths.js loeste ~/.config
schon auf, jsonl.js liest ueber os.homedir(). Zu tun waren Autostart,
Build-Targets und drei Linux-Eigenheiten der Oberflaeche.
XWayland erzwingen: Ab Electron 36 waehlt Chromium in einer
Wayland-Sitzung von sich aus Wayland. Dort darf sich ein Fenster weder
selbst positionieren noch dauerhaft in den Vordergrund legen — beides
ist der Kern dieses Widgets. Der Schalter muss auf der Kommandozeile
stehen, weil Ozone die Plattform vor dem Main-Skript festlegt;
appendSwitch() und ELECTRON_OZONE_PLATFORM_HINT kommen beide zu spaet.
Bleibt ein einmaliger Neustart mit --ozone-platform=x11, der sich am
Argument selbst als Abbruchbedingung erkennt. Im AppImage muss dabei
execPath auf APPIMAGE zeigen, sonst laeuft der Nachfolger in den
/tmp-Einhaengepunkt, den der Vorgaenger beim Beenden wegraeumt.
Autostart: app.setLoginItemSettings() gibt es unter Linux nicht. Das
neue Modul autostart.js kapselt die Weiche und schreibt bzw. loescht
dort ~/.config/autostart/claude-live-dashboard.desktop. Der Startbefehl
kommt aus APPIMAGE, falls gesetzt.
Ausserdem: enable-transparent-visuals fuer echte Transparenz, das
32-px-Tray-Symbol in der GNOME-Leiste, plattformabhaengige
Beschriftungen in Tray-Menue und Einstellungsdialog, AppImage- und
deb-Targets, icon.png auf 512 px (electron-builder rechnet daraus die
Linux-Groessen herunter) und start.sh als Gegenstueck zu start.cmd.
Getestet unter GNOME/Wayland: Fenster auf X11 an erwarteter Position,
gemerkte Position wird wiederhergestellt, Tray registriert sich auf
DBus, dump liest die Transkripte, beide Pakete bauen und das AppImage
startet ohne Schalter.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Always-on-Top Electron-Widget für die Claude-Plan-Auslastung unter Windows.
Liest Transkripte lokal, fragt optional den /usage-Endpunkt ab, bietet einen
Einstellungsdialog und lässt sich als NSIS-Installer oder portable Fassung
bauen.