refactor(config): consolidate commit types into CommitTypeRegistry

Replaces six scattered "chore" literals across TaskEntity, ListEntity,
WorkerHub, ListsIslandViewModel, ListNavItemViewModel and the inline
commit type list in ListSettingsModalViewModel.
This commit is contained in:
mika kuns
2026-05-19 09:00:00 +02:00
parent 5308ba3136
commit 5da69ee6aa
7 changed files with 20 additions and 11 deletions

View File

@@ -0,0 +1,11 @@
namespace ClaudeDo.Data.Models;
public static class CommitTypeRegistry
{
public static readonly IReadOnlyList<string> Types = new[]
{
"chore", "feat", "fix", "refactor", "docs", "test", "ci", "perf", "style", "build",
};
public const string DefaultType = "chore";
}

View File

@@ -6,7 +6,7 @@ public sealed class ListEntity
public required string Name { get; set; } public required string Name { get; set; }
public required DateTime CreatedAt { get; init; } public required DateTime CreatedAt { get; init; }
public string? WorkingDir { get; set; } public string? WorkingDir { get; set; }
public string DefaultCommitType { get; set; } = "chore"; public string DefaultCommitType { get; set; } = CommitTypeRegistry.DefaultType;
// Navigation properties // Navigation properties
public ListConfigEntity? Config { get; set; } public ListConfigEntity? Config { get; set; }

View File

@@ -32,7 +32,7 @@ public sealed class TaskEntity
public required DateTime CreatedAt { get; init; } public required DateTime CreatedAt { get; init; }
public DateTime? StartedAt { get; set; } public DateTime? StartedAt { get; set; }
public DateTime? FinishedAt { get; set; } public DateTime? FinishedAt { get; set; }
public string CommitType { get; set; } = "chore"; public string CommitType { get; set; } = CommitTypeRegistry.DefaultType;
public string? Model { get; set; } public string? Model { get; set; }
public string? SystemPrompt { get; set; } public string? SystemPrompt { get; set; }
public string? AgentPath { get; set; } public string? AgentPath { get; set; }

View File

@@ -1,3 +1,4 @@
using ClaudeDo.Data.Models;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
namespace ClaudeDo.Ui.ViewModels.Islands; namespace ClaudeDo.Ui.ViewModels.Islands;
@@ -10,7 +11,7 @@ public sealed partial class ListNavItemViewModel : ViewModelBase
[ObservableProperty] private int _count; [ObservableProperty] private int _count;
[ObservableProperty] private bool _isActive; [ObservableProperty] private bool _isActive;
[ObservableProperty] private string? _workingDir; [ObservableProperty] private string? _workingDir;
[ObservableProperty] private string _defaultCommitType = "chore"; [ObservableProperty] private string _defaultCommitType = CommitTypeRegistry.DefaultType;
public string? IconKey { get; init; } public string? IconKey { get; init; }
public string? DotColorKey { get; init; } public string? DotColorKey { get; init; }
} }

View File

@@ -163,7 +163,7 @@ public sealed partial class ListsIslandViewModel : ViewModelBase
{ {
Id = Guid.NewGuid().ToString("N"), Id = Guid.NewGuid().ToString("N"),
Name = "New list", Name = "New list",
DefaultCommitType = "chore", DefaultCommitType = CommitTypeRegistry.DefaultType,
CreatedAt = DateTime.UtcNow, CreatedAt = DateTime.UtcNow,
}; };

View File

@@ -14,7 +14,7 @@ public sealed partial class ListSettingsModalViewModel : ViewModelBase
[ObservableProperty] private string _name = ""; [ObservableProperty] private string _name = "";
[ObservableProperty] private string _workingDir = ""; [ObservableProperty] private string _workingDir = "";
[ObservableProperty] private string _defaultCommitType = "chore"; [ObservableProperty] private string _defaultCommitType = CommitTypeRegistry.DefaultType;
[ObservableProperty] private string _selectedModel = ModelRegistry.ListDefaultSentinel; [ObservableProperty] private string _selectedModel = ModelRegistry.ListDefaultSentinel;
[ObservableProperty] private string _systemPrompt = ""; [ObservableProperty] private string _systemPrompt = "";
@@ -23,10 +23,7 @@ public sealed partial class ListSettingsModalViewModel : ViewModelBase
public ObservableCollection<string> ModelOptions { get; } = new( public ObservableCollection<string> ModelOptions { get; } = new(
new[] { ModelRegistry.ListDefaultSentinel }.Concat(ModelRegistry.Aliases)); new[] { ModelRegistry.ListDefaultSentinel }.Concat(ModelRegistry.Aliases));
public ObservableCollection<string> CommitTypeOptions { get; } = new() public ObservableCollection<string> CommitTypeOptions { get; } = new(CommitTypeRegistry.Types);
{
"chore", "feat", "fix", "refactor", "docs", "test", "ci", "perf", "style", "build",
};
public ObservableCollection<AgentInfo> Agents { get; } = new(); public ObservableCollection<AgentInfo> Agents { get; } = new();
@@ -47,7 +44,7 @@ public sealed partial class ListSettingsModalViewModel : ViewModelBase
ListId = listId; ListId = listId;
Name = name; Name = name;
WorkingDir = workingDir ?? ""; WorkingDir = workingDir ?? "";
DefaultCommitType = string.IsNullOrWhiteSpace(defaultCommitType) ? "chore" : defaultCommitType; DefaultCommitType = string.IsNullOrWhiteSpace(defaultCommitType) ? CommitTypeRegistry.DefaultType : defaultCommitType;
Agents.Clear(); Agents.Clear();
Agents.Add(new AgentInfo("(none)", "", "")); Agents.Add(new AgentInfo("(none)", "", ""));

View File

@@ -281,7 +281,7 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub
entity.Name = dto.Name; entity.Name = dto.Name;
entity.WorkingDir = string.IsNullOrWhiteSpace(dto.WorkingDir) ? null : dto.WorkingDir; entity.WorkingDir = string.IsNullOrWhiteSpace(dto.WorkingDir) ? null : dto.WorkingDir;
entity.DefaultCommitType = string.IsNullOrWhiteSpace(dto.DefaultCommitType) ? "chore" : dto.DefaultCommitType; entity.DefaultCommitType = string.IsNullOrWhiteSpace(dto.DefaultCommitType) ? CommitTypeRegistry.DefaultType : dto.DefaultCommitType;
await repo.UpdateAsync(entity); await repo.UpdateAsync(entity);
await _broadcaster.ListUpdated(dto.Id); await _broadcaster.ListUpdated(dto.Id);