Welche Reihenfolge beim Öffnen eines Universums erscheint, ließ sich bisher nicht bestimmen. Das Feld isDefault gab es schon und wurde beim Öffnen auch ausgewertet — es fehlte nur der Weg, es zu setzen.
Umgesetzt ist Variante (a) aus dem Issue: der Standard gehört dem Universum, nicht der einzelnen Person. Wer Schreibrecht hat, legt ihn für alle fest — so wie die Reihenfolgen selbst auch geteilt sind. Die Rangfolge bleibt dadurch die schlichte: Adresse schlägt Standard schlägt erste.
Was geändert wurde
setDefaultOrder() in src/lib/universes.ts, mit requireWrite. Zurücksetzen und Setzen laufen in einer Transaktion, damit nie zwei Standards nebeneinander stehen.
deleteOrder() fängt jetzt den Fall ab, dass die Standardreihenfolge gelöscht wird — dann übernimmt die Erscheinungsreihenfolge, statt dass die Auswahl auf „die erste" fällt.
Knopf „Als Standard festlegen" neben den Reitern, sichtbar nur mit Schreibrecht und nur, wenn die aktive Reihenfolge nicht schon Standard ist. Die Standardreihenfolge trägt ein Häkchen; für Screenreader steht „(Standard)" dahinter.
PATCH /api/v1/universen/{id} mit {"defaultOrderId": "…"}, dazu docs/API.md und openapi.json.
Eine Absicherung, die nicht offensichtlich ist
Die Domänenschicht leitet das Universum aus der Reihenfolge ab. Ohne Prüfung setzte damit ein PATCH auf Universum A den Standard in Universum B, wenn man dessen Reihenfolge mitschickt. Der Endpunkt prüft deshalb, dass die Reihenfolge zu genau diesem Universum gehört, und antwortet sonst mit 404.
Geprüft
Vier neue Tests: Umstellen samt Eindeutigkeit, Vorrang der Adresse, Rückfall beim Löschen, Rechteprüfung. 56 Tests grün, Typecheck sauber.
Klickweg und Endpunkt gegen einen Produktionsbau durchgespielt:
Die im Issue vorgeschlagene Browser-Erinnerung an die zuletzt gewählte Reihenfolge. Sie wäre eine dritte, unsichtbare Quelle neben Adresse und Standard und macht schwer erklärbar, warum zwei Leute dasselbe Universum verschieden sehen. Lässt sich jederzeit nachreichen.
Welche Reihenfolge beim Öffnen eines Universums erscheint, ließ sich bisher nicht bestimmen. Das Feld `isDefault` gab es schon und wurde beim Öffnen auch ausgewertet — es fehlte nur der Weg, es zu setzen.
Umgesetzt ist Variante **(a)** aus dem Issue: der Standard gehört dem Universum, nicht der einzelnen Person. Wer Schreibrecht hat, legt ihn für alle fest — so wie die Reihenfolgen selbst auch geteilt sind. Die Rangfolge bleibt dadurch die schlichte: **Adresse schlägt Standard schlägt erste.**
## Was geändert wurde
- **`setDefaultOrder()`** in `src/lib/universes.ts`, mit `requireWrite`. Zurücksetzen und Setzen laufen in einer Transaktion, damit nie zwei Standards nebeneinander stehen.
- **`deleteOrder()`** fängt jetzt den Fall ab, dass die Standardreihenfolge gelöscht wird — dann übernimmt die Erscheinungsreihenfolge, statt dass die Auswahl auf „die erste" fällt.
- **Knopf „Als Standard festlegen"** neben den Reitern, sichtbar nur mit Schreibrecht und nur, wenn die aktive Reihenfolge nicht schon Standard ist. Die Standardreihenfolge trägt ein Häkchen; für Screenreader steht „(Standard)" dahinter.
- **`PATCH /api/v1/universen/{id}`** mit `{"defaultOrderId": "…"}`, dazu `docs/API.md` und `openapi.json`.
## Eine Absicherung, die nicht offensichtlich ist
Die Domänenschicht leitet das Universum aus der Reihenfolge ab. Ohne Prüfung setzte damit ein `PATCH` auf Universum A den Standard in Universum B, wenn man dessen Reihenfolge mitschickt. Der Endpunkt prüft deshalb, dass die Reihenfolge zu genau diesem Universum gehört, und antwortet sonst mit 404.
## Geprüft
Vier neue Tests: Umstellen samt Eindeutigkeit, Vorrang der Adresse, Rückfall beim Löschen, Rechteprüfung. **56 Tests grün**, Typecheck sauber.
Klickweg und Endpunkt gegen einen **Produktionsbau** durchgespielt:
| Schritt | Ergebnis |
|---|---|
| Knopf klicken | 200, Meldung „Standardreihenfolge gesetzt", Häkchen wandert |
| Universum ohne Parameter öffnen | die neue Standardreihenfolge führt |
| `?reihenfolge=…` | schlägt den Standard weiterhin |
| `PATCH` mit fremder Reihenfolge | 404, Standard bleibt unverändert |
| `PATCH` mit eigener Reihenfolge | 200, `activeOrderId` folgt |
## Bewusst nicht umgesetzt
Die im Issue vorgeschlagene Browser-Erinnerung an die zuletzt gewählte Reihenfolge. Sie wäre eine dritte, unsichtbare Quelle neben Adresse und Standard und macht schwer erklärbar, warum zwei Leute dasselbe Universum verschieden sehen. Lässt sich jederzeit nachreichen.
Closes #4
Ein Universum kann mehrere Reihenfolgen haben, aber welche beim Oeffnen
erschien, liess sich nicht bestimmen — es war immer die
Erscheinungsreihenfolge. Das Feld isDefault gab es schon und wurde beim
Oeffnen auch ausgewertet; es fehlte nur der Weg, es zu setzen.
Der Standard gehoert dem Universum, nicht der einzelnen Person: wer
Schreibrecht hat, legt ihn fuer alle fest — so wie die Reihenfolgen selbst
auch geteilt sind. Die Rangfolge bleibt dadurch die schlichte: die Adresse
schlaegt den Standard schlaegt die erste.
setDefaultOrder() setzt zurueck und neu in einer Transaktion, damit nie zwei
Standards nebeneinander stehen. deleteOrder() faengt jetzt den Fall ab, dass
die Standardreihenfolge geloescht wird — dann uebernimmt die
Erscheinungsreihenfolge, statt dass die Auswahl auf "die erste" faellt.
Ueber die Schnittstelle geht es per PATCH /api/v1/universen/{id}. Der
Endpunkt prueft, dass die Reihenfolge zu genau diesem Universum gehoert:
ohne das setzte ein PATCH auf A den Standard in B, weil die Domaenenschicht
das Universum aus der Reihenfolge ableitet.
Vier Tests dazu: Umstellen samt Eindeutigkeit, Vorrang der Adresse,
Rueckfall beim Loeschen, Rechtepruefung. Klickweg und Endpunkt gegen einen
Produktionsbau geprueft.
Refs #4
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Welche Reihenfolge beim Öffnen eines Universums erscheint, ließ sich bisher nicht bestimmen. Das Feld
isDefaultgab es schon und wurde beim Öffnen auch ausgewertet — es fehlte nur der Weg, es zu setzen.Umgesetzt ist Variante (a) aus dem Issue: der Standard gehört dem Universum, nicht der einzelnen Person. Wer Schreibrecht hat, legt ihn für alle fest — so wie die Reihenfolgen selbst auch geteilt sind. Die Rangfolge bleibt dadurch die schlichte: Adresse schlägt Standard schlägt erste.
Was geändert wurde
setDefaultOrder()insrc/lib/universes.ts, mitrequireWrite. Zurücksetzen und Setzen laufen in einer Transaktion, damit nie zwei Standards nebeneinander stehen.deleteOrder()fängt jetzt den Fall ab, dass die Standardreihenfolge gelöscht wird — dann übernimmt die Erscheinungsreihenfolge, statt dass die Auswahl auf „die erste" fällt.PATCH /api/v1/universen/{id}mit{"defaultOrderId": "…"}, dazudocs/API.mdundopenapi.json.Eine Absicherung, die nicht offensichtlich ist
Die Domänenschicht leitet das Universum aus der Reihenfolge ab. Ohne Prüfung setzte damit ein
PATCHauf Universum A den Standard in Universum B, wenn man dessen Reihenfolge mitschickt. Der Endpunkt prüft deshalb, dass die Reihenfolge zu genau diesem Universum gehört, und antwortet sonst mit 404.Geprüft
Vier neue Tests: Umstellen samt Eindeutigkeit, Vorrang der Adresse, Rückfall beim Löschen, Rechteprüfung. 56 Tests grün, Typecheck sauber.
Klickweg und Endpunkt gegen einen Produktionsbau durchgespielt:
?reihenfolge=…PATCHmit fremder ReihenfolgePATCHmit eigener ReihenfolgeactiveOrderIdfolgtBewusst nicht umgesetzt
Die im Issue vorgeschlagene Browser-Erinnerung an die zuletzt gewählte Reihenfolge. Sie wäre eine dritte, unsichtbare Quelle neben Adresse und Standard und macht schwer erklärbar, warum zwei Leute dasselbe Universum verschieden sehen. Lässt sich jederzeit nachreichen.
Closes #4
Ein Universum kann mehrere Reihenfolgen haben, aber welche beim Oeffnen erschien, liess sich nicht bestimmen — es war immer die Erscheinungsreihenfolge. Das Feld isDefault gab es schon und wurde beim Oeffnen auch ausgewertet; es fehlte nur der Weg, es zu setzen. Der Standard gehoert dem Universum, nicht der einzelnen Person: wer Schreibrecht hat, legt ihn fuer alle fest — so wie die Reihenfolgen selbst auch geteilt sind. Die Rangfolge bleibt dadurch die schlichte: die Adresse schlaegt den Standard schlaegt die erste. setDefaultOrder() setzt zurueck und neu in einer Transaktion, damit nie zwei Standards nebeneinander stehen. deleteOrder() faengt jetzt den Fall ab, dass die Standardreihenfolge geloescht wird — dann uebernimmt die Erscheinungsreihenfolge, statt dass die Auswahl auf "die erste" faellt. Ueber die Schnittstelle geht es per PATCH /api/v1/universen/{id}. Der Endpunkt prueft, dass die Reihenfolge zu genau diesem Universum gehoert: ohne das setzte ein PATCH auf A den Standard in B, weil die Domaenenschicht das Universum aus der Reihenfolge ableitet. Vier Tests dazu: Umstellen samt Eindeutigkeit, Vorrang der Adresse, Rueckfall beim Loeschen, Rechtepruefung. Klickweg und Endpunkt gegen einen Produktionsbau geprueft. Refs #4