fix(i18n): die Zwei-Fenster-Warnung nennt die zuletzt gespeicherte Änderung, nicht den letzten Tastendruck
Nutzer-Rückfrage: „Was für ein letzter Tastendruck?" — die Formulierung liest sich, als zähle nur Tippen. Tut es nicht: Umklappen im Diagramm schreibt die Faltmarke in den Text (D38-Nachtrag 2) und damit in den Speicher, nimmt also am selben Wettlauf teil. Nachgemessen mit zwei Fenstern: A klappt zu, im Speicher steht `- > Ast A (M)`, B's Editor und Diagramm bleiben unverändert — und B's nächster Tastendruck überschreibt den Speicher, A's Faltung ist weg. Beide Texte in allen neun Sprachen umformuliert (tabConflictWarn, docLockText); der Dialogtext nennt das Falten ausdrücklich. SPEC §9 sagt jetzt dazu, dass das andere Fenster nichts nachzieht und dass ein Dokumentwechsel dort nicht mitwandert — `werkbaum-active` entscheidet erst wieder, was ein Neustart öffnet (auch das eine Nutzer-Rückfrage, nachgemessen). D94-Nachtrag 2 und CHANGELOG nachgezogen. Benannt, nicht behoben: Wer „trotzdem hier bearbeiten" gewählt hat, behält die Warnung, auch wenn das andere Fenster das Dokument längst verlassen hat — dieser Ausweg fordert die Sperre bewusst nicht mehr an. 666 Tests grün; die neuen Texte im laufenden Editor nachgesehen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7f4c2a3e6a
commit
2a58951138
@@ -24,6 +24,7 @@ reverse.
|
||||
- The modal "open more than once" dialog is gone; the one remaining loss case — the same non-shared document open in two windows — is found by a per-document lock, and the second window chooses: open another document, view only until the other window lets go, or edit anyway
|
||||
- The other-window warning now names the document and says whether it is open in the app or in the browser — and stays silent when nothing collides
|
||||
- Fix: in the "open in another window" dialog the list of other documents squeezed its buttons until the names ran into each other — picking one is a dropdown now, one line tall however many documents you have
|
||||
- The two-window warning says "whichever change is saved last wins" now instead of "the last keystroke" — folding a branch in the diagram writes to the text too, so it joins the same race
|
||||
- An MCP server for AI agents recorded as planned: it lives in the backend, runs the one JS parser through GraalJS, hands plans to Claude Code and other agents as resources and tools over streamable HTTP, and writes changes as conflict-safe line diffs — no new runtime, spelled out in an RFC before it is built
|
||||
|
||||
## 2026-08-28
|
||||
|
||||
@@ -9006,6 +9006,40 @@ Diagramm die Höhe hat), ist die Karte immer noch höher als der getönte
|
||||
Grund, in dem sie steckt, und malt darüber hinaus. Lesbar bleibt sie; wen
|
||||
es stört, deckelt `.lockdlg` mit `max-height`.
|
||||
|
||||
**Nachtrag 2 — „der letzte Tastendruck gewinnt" war zu eng gefasst
|
||||
(2026-09-02).** Nutzer-Rückfrage beim Ausprobieren: „Man kann im Diagramm
|
||||
auf- und zusammenklappen — das beeinflusst das andere Fenster nicht,
|
||||
richtig? Und was für ein letzter Tastendruck?" Beides trifft einen
|
||||
Formulierungsfehler, nicht einen Baufehler:
|
||||
|
||||
- **Falten IST eine Änderung.** Umklappen schreibt die Faltmarke in den
|
||||
Text (D38-Nachtrag 2) und damit in den Speicher — es nimmt am selben
|
||||
Wettlauf teil wie das Tippen. Nachgemessen: A klappt „Ast A" zu, im
|
||||
Speicher steht `- > Ast A (M)`; B's Editor und Diagramm bleiben
|
||||
unverändert (6 Knoten, keine Marke), und B's nächster Tastendruck
|
||||
überschreibt den Speicher — **A's Faltung ist damit weg**. „Beeinflusst
|
||||
das andere Fenster nicht" stimmt also für die Anzeige und nicht für den
|
||||
gespeicherten Text.
|
||||
- **Die Warnung sagte deshalb das Falsche.** „Der letzte Tastendruck
|
||||
gewinnt" liest sich, als zähle nur Tippen. Sie heißt jetzt „die zuletzt
|
||||
**gespeicherte Änderung** gewinnt" (englisch „whichever change is saved
|
||||
last wins"), in allen neun Sprachen; der Dialogtext nennt das Falten
|
||||
ausdrücklich mit. SPEC §9 nachgezogen.
|
||||
- **Der Dokumentwechsel wandert nicht mit** (dieselbe Rückfrage): Ein
|
||||
anderes Dokument zu wählen ändert nur das eigene Fenster. Der geteilte
|
||||
Schlüssel `werkbaum-active` wird zwar überschrieben, aber kein Fenster
|
||||
reagiert darauf — er entscheidet erst wieder, was ein **Neustart**
|
||||
öffnet (§3, „letzter Schreiber gewinnt, harmlos"). Nachgemessen: A
|
||||
wechselt auf „Zweites", B bleibt auf „Falt-Probe".
|
||||
|
||||
**Dabei aufgefallen, benannt und noch nicht behoben:** Wer „trotzdem hier
|
||||
bearbeiten" gewählt hat, behält die Warnung, auch wenn das andere Fenster
|
||||
das Dokument längst verlassen hat — dieser Ausweg fordert die Sperre
|
||||
bewusst nicht mehr an (`lockGen++`), also erfährt er vom Loslassen nichts.
|
||||
Sauber wäre, auch dort im Hintergrund zu warten (`waitInBackground`) und
|
||||
die Warnung zu räumen, sobald die Sperre ankommt — dieselbe Mechanik wie
|
||||
bei „nur ansehen", nur ohne den Schreibschutz.
|
||||
|
||||
**Offen bleibt die Handarbeit** (RFC §10): installierte PWA neben einem Tab,
|
||||
Firefox, Safari, ein Browser ohne Locks-API. Werkzeuggrenzen wie gehabt —
|
||||
die Browser-Fläche war verborgen, getippt wurde per `value` + `input`
|
||||
|
||||
+6
-1
@@ -965,7 +965,12 @@ selbst, wenn das Fenster schließt. Bekommt das zweite Fenster sie nicht,
|
||||
zeigt es einen Dialog mit drei Auswegen: anderes Dokument öffnen, hier nur
|
||||
ansehen (Textfeld schreibgeschützt, wird von selbst beschreibbar, sobald
|
||||
das andere Fenster loslässt) oder trotzdem hier bearbeiten — dann gewinnt
|
||||
der letzte Tastendruck, und die Warnung nennt das Dokument.
|
||||
die **zuletzt gespeicherte Änderung**, und die Warnung nennt das Dokument.
|
||||
Änderung heißt dabei nicht nur Tippen: Auch das Falten im Diagramm schreibt
|
||||
in den Text (§9, `>`/`<`) und nimmt an diesem Wettlauf teil. Das andere
|
||||
Fenster zieht dabei nichts nach — es zeigt weiter seine eigene Fassung —,
|
||||
und auch das aktive Dokument wechselt dort nicht mit; der gemerkte
|
||||
Dokumentwähler entscheidet erst wieder, was ein **Neustart** öffnet.
|
||||
`live:`-Dokumente werden nie gesperrt: Zwei Fenster sind zwei Live-Clients,
|
||||
der Server führt zusammen. Ohne Web Locks (file://, alte Browser) bleibt
|
||||
der storage-Rückfall: ein fremder Schreibzugriff am eigenen aktiven
|
||||
|
||||
Reference in New Issue
Block a user