--- phase: quick-260921-qd3 plan: 01 type: execute wave: 1 depends_on: [] autonomous: true requirements: [QUICK-260921-QD3] files_modified: - apps/api/src/dashboard/dto/create-widget.dto.ts - apps/web/src/components/dashboard/widgets/xframe-config.ts - apps/web/src/components/dashboard/widgets/xframe-config.test.ts - apps/web/src/components/dashboard/widgets/xframe-widget.tsx - apps/web/src/components/dashboard/widgets/xframe-widget.test.tsx - apps/web/src/components/settings/widget-settings-panel.tsx - apps/web/src/components/settings/widget-settings-panel.test.tsx - apps/web/src/components/dashboard/widget-registry.tsx - apps/web/src/components/dashboard/widget-registry.test.tsx - apps/web/src/components/dashboard/widget-catalog-modal.tsx - apps/web/src/components/dashboard/widget-catalog-modal.test.tsx - apps/web/src/app/(portal)/page.tsx - apps/web/src/app/(portal)/page.test.tsx - apps/web/src/messages/de.json - apps/web/src/messages/en.json - apps/web/src/messages/umlaut-dictionary.ts - CHANGELOG.md - docs/anleitung-anwender.md estimate: tokens: 110000 raw_tokens: 110000 tasks: 2 confidence: low must_haves: truths: - "Im Widget-Katalog gibt es „XFrame“ (Beschreibung „Webseite einbetten“ / „Embed a web page“) mit Fenster-Symbol; eine frisch platzierte Kachel (12×8) zeigt zentriert grau „Keine Adresse eingestellt — über die Einstellungen festlegen“ und keinen Rahmen." - "Unter Einstellungen → Dashboard → XFrame trägt der Benutzer eine https-Adresse (Übernahme bei Blur/Enter), optional einen Titel (höchstens 100 Zeichen) und ein Neuladen-Intervall (Nie / 1 / 5 / 10 / 30 Minuten / 1 Stunde) ein; eine http-, data- oder javascript-Adresse wird mit deutscher `role=\"alert\"`-Meldung abgewiesen und NICHT gespeichert; dauerhaft steht der Hinweis, dass manche Webseiten das Einbetten verweigern." - "Die Kachel rendert genau ein `