fix(menü): mitgelieferte Dokumente sind nicht mehr umbenennbar (D81-Nachtrag 3)
Ihr Name ist Auslieferungsstand: Wiederherstellen stellt ihn mit her, der Neu-laden-Vergleich prüft ihn, und ein umbenanntes, aber unverändertes Beispiel bekäme weiter still neue Fassungen nachgezogen (das Nachziehen hängt an id + Text-Fingerabdruck, nicht am Namen). Kein Stift an mitgelieferten Zeilen; renameDoc() prüft es selbst. Löschen bleibt. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4e200e4d9b
commit
ca4c6f98d8
@@ -19,6 +19,7 @@ reverse.
|
||||
|
||||
## 2026-08-27
|
||||
|
||||
- Shipped documents are no longer renamable — their name is part of the delivered state, and a renamed but unedited example would still silently receive new versions
|
||||
- Fix: sharing from an instance without its own backend (GitHub Pages) failed with HTTP 405 — the share button now probes the default address and asks for the server instead
|
||||
|
||||
## 2026-08-26
|
||||
|
||||
@@ -7053,3 +7053,34 @@ steht da, und Löschen fragt nach); Wiederherstellen wirkt nur noch über den
|
||||
`restoreDoc()` prüft das selbst (`d.id !== activeId` → nichts), statt sich
|
||||
auf den Aufrufer zu verlassen. Der D81-Haupttext oben beschreibt insoweit
|
||||
den Zwischenstand von einem Tag.
|
||||
|
||||
**Nachtrag 3 — mitgelieferte Dokumente sind nicht mehr umbenennbar.**
|
||||
Nutzer-Einwand samt Verdacht, das Umbenennen mache „Probleme beim Neuladen".
|
||||
Die Prüfung ergab: Es bricht nichts — und genau das ist das Problem. Das
|
||||
Nachziehen neuer Fassungen (D27) hängt an **id und Text-Fingerabdruck**, der
|
||||
Name spielt keine Rolle: Ein umbenanntes, aber textlich unverändertes
|
||||
Beispiel bekäme beim nächsten Laden weiter still die neue Fassung — ein
|
||||
Dokument, das der Nutzer per Umbenennung gedanklich zu seinem gemacht hat,
|
||||
tauschte ohne Vorwarnung den Inhalt. Dazu zwei Merkwürdigkeiten derselben
|
||||
Wurzel: Bloßes Umbenennen aktivierte den Neu-laden-Knopf (der Vergleich
|
||||
prüft Text UND Name), und Wiederherstellen setzte den Namen kommentarlos mit
|
||||
zurück; und die Menü-Gruppe „Mitgeliefert" zeigte einen fremden Namen, denn
|
||||
die Gruppierung läuft über die id.
|
||||
|
||||
**Entschieden: kein Stift an mitgelieferten Zeilen**, und `renameDoc()`
|
||||
prüft es selbst statt sich auf das ausgeblendete Symbol zu verlassen. Der
|
||||
Name gehört bei mitgelieferten Dokumenten zum **Auslieferungsstand** — er
|
||||
wird beim Wiederherstellen mitgestellt und beim Vergleich mitgeprüft; dann
|
||||
darf er auch nicht separat editierbar sein. **Löschen bleibt** je Zeile: Das
|
||||
ist eine andere Aussage („will ich nicht haben"), und das Nachziehen
|
||||
respektiert sie längst (gelöscht bleibt gelöscht, D27).
|
||||
|
||||
Das ist eine **bewusste Abkehr** von der D22/D27-Linie „Dokumentnamen sind
|
||||
Nutzerdaten, eine Umbenennung bleibt stehen" — für genau diese zwei
|
||||
Dokumente, deren Name eben keine Nutzerdaten ist, sondern Teil der
|
||||
Auslieferung. Die Bestandsregeln (Adoption, Namensfix „Werkbank", Umbenennung
|
||||
überlebt das Nachziehen) bleiben unangetastet: Wer früher umbenannt hat,
|
||||
behält seinen Namen; nur das UI bietet es nicht mehr an. Wer das Beispiel
|
||||
als Basis für einen eigenen Plan will, ändert den Text (dann stoppt das
|
||||
Nachziehen ohnehin) oder legt ein eigenes Dokument an; ein „Duplizieren" im
|
||||
Menü wäre die saubere Antwort darauf, ist aber ein eigenes Feature.
|
||||
|
||||
@@ -532,7 +532,8 @@
|
||||
|
||||
#ed.docs.picker
|
||||
The app header reads "Werkbaum > name": the chip opens the menu, grouped by
|
||||
kind (shipped, yours, sources), with rename and delete on each row. Restore
|
||||
kind (shipped, yours, sources), with rename and delete on each row (shipped
|
||||
ones keep their delivered name). Restore
|
||||
lives on the editor title bar's reload button instead, acting only on the
|
||||
open document. The menu scrolls as a whole instead of being cut off on
|
||||
small screens, and on the phone it is reachable from both panes.
|
||||
|
||||
@@ -158,6 +158,11 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
|
||||
docurl.js, headless getestet) und trägt Umbenennen/Löschen als Symbole
|
||||
**je Zeile** — `renameDoc/deleteDoc` nehmen deshalb eine **id**, nicht das
|
||||
aktive Dokument, und Verwaltungs-Aktionen lassen das Menü offen.
|
||||
**Mitgelieferte Dokumente sind nicht umbenennbar** (D81-Nachtrag 3): kein
|
||||
Stift an ihrer Zeile, und `renameDoc()` prüft es selbst — ihr Name ist
|
||||
Auslieferungsstand (Restore stellt ihn wieder her), und ein umbenanntes,
|
||||
unverändertes Beispiel bekäme weiter still neue Fassungen (das Nachziehen
|
||||
hängt an id + Text-Fingerabdruck, nicht am Namen).
|
||||
Wiederherstellen gibt es im Menü bewusst **nicht** (D81-Nachtrag 2): Es
|
||||
läuft über den Neu-laden-Knopf der Titelzeile und wirkt nur auf das
|
||||
geöffnete Dokument — `restoreDoc()` prüft das selbst. Die Editor-Titelzeile heißt wieder „Text-Editor" und trägt die
|
||||
|
||||
+12
-6
@@ -3577,11 +3577,14 @@ const IC_RENAME = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" st
|
||||
const IC_DELETE = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/></svg>';
|
||||
/* Eine Menüzeile: Wählen-Knopf + Zeilen-Aktionen als GESCHWISTER — ein Knopf
|
||||
im Knopf wäre ungültiges HTML. Die Aktionen sind immer sichtbar (Touch
|
||||
kennt kein Hover): Umbenennen und Löschen, beides überall. Wiederherstellen
|
||||
gibt es hier bewusst NICHT (D81-Nachtrag 2): Es wirkt über den
|
||||
Neu-laden-Knopf der Editor-Titelzeile nur auf das geöffnete Dokument —
|
||||
ein ungeöffnetes zurückzusetzen, ohne zu sehen, was man verwirft, ergäbe
|
||||
keinen Sinn. */
|
||||
kennt kein Hover): Löschen überall, Umbenennen nur bei NICHT
|
||||
mitgelieferten Dokumenten (D81-Nachtrag 3) — der Name gehört dort zum
|
||||
Auslieferungsstand, und ein umbenanntes, aber unverändertes Beispiel
|
||||
bekäme weiter still neue Fassungen nachgezogen (das Nachziehen hängt an id
|
||||
und Text-Fingerabdruck, D27). Wiederherstellen gibt es hier ebenfalls
|
||||
NICHT (D81-Nachtrag 2): Es wirkt über den Neu-laden-Knopf der
|
||||
Editor-Titelzeile nur auf das geöffnete Dokument — ein ungeöffnetes
|
||||
zurückzusetzen, ohne zu sehen, was man verwirft, ergäbe keinen Sinn. */
|
||||
function docRowHtml(d){
|
||||
if(d.id === renamingId){
|
||||
/* Inline-Umbenennen direkt im Menü (kein window.prompt — das ist in
|
||||
@@ -3604,7 +3607,7 @@ function docRowHtml(d){
|
||||
`<span class="doccheck" aria-hidden="true">✓</span>` +
|
||||
`<span class="docitem-name">${esc(d.name)}</span>${zusatz}</button>` +
|
||||
`<span class="docacts">` +
|
||||
iconBtn('rename', t('docRename'), IC_RENAME) +
|
||||
(shippedStateOf(d.id) ? '' : iconBtn('rename', t('docRename'), IC_RENAME)) +
|
||||
iconBtn('delete', t('docDelete'), IC_DELETE, ' docdelbtn') +
|
||||
`</span></div>`;
|
||||
}
|
||||
@@ -4089,6 +4092,9 @@ function finishNewDoc(){
|
||||
}
|
||||
function renameDoc(id){
|
||||
if(!docs.some(x => x.id === id)) return;
|
||||
/* Mitgelieferte nicht (D81-Nachtrag 3): Ihr Name ist Auslieferungsstand.
|
||||
Die Prüfung liegt hier, nicht nur am ausgeblendeten Stift. */
|
||||
if(shippedStateOf(id)) return;
|
||||
renamingId = id; /* Zeilen-Aktion (D81): jedes Dokument, nicht nur das aktive */
|
||||
renameIsNew = false;
|
||||
renderDocMenu();
|
||||
|
||||
Reference in New Issue
Block a user