feat(frontend): "Auf den Server legen" im Dokumenten-Menue (D76-Nachtrag 8)

Bis hierher kam ein Plan nur per curl auf den Server — der Menueintrag war im
Konzept vorgesehen und fehlte. Jetzt legt der Knopf das aktive Dokument an,
schaltet dorthin um und schreibt den Link in die Adresszeile und in die
Zwischenablage. Die Adresszeile IST der Link: dort sucht man ihn, und ein
Neuladen fuehrt ins selbe Dokument zurueck.

Die Basis-Adresse ist die eigene Herkunft — produktiv liegt das Backend hinter
derselben Domain, wer nichts konfiguriert bekommt also das Richtige. Darueber
liegen ?server= (Entwicklung) und die Adresse des offenen Server-Dokuments.
Traegt nichts, wird gefragt.

Das lokale Dokument bleibt: Wer sein einziges Exemplar einem Server
anvertraut, soll es nicht im selben Zug verlieren. Dafuer nennt der Waehler
jetzt den Host neben Server-Dokumenten — im Test standen sonst zwei Eintraege
"Nur lokal" da, unterscheidbar nur am Tooltip. Und der Knopf verschwindet bei
Dokumenten, die schon auf einem Server liegen.

Geprueft im Browser gegen ein echtes Backend: Knopf sichtbar bei einem lokalen
Dokument, nach dem Klick steht ?live=... in der Adresszeile, das lokale
Dokument ist noch da, der Knopf verborgen — und eine getippte Zeile erreicht
den Server als Version 2.

523 Frontend-Tests (5 neue fuer serverBase/documentsUrl).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-26 19:39:28 +02:00
co-authored by Claude Opus 5
parent dce196254c
commit ea1979d567
9 changed files with 256 additions and 3 deletions
+7
View File
@@ -169,6 +169,7 @@
| [?] #col.live.crdt: Text CRDT — the plan is plain text, so it fits (L)
| [?] #col.live.ot: Operational transformation (XL)
- [^] #col.live.ask: On a real overlap, ask whose version wins (S)
- [x] #col.live.upload: Put a local plan on the server, from the menu (S)
- [?] #col.live.cursors: Cursors and who else is here (S)
- [-] #col.live.ws: Transport over a websocket (S) %% plain HTTP turned out to be enough
- [-] #col.live.own: A merge algorithm of our own (XL) %% solved problem, do not reinvent
@@ -986,6 +987,12 @@
The other established answer, and the one Google Docs uses. More machinery
for the same result.
#col.live.upload
Without it the only way onto the server was a curl command. The local plan
stays where it is: whoever entrusts their only copy to a server should not
lose it in the act. The picker names the host beside a server document, so
the two entries are told apart.
#col.live.cursors
Seeing where the others are. A by-product of the merge layer rather than a
feature in its own right.