dorfteich/packages/shared/i18n/de/common.json
Claude Opus 4.8 69b00fcf2f
All checks were successful
CD / Build and push images (push) Successful in 3m1s
CI / Lint, typecheck, test (push) Successful in 2m13s
CI / Auth e2e pack (push) Successful in 2m36s
CI / Build container images (push) Has been skipped
CD / Deploy to Test (push) Successful in 9s
CD / Smoke tests against Test (push) Successful in 1m13s
CD / Promote to Int (push) Successful in 11s
Add manual page ordering with drag-and-drop (#45)
Enable the third sidebar sort mode — a freely defined order.

- api: `PATCH /pages/:id/position` (before/after neighbour) recomputes only
  the moved page's fractional `sort_key`. Pure `sort-key.ts` helpers
  (`nextKeyOrRebalance`, `evenlySpacedKeys`) decide between the cheap
  single-key path and a full pond rebalance to evenly-spaced keys when a key
  would exceed MAX_SORT_KEY_LENGTH or the client's neighbours are stale;
  rebalance runs in one transaction. Order is server-authoritative.
- web: enable 'manual' in the sort-mode switch; in manual mode the owner can
  reorder via native drag-and-drop (drop above/below by pointer half) or the
  keyboard (per-row up/down buttons), each announced through an aria-live
  region. Reordering is hidden while a label filter narrows the list. New
  pages already append at the end (create uses generateKeyBetween(last, null)).
  Pure `reorder.ts` neighbour helpers, unit-tested.
- i18n: manual sort mode + reorder strings (de + en).
- tests: sort-key property test (10.000 adversarial reorders never collide or
  overflow — rebalance verified); reposition db test (persist, server-order,
  sort-mode switch keeps manual order); reorder e2e pack (keyboard reorder
  persists across reload + identical on a fresh read; aria-live announced).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PGdhRiwU1WRL4XxJfZYipY
2026-07-09 12:18:44 +02:00

52 lines
1.5 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"layout": {
"sidebar": {
"expand": "Seitenleiste einblenden",
"collapse": "Seitenleiste ausblenden",
"label": "Seiten",
"placeholder": "Deine Teiche und Seiten erscheinen hier.",
"empty": "Noch keine Seiten.",
"sortLabel": "Seiten sortieren",
"sortMode": {
"alpha": "AZ",
"created": "Erstellungsdatum",
"manual": "Manuelle Reihenfolge"
},
"reorder": {
"up": "Nach oben",
"down": "Nach unten",
"dragHint": "Zum Umsortieren ziehen",
"moved": "{{title}} an Position {{position}} von {{count}} verschoben."
},
"newPage": "+ Neue Seite",
"newPageTitle": "Titel",
"create": "Erstellen",
"cancel": "Abbrechen"
},
"pondSwitcher": {
"label": "Teich wechseln",
"trigger": "Teich auswählen"
},
"user": {
"anonymous": "Nicht angemeldet"
}
},
"pondHome": {
"empty": "Dieser Teich hat noch keine Seiten lege eine über die Seitenleiste an."
},
"home": {
"title": "Willkommen im Dorfteich",
"intro": "Dorfteich ist ein Open-Source-Wiki mit Echtzeit-Zusammenarbeit. Diese Instanz wird gerade eingerichtet.",
"api": {
"checking": "Prüfe API …",
"ok": "API erreichbar",
"error": "API nicht erreichbar"
}
},
"notFound": {
"title": "Seite nicht gefunden",
"body": "Die aufgerufene Adresse existiert nicht.",
"home": "Zurück zur Startseite"
}
}