3 Commits

Author SHA1 Message Date
mika kuns
09b52140ce refactor(ui): remove unused Instance statics on bool converters
App.axaml registers these converters via the resource dictionary; the static
Instance members were never referenced.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 19:46:52 +02:00
mika kuns
e7d595244e fix(ui): Planned status uses blue badge style
Previously both Planning and Planned rendered the same amber badge because a
single <Border class="badge planning"> was used. Split into two borders gated
by IsPlanning / IsPlanned so Planned picks up the blue badge.planned style.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 19:46:39 +02:00
993851009b Merge pull request 'feat(ui): planning sessions UI (Plan C)' (#5) from feat/planning-sessions-ui into main
Reviewed-on: #5
2026-04-23 17:38:08 +00:00
4 changed files with 9 additions and 6 deletions

View File

@@ -6,8 +6,6 @@ namespace ClaudeDo.Ui.Converters;
public sealed class BoolToDraftOpacityConverter : IValueConverter public sealed class BoolToDraftOpacityConverter : IValueConverter
{ {
public static BoolToDraftOpacityConverter Instance { get; } = new();
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
=> value is true ? 0.7 : 1.0; => value is true ? 0.7 : 1.0;
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)

View File

@@ -7,8 +7,6 @@ namespace ClaudeDo.Ui.Converters;
public sealed class BoolToItalicConverter : IValueConverter public sealed class BoolToItalicConverter : IValueConverter
{ {
public static BoolToItalicConverter Instance { get; } = new();
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
=> value is true ? FontStyle.Italic : FontStyle.Normal; => value is true ? FontStyle.Italic : FontStyle.Normal;
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)

View File

@@ -35,6 +35,8 @@ public sealed partial class TaskRowViewModel : ViewModelBase
public bool IsChild => !string.IsNullOrEmpty(ParentTaskId); public bool IsChild => !string.IsNullOrEmpty(ParentTaskId);
public bool IsPlanningParent => Status == TaskStatus.Planning || Status == TaskStatus.Planned; public bool IsPlanningParent => Status == TaskStatus.Planning || Status == TaskStatus.Planned;
public bool IsPlanning => Status == TaskStatus.Planning;
public bool IsPlanned => Status == TaskStatus.Planned;
public bool IsDraft => Status == TaskStatus.Draft; public bool IsDraft => Status == TaskStatus.Draft;
public bool CanOpenPlanningSession => Status == TaskStatus.Manual && !IsChild; public bool CanOpenPlanningSession => Status == TaskStatus.Manual && !IsChild;
@@ -77,6 +79,8 @@ public sealed partial class TaskRowViewModel : ViewModelBase
OnPropertyChanged(nameof(IsQueued)); OnPropertyChanged(nameof(IsQueued));
OnPropertyChanged(nameof(HasLiveTail)); OnPropertyChanged(nameof(HasLiveTail));
OnPropertyChanged(nameof(IsPlanningParent)); OnPropertyChanged(nameof(IsPlanningParent));
OnPropertyChanged(nameof(IsPlanning));
OnPropertyChanged(nameof(IsPlanned));
OnPropertyChanged(nameof(PlanningBadge)); OnPropertyChanged(nameof(PlanningBadge));
OnPropertyChanged(nameof(IsDraft)); OnPropertyChanged(nameof(IsDraft));
OnPropertyChanged(nameof(CanOpenPlanningSession)); OnPropertyChanged(nameof(CanOpenPlanningSession));

View File

@@ -99,8 +99,11 @@
<Border Classes="badge draft" IsVisible="{Binding IsDraft}"> <Border Classes="badge draft" IsVisible="{Binding IsDraft}">
<TextBlock Text="DRAFT"/> <TextBlock Text="DRAFT"/>
</Border> </Border>
<Border Classes="badge planning" IsVisible="{Binding IsPlanningParent}"> <Border Classes="badge planning" IsVisible="{Binding IsPlanning}">
<TextBlock Text="{Binding PlanningBadge}"/> <TextBlock Text="PLANNING"/>
</Border>
<Border Classes="badge planned" IsVisible="{Binding IsPlanned}">
<TextBlock Text="PLANNED"/>
</Border> </Border>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>