feat(ui): ship offline operations cutover
This commit is contained in:
@@ -7,11 +7,17 @@ Web
|
||||
VERIFIED
|
||||
|
||||
## Description
|
||||
Feed mirror ops UI with mirror registry list, snapshot management, AirGap import/export with bundle validation, feed version lock for deterministic scans, offline sync status, and bundle freshness warnings.
|
||||
Feed mirror ops UI with mirror registry list, snapshot management, AirGap import/export with bundle validation, feed version lock for deterministic scans, offline sync status, and bundle freshness warnings. The canonical owner route now lives under `Ops > Operations`; legacy `ops` and `platform-ops` feed aliases redirect into it.
|
||||
|
||||
## Implementation Details
|
||||
- **Feature directory**: `src/Web/StellaOps.Web/src/app/features/feed-mirror/`
|
||||
- **Routes**: `feed-mirror.routes.ts`
|
||||
- **Canonical route**: `/ops/operations/feeds-airgap`
|
||||
- **Legacy aliases**:
|
||||
- `/ops/feeds`
|
||||
- `/ops/feeds/airgap/*`
|
||||
- `/platform-ops/feeds*`
|
||||
- `/platform/ops/feeds*`
|
||||
- **Components**:
|
||||
- `airgap-export` (`src/Web/StellaOps.Web/src/app/features/feed-mirror/airgap-export.component.ts`)
|
||||
- `airgap-import` (`src/Web/StellaOps.Web/src/app/features/feed-mirror/airgap-import.component.ts`)
|
||||
@@ -31,7 +37,7 @@ Feed mirror ops UI with mirror registry list, snapshot management, AirGap import
|
||||
## E2E Test Plan
|
||||
- **Setup**:
|
||||
- [ ] Log in with a user that has appropriate permissions
|
||||
- [ ] Navigate to `/ops/feeds`
|
||||
- [ ] Navigate to `/ops/operations/feeds-airgap`
|
||||
- [ ] Ensure test data exists (scanned artifacts, SBOM data, or seed data as needed)
|
||||
- **Core verification**:
|
||||
- [ ] Verify the component renders correctly with sample data
|
||||
|
||||
@@ -7,11 +7,13 @@ Web
|
||||
VERIFIED
|
||||
|
||||
## Description
|
||||
Offline Kit UI with OfflineModeService, ManifestValidator, BundleFreshness widget, ReadOnlyGuard, and offline verification workflow for air-gapped environments, including deterministic bundle activation behavior in bundle management.
|
||||
Offline Kit UI with OfflineModeService, ManifestValidator, BundleFreshness widget, ReadOnlyGuard, and offline verification workflow for air-gapped environments, including deterministic bundle activation behavior in bundle management. The canonical owner route now lives under `Ops > Operations`; the legacy `/ops/offline-kit` bookmark remains as a redirect.
|
||||
|
||||
## Implementation Details
|
||||
- **Feature directory**: `src/Web/StellaOps.Web/src/app/features/offline-kit/`
|
||||
- **Routes**: `offline-kit.routes.ts`
|
||||
- **Canonical route**: `/ops/operations/offline-kit`
|
||||
- **Legacy alias**: `/ops/offline-kit`
|
||||
- **Components**:
|
||||
- `bundle-management` (`src/Web/StellaOps.Web/src/app/features/offline-kit/components/bundle-management.component.ts`)
|
||||
- `jwks-management` (`src/Web/StellaOps.Web/src/app/features/offline-kit/components/jwks-management.component.ts`)
|
||||
@@ -23,7 +25,7 @@ Offline Kit UI with OfflineModeService, ManifestValidator, BundleFreshness widge
|
||||
## E2E Test Plan
|
||||
- **Setup**:
|
||||
- [ ] Log in with a user that has appropriate permissions
|
||||
- [ ] Navigate to `/ops/offline-kit`
|
||||
- [ ] Navigate to `/ops/operations/offline-kit`
|
||||
- [ ] Ensure test data exists (scanned artifacts, SBOM data, or seed data as needed)
|
||||
- **Core verification**:
|
||||
- [ ] Verify the component renders correctly with sample data
|
||||
|
||||
67
docs/features/checked/web/offline-operations-ui.md
Normal file
67
docs/features/checked/web/offline-operations-ui.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Offline Operations UI
|
||||
|
||||
## Module
|
||||
Web
|
||||
|
||||
## Status
|
||||
VERIFIED
|
||||
|
||||
## Description
|
||||
Shipped the canonical offline and air-gap operations flow under `Ops > Operations`, repaired stale deep links from legacy `ops` and `platform-ops` aliases, and completed the previously half-wired Offline Kit actions so operators can load bundles, export summaries, inspect trust anchors, and hand off into Evidence and Trust surfaces without dead ends.
|
||||
|
||||
## Implementation Details
|
||||
- **Feature directories**:
|
||||
- `src/Web/StellaOps.Web/src/app/features/offline-kit/`
|
||||
- `src/Web.StellaOps.Web/src/app/features/platform/ops/`
|
||||
- **Primary components**:
|
||||
- `offline-kit` (`src/Web.StellaOps.Web/src/app/features/offline-kit/offline-kit.component.ts`)
|
||||
- `offline-dashboard` (`src/Web.StellaOps.Web/src/app/features/offline-kit/components/offline-dashboard.component.ts`)
|
||||
- `bundle-management` (`src/Web.StellaOps.Web/src/app/features/offline-kit/components/bundle-management.component.ts`)
|
||||
- `verification-center` (`src/Web.StellaOps.Web/src/app/features/offline-kit/components/verification-center.component.ts`)
|
||||
- `jwks-management` (`src/Web.StellaOps.Web/src/app/features/offline-kit/components/jwks-management.component.ts`)
|
||||
- `platform-feeds-airgap-page` (`src/Web.StellaOps.Web/src/app/features/platform/ops/platform-feeds-airgap-page.component.ts`)
|
||||
- **Canonical routes**:
|
||||
- `/ops/operations/offline-kit`
|
||||
- `/ops/operations/offline-kit/dashboard`
|
||||
- `/ops/operations/offline-kit/bundles`
|
||||
- `/ops/operations/offline-kit/verify`
|
||||
- `/ops/operations/offline-kit/jwks`
|
||||
- `/ops/operations/feeds-airgap`
|
||||
- **Legacy aliases**:
|
||||
- `/ops/offline-kit/*`
|
||||
- `/ops/feeds/*`
|
||||
- `/platform-ops/*`
|
||||
- `/platform/ops/*`
|
||||
- **Secondary entry points**:
|
||||
- `Evidence > Export Center`
|
||||
- `Evidence > Verify & Replay`
|
||||
- `Setup > Trust & Signing`
|
||||
- context status chips and Ops navigation
|
||||
|
||||
## E2E Test Plan
|
||||
- **Setup**:
|
||||
- [x] Start the local Angular test server with `npm run serve:test`.
|
||||
- [x] Open `/ops/operations/offline-kit`.
|
||||
- [x] Use a test session with Ops and admin scopes.
|
||||
- **Core verification**:
|
||||
- [x] Verify Offline Kit renders its canonical shortcuts and child tabs.
|
||||
- [x] Verify bundle and verification actions are usable instead of placeholder logs.
|
||||
- [x] Verify trust-anchor inspection and export flows render inside the shell.
|
||||
- **Legacy verification**:
|
||||
- [x] Verify stale `/platform/ops/offline-kit/*` bookmarks land on `/ops/operations/offline-kit/*`.
|
||||
- [x] Verify stale `/ops/feeds/airgap/import` lands on the canonical `Feeds & Airgap` page with preserved tab or action context.
|
||||
|
||||
## Verification
|
||||
- Run:
|
||||
- `npm test -- --watch=false --include src/tests/offline/offline-kit-ui-integration.spec.ts --include src/tests/offline/verification-center.component.spec.ts --include src/tests/offline/jwks-management.component.spec.ts --include src/tests/platform-ops/platform-feeds-airgap-page.component.spec.ts --include src/tests/platform-ops/platform-ops-routes.spec.ts`
|
||||
- `npm run serve:test`
|
||||
- `PLAYWRIGHT_BASE_URL=https://127.0.0.1:4400 npx playwright test tests/e2e/offline-operations.spec.ts --workers=1`
|
||||
- `npm run build`
|
||||
- Tier 0 (source): pass
|
||||
- Tier 1 (build/tests): pass
|
||||
- Tier 2 (behavior): pass
|
||||
- Notes:
|
||||
- Angular targeted tests passed: `5` files, `17` tests.
|
||||
- Playwright passed: `2` scenarios.
|
||||
- Production build passed; existing bundle-budget warnings remain unchanged from the baseline.
|
||||
- Verified on (UTC): 2026-03-08T00:54:00Z
|
||||
Reference in New Issue
Block a user