hmgr 0.0.43 → 0.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aenderungen.json +3 -0
- package/dist/gui/main.js +25 -1
- package/dist/gui/renderer/renderer.js +13 -20
- package/package.json +1 -1
package/dist/aenderungen.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"fassung": 1,
|
|
3
3
|
"versionen": {
|
|
4
|
+
"0.0.44": [
|
|
5
|
+
"Läuft gerade eine Aktualisierung, zeigt hmgr ein im Terminal hinzugefügtes Verzeichnis trotzdem sofort an, statt bis zum Ende der Aktualisierung zu warten."
|
|
6
|
+
],
|
|
4
7
|
"0.0.43": [
|
|
5
8
|
"Fügst du im Terminal ein Arbeitsverzeichnis hinzu (hmgr dir add oder link mit einem neuen Verzeichnis), kommt ein offenes hmgr-Fenster nach vorn und zeigt das Verzeichnis sofort an."
|
|
6
9
|
],
|
package/dist/gui/main.js
CHANGED
|
@@ -1374,7 +1374,7 @@ function fensterOeffnen() {
|
|
|
1374
1374
|
// E110: CLI-Signal gegen die laufende GUI. Das Signal schreibt dieser Main-Prozess in das
|
|
1375
1375
|
// Wegwerf-Home (der Renderer kann keine Dateien schreiben). Fall 1: ohne Dialog springt die
|
|
1376
1376
|
// GUI aus einer anderen Ansicht zur Karte. Fall 2: mit offenem Dialog bleibt alles stehen,
|
|
1377
|
-
// erst nach dem Schließen folgt der Sprung. Läuft nach der Neustart-Modal-Prüfung, weil der Fall
|
|
1377
|
+
// erst nach dem Schließen folgt der Sprung. Fall 3 (E112): bei laufendem Aktualisieren lädt das Signal trotzdem, der Watcher nicht. Läuft nach der Neustart-Modal-Prüfung, weil der Fall
|
|
1378
1378
|
// offene Dialoge schließt.
|
|
1379
1379
|
.then(async () => {
|
|
1380
1380
|
const pfade = (process.env.HMGR_GUI_SMOKE_SIGNAL_PFADE ?? '').split('\n').filter((p) => p !== '');
|
|
@@ -1422,6 +1422,30 @@ function fensterOeffnen() {
|
|
|
1422
1422
|
ergebnis.fall2NachWarten = await js(karteJs(pfad2));
|
|
1423
1423
|
await js(`document.getElementById('d-einstellungen').close(); true`);
|
|
1424
1424
|
ergebnis.fall2 = await warteAufSprung(pfad2);
|
|
1425
|
+
// Fall 3 (E112): ein Aktualisieren-Lauf läuft (so erkennt ihn der Renderer: der
|
|
1426
|
+
// Kringel ist gesperrt). Ein Watcher-/Fokus-Anstoß lädt nicht; das Signal lädt sofort
|
|
1427
|
+
// und springt trotzdem. Ein MutationObserver an der Zielliste belegt das Neuladen
|
|
1428
|
+
// (ladeAlles baut sie neu auf). Karte von Fall 1 vorher zuklappen, Ansicht wechseln.
|
|
1429
|
+
await js(`window.__e112Aenderungen = 0;
|
|
1430
|
+
window.__e112Beobachter = new MutationObserver(function (m) { window.__e112Aenderungen += m.length; });
|
|
1431
|
+
window.__e112Beobachter.observe(document.getElementById('zielliste'), { childList: true, subtree: true });
|
|
1432
|
+
document.getElementById('updatestart').disabled = true;
|
|
1433
|
+
document.querySelector('[data-ansicht="mcp"]').click(); true`);
|
|
1434
|
+
await js(`(function () {
|
|
1435
|
+
var k = Array.from(document.querySelectorAll('#zielliste .ziel.verzeichnis'))
|
|
1436
|
+
.find(function (x) { return x.dataset.verzKey === ${JSON.stringify(`dir:${pfad1}`)}; });
|
|
1437
|
+
var kopf = k.querySelector('.zielkopf');
|
|
1438
|
+
if (kopf.getAttribute('aria-expanded') === 'true') kopf.click();
|
|
1439
|
+
window.__e112Aenderungen = 0; return true; })()`);
|
|
1440
|
+
ergebnis.fall3Vorher = await js(karteJs(pfad1));
|
|
1441
|
+
fenster.webContents.send('hmgr:neuLadenAnstossen');
|
|
1442
|
+
await new Promise((r) => setTimeout(r, 1200));
|
|
1443
|
+
ergebnis.fall3WatcherAenderungen = await js(`window.__e112Aenderungen`);
|
|
1444
|
+
await signalSchreiben(umgebung.hmgrHome, { art: 'verzeichnis-zeigen', pfad: pfad1, zeit: Date.now() });
|
|
1445
|
+
ergebnis.fall3 = await warteAufSprung(pfad1);
|
|
1446
|
+
ergebnis.fall3Aenderungen = await js(`window.__e112Aenderungen`);
|
|
1447
|
+
ergebnis.fall3LaufNochGesperrt = await js(`document.getElementById('updatestart').disabled === true`);
|
|
1448
|
+
await js(`document.getElementById('updatestart').disabled = false; window.__e112Beobachter.disconnect(); true`);
|
|
1425
1449
|
}
|
|
1426
1450
|
catch (fehler) {
|
|
1427
1451
|
ergebnis.fehler = String(fehler);
|
|
@@ -2797,14 +2797,13 @@
|
|
|
2797
2797
|
var uhrzeit = new Date().toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' });
|
|
2798
2798
|
standNachLauf(ergebnis, ausloeser, uhrzeit);
|
|
2799
2799
|
await ladeVerlauf();
|
|
2800
|
-
await
|
|
2800
|
+
await ladeAllesNacheinander();
|
|
2801
2801
|
} finally {
|
|
2802
2802
|
standLaeuft = false;
|
|
2803
2803
|
knopf.disabled = false;
|
|
2804
2804
|
knopf.classList.remove('laeuft');
|
|
2805
2805
|
// Scheiterte der Lauf, bliebe sonst „Prüft …" stehen.
|
|
2806
2806
|
if ($('standtext').textContent === 'Prüft …') standText();
|
|
2807
|
-
reloadWartendeFreigeben();
|
|
2808
2807
|
}
|
|
2809
2808
|
}
|
|
2810
2809
|
|
|
@@ -2884,20 +2883,14 @@
|
|
|
2884
2883
|
// überholt. Fehler landen wie sonst über rufe() in der Meldungsleiste, kein stiller Absturz.
|
|
2885
2884
|
var stillerReloadLaeuft = false;
|
|
2886
2885
|
var stillerReloadVorgemerkt = false;
|
|
2887
|
-
//
|
|
2888
|
-
//
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
var
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
}
|
|
2896
|
-
function stillerReloadAbwarten() {
|
|
2897
|
-
return new Promise(function (aufloeser) {
|
|
2898
|
-
reloadWartende.push(aufloeser);
|
|
2899
|
-
void stillerReload();
|
|
2900
|
-
});
|
|
2886
|
+
// Alle Neuaufbauten der stillen Wege, des Signals und des Laufendes (E112) laufen hintereinander,
|
|
2887
|
+
// nie gleichzeitig. Die Kette reißt nie: ein Fehler (rufe() hat ihn gemeldet) wird für die
|
|
2888
|
+
// Kette verschluckt, dem Aufrufer aber weitergereicht.
|
|
2889
|
+
var ladeKette = Promise.resolve();
|
|
2890
|
+
function ladeAllesNacheinander() {
|
|
2891
|
+
var lauf = ladeKette.then(function () { return ladeAlles(); });
|
|
2892
|
+
ladeKette = lauf.catch(function () {});
|
|
2893
|
+
return lauf;
|
|
2901
2894
|
}
|
|
2902
2895
|
async function stillerReload() {
|
|
2903
2896
|
// Läuft gerade ein Aktualisieren-Lauf, wird nicht parallel geladen: er endet ohnehin mit
|
|
@@ -2909,7 +2902,7 @@
|
|
|
2909
2902
|
}
|
|
2910
2903
|
stillerReloadLaeuft = true;
|
|
2911
2904
|
try {
|
|
2912
|
-
await
|
|
2905
|
+
await ladeAllesNacheinander();
|
|
2913
2906
|
} catch (fehler) {
|
|
2914
2907
|
// rufe() hat den Fehler schon gemeldet, hier bleibt nur: den Durchlauf nicht wiederholen.
|
|
2915
2908
|
} finally {
|
|
@@ -2917,8 +2910,6 @@
|
|
|
2917
2910
|
if (stillerReloadVorgemerkt) {
|
|
2918
2911
|
stillerReloadVorgemerkt = false;
|
|
2919
2912
|
void stillerReload();
|
|
2920
|
-
} else {
|
|
2921
|
-
reloadWartendeFreigeben();
|
|
2922
2913
|
}
|
|
2923
2914
|
}
|
|
2924
2915
|
}
|
|
@@ -2939,9 +2930,11 @@
|
|
|
2939
2930
|
zeigeAnsicht('ziele');
|
|
2940
2931
|
springeZuVerzeichnis(pfad);
|
|
2941
2932
|
}
|
|
2933
|
+
// Der Signalweg lädt sofort, auch während eines Aktualisieren-Laufs (E112); die Serialisierung
|
|
2934
|
+
// hält ihn von dessen Neuaufbau am Ende getrennt. Der Sprung folgt auch nach einem Fehler.
|
|
2942
2935
|
window.hmgr.onVerzeichnisZeigen(function (pfad) {
|
|
2943
2936
|
signalPfadVorgemerkt = pfad;
|
|
2944
|
-
void
|
|
2937
|
+
void ladeAllesNacheinander().catch(function () {}).then(signalSprungEinloesen);
|
|
2945
2938
|
});
|
|
2946
2939
|
// `close` bubbelt nicht, der Capture-Listener am Dokument sieht aber jeden geschlossenen Dialog.
|
|
2947
2940
|
// Der Aufschub um einen Takt lässt einen unmittelbar folgenden Dialog zuerst aufgehen.
|