diff --git a/src/ClaudeDo.Ui/CLAUDE.md b/src/ClaudeDo.Ui/CLAUDE.md
index e26085e..8635425 100644
--- a/src/ClaudeDo.Ui/CLAUDE.md
+++ b/src/ClaudeDo.Ui/CLAUDE.md
@@ -54,7 +54,7 @@ Design/ — Tokens.axaml (design tokens; merged before styles) + IslandStyle
## Converters
-`StatusColorConverter` (+ `ConnectionColorConverter` in the same file), `WorktreeStateColorConverter`, `WorkerLogLevelToBrushConverter`, `DotBrushConverter`, `EqStatusConverter`, `IconKeyConverter`, `CheckboxBorderConverter`, `StrikeIfTrueConverter`, `BoolToItalicConverter`, `BoolToDraftOpacityConverter`, `NotNullToBoolConverter`, `UpperCaseConverter`, `DateOnlyToDateTimeConverter`.
+`StatusColorConverter` (+ `ConnectionColorConverter` in the same file), `WorkerLogLevelToBrushConverter`, `DotBrushConverter`, `EqStatusConverter`, `IconKeyConverter`, `CheckboxBorderConverter`, `StrikeIfTrueConverter`, `BoolToItalicConverter`, `BoolToDraftOpacityConverter`, `NotNullToBoolConverter`, `UpperCaseConverter`, `DateOnlyToDateTimeConverter`.
## Dialog Pattern
diff --git a/src/ClaudeDo.Ui/Converters/WorktreeStateColorConverter.cs b/src/ClaudeDo.Ui/Converters/WorktreeStateColorConverter.cs
deleted file mode 100644
index aa15bde..0000000
--- a/src/ClaudeDo.Ui/Converters/WorktreeStateColorConverter.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Globalization;
-using Avalonia.Data.Converters;
-using Avalonia.Media;
-using ClaudeDo.Data.Models;
-
-namespace ClaudeDo.Ui.Converters;
-
-public sealed class WorktreeStateColorConverter : IValueConverter
-{
- private static readonly ISolidColorBrush Active = new SolidColorBrush(Color.Parse("#42A5F5"));
- private static readonly ISolidColorBrush Merged = new SolidColorBrush(Color.Parse("#66BB6A"));
- private static readonly ISolidColorBrush Discarded = new SolidColorBrush(Color.Parse("#9E9E9E"));
- private static readonly ISolidColorBrush Kept = new SolidColorBrush(Color.Parse("#FFA726"));
- private static readonly ISolidColorBrush Default = new SolidColorBrush(Colors.Gray);
-
- public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) =>
- value is WorktreeState state
- ? state switch
- {
- WorktreeState.Active => Active,
- WorktreeState.Merged => Merged,
- WorktreeState.Discarded => Discarded,
- WorktreeState.Kept => Kept,
- _ => Default,
- }
- : Default;
-
- public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
- => throw new NotSupportedException();
-}
diff --git a/src/ClaudeDo.Ui/Design/IslandStyles.axaml b/src/ClaudeDo.Ui/Design/IslandStyles.axaml
index 9e44ce3..ada05e8 100644
--- a/src/ClaudeDo.Ui/Design/IslandStyles.axaml
+++ b/src/ClaudeDo.Ui/Design/IslandStyles.axaml
@@ -238,6 +238,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ClaudeDo.Ui/ViewModels/Modals/WorktreesOverviewModalViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Modals/WorktreesOverviewModalViewModel.cs
index 59aaef2..9f7a4b8 100644
--- a/src/ClaudeDo.Ui/ViewModels/Modals/WorktreesOverviewModalViewModel.cs
+++ b/src/ClaudeDo.Ui/ViewModels/Modals/WorktreesOverviewModalViewModel.cs
@@ -24,7 +24,12 @@ public sealed partial class WorktreeOverviewRowViewModel : ViewModelBase
[ObservableProperty] private string _path = "";
[ObservableProperty] private string _branchName = "";
[ObservableProperty] private string _baseCommit = "";
- [ObservableProperty][NotifyPropertyChangedFor(nameof(IsActive))] private WorktreeState _state;
+ [ObservableProperty]
+ [NotifyPropertyChangedFor(nameof(IsActive))]
+ [NotifyPropertyChangedFor(nameof(IsMerged))]
+ [NotifyPropertyChangedFor(nameof(IsDiscarded))]
+ [NotifyPropertyChangedFor(nameof(IsKept))]
+ private WorktreeState _state;
[ObservableProperty] private string? _diffStat;
[ObservableProperty][NotifyPropertyChangedFor(nameof(AgeText))] private DateTime _createdAt;
[ObservableProperty] private bool _pathExistsOnDisk;
@@ -40,6 +45,9 @@ public sealed partial class WorktreeOverviewRowViewModel : ViewModelBase
public string AgeText => FormatAge(DateTime.UtcNow - CreatedAt);
public bool IsActive => State == WorktreeState.Active;
+ public bool IsMerged => State == WorktreeState.Merged;
+ public bool IsDiscarded => State == WorktreeState.Discarded;
+ public bool IsKept => State == WorktreeState.Kept;
public bool IsRunning => TaskStatus == TaskStatus.Running;
private static string FormatAge(TimeSpan ts)
diff --git a/src/ClaudeDo.Ui/Views/Modals/WorktreesOverviewModalView.axaml b/src/ClaudeDo.Ui/Views/Modals/WorktreesOverviewModalView.axaml
index b036a23..82202d1 100644
--- a/src/ClaudeDo.Ui/Views/Modals/WorktreesOverviewModalView.axaml
+++ b/src/ClaudeDo.Ui/Views/Modals/WorktreesOverviewModalView.axaml
@@ -1,7 +1,6 @@
-
-
-
+
+