fix(paket a): URL-Reload ohne Rückfrage, Letztes-Dokument-Hinweis, Fremd-Tab-Warnung (D84)
1. Neu laden fragt bei URL-Dokumenten nicht mehr (F5 verwirft ohnehin still, D23); bei Datei-Dokumenten bleibt die Rückfrage. Dabei gefunden und behoben: Der Knopf erschien auch bei Server-Dokumenten und hätte die JSON-Antwort der API als Text an alle gepusht. 2. Die Rückfrage beim letzten Dokument sagt, dass danach wieder das Beispiel dasteht (docDeleteLastConfirm, 9 Sprachen). 3. Ein zweiter Tab, der in dieselbe Ablage schreibt, wird per storage-Ereignis erkannt und gemeldet (tabConflict, isDocKey in docstore.js) — kein Sync, aber kein stiller Verlust mehr. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
83dc329b43
commit
c438a88344
@@ -19,6 +19,10 @@ reverse.
|
||||
|
||||
## 2026-08-27
|
||||
|
||||
- If Werkbaum is open in a second browser tab, a warning says so — both tabs write the same document list, and the last one to save wins
|
||||
- Reloading a URL document no longer asks — a page reload discards local changes silently anyway, so the question promised a protection that did not exist
|
||||
- Deleting your last document now says that a fresh example will take its place
|
||||
- Fix: the reload button also showed for shared documents and would have loaded the API's JSON answer as text, pushing it to everyone
|
||||
- An owner password for shared plans recorded as planned: creating a document returns it once, management will bind to it, an admin can reclaim
|
||||
- Shared documents are left, not deleted: their row shows a leave action with its own icon and wording — the document stays on the server, and its link lands on the clipboard
|
||||
- The document menu's groups are named Included, Local and Shared now — "yours" and "sources" said less than where a document lives
|
||||
|
||||
@@ -7246,3 +7246,47 @@ Papierkorb. Werkzeug-Lehre am Rande: Ein noch offener, veralteter Test-Tab
|
||||
flushte bei jedem Sichtbarkeitswechsel seinen alten Speicherstand über die
|
||||
Inszenierung (Last-Writer-Wins zwischen Tabs — kein neues Verhalten, aber
|
||||
eine Falle für Speicher-Tests: alte Tabs erst schließen).
|
||||
|
||||
## D84 — Drei kleine Ungereimtheiten und ein Fund: Reload, letztes Dokument, fremder Tab
|
||||
Aus der Nutzer-Frage „Gibt es noch weitere ähnliche Ungereimtheiten?" entstand
|
||||
eine Liste von zehn Punkten; die Entscheidungen dazu fielen als
|
||||
Multiple-Choice-Runde, umgesetzt in drei Paketen. Dies ist **Paket A** — die
|
||||
drei kleinen, nur im Frontend:
|
||||
|
||||
**1. Der Neu-laden-Knopf fragt bei URL-Dokumenten nicht mehr nach.** Die
|
||||
Rückfrage („lokale Änderungen gehen verloren") versprach einen Schutz, den es
|
||||
nicht gibt: Jedes Neuladen der **Seite** verwirft lokale Änderungen an einem
|
||||
URL-Dokument ohnehin still — die URL ist die Quelle der Wahrheit (D23). Bei
|
||||
**Datei-Dokumenten** bleibt die Rückfrage: Dort gibt es den stillen
|
||||
Konkurrenzweg nicht.
|
||||
|
||||
**Dabei ein echter Fehler gefunden: Der Neu-laden-Knopf erschien auch bei
|
||||
Server-Dokumenten** — `adoptLive()` setzt `source`, und der Knopf prüfte nur
|
||||
darauf. Ein Druck hätte die **JSON-Antwort der API** als Notationstext geladen
|
||||
und per Live-Diff an alle Mitschreiber gepusht. Jetzt sind `live:`-Dokumente
|
||||
an beiden Stellen ausgenommen (Knopf-Sichtbarkeit und `reloadDoc()` selbst) —
|
||||
der Feed hält sie ohnehin aktuell.
|
||||
|
||||
**2. Die Rückfrage beim letzten Dokument sagt, was danach dasteht.** Der
|
||||
Editor steht nie leer (D22): Wer sein letztes Dokument löscht, bekommt still
|
||||
ein frisches Beispiel. Die Rückfrage trägt das jetzt („Es ist das letzte —
|
||||
danach steht wieder das mitgelieferte Beispiel da.", `docDeleteLastConfirm`,
|
||||
neun Sprachen); das Verhalten bleibt unverändert.
|
||||
|
||||
**3. Ein fremder Tab wird erkannt und gemeldet.** Zwei offene Tabs schreiben
|
||||
in dieselbe Dokument-Ablage, der letzte Flush gewinnt — schon immer so, aber
|
||||
nirgends benannt (bei den D83-Tests dreimal hineingelaufen). Das
|
||||
`storage`-Ereignis feuert genau in den **anderen** Tabs desselben Ursprungs;
|
||||
`isDocKey()` (docstore.js, getestet) filtert auf Dokument-Schlüssel, und die
|
||||
zeilenlose Warnung `tabConflict` bleibt bis zum Neuladen stehen — die Lage
|
||||
ändert sich nicht dadurch, dass der andere Tab gerade pausiert. Bewusst
|
||||
**kein** Sync: Erkennen ist der Schritt, der stillen Verlust beendet; ein
|
||||
echter Tab-Abgleich wäre ein eigener Umbau mit eigenen Konfliktfragen.
|
||||
|
||||
**Nachgemessen** im Browser: URL-Dokument lädt am Knopf ohne Rückfrage frisch
|
||||
(0 confirm-Aufrufe, Text ersetzt); beim aktiven Server-Dokument ist der Knopf
|
||||
verborgen; die normale und die Letztes-Dokument-Rückfrage tragen die
|
||||
richtigen Texte, Abbruch lässt alles stehen; und die Tab-Warnung erschien
|
||||
durch **echtes** Tippen in einem zweiten Tab (kein synthetisches Ereignis —
|
||||
das storage-Ereignis kommt nur aus fremden Fenstern). 531 Tests, davon 2 neue
|
||||
für `isDocKey`.
|
||||
|
||||
Reference in New Issue
Block a user