refactor(tags): remove tag entity and all references

Drops TagEntity, TagRepository, and tag wiring across data layer, worker,
and UI. Adds RemoveTags migration to clean up schema.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-05-19 08:07:24 +02:00
parent 8d34db3f9b
commit 623ebf147b
42 changed files with 333 additions and 1118 deletions

View File

@@ -35,36 +35,39 @@
</Grid>
</Border>
<!-- ── Header (sticky top): eyebrow · title · gear (agent-settings flyout) ── -->
<!-- ── Header (sticky top): check · eyebrow · title · status · star · gear ── -->
<Border DockPanel.Dock="Top" Classes="island-header">
<Grid ColumnDefinitions="*,Auto,Auto">
<StackPanel Grid.Column="0" Spacing="0">
<StackPanel Orientation="Horizontal" Spacing="6" Margin="0,0,0,4">
<Ellipse Width="5" Height="5" Fill="{DynamicResource AccentBrush}"
VerticalAlignment="Center"/>
<TextBlock Classes="eyebrow" Text="LOGBOOK" VerticalAlignment="Center"/>
<TextBlock Text="{Binding TaskIdBadge}"
FontFamily="{DynamicResource MonoFont}" FontSize="10"
Foreground="{DynamicResource TextFaintBrush}"
VerticalAlignment="Center"
Margin="8,0,0,0"/>
</StackPanel>
<Grid ColumnDefinitions="Auto,*,Auto,Auto">
<Ellipse Grid.Column="0"
Classes="task-check"
Classes.done="{Binding Task.Done}"
Width="18" Height="18"
VerticalAlignment="Top"
Margin="0,2,10,0"
Cursor="Hand"/>
<StackPanel Grid.Column="1" Spacing="0">
<TextBlock Text="{Binding TaskIdBadge}"
FontFamily="{DynamicResource MonoFont}" FontSize="10"
Foreground="{DynamicResource TextFaintBrush}"
Margin="0,0,0,4"/>
<TextBox Text="{Binding EditableTitle, Mode=TwoWay}"
FontSize="14" FontWeight="Medium"
BorderThickness="0" Background="Transparent"
Foreground="{DynamicResource TextBrush}"
TextWrapping="Wrap"
AcceptsReturn="False"
Padding="0"/>
</StackPanel>
<ComboBox Grid.Column="1"
ItemsSource="{Binding StatusOptions}"
SelectedItem="{Binding SelectedStatus, Mode=TwoWay}"
ToolTip.Tip="Set status (no transition guards)"
VerticalAlignment="Top"
MinWidth="110"
Margin="6,0,0,0"/>
<Button Grid.Column="2"
Classes="icon-btn star-btn"
Classes.on="{Binding Task.IsStarred}"
VerticalAlignment="Top"
Margin="6,0,0,0">
<PathIcon Data="{StaticResource Icon.Star}" Width="14" Height="14"/>
</Button>
<Button Grid.Column="2" Classes="icon-btn"
<Button Grid.Column="3" Classes="icon-btn"
ToolTip.Tip="Agent settings"
IsEnabled="{Binding IsAgentSectionEnabled}"
VerticalAlignment="Top"
@@ -112,34 +115,6 @@
</Grid>
</Border>
<!-- ── Task strip row (sticky top): check + title + star ── -->
<Border DockPanel.Dock="Top"
Padding="18,10,18,10"
BorderBrush="{DynamicResource LineBrush}"
BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="Auto,*,Auto">
<Ellipse Grid.Column="0"
Classes="task-check"
Classes.done="{Binding Task.Done}"
Width="18" Height="18"
VerticalAlignment="Center"
Cursor="Hand"/>
<TextBlock Grid.Column="1"
Text="{Binding EditableTitle}"
FontSize="14" FontWeight="Medium"
Foreground="{DynamicResource TextBrush}"
TextTrimming="CharacterEllipsis"
VerticalAlignment="Center"
Margin="10,0"/>
<Button Grid.Column="2"
Classes="icon-btn star-btn"
Classes.on="{Binding Task.IsStarred}"
VerticalAlignment="Center">
<PathIcon Data="{StaticResource Icon.Star}" Width="14" Height="14"/>
</Button>
</Grid>
</Border>
<!-- ── Agent status strip (sticky, above metadata footer) ── -->
<islands:AgentStripView DockPanel.Dock="Bottom"/>
@@ -147,46 +122,6 @@
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel Spacing="0">
<!-- Tags section -->
<Border Padding="18,12,18,12"
BorderBrush="{DynamicResource LineBrush}"
BorderThickness="0,0,0,1">
<StackPanel Spacing="6">
<TextBlock Classes="section-label" Text="TAGS" Margin="0,0,0,2"/>
<ItemsControl ItemsSource="{Binding Tags}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="x:String">
<Border Classes="chip chip-tag" Margin="0,0,6,4">
<StackPanel Orientation="Horizontal" Spacing="4" VerticalAlignment="Center">
<TextBlock Text="{Binding}" VerticalAlignment="Center"/>
<Button Classes="icon-btn"
Padding="2,0"
VerticalAlignment="Center"
ToolTip.Tip="Remove tag"
Command="{Binding $parent[ItemsControl].((vm:DetailsIslandViewModel)DataContext).RemoveTagCommand}"
CommandParameter="{Binding}">
<TextBlock Text="×" FontSize="12"/>
</Button>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<AutoCompleteBox ItemsSource="{Binding AvailableTags}"
Text="{Binding NewTagInput, Mode=TwoWay}"
Watermark="Add tag (Enter to add)">
<AutoCompleteBox.KeyBindings>
<KeyBinding Gesture="Enter" Command="{Binding AddTagCommand}"/>
</AutoCompleteBox.KeyBindings>
</AutoCompleteBox>
</StackPanel>
</Border>
<!-- Planning merge section — visible only for planning parent tasks -->
<Border Padding="18,12,18,12"
BorderBrush="{DynamicResource LineBrush}"