Commit Graph
10 Commits
Author SHA1 Message Date
SaschaandClaude Opus 5 acb840bd0a Web-GUI auf Port 80 (ohne Portnummer aufrufbar)
Die Unit startet Node als User=callrec (uid 1000) und konnte darum keinen
privilegierten Port binden - daher bisher :3000. Mit
AmbientCapabilities=CAP_NET_BIND_SERVICE bindet der unprivilegierte Prozess
jetzt Port 80 direkt, ohne Reverse-Proxy (nginx haette 20-40 MB RAM gekostet,
die neben dem residenten rkllm nicht frei sind). Kein Code-Eingriff noetig:
server.js liest process.env.PORT, das Frontend nutzt relative API-Pfade.
:3000 ist bewusst tot, alte Lesezeichen muessen angepasst werden.

Dazu: Doku-IPs auf aime.local/192.168.1.48 korrigiert (192.168.1.200 war
veraltet) und die Geisteranzeige-Diagnose vom 26.08. in Kapitel 03 + Changelog
festgehalten (verwaister Browser-Reiter zaehlt ewig weiter, fmt() ohne Stunden).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 08:53:14 +02:00
Claude bb1711d4c8 docs: Mermaid-Diagramme zur Systemanzeige in Kapitel 07
Sequenzdiagramm des Abfragewegs (GUI-Poll, /api/sysstat, sysstat.js, /proc
und statfs, 60-s-Puffer des recordings-Scans, 2-s-Ticker fuer die CPU-
Differenz) und Flussdiagramm der beiden Rechenwege (Ring = Aufnahmen durch
frei plus Aufnahmen; Ventilator = Drehstufe und Ampel).
2026-08-17 22:50:14 +02:00
Claude c562586216 fix(gui): "CPU-Temperatur" statt Zonenname in Klammern
Die Zeile zeigt nur noch den Wert in Grad. Damit die neue Beschriftung
stimmt, filtert sysstat.js die Zonen enger: nur soc-thermal, bigcore0/1
und littlecore. GPU-, NPU- und Center-Zone konnten vorher den Hoechstwert
stellen, obwohl "CPU" daran steht.

Doku: Kapitel 07 + Changelog.
2026-08-17 22:29:02 +02:00
Claude 6973b46d75 fix(gui): Erklaertext und Partitionszeile aus der Speicherkarte
Endstand: Aufnahmen (GB + Dateizahl) mit Balken, Noch frei, Gesamt fuer
Aufnahmen. /api/sysstat liefert partPct und totalBytes weiter, die GUI
zeigt sie nur nicht mehr an.

Doku: Kapitel 07 + Changelog.
2026-08-17 22:25:55 +02:00
Claude 3c434e20ec fix(gui): Speicherkarte wieder vollstaendig, Zeilen brechen nicht mehr um
Der vermeintlich fehlende Wert war ein Zeilenumbruch: bei "Gesamt fuer
Aufnahmen 27,5 GB" rutschte die Einheit allein in die naechste Zeile.
Balken, Restplatz, Vorratsgroesse, Erklaertext und Partitions-Fusszeile
sind wieder da; .sys-row steht auf white-space: nowrap und die Karte
waechst stattdessen in die Breite (min-width 285px).

Doku: Kapitel 07 + Changelog (inkl. Hinweis, dass WAV-Rohdateien und
Papierkorb-Aufnahmen in der Summe mitzaehlen).
2026-08-17 22:23:06 +02:00
Claude 51c1e0f675 fix(gui): Speicherkarte auf eine Zeile, Prozentzahl immer sichtbar
Klappkarte zeigt nur noch "Aufnahmen: x,y GB - n Dateien"; Balken, Restplatz,
Vorratsgroesse, Erklaertext und Partitions-Fusszeile sind raus.

Die Media-Query, die unter 900 px Fensterbreite die Prozentzahl neben dem
Ring ausblendete, ist entfernt - der Wert steht jetzt in jeder Breite.

Doku: Kapitel 07 + Changelog.
2026-08-17 22:17:42 +02:00
Claude db50c9616d fix(gui): Ventilator-Icon und Speicheranzeige auf Aufnahme-Vorrat
Das erste Icon las sich als Kleeblatt. Jetzt vier gebogene Pinwheel-Fluegel
in einem feststehenden Gehaeusering; nur die Fluegel drehen. Form vorab ohne
Browser geprueft (lab/preview_fan.py rendert die Bezier-Kandidaten als PNG).

Die Prozentzahl misst nicht mehr die Partition, sondern den Aufnahme-Vorrat:
100 % = freier Platz + alle Audiodateien unter recordings/, belegt = diese
Dateien. System, Modelle und node_modules fallen aus Zaehler und Nenner
heraus; der df-Wert steht als Fusszeile in der Klappkarte.

sysstat.js scannt recordings/ per readdir+stat (kein du-Prozess) und puffert
60 s; status() ist dadurch async, die Route laeuft ueber wrap().

Doku: Kapitel 07 + Changelog.
2026-08-17 22:03:17 +02:00
Claude 47288c0479 feat(gui): Systemanzeige in der Kopfzeile (Speicherring + Turbine)
Zwei Symbole zwischen Bluetooth-Tab und Hell/Dunkel-Schalter: ein Ring mit
der Plattenbelegung in Prozent und eine Turbine, deren Drehzahl der CPU-Last
folgt. Beide klappen bei Mauskontakt eine Karte mit Zahlen auf (belegt/frei/
gesamt bzw. CPU, RAM, Temperatur).

Neues Modul sysstat.js liest alles aus /proc bzw. fs.statfsSync, damit die
GUI im Sekundentakt fragen kann, ohne df/top-Prozesse zu starten. CPU-% aus
zwei /proc/stat-Messpunkten mit eigenem 2-s-Ticker, RAM ueber MemAvailable,
Temperatur als waermste SoC-/Core-Zone.

Doku: Kapitel 07 + Changelog.
2026-08-17 21:52:21 +02:00
schakal00783andClaude Opus 5 0aa6a37325 feat(system): System von der SD-Karte auf die eMMC umgezogen
Alles lag auf der SD (System, DB, Aufnahmen, Modelle), die verloetete eMMC lag
ungenutzt daneben. SD-Karten sterben im Dauerbetrieb meist ohne Vorwarnung, und
Aime schreibt bei jeder Aufnahme WAV + MP3 plus DB und Suchindex. Die eMMC meldet
ihren Verschleiss: life_time 0x01, pre_eol 0x01 = unter 10 % verbraucht.

Vorher vollstaendige Sicherung der SD gezogen und verifiziert (94.501 Eintraege =
find / -xdev, SHA-256-Stichprobe).

Drei Erkenntnisse:

1. mkfs.ext4 (e2fsprogs 1.47) setzt orphan_file, was das Incompat-Merkmal
   orphan_present mitbringt -- U-Boots ext4-Leser verweigert dann das Lesen.
   Vor dem ersten Start entfernt: tune2fs -O ^orphan_file,^metadata_csum_seed.
2. U-Boot liest boot.scr und armbianEnv.txt von der SD, solange sie steckt --
   nachgewiesen, indem die SD-Konfiguration testweise wieder auf die SD-Root
   zeigte und das Board prompt das alte System hochfuhr.
3. Daher aime-bootsync.service: spiegelt /boot beim Start und beim Herunterfahren
   auf die SD. Sonst liefe ein Kernel-Update auseinander (neue Module auf der
   eMMC, alter Kernel von der SD). Faellt die SD aus, greift die vollstaendige
   eMMC-Bootkette.

Ergebnis: / = mmcblk0p1 (aime-emmc), keine fehlgeschlagene Unit, dieselben fuenf
Dienste aktiv wie vorher, HTTP 200, NPU v0.9.8, Suchindex 1799/1799.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 01:07:26 +02:00
Claude db3d946592 docs: komplette CallRec-Dokumentation mit Mermaid-Diagrammen
Architektur, Hardware/Thermik, PipeWire-Audio-Topologie, Aufnahme-Pipeline,
Diarization (Anchor-Merge), LLM-Analyse (Gemma-3-4B/NPU), iPhone-BT-HFP,
Betrieb/Troubleshooting und Changelog-Chronik.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:51:22 +02:00