From ca216150906ced33ca9d6f1e063ca5ec88946d63 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 3 Jun 2026 04:06:20 -0400 Subject: [PATCH] docs(ui-theme): record 0.2.0 publish + adoption across all 3 apps (local feat branches) --- CLAUDE.md | 17 ++++--- components/ui-theme/GAPS.md | 17 +++++++ .../shared-contract/ZB.MOM.WW.Theme.md | 45 ++++++++++++++----- 3 files changed, 62 insertions(+), 17 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index bb97150..0eec661 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -121,7 +121,7 @@ each project's **code-verified current state**, and the **gaps** between. See | Component | Status | Goal | Design | Implementation | |---|---|---|---|---| | Auth (login / identity / authz) | Adopted (lib `0.1.3`; all 3 apps, merged to **local default** main/master + **pushed to origin** (gitea)) | Shared `ZB.MOM.WW.Auth` lib | [`components/auth/`](components/auth/) | [`ZB.MOM.WW.Auth/`](ZB.MOM.WW.Auth/) | -| UI Theme (layout / tokens / components) | Built (lib `0.1.0`) | Shared `ZB.MOM.WW.Theme` RCL | [`components/ui-theme/`](components/ui-theme/) | [`ZB.MOM.WW.Theme/`](ZB.MOM.WW.Theme/) | +| UI Theme (layout / tokens / components) | Adopted (lib `0.2.0`; all 3 apps, local `feat/adopt-zb-theme` branches) | Shared `ZB.MOM.WW.Theme` RCL | [`components/ui-theme/`](components/ui-theme/) | [`ZB.MOM.WW.Theme/`](ZB.MOM.WW.Theme/) | | Health (readiness / liveness / active-node) | Built (lib `0.1.0`) | Shared `ZB.MOM.WW.Health` lib | [`components/health/`](components/health/) | [`ZB.MOM.WW.Health/`](ZB.MOM.WW.Health/) | | Observability (metrics / traces / logs) | Built (lib `0.1.0`) | Shared `ZB.MOM.WW.Telemetry` lib + `.Serilog` | [`components/observability/`](components/observability/) | [`ZB.MOM.WW.Telemetry/`](ZB.MOM.WW.Telemetry/) | | Config + validation (options / startup validation) | Adopted (lib `0.1.0`; all 3 apps, local) | Shared `ZB.MOM.WW.Configuration` lib | [`components/configuration/`](components/configuration/) | [`ZB.MOM.WW.Configuration/`](ZB.MOM.WW.Configuration/) | @@ -156,10 +156,17 @@ backlog. Shared = Technical-Light tokens + IBM Plex fonts + side-rail shell + wi per-project = each app's `site.css` page layout, route content, scoped `.razor.css`. The shared RCL is **built and lives in this repo** at [`ZB.MOM.WW.Theme/`](ZB.MOM.WW.Theme/) -(.NET 10 Razor Class Library; single package; 32 bUnit tests; `dotnet pack` → 1 nupkg @ 0.1.0). -The implementation plan is at -[`docs/plans/2026-06-01-zb-mom-ww-theme-shared-library.md`](docs/plans/2026-06-01-zb-mom-ww-theme-shared-library.md). -**Not yet adopted** by the three apps — that's the follow-on tracked in [`components/ui-theme/GAPS.md`](components/ui-theme/GAPS.md). +(.NET 10 Razor Class Library; single package; 44 bUnit tests; `dotnet pack` → 1 nupkg @ 0.2.0, +**published to the Gitea feed**). The build plan is at +[`docs/plans/2026-06-01-zb-mom-ww-theme-shared-library.md`](docs/plans/2026-06-01-zb-mom-ww-theme-shared-library.md); +the adoption plan at [`docs/plans/2026-06-03-ui-theme-adoption.md`](docs/plans/2026-06-03-ui-theme-adoption.md). +**Adopted across all three apps on 2026-06-03** (full canonical cutover, SPEC §7) on each repo's local-only +`feat/adopt-zb-theme` branch (OtOpcUa `11de14d`, ScadaBridge `58352a6`, MxGateway `73e54e2` — committed, +spec+code reviewed, **not yet merged/pushed**). The `0.1.0 → 0.2.0` bump first promoted nav-expand persistence +into the kit (`NavRailSection.Key`/`data-nav-key` + a localStorage `nav-state.js` enhancer emitted by a new +``), so all three apps share one persistence mechanism (OtOpcUa's bespoke cookie/JS-interop nav +island retired); MxGateway additionally gained a net-new Blazor `` `/login` page over its existing +hardened endpoint. Per-app result in [`components/ui-theme/GAPS.md`](components/ui-theme/GAPS.md). Build/test from `ZB.MOM.WW.Theme/`: `dotnet test`. Consumer matrix: all three apps consume the single `ZB.MOM.WW.Theme` package (OtOpcUa AdminUI, MxGateway Server, ScadaBridge Host + CentralUI). diff --git a/components/ui-theme/GAPS.md b/components/ui-theme/GAPS.md index c2d94e3..4be6bea 100644 --- a/components/ui-theme/GAPS.md +++ b/components/ui-theme/GAPS.md @@ -3,6 +3,23 @@ Divergence of each project from [`spec/SPEC.md`](spec/SPEC.md), and the ordered backlog to reach adoption of the `ZB.MOM.WW.Theme` shared RCL. Status legend: ⛔ gap · 🟡 partial · ✅ matches. +> **✅ ADOPTED 2026-06-03 (local-only).** Backlog #2–#4 implemented across all three apps on each repo's +> **`feat/adopt-zb-theme`** branch — full canonical cutover (SPEC §7): ``/``, +> thin `MainLayout` → `` + `NavRailItem`/`NavRailSection`, per-app `theme.css`/IBM-Plex fonts/ +> `nav-state.js` deleted, `` sign-in, and `StatusPill` (OtOpcUa's dead `StatusBadge` deleted; +> MxGateway's `StatusBadge` redirected to a thin `StatusPill` adapter; inline domain `.chip-*` kept as page +> content per §6). **Library first enhanced to `0.2.0`** — nav-expand persistence promoted INTO the kit +> (`NavRailSection.Key` → `data-nav-key` + a localStorage `nav-state.js` enhancer emitted by a new +> ``), so all three apps get uniform persistence from one source (OtOpcUa's bespoke +> cookie/JS-interop nav island retired). 0.2.0 published to the Gitea feed; 44 bUnit tests. **MxGateway +> additionally gained a net-new Blazor `` `/login` page** reusing its existing hardened +> `POST /login` endpoint (antiforgery + `SanitizeReturnUrl` + `SignInAsync` preserved). Every task spec+code +> reviewed (high-risk via serial spec→code; the MxGateway login via an Opus security review). Branch heads: +> OtOpcUa `11de14d`, ScadaBridge `58352a6`, MxGateway `73e54e2` — **committed local-only, not yet merged/pushed**. +> Plan: `docs/plans/2026-06-03-ui-theme-adoption*.md`. The ⛔/🟡 cells below describe the PRE-adoption +> divergence (kept for history). Deferred follow-ups: prune now-dead `.sidebar`/`.nav-link` residual from each +> app's kept `site.css`; a kit-side `layout.css` `calc(100vh - 3.3rem)` review. + --- ## Divergence vs spec diff --git a/components/ui-theme/shared-contract/ZB.MOM.WW.Theme.md b/components/ui-theme/shared-contract/ZB.MOM.WW.Theme.md index 72fbaa8..542f82e 100644 --- a/components/ui-theme/shared-contract/ZB.MOM.WW.Theme.md +++ b/components/ui-theme/shared-contract/ZB.MOM.WW.Theme.md @@ -1,9 +1,15 @@ # Shared library: `ZB.MOM.WW.Theme` -**Status: Built (`0.1.0`).** The RCL lives at -[`scadaproj/ZB.MOM.WW.Theme/`](../../../ZB.MOM.WW.Theme/) — built and tested. Adoption -by the three apps is follow-on, tracked in [`../GAPS.md`](../GAPS.md). Realizes -[`../spec/SPEC.md`](../spec/SPEC.md). +**Status: Built + Published + Adopted (`0.2.0`).** The RCL lives at +[`scadaproj/ZB.MOM.WW.Theme/`](../../../ZB.MOM.WW.Theme/) — built, tested (44 bUnit tests), and +**published to the Gitea NuGet feed**. **Adopted across all three apps on 2026-06-03** (local-only +`feat/adopt-zb-theme` branches; see [`../GAPS.md`](../GAPS.md)). Realizes [`../spec/SPEC.md`](../spec/SPEC.md). + +`0.2.0` adds **shared nav-expand persistence**: `NavRailSection` gained a `Key` parameter (emitted as +`data-nav-key`, defaulting to a slug of `Title`), a vendored `wwwroot/js/nav-state.js` localStorage enhancer +(keyed by `data-nav-key`, prefix `zbnav:`, idempotent), and a new **`ThemeScripts`** component (sibling to +`ThemeHead`) that emits the enhancer `