b214bb6c50
Neue wiederverwendbare Tour-Komponente (11 Swift-Dateien): Model: - TourID, TourTargetID, TourStep, Tour (max 6 Steps per precondition) - TourCatalog: statische Registry; initiale Onboarding-Tour mit 6 Steps State: - TourSeenStore: UserDefaults-backed, injizierbar für Tests - TourCoordinator: @Observable, Pending-Queue, Auto-Start-Logik · checkForPendingTours() startet .autoOnUpdate-Touren bei App-Update · .manualOrFirstLaunch-Touren werden explizit per start(_:) gestartet UI: - SpotlightShape: Even-Odd-Fill-Shape mit animatableData - TourCardView: Progress-Dots, Navigation, Haptic-Feedback - TourOverlayView: Spotlight-Cutout via thinMaterial + SpotlightShape eoFill, Coral-Glow-Ring, automatische Card-Positionierung (above/below/center) - TourViewModifiers: .tourTarget() + .tourPresenter() Integration: - NahbarApp: TourCoordinator via @State + .environment() - OnboardingContainerView: FeatureTourView ersetzt durch TourCoordinator.start(.onboarding); .tourPresenter() im fullScreenCover-Kontext; OnboardingPrivacyView bleibt erhalten - ContentView: .tourPresenter() für main-app Update-Touren + checkForPendingTours() - SettingsView: neue "App-Touren"-Sektion zum manuellen Neu-Starten Tests (40 Tests in 4 Dateien): - TourCatalogTests, TourSeenStoreTests, TourCoordinatorTests, AutoStartLogicTests Lokalisierung: DE + EN für alle Tour-Strings in Localizable.xcstrings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>