diff --git a/src/ClaudeDo.Localization/locales/de.json b/src/ClaudeDo.Localization/locales/de.json index 36d1339..0b198bf 100644 --- a/src/ClaudeDo.Localization/locales/de.json +++ b/src/ClaudeDo.Localization/locales/de.json @@ -408,6 +408,7 @@ "nextConflict": "Nächster Konflikt (F8)", "acceptOurs": "Ours ins Ergebnis übernehmen", "acceptTheirs": "Theirs ins Ergebnis übernehmen", + "acceptBoth": "Beide übernehmen (ours, dann theirs)", "continue": "Lösen & fortfahren", "abort": "Merge abbrechen" }, diff --git a/src/ClaudeDo.Localization/locales/en.json b/src/ClaudeDo.Localization/locales/en.json index 0317a6b..1077fb7 100644 --- a/src/ClaudeDo.Localization/locales/en.json +++ b/src/ClaudeDo.Localization/locales/en.json @@ -408,6 +408,7 @@ "nextConflict": "Next conflict (F8)", "acceptOurs": "Accept ours into result", "acceptTheirs": "Accept theirs into result", + "acceptBoth": "Accept both (ours, then theirs)", "continue": "Resolve & continue", "abort": "Abort merge" }, diff --git a/src/ClaudeDo.Ui/Views/Conflicts/ConflictResolverView.axaml.cs b/src/ClaudeDo.Ui/Views/Conflicts/ConflictResolverView.axaml.cs index b7a19e7..0664196 100644 --- a/src/ClaudeDo.Ui/Views/Conflicts/ConflictResolverView.axaml.cs +++ b/src/ClaudeDo.Ui/Views/Conflicts/ConflictResolverView.axaml.cs @@ -216,6 +216,7 @@ public partial class ConflictResolverView : Window private void AcceptOurs(MergeConflictBlock block) => AcceptInto(block, block.Ours); private void AcceptTheirs(MergeConflictBlock block) => AcceptInto(block, block.Theirs); + private void AcceptBoth(MergeConflictBlock block) => AcceptInto(block, block.Ours + block.Theirs); private void AcceptInto(MergeConflictBlock block, string text) { @@ -274,8 +275,13 @@ public partial class ConflictResolverView : Window var capturedBlock = block; if (tv.TranslatePoint(new Point(0, y), LeftGutter) is { } pl && pl.Y > -24 && pl.Y < LeftGutter.Bounds.Height + 24) + { AddAcceptButton(LeftGutter, pl.Y, "›", () => AcceptOurs(capturedBlock), Tr("conflictResolver.acceptOurs")); + // "Accept both" sits just under the ours chevron: ours text then theirs text. + AddAcceptButton(LeftGutter, pl.Y + 21, "⊕", () => AcceptBoth(capturedBlock), + Tr("conflictResolver.acceptBoth")); + } if (tv.TranslatePoint(new Point(0, y), RightGutter) is { } pr && pr.Y > -24 && pr.Y < RightGutter.Bounds.Height + 24)