From 5308ba31360e94ba44e08bb7f76f96355d518b20 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Tue, 19 May 2026 08:59:16 +0200 Subject: [PATCH] refactor(config): consolidate permission modes into PermissionModeRegistry Also fixes WorkerHub.UpdateAppSettings falling back to "bypassPermissions" when AppSettingsEntity and the runtime default are "auto". The fallback now matches the entity default. --- src/ClaudeDo.Data/Models/PermissionModeRegistry.cs | 11 +++++++++++ .../Modals/Settings/GeneralSettingsTabViewModel.cs | 5 ++--- src/ClaudeDo.Worker/Hub/WorkerHub.cs | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 src/ClaudeDo.Data/Models/PermissionModeRegistry.cs diff --git a/src/ClaudeDo.Data/Models/PermissionModeRegistry.cs b/src/ClaudeDo.Data/Models/PermissionModeRegistry.cs new file mode 100644 index 0000000..44250ff --- /dev/null +++ b/src/ClaudeDo.Data/Models/PermissionModeRegistry.cs @@ -0,0 +1,11 @@ +namespace ClaudeDo.Data.Models; + +public static class PermissionModeRegistry +{ + public static readonly IReadOnlyList Modes = new[] + { + "auto", "bypassPermissions", "acceptEdits", "plan", "default", + }; + + public const string DefaultMode = "auto"; +} diff --git a/src/ClaudeDo.Ui/ViewModels/Modals/Settings/GeneralSettingsTabViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Modals/Settings/GeneralSettingsTabViewModel.cs index 4507425..22d2536 100644 --- a/src/ClaudeDo.Ui/ViewModels/Modals/Settings/GeneralSettingsTabViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Modals/Settings/GeneralSettingsTabViewModel.cs @@ -8,11 +8,10 @@ public sealed partial class GeneralSettingsTabViewModel : ViewModelBase [ObservableProperty] private string _defaultClaudeInstructions = ""; [ObservableProperty] private string _defaultModel = ModelRegistry.DefaultAlias; [ObservableProperty] private int _defaultMaxTurns = 100; - [ObservableProperty] private string _defaultPermissionMode = "auto"; + [ObservableProperty] private string _defaultPermissionMode = PermissionModeRegistry.DefaultMode; public IReadOnlyList Models { get; } = ModelRegistry.Aliases; - public IReadOnlyList PermissionModes { get; } = new[] - { "auto", "bypassPermissions", "acceptEdits", "plan", "default" }; + public IReadOnlyList PermissionModes { get; } = PermissionModeRegistry.Modes; public string? Validate() { diff --git a/src/ClaudeDo.Worker/Hub/WorkerHub.cs b/src/ClaudeDo.Worker/Hub/WorkerHub.cs index c147790..39fd92d 100644 --- a/src/ClaudeDo.Worker/Hub/WorkerHub.cs +++ b/src/ClaudeDo.Worker/Hub/WorkerHub.cs @@ -212,7 +212,7 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub DefaultClaudeInstructions = dto.DefaultClaudeInstructions ?? "", DefaultModel = dto.DefaultModel ?? ModelRegistry.DefaultAlias, DefaultMaxTurns = dto.DefaultMaxTurns, - DefaultPermissionMode = dto.DefaultPermissionMode ?? "bypassPermissions", + DefaultPermissionMode = dto.DefaultPermissionMode ?? PermissionModeRegistry.DefaultMode, WorktreeStrategy = dto.WorktreeStrategy ?? "sibling", CentralWorktreeRoot = dto.CentralWorktreeRoot, WorktreeAutoCleanupEnabled = dto.WorktreeAutoCleanupEnabled,