feat(kopf): Dokumentart grau hinter dem Namens-Chip — Mitgeliefert/Lokal/Geteilt samt Host (D90)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-27 13:03:53 +02:00
co-authored by Claude Fable 5
parent 408e23f25b
commit f45ca44d3c
6 changed files with 68 additions and 2 deletions
+1
View File
@@ -19,6 +19,7 @@ reverse.
## 2026-08-27 ## 2026-08-27
- The document kind now stands in grey behind the name chip — Included, Local or Shared with the server's host, the same words as the menu groups
- A second Werkbaum window now raises a modal dialog in both windows — it closes by itself as soon as the other window is gone - A second Werkbaum window now raises a modal dialog in both windows — it closes by itself as soon as the other window is gone
- A standing warning appears when changes have not reached the server for 30 seconds — whatever the reason: an open conflict bar, a dead session, the network - A standing warning appears when changes have not reached the server for 30 seconds — whatever the reason: an open conflict bar, a dead session, the network
- Unsent text is never discarded silently any more: it is rescued into the local backups before a reload, a conflict decision or a server full-text replaces it, and closing with unsent changes asks first - Unsent text is never discarded silently any more: it is rescued into the local backups before a reload, a conflict decision or a server full-text replaces it, and closing with unsent changes asks first
+36
View File
@@ -7706,3 +7706,39 @@ sind jetzt alle laut oder abgestellt; tritt es erneut auf, benennt die
Warnung den Zustand, und die Sicherungen halten den Text. Unabhängig davon Warnung den Zustand, und die Sicherungen halten den Text. Unabhängig davon
kann `tools/pull-doc --git-commit` (D88) per Cron eine Git-Historie des kann `tools/pull-doc --git-commit` (D88) per Cron eine Git-Historie des
Server-Dokuments führen — ein Netz außerhalb des Browsers. Server-Dokuments führen — ein Netz außerhalb des Browsers.
## D90 — Die Dokumentart steht grau hinter dem Namens-Chip
Nutzerwunsch, unmittelbar aus dem D89-Vorfall: Hinter der Brotkrume
(„Werkbaum Name", D81) soll erkennbar sein, was für ein Dokument vorn ist —
als Symbol oder „einfach in grau derselbe String wie im Dokumenten-Menü für
die Abschnitte". Gebaut ist die zweite Variante: **dieselben Begriffe wie die
Menü-Gruppen** (Mitgeliefert · Lokal · Geteilt, D81-Nachtrag 4), klein und
grau hinter dem Chip; bei Server-Dokumenten mit dem **Host** dahinter
(„Geteilt · werkbaum.javagil.de") — dieselbe Auskunft wie in der Menüzeile
(D76-Nachtrag 8). Keine neue Symbolsprache, keine neuen i18n-Schlüssel: Die
Gruppen-Begriffe existieren in neun Sprachen, und Wiedererkennung zwischen
Chip und Menü ist der Zweck.
**Der Anlass macht die Wahl leicht:** Beim D89-Vorfall lag vermutlich die
**lokale Kopie** gleichen Namens vorn (die beim Teilen absichtlich stehen
bleibt, D76-Nachtrag 8) — im Editor von der geteilten Fassung nicht zu
unterscheiden, nur der Teilen-Knopf verriet es dem, der wusste, worauf er
achtet. Jetzt steht der Unterschied dauerhaft neben dem Namen: „Lokal"
gegen „Geteilt · host". Die vier Arten aus dem Wunsch (app/local/sourceUrl/
live) fallen auf die drei Gruppen-Begriffe zusammen — dieselbe Entscheidung
wie im Menü (D81-Nachtrag 4: URL- und Server-Dokumente sind beide
„Geteilt"), und die Unterscheidung, die vor Verlust schützt, ist
Lokal↔Geteilt, nicht URL↔Server.
**Bei langen Namen bleibt die Art stehen** (`flex:0 0 auto`), der Name
bekommt die Ellipse — die Art ist die Information, die vor Verwechslung
schützt. Kein `aria-hidden`: Anders als Größen-Badge und Pillen ist der
Text keine Doppelung, ein Screenreader erfährt ihn sonst nirgends an
dieser Stelle.
**Nachgemessen** im Browser: „Geteilt · 127.0.0.1:8080" am Server-Dokument,
„Mitgeliefert" am Beispiel, „Lokal" an einem frisch angelegten Dokument;
der Sprachwechsel zieht mit („Included"); auf 375 px liegt das Label
vollständig im Bild und die Chip-Zeile bleibt im D81-Layout (Kopf 95 px =
Kopfzeile + Chip-Zeile). Reine UI-Verdrahtung, Browser-geprüft
(D54-Nachtrag-3-Grenze); `docKind()` selbst ist seit D81 headless getestet.
+3 -1
View File
@@ -564,7 +564,9 @@ der Titelzeile schaltet ein **Knopf** auf den anderen um; er zeigt das Ziel
weder Splitter noch Min/Normal/Max-Buttons — es ist nichts zu teilen. Die weder Splitter noch Min/Normal/Max-Buttons — es ist nichts zu teilen. Die
Bereichstitel („DIAGRAMM", „TEXT-EDITOR") entfallen; die Zeile wird für Bereichstitel („DIAGRAMM", „TEXT-EDITOR") entfallen; die Zeile wird für
Umschalter und Aktionen gebraucht. Der **Dokumenten-Wähler** steht als Umschalter und Aktionen gebraucht. Der **Dokumenten-Wähler** steht als
Brotkrume im App-Kopf („Werkbaum Name", D81) und ist damit aus **beiden** Brotkrume im App-Kopf („Werkbaum Name", D81; dahinter steht grau die
**Dokumentart** — Mitgeliefert · Lokal · Geteilt, bei Server-Dokumenten samt
Host, D90) und ist damit aus **beiden**
Bereichen erreichbar; sein Name übernimmt hier die Zeile des Untertitels — Bereichen erreichbar; sein Name übernimmt hier die Zeile des Untertitels —
es kommt keine Fläche hinzu. Die übrigen es kommt keine Fläche hinzu. Die übrigen
**Aktions-Knöpfe** bleiben rechts in der Titelzeile und werden mit **Aktions-Knöpfe** bleiben rechts in der Titelzeile und werden mit
+5
View File
@@ -41,6 +41,11 @@
<span class="docname" id="docName"></span> <span class="docname" id="docName"></span>
<svg class="doc-caret" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg> <svg class="doc-caret" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
</span> </span>
<!-- Dokumentart hinter dem Chip (D90): dieselben Begriffe wie die
Menü-Abschnitte (Mitgeliefert · Lokal · Geteilt), grau — die
Verwechslung „lokale Kopie statt geteiltem Dokument" soll ohne
Menü-Blick auffallen. -->
<span class="dockind" id="docKindLabel"></span>
<!-- Ein Menü, nach Dokumentart gruppiert; Umbenennen/Löschen/ <!-- Ein Menü, nach Dokumentart gruppiert; Umbenennen/Löschen/
Wiederherstellen hängen als Symbole an der Zeile des jeweiligen Wiederherstellen hängen als Symbole an der Zeile des jeweiligen
Dokuments (immer sichtbar — Touch kennt kein Hover). Scrollt als Dokuments (immer sichtbar — Touch kennt kein Hover). Scrollt als
+14
View File
@@ -3938,6 +3938,20 @@ const docList = document.getElementById('docList');
function updateDocName(){ function updateDocName(){
const d = activeDoc(); const d = activeDoc();
if(docNameEl) docNameEl.textContent = d ? d.name : ''; if(docNameEl) docNameEl.textContent = d ? d.name : '';
/* Dokumentart hinter dem Chip (D90): dieselben Begriffe wie die
Menü-Abschnitte vor allem gegen die Verwechslung lokale Kopie statt
geteiltem Dokument" (der D89-Vorfall). Bei Server-Dokumenten mit Host,
wie in der Menüzeile. */
const kindEl = document.getElementById('docKindLabel');
if(kindEl){
if(d){
const art = docKind(d.id, SHIPPED_IDS);
const label = {shipped: 'docGroupShipped', own: 'docGroupOwn',
server: 'docGroupSources', url: 'docGroupSources'}[art];
const host = serverHostOf(d.id);
kindEl.textContent = t(label) + (host ? ' · ' + host : '');
} else kindEl.textContent = '';
}
/* Aus einer URL geladene Dokumente (D23): die vollständige Quelle in den /* Aus einer URL geladene Dokumente (D23): die vollständige Quelle in den
Tooltip, da der Name in der Titelzeile mit Ellipse abgeschnitten wird. Tooltip, da der Name in der Titelzeile mit Ellipse abgeschnitten wird.
Muss nach applyLang erneut laufen das setzt data-i18n-title zurück. */ Muss nach applyLang erneut laufen das setzt data-i18n-title zurück. */
+9 -1
View File
@@ -83,7 +83,15 @@
Ellipse kürzt, statt die Werkzeuge rechts zu verdrängen. */ Ellipse kürzt, statt die Werkzeuge rechts zu verdrängen. */
.brandgroup{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 auto} .brandgroup{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 auto}
.crumb-sep{color:var(--muted);opacity:.6;font-size:1.05rem;flex:0 0 auto;user-select:none} .crumb-sep{color:var(--muted);opacity:.6;font-size:1.05rem;flex:0 0 auto;user-select:none}
.docwrap{position:relative;display:inline-flex;min-width:0} .docwrap{position:relative;display:inline-flex;align-items:center;min-width:0}
/* Dokumentart hinter dem Chip (D90): grau und klein Auskunft, kein Knopf.
flex:0 0 auto, damit bei langen Namen der Name die Ellipse bekommt und
die Art stehen bleibt (sie ist die Information, die vor Verwechslung
schützt). */
.dockind{
flex:0 0 auto;margin-left:8px;color:var(--muted);
font-size:.72rem;white-space:nowrap;
}
/* Der Auslöser sieht jetzt nach Menü aus: gerahmter Chip mit Pfeil die /* Der Auslöser sieht jetzt nach Menü aus: gerahmter Chip mit Pfeil die
frühere nackte Beschriftung in der Panel-Zeile war als Knopf nicht zu frühere nackte Beschriftung in der Panel-Zeile war als Knopf nicht zu
erkennen (der Anlass von D81). */ erkennen (der Anlass von D81). */