--- phase: quick-260916-htc plan: 01 status: complete subsystem: dashboard-widgets tags: [calendar, dashboard, widget-settings, i18n] dependency-graph: requires: [05-03 Kalender-Backend (fetchEvents/fetchSources), quick-260916-dyv (Raster 24 Spalten/20px)] provides: [calendar-month.ts (geteiltes Hilfsmodul), Kalender-Monatsraster-Widget, CalendarConfig-Einstellungsfeld] affects: [apps/web/src/components/dashboard/widgets/calendar-widget.tsx, apps/web/src/components/settings/widget-settings-panel.tsx, apps/web/src/components/dashboard/widget-registry.tsx] tech-stack: added: [] patterns: [geteiltes Grenzen-Hilfsmodul fuer Widget+Panel (Muster clock-font-size.ts), createPortal fuer Tooltips ausserhalb einer overflow-hidden-Karte, Container-Query-Skalierung (cqw/cqh)] key-files: created: - apps/web/src/components/dashboard/widgets/calendar-month.ts - apps/web/src/components/dashboard/widgets/calendar-month.test.ts modified: - apps/web/src/components/dashboard/widgets/calendar-widget.tsx - apps/web/src/components/dashboard/widgets/calendar-widget.test.tsx - apps/web/src/components/dashboard/widget-registry.tsx - apps/web/src/components/dashboard/widget-registry.test.tsx - apps/web/src/components/settings/widget-settings-panel.tsx - apps/web/src/components/settings/widget-settings-panel.test.tsx - apps/web/src/messages/de.json - apps/web/src/messages/en.json - CHANGELOG.md - docs/anleitung-anwender.md decisions: - "computeFetchWindow verwendet konsequent 'from = das FRUEHERE von Rasterstart und heutigem Tag' (Task-1-Spezifikation), auch wenn ein zukuenftiger Monat angezeigt wird — der im Plan fuer Task-2-Test-8 genannte Erwartungswert (27.07. statt 15.07.) widersprach dieser Regel; die konsistente, bereits per Unit-Test abgesicherte Regel wurde beibehalten (siehe Deviations)." - "Leerer 'Naechste Termine'-Block traegt KEIN data-testid='calendar-upcoming' (nur die