df37d2a47c
- Add SyncProgress.kt: Data class for entire sync lifecycle UI state - Add SyncPhase enum: IDLE, PREPARING, UPLOADING, DOWNLOADING, IMPORTING_MARKDOWN, COMPLETED, ERROR - Rewrite SyncStateManager.kt: SyncProgress (StateFlow) is single source of truth - Remove pre-set phases: CHECKING_SERVER and SAVING cause flickering - UPLOADING phase only set when actual uploads happen - DOWNLOADING phase only set when actual downloads happen - IMPORTING_MARKDOWN phase only set when feature enabled - Add onProgress callback to uploadLocalNotes() with uploadedCount/totalToUpload - Add onProgress callback to downloadRemoteNotes() for actual downloads only - Progress display: x/y for uploads (known total), count for downloads (unknown) - Add SyncProgressBanner.kt: Unified banner (replaces dual system) - Update SyncStatusBanner.kt: Kept for legacy compatibility, only COMPLETED/ERROR - Update MainViewModel.kt: Remove _syncMessage, add syncProgress StateFlow - Update MainScreen.kt: Use only SyncProgressBanner (unified) - Update ComposeMainActivity.kt: Auto-hide COMPLETED (2s), ERROR (4s) via lifecycle - Add strings.xml (DE+EN): sync_phase_* and sync_wifi_only_error - Banner appears instantly on sync button click (PREPARING phase) - Silent auto-sync (onResume) completely silent, errors always shown - No misleading counters when nothing to sync Closes #IMPL_006