diff --git a/Outpost/Features/Account/SettingsView.swift b/Outpost/Features/Account/SettingsView.swift index 3f939f8..20d4a4c 100644 --- a/Outpost/Features/Account/SettingsView.swift +++ b/Outpost/Features/Account/SettingsView.swift @@ -173,19 +173,28 @@ struct SettingsView: View { .frame(maxWidth: 480, alignment: .leading) if isFullLocalSyncEnabled { - HStack(spacing: 8) { - if isSyncing { - ProgressView().controlSize(.small) - Text("Syncing…") - .font(.caption) - .foregroundStyle(.secondary) - } else { - Button("Sync Now") { Task { await runFullSync() } } - .controlSize(.small) - if let lastFullSyncSummary { - Text(fullSyncSummaryText(lastFullSyncSummary)) + VStack(alignment: .leading, spacing: 6) { + HStack(spacing: 8) { + if isSyncing { + ProgressView().controlSize(.small) + Text("Syncing…") .font(.caption) .foregroundStyle(.secondary) + } else { + Button("Sync Now") { Task { await runFullSync() } } + .controlSize(.small) + if let lastFullSyncSummary { + Text(fullSyncSummaryText(lastFullSyncSummary)) + .font(.caption) + .foregroundStyle(lastFullSyncSummary.errors.isEmpty ? .secondary : .red) + } + } + } + if let lastFullSyncSummary, !isSyncing { + ForEach(Array(lastFullSyncSummary.errors.enumerated()), id: \.offset) { _, message in + Text(message) + .font(.caption2) + .foregroundStyle(.red) } } }