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.
This commit is contained in:
@@ -13,6 +13,7 @@ import * as spk from './spk.js';
|
||||
import * as search from './search.js';
|
||||
import * as emb from './emb.js';
|
||||
import * as gate from './gate.js';
|
||||
import * as sysstat from './sysstat.js';
|
||||
const pexec = promisify(execFile);
|
||||
|
||||
// Der Recorder ist die einzige Wahrheit darueber, ob gerade aufgenommen
|
||||
@@ -376,6 +377,10 @@ const wrap = fn => (req, res) => fn(req, res).catch(e => res.status(500).json({
|
||||
|
||||
app.get('/api/health', (req, res) => res.json({ ok: true, ...rec.status() }));
|
||||
|
||||
// Kopfzeilen-Anzeige: Platte, CPU, RAM, Temperatur. Reine /proc-Lesevorgänge,
|
||||
// deshalb ohne wrap() und ohne Warteschlange.
|
||||
app.get('/api/sysstat', (req, res) => res.json(sysstat.status()));
|
||||
|
||||
// --- Bluetooth ---
|
||||
app.post('/api/bt/scan', wrap(async (req, res) => {
|
||||
const secs = Math.min(+(req.body && req.body.seconds) || 10, 30);
|
||||
|
||||
Reference in New Issue
Block a user