diff --git a/src/Web/StellaOps.Web/src/app/features/jobengine/jobengine-dashboard.component.ts b/src/Web/StellaOps.Web/src/app/features/jobengine/jobengine-dashboard.component.ts index f3b797fc1..ac7b99330 100644 --- a/src/Web/StellaOps.Web/src/app/features/jobengine/jobengine-dashboard.component.ts +++ b/src/Web/StellaOps.Web/src/app/features/jobengine/jobengine-dashboard.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, OnInit, inject, signal } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnInit, computed, inject, signal } from '@angular/core'; import { RouterLink } from '@angular/router'; import { catchError, forkJoin, of } from 'rxjs'; @@ -58,6 +58,12 @@ import { OPERATIONS_PATHS } from '../platform/ops/operations-paths'; + @if (allCountsZero()) { +
+ No jobs have been submitted yet. Jobs are created automatically when releases are promoted, scans are triggered, or scheduled tasks run. +
+ } ++ Shadow mode requires at least one active policy pack. + Create a pack in the Packs tab first. +
}+ Shadow mode requires at least one active policy pack. + Create a pack in the Packs tab first. +
+ } `, styles: [ @@ -225,6 +233,24 @@ import { ShadowModeConfig } from '../../core/api/policy-simulation.models'; opacity: 0.5; cursor: not-allowed; } + + .shadow-indicator__prereq { + margin: 0; + font-size: 0.75rem; + color: var(--color-text-secondary); + line-height: 1.4; + max-width: 220px; + } + + .shadow-indicator__prereq a { + color: var(--color-status-info-border); + text-decoration: underline; + text-underline-offset: 2px; + } + + .shadow-indicator__prereq a:hover { + color: var(--color-status-info); + } `, ] }) diff --git a/src/Web/StellaOps.Web/src/app/features/policy-studio/workspace/policy-workspace.component.ts b/src/Web/StellaOps.Web/src/app/features/policy-studio/workspace/policy-workspace.component.ts index 14b5a3f4f..a00516800 100644 --- a/src/Web/StellaOps.Web/src/app/features/policy-studio/workspace/policy-workspace.component.ts +++ b/src/Web/StellaOps.Web/src/app/features/policy-studio/workspace/policy-workspace.component.ts @@ -94,6 +94,19 @@ import { PolicyPackStore } from '../services/policy-pack.store'; + } @empty { + @if (!loading) { ++ Policy packs define the rules that govern release decisions. + Create a pack to start defining your organization's release policy. +
+ + Learn about policy packs + +