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

@@ -36,6 +36,12 @@ public partial class TaskRowView : UserControl
await vm.RemoveFromQueueCommand.ExecuteAsync(row);
}
private async void OnCancelExecutionClick(object? sender, RoutedEventArgs e)
{
if (DataContext is TaskRowViewModel row && FindTasksVm() is { } vm)
await vm.CancelRunningTaskCommand.ExecuteAsync(row);
}
private async void OnClearScheduleClick(object? sender, RoutedEventArgs e)
{
if (DataContext is TaskRowViewModel row && FindTasksVm() is { } vm)
@@ -82,37 +88,6 @@ public partial class TaskRowView : UserControl
await vm.SetStatusOnRowAsync(row, status);
}
private void OnContextMenuOpening(object? sender, System.ComponentModel.CancelEventArgs e)
{
if (DataContext is not TaskRowViewModel row || FindTasksVm() is not { } vm) return;
// Build the union of all known tags + tags currently on this row, so a row's
// own tags stay reachable from the menu even if the global list is stale.
var rowTags = row.Tags.ToHashSet();
var union = vm.AllTags.Concat(rowTags).Distinct().OrderBy(t => t).ToList();
TagsMenu.Items.Clear();
if (union.Count == 0)
{
TagsMenu.Items.Add(new MenuItem { Header = "(no tags yet)", IsEnabled = false });
return;
}
foreach (var name in union)
{
var prefix = rowTags.Contains(name) ? "✓ " : " ";
var item = new MenuItem { Header = prefix + name, Tag = name };
item.Click += OnToggleTagClick;
TagsMenu.Items.Add(item);
}
}
private async void OnToggleTagClick(object? sender, RoutedEventArgs e)
{
if (sender is not MenuItem mi || mi.Tag is not string name) return;
if (DataContext is not TaskRowViewModel row || FindTasksVm() is not { } vm) return;
await vm.ToggleTagOnRowAsync(row, name);
}
private void OnScheduleForClick(object? sender, RoutedEventArgs e)
{
if (DataContext is not TaskRowViewModel row) return;