feat: Link-Widget restlos entfernt (Web, API, Migration, Handbuch, Changelog)

- Web: Union-Mitglied, Constraints, Icon, Registry-Eintrag, wire-Funktion,
  Katalog, Seiten-Verdrahtung, Tests und i18n (de/en) fuer den Typ link
  entfernt; link-widget.tsx/.test.tsx geloescht
- API: create-widget.dto.ts (@IsIn-Liste) und widget-module-map.ts
  (Kommentare) auf sieben Typen angepasst; schema.prisma unveraendert
- Neue Migration 20260916120000_remove_link_widget: eine idempotente
  DELETE-Anweisung auf WidgetInstance, FavoriteLink kaskadiert ueber den
  bestehenden FK; wird in diesem Auftrag NICHT ausgefuehrt
- Neuer widget-wrapper-Test belegt den grauen Fallback fuer unbekannte
  Widget-Typen (Bestandsverhalten, jetzt festgeschrieben)
- Handbuch (Widget-Tabelle, Einstellungs-Hinweise) und CHANGELOG
  (Geaendert/Entfernt/Behoben) aktualisiert
- Web: 52 Dateien / 344 Tests gruen, tsc Exit 0; API: tsc Exit 0,
  dashboard-Spec 31 Tests gruen

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-16 13:44:09 +02:00
parent 7f1ee3b1f0
commit 39ea1474a5
16 changed files with 77 additions and 705 deletions
-16
View File
@@ -285,22 +285,6 @@
"titleLabel": "Titel",
"titlePlaceholder": "Titel (optional)"
},
"link": {
"name": "Link",
"description": "Einzelner Schnellzugriff-Link",
"loading": "Link wird geladen...",
"empty": "Noch kein Link gesetzt.",
"addTitle": "Titel",
"addUrl": "URL",
"addButton": "Hinzufügen",
"listView": "Liste",
"gridView": "Kachel",
"editButton": "Link bearbeiten",
"deleteButton": "Link löschen",
"saveButton": "Speichern",
"cancelButton": "Abbrechen",
"error": "Fehler beim Laden des Links"
},
"stopwatch": {
"name": "Stoppuhr",
"description": "Zeitmessung mit Rundenzeiten",