From 9799843cd28845312ef24de0f65c955f564da144 Mon Sep 17 00:00:00 2001 From: Tim Eertmoed Date: Wed, 2 Sep 2026 22:21:44 +0200 Subject: [PATCH] Kurze Hostnamen in Freigaben aufloesen, Protokolle am Ende oeffnen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Freigaben mit kurzem Hostnamen (\S2025\Share) scheiterten mit "could not resolve address for S2025". Ursache: dieser Server hat keine Suchdomaene (search . in resolv.conf), ein Windows-Client hat eine. Der Name ist also richtig, nur hier nicht auflösbar. Die AD-Domaene ist aus den Einstellungen des Verzeichnisdienstes bekannt und wird jetzt zum Vervollstaendigen benutzt; laesst sich der Name gar nicht aufloesen, sagt die Meldung was zu tun ist statt "Unknown error". Auf POETEST gegen echtes DNS geprueft: \S2025\LDAP_Share -> \S2025.ad.eertmoed.net\LDAP_Share, und dieser Pfad bindet ein. Protokollansichten standen beim Oeffnen oben. Die neueste Zeile steht aber unten, und weil die Aktualisierung nur mitzieht, wenn man ohnehin am Ende ist, zog sie danach nie mit -- es sah aus wie ein kaputter Autoscroll, war aber nur die falsche Anfangsposition. Die Protokollansichten sind jetzt per data-tail markiert und springen beim Laden nach unten. Konfigurationsvorschauen (nginx, Kea) und der Offline-Code sind bewusst nicht markiert: die beginnen oben. Co-Authored-By: Claude Opus 5 --- .../src/tesm_core/static/tesm_core/js/app.js | 23 ++++++++++++++++++- .../templates/tesm_core/_log_lines.html | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/tesm-core/src/tesm_core/static/tesm_core/js/app.js b/packages/tesm-core/src/tesm_core/static/tesm_core/js/app.js index cd3adad..d329862 100644 --- a/packages/tesm-core/src/tesm_core/static/tesm_core/js/app.js +++ b/packages/tesm-core/src/tesm_core/static/tesm_core/js/app.js @@ -563,7 +563,8 @@ function initAutoRefresh() { // von innerHTML entsteht ein neues Element -- mit scrollTop 0. Genau // deshalb sprang ein laufendes Auftragsprotokoll bei jeder // Aktualisierung an den Anfang zurueck. - const scrollerOf = (el) => el.querySelector(".log-view, [data-scroll]") || el; + const scrollerOf = (el) => + el.querySelector("[data-tail], .log-view, [data-scroll]") || el; const before = scrollerOf(region); const position = before.scrollTop; // "Am Ende" grosszuegig auslegen: wer mitliest, soll mitgezogen @@ -814,6 +815,25 @@ function initTileFilters() { /* -- Start ---------------------------------------------------------------- */ +/** + * Protokollansichten stehen am Ende, nicht am Anfang. + * + * Bei einem Protokoll ist die neueste Zeile die interessante, und die steht + * unten. Ohne diesen Anfangssprung blieb die Ansicht oben stehen -- und weil + * die Aktualisierung nur mitzieht, wenn man ohnehin schon am Ende ist, zog + * sie danach nie mit. Es sah aus, als waere der Autoscroll kaputt; in + * Wirklichkeit stand man nur nie an der Stelle, an der er greift. + * + * Ausdruecklich per ``data-tail`` markiert: eine Konfigurationsvorschau + * (nginx, Kea) und der Offline-Code sind auch
, sollen
+ * aber oben beginnen.
+ */
+function initLogTails(root = document) {
+  root.querySelectorAll("[data-tail]").forEach((view) => {
+    view.scrollTop = view.scrollHeight;
+  });
+}
+
 function boot() {
   initTheme();
   initSidebar();
@@ -830,6 +850,7 @@ function boot() {
   initPalette();
   initSubmitGuards();
   initTileFilters();
+  initLogTails();
   unsavedGuard.init();
 }
 
diff --git a/packages/tesm-core/src/tesm_core/templates/tesm_core/_log_lines.html b/packages/tesm-core/src/tesm_core/templates/tesm_core/_log_lines.html
index 4ce031f..f9aea87 100644
--- a/packages/tesm-core/src/tesm_core/templates/tesm_core/_log_lines.html
+++ b/packages/tesm-core/src/tesm_core/templates/tesm_core/_log_lines.html
@@ -1,5 +1,5 @@
 {% if lines %}
-
{% for line in lines %}{{ line }}
+
{% for line in lines %}{{ line }}
 {% endfor %}
{% else %}
Keine Zeilen