diff --git a/src/ClaudeDo.Ui/ViewModels/Conflicts/ConflictResolverViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Conflicts/ConflictResolverViewModel.cs
index a4018a81..186d8484 100644
--- a/src/ClaudeDo.Ui/ViewModels/Conflicts/ConflictResolverViewModel.cs
+++ b/src/ClaudeDo.Ui/ViewModels/Conflicts/ConflictResolverViewModel.cs
@@ -103,9 +103,19 @@ public sealed partial class ConflictResolverViewModel : ObservableObject
}
}
- public string ContinueHint => HasBinaryFiles
- ? "Binary conflicts must be resolved externally — abort and resolve in your editor."
- : "";
+ public string ContinueHint
+ {
+ get
+ {
+ if (HasBinaryFiles)
+ return "Binary conflicts must be resolved externally — abort and resolve in your editor.";
+ var openFiles = Files.Count(f => !f.AllResolved);
+ if (openFiles == 0) return "";
+ var openConflicts = _flat.Count(x => !x.Block.IsResolved);
+ return $"{openConflicts} {(openConflicts == 1 ? "conflict" : "conflicts")} in " +
+ $"{openFiles} {(openFiles == 1 ? "file" : "files")} still unresolved.";
+ }
+ }
private bool InRange => CurrentIndex >= 0 && CurrentIndex < _flat.Count;
@@ -188,6 +198,7 @@ public sealed partial class ConflictResolverViewModel : ObservableObject
OnPropertyChanged(nameof(HasBinaryFiles));
OnPropertyChanged(nameof(HasMultipleFiles));
OnPropertyChanged(nameof(FilesSummary));
+ OnPropertyChanged(nameof(ContinueHint));
RecomputeCanContinue();
if (_flat.Count > 0)
MoveTo(0); // also sets ActiveFile via MoveTo
@@ -211,6 +222,7 @@ public sealed partial class ConflictResolverViewModel : ObservableObject
OnPropertyChanged(nameof(PositionText));
OnPropertyChanged(nameof(ActiveResultText));
OnPropertyChanged(nameof(FilesSummary));
+ OnPropertyChanged(nameof(ContinueHint));
}
}
diff --git a/src/ClaudeDo.Ui/Views/Conflicts/ConflictResolverView.axaml b/src/ClaudeDo.Ui/Views/Conflicts/ConflictResolverView.axaml
index 157bd47d..a94c3613 100644
--- a/src/ClaudeDo.Ui/Views/Conflicts/ConflictResolverView.axaml
+++ b/src/ClaudeDo.Ui/Views/Conflicts/ConflictResolverView.axaml
@@ -67,7 +67,7 @@
+ IsVisible="{Binding ContinueHint, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>