diff --git a/apps/server/AliasVault.Admin/Main/Components/WorkerStatus/ServiceControl.razor b/apps/server/AliasVault.Admin/Main/Components/WorkerStatus/ServiceControl.razor index da72b77be..0fd26b5b6 100644 --- a/apps/server/AliasVault.Admin/Main/Components/WorkerStatus/ServiceControl.razor +++ b/apps/server/AliasVault.Admin/Main/Components/WorkerStatus/ServiceControl.razor @@ -223,6 +223,14 @@ service.CurrentStatus = entry.CurrentStatus; service.DesiredStatus = entry.DesiredStatus; } + else + { + // No record exists - service hasn't started yet or database issue. + // Show as offline/stopped state so the button displays red (not transparent). + service.IsHeartBeatValid = false; + service.CurrentStatus = "Stopped"; + service.DesiredStatus = string.Empty; + } } await InvokeAsync(StateHasChanged); diff --git a/apps/server/Utilities/AliasVault.WorkerStatus/StatusWorker.cs b/apps/server/Utilities/AliasVault.WorkerStatus/StatusWorker.cs index 553dbefd0..ba8f416e3 100644 --- a/apps/server/Utilities/AliasVault.WorkerStatus/StatusWorker.cs +++ b/apps/server/Utilities/AliasVault.WorkerStatus/StatusWorker.cs @@ -26,6 +26,17 @@ public class StatusWorker(ILogger logger, FuncTask. protected override async Task ExecuteAsync(CancellationToken stoppingToken) { + try + { + using var initDbContext = createDbContext(); + _dbContext = initDbContext; + await GetOrCreateInitialStatusRecordAsync(); + } + catch (Exception e) + { + logger.LogError(e, "Failed to initialize service status record for {ServiceName}", globalServiceStatus.ServiceName); + } + while (!stoppingToken.IsCancellationRequested) { using var dbContext = createDbContext();