feat: Adresszeile folgt dem Dokument, Live-Sitzung ebenso (D80)

Wer bei offenem `?live=` umschaltet, behielt die alte Adresse — optisch
falsch, und ein Neuladen holte das falsche Dokument zurück. Der Parameter
gehört jetzt zum aktiven Dokument, für `?live=` wie für `?sourceUrl=`;
`?etherpad=` wird nur noch weggeräumt. Fremde Parameter (`?server=`)
bleiben wörtlich stehen, damit die URL lesbar bleibt.

Dabei gefunden: Die Live-Sitzung lief weiter, während ein anderes Dokument
vorn stand — `setLiveText()` schrieb fremde Änderungen in dessen Text. Die
Sitzung gehört jetzt dem sichtbaren Dokument: Umschalten beendet sie,
Umschalten auf ein Server-Dokument nimmt sie auf. Was noch im Debounce
steckt, geht vorher raus, und `pushLive()` hält seine Sitzung fest statt
anzunehmen, dass sich über ein `await` hinweg nichts ändert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-26 21:19:29 +02:00
co-authored by Claude Opus 5
parent 627f6feca8
commit fdca934cf0
8 changed files with 313 additions and 20 deletions
+10
View File
@@ -766,6 +766,9 @@ Seite aufgelöst; zugelassen sind nur `http`/`https`). Der Text wird als
Tooltip); derselbe Link aktualisiert dieses Dokument, statt ein neues anzulegen.
Ist der Parameter gesetzt, wird bei **jedem** Laden neu geholt — die URL ist die
Quelle der Wahrheit, lokale Änderungen daran überleben ein Neuladen nicht.
Die **Adresszeile folgt dem aktiven Dokument** (§9, `?live=`): Beim Umschalten
auf ein anderes verschwindet der Parameter, beim Zurückschalten steht er wieder
da.
Scheitert das Laden (häufigster Fall: das Ziel sendet keinen
`Access-Control-Allow-Origin`-Header, außerdem 404/Netzfehler), bleibt der
bisherige Stand stehen und es erscheint eine **Warnung**. Siehe D23.
@@ -796,6 +799,13 @@ anderen, ohne neu zu laden.
jede Version in der Historie des Servers.
- Der Abruf läuft **nur im sichtbaren Tab**; im Hintergrund ruht er und holt
beim Zurückkommen den Rückstand.
- **Die Adresszeile beschreibt das Dokument, das vorn ist.** Umschalten auf ein
lokales Dokument räumt `?live=` weg, Umschalten auf ein anderes
Server-Dokument trägt dessen Adresse ein — ein Neuladen bringt also zurück,
was man vor sich hatte. Dasselbe gilt für `?sourceUrl=` (oben). Und die
gemeinsame Sitzung gehört dem sichtbaren Dokument: Wer ein Server-Dokument im
Wähler auswählt, arbeitet darin wieder gemeinsam; wer es verlässt, hört auf,
mitzuschreiben. Siehe D80.
Siehe D76 (Protokoll und Begründung) und
`backend/docs/live-editing-proposal.md`.