diff --git a/src/ClaudeDo.Data/Models/CommitTypeRegistry.cs b/src/ClaudeDo.Data/Models/CommitTypeRegistry.cs new file mode 100644 index 0000000..f3c5907 --- /dev/null +++ b/src/ClaudeDo.Data/Models/CommitTypeRegistry.cs @@ -0,0 +1,11 @@ +namespace ClaudeDo.Data.Models; + +public static class CommitTypeRegistry +{ + public static readonly IReadOnlyList Types = new[] + { + "chore", "feat", "fix", "refactor", "docs", "test", "ci", "perf", "style", "build", + }; + + public const string DefaultType = "chore"; +} diff --git a/src/ClaudeDo.Data/Models/ListEntity.cs b/src/ClaudeDo.Data/Models/ListEntity.cs index 075693a..1c97481 100644 --- a/src/ClaudeDo.Data/Models/ListEntity.cs +++ b/src/ClaudeDo.Data/Models/ListEntity.cs @@ -6,7 +6,7 @@ public sealed class ListEntity public required string Name { get; set; } public required DateTime CreatedAt { get; init; } public string? WorkingDir { get; set; } - public string DefaultCommitType { get; set; } = "chore"; + public string DefaultCommitType { get; set; } = CommitTypeRegistry.DefaultType; // Navigation properties public ListConfigEntity? Config { get; set; } diff --git a/src/ClaudeDo.Data/Models/TaskEntity.cs b/src/ClaudeDo.Data/Models/TaskEntity.cs index e637cbb..85f0e52 100644 --- a/src/ClaudeDo.Data/Models/TaskEntity.cs +++ b/src/ClaudeDo.Data/Models/TaskEntity.cs @@ -32,7 +32,7 @@ public sealed class TaskEntity public required DateTime CreatedAt { get; init; } public DateTime? StartedAt { 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? SystemPrompt { get; set; } public string? AgentPath { get; set; } diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/ListNavItemViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/ListNavItemViewModel.cs index da4c1fd..74423d1 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/ListNavItemViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/ListNavItemViewModel.cs @@ -1,3 +1,4 @@ +using ClaudeDo.Data.Models; using CommunityToolkit.Mvvm.ComponentModel; namespace ClaudeDo.Ui.ViewModels.Islands; @@ -10,7 +11,7 @@ public sealed partial class ListNavItemViewModel : ViewModelBase [ObservableProperty] private int _count; [ObservableProperty] private bool _isActive; [ObservableProperty] private string? _workingDir; - [ObservableProperty] private string _defaultCommitType = "chore"; + [ObservableProperty] private string _defaultCommitType = CommitTypeRegistry.DefaultType; public string? IconKey { get; init; } public string? DotColorKey { get; init; } } diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/ListsIslandViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/ListsIslandViewModel.cs index a678a80..0bd89d3 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/ListsIslandViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/ListsIslandViewModel.cs @@ -163,7 +163,7 @@ public sealed partial class ListsIslandViewModel : ViewModelBase { Id = Guid.NewGuid().ToString("N"), Name = "New list", - DefaultCommitType = "chore", + DefaultCommitType = CommitTypeRegistry.DefaultType, CreatedAt = DateTime.UtcNow, }; diff --git a/src/ClaudeDo.Ui/ViewModels/Modals/ListSettingsModalViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Modals/ListSettingsModalViewModel.cs index 08f4e78..862e917 100644 --- a/src/ClaudeDo.Ui/ViewModels/Modals/ListSettingsModalViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Modals/ListSettingsModalViewModel.cs @@ -14,7 +14,7 @@ public sealed partial class ListSettingsModalViewModel : ViewModelBase [ObservableProperty] private string _name = ""; [ObservableProperty] private string _workingDir = ""; - [ObservableProperty] private string _defaultCommitType = "chore"; + [ObservableProperty] private string _defaultCommitType = CommitTypeRegistry.DefaultType; [ObservableProperty] private string _selectedModel = ModelRegistry.ListDefaultSentinel; [ObservableProperty] private string _systemPrompt = ""; @@ -23,10 +23,7 @@ public sealed partial class ListSettingsModalViewModel : ViewModelBase public ObservableCollection ModelOptions { get; } = new( new[] { ModelRegistry.ListDefaultSentinel }.Concat(ModelRegistry.Aliases)); - public ObservableCollection CommitTypeOptions { get; } = new() - { - "chore", "feat", "fix", "refactor", "docs", "test", "ci", "perf", "style", "build", - }; + public ObservableCollection CommitTypeOptions { get; } = new(CommitTypeRegistry.Types); public ObservableCollection Agents { get; } = new(); @@ -47,7 +44,7 @@ public sealed partial class ListSettingsModalViewModel : ViewModelBase ListId = listId; Name = name; WorkingDir = workingDir ?? ""; - DefaultCommitType = string.IsNullOrWhiteSpace(defaultCommitType) ? "chore" : defaultCommitType; + DefaultCommitType = string.IsNullOrWhiteSpace(defaultCommitType) ? CommitTypeRegistry.DefaultType : defaultCommitType; Agents.Clear(); Agents.Add(new AgentInfo("(none)", "", "")); diff --git a/src/ClaudeDo.Worker/Hub/WorkerHub.cs b/src/ClaudeDo.Worker/Hub/WorkerHub.cs index 39fd92d..d7ed772 100644 --- a/src/ClaudeDo.Worker/Hub/WorkerHub.cs +++ b/src/ClaudeDo.Worker/Hub/WorkerHub.cs @@ -281,7 +281,7 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub entity.Name = dto.Name; 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 _broadcaster.ListUpdated(dto.Id);