diff --git a/src/Web/StellaOps.Web/src/app/features/releases/releases-unified-page.component.ts b/src/Web/StellaOps.Web/src/app/features/releases/releases-unified-page.component.ts index 56e673c8a..353d3056b 100644 --- a/src/Web/StellaOps.Web/src/app/features/releases/releases-unified-page.component.ts +++ b/src/Web/StellaOps.Web/src/app/features/releases/releases-unified-page.component.ts @@ -8,7 +8,7 @@ * Tab 2 "Approvals": embeds the existing ApprovalQueueComponent. */ -import { Component, ChangeDetectionStrategy, OnInit, OnDestroy, ViewChild, inject, signal, computed } from '@angular/core'; +import { Component, ChangeDetectionStrategy, OnInit, OnDestroy, ViewChild, effect, inject, signal, computed } from '@angular/core'; import { PageActionService } from '../../core/services/page-action.service'; import { PageActionOutletComponent } from '../../shared/components/page-action-outlet/page-action-outlet.component'; import { UpperCasePipe, SlicePipe } from '@angular/common'; @@ -74,8 +74,8 @@ export interface PipelineRelease {
-

Releases

-

Versions, deployments, approvals, and promotion pipeline.

+

Release Control

+

{{ activeSubtitle() }}

@@ -397,6 +397,24 @@ export class ReleasesUnifiedPageComponent implements OnInit, OnDestroy { readonly releaseTabs = RELEASE_TABS; readonly activeTab = signal(this.route.snapshot.queryParamMap.get('tab') || 'releases'); + readonly activeSubtitle = computed(() => + this.activeTab() === 'versions' + ? 'Sealed digest-first version catalog across standard and hotfix lanes.' + : 'Promotion pipeline with gate status, risk posture, and evidence for every release.' + ); + + constructor() { + // Update page action when tab changes + effect(() => { + const tab = this.activeTab(); + if (tab === 'versions') { + this.pageAction.set({ label: 'New Version', route: '/releases/versions/new' }); + } else { + this.pageAction.set({ label: 'New Release', route: '/releases/new' }); + } + }); + } + // Approve dialog readonly pendingApproveRelease = signal(null); @ViewChild('approveConfirm') approveConfirmRef!: ConfirmDialogComponent; @@ -426,7 +444,6 @@ export class ReleasesUnifiedPageComponent implements OnInit, OnDestroy { } ngOnInit(): void { - this.pageAction.set({ label: 'New Release', route: '/releases/new' }); this.context.initialize(); this.store.loadReleases({}); }