feat(ms-ai-architect): playground v1.14.0 — root-cause refaktor mot 10+ visuelle bugs

DS-konvensjon-adopsjon på 14 renderere over 6 sesjoner. Etter v1.13.0/.1
patchet 10+ symptomatiske visuelle bugs (191 linjer lokal CSS, 21
fix-kommentarer), grep v1.14.0 root-cause via DS v0.4.0 + per-renderer
refaktor.

Sesjon 2 — DS v0.4.0:
- B-DS-1: kanban-card word-break (break-all → break-word)
- B-DS-2: expansion title-main/sub display:block (var inline)
- B-DS-3: matrix-bubble cursor + hover/focus

Sesjon 3 — risk-renderere til DS-summary-grid + ros-layout
(renderDpia, renderSecurity, renderRos)

Sesjon 4 — 6 compliance/govern-renderere bytter .report-meta-wrapper
mot DS-konvensjon (renderAiActPyramid, renderRequirements,
renderConformity, renderTransparency, renderFria, renderReview)

Sesjon 5 — phase-renderere til expansion-list per fase
(renderMigrate, renderPoc — slett .phase-detail-CSS)

Sesjon 5b — lavt-scope renderer-fixes:
- renderCost: ekstraher .monthly fra p50/p90-objekter
  (key-stats viste \"[object Object]\")
- renderCompare: distinctive-token-matching erstatter firstWord-heuristikk
- renderUtredning: droppet misvisende role=\"tab\"

Sesjon 6 — ship: kommentar-kompaksjon (145 → 122 linjer), 24 screenshots
regenerert til v1.14.0/, dokumentasjon (3 nivåer), versjonsbump,
mellomfiler slettet.

Lokal style-blokk: 191 → 122 effektive linjer (~36% reduksjon)
DS bumpet til v0.4.0 (delt mellom plugins, andre re-syncer på eget tempo)
17 renderere PASS visuell QA mot demo-data i begge themes
219 plugin-validering, 272 E2E playground, 7 migrations PASS

Refs V1.14.0-PLAN + V1.14.0-AUDIT (slettet ved ship per plan).
This commit is contained in:
Kjell Tore Guttormsen 2026-05-08 21:20:08 +02:00
commit 041e3cc6b3
31 changed files with 88 additions and 51 deletions

View file

@ -164,7 +164,7 @@ Key command: `/graceful-handoff [topic-slug] [--no-commit] [--no-push] [--dry-ru
---
### [MS AI Architect — Azure AI and Microsoft Foundry](plugins/ms-ai-architect/) `v1.13.1` `🇳🇴 Norwegian`
### [MS AI Architect — Azure AI and Microsoft Foundry](plugins/ms-ai-architect/) `v1.14.0` `🇳🇴 Norwegian`
Microsoft AI solution architecture guidance for Norwegian public sector and enterprise.
@ -179,16 +179,16 @@ Key commands: `/architect`, `/architect:ros`, `/architect:security`, `/architect
12 specialized agents · 25 commands · 5 skills (387 reference docs) · 2 hooks · manual sitemap-driven KB refresh
**One-click demo (v1.11.0, 2026-05-04):** "Last inn demo-data"-knappen på onboarding bootstrapper en ferdig "Acme Kommune" med demo-prosjektet "Acme: Kunde-chatbot" og alle 17 rapport-typer pre-importert som `raw_markdown` (konsistente navn på tvers av alle fixtures). Visualisering rehydreres automatisk på project-surface mount. 24 retina-screenshots committed under `playground/screenshots/v1.11.0/` (12 surfaces × 2 tema), så forkere ser pluginen uten å kjøre noe. Standalone Playwright-runner under `tests/screenshot/` (egen `package.json`).
**One-click demo (v1.14.0, 2026-05-08):** "Last inn demo-data"-knappen på onboarding bootstrapper en ferdig "Acme Kommune" med demo-prosjektet "Acme: Kunde-chatbot" og alle 17 rapport-typer pre-importert som `raw_markdown` (konsistente navn på tvers av alle fixtures). Visualisering rehydreres automatisk på project-surface mount. 24 retina-screenshots committed under `playground/screenshots/v1.14.0/` (12 surfaces × 2 tema), så forkere ser pluginen uten å kjøre noe. Standalone Playwright-runner under `tests/screenshot/` (egen `package.json`).
**Playground (v3, v1.11.0 — design-system 100%-adoption, 2026-05-04):** Multi-surface decision-builder + report viewer. The single-file HTML app lives at `playground/ms-ai-architect-playground.html` (~3870+ lines). v1.11.0 fullfører design-system-adopsjonen — alle PARALLEL CSS-navn migrert til DS-konvensjon, 13 generiske komponenter hoisted til `shared/playground-design-system` v0.3.0, inline `<style>`-blokk trimmet 37%, severity-coded card borders, app-header med breadcrumb, `.stack-lg` body spacing, AI Act-pyramide bredde-fix.
**Playground (v3, v1.14.0 — root-cause refaktor, 2026-05-08):** Multi-surface decision-builder + report viewer. The single-file HTML app lives at `playground/ms-ai-architect-playground.html` (~3870+ lines). v1.14.0 leverer DS-konvensjon-adopsjon på 14 renderere over 6 sesjoner: B-DS-1/2/3 fikset i shared/ DS v0.4.0 (kanban-card word-break, expansion title-block, matrix-bubble cursor); 3 risk-renderere til DS-summary-grid + ros-layout; 6 compliance/govern-renderere bytter `.report-meta`-wrapper mot DS-konvensjon; renderMigrate + renderPoc til expansion-list per fase; 5b-fixes i renderCost/renderCompare/renderUtredning. Lokal `<style>`-blokk: 191 → 122 effektive linjer (~36% reduksjon siden v1.13.1).
- **4 surfaces:** Onboarding (4 strukturerte / 14 fritekst, prefill alle command-skjemaer) → Home (project list + 3 entry tracks) → Catalog (24 commands grouped in 5 expansion categories with search) → Project (per-project tabs, command-form prefill, paste-back report import + visualization)
- **Persistence:** IndexedDB primary + localStorage fallback, schema-versioned (`STATE_KEY = 'ms-ai-architect-state-v1'`) with eager migrations pipeline. v1.10.0 adds idempotent `dataVersion v1→v2` migration that backfills `verdict` + `keyStats` on existing reports.
- **17 inline report renderers (felles grunnskjelett)** — all wrap output through `renderPageShell()` with eyebrow + h1 + optional verdict-pill + optional key-stats-grid + archetype body (pyramid, 5×5/6×5/7×5 matrix, radar, kanban, mat-ladder, scenario-cards, screen-tabs, residual-pair, top-risks, recommendation-card, suppressed-panel, critique-card, read-more, traffic-light).
- **Foundation helpers**`renderPageShell`, `renderVerdictPill`, `renderKeyStatsGrid`, `inferVerdict`, `inferKeyStats`, `KEY_STATS_CONFIG`.
- **Light/dark theme toggle** with Aksel-aligned tokens in both modes (full WCAG AA contrast). Persisted in `localStorage('ms-ai-architect-theme')`, FOUC-safe via `<head>`-bootstrap script.
- **Validation:** 278 PASS combined — 201 static + 70 parser-fixture + 7 migration. `bash tests/run-e2e.sh --playground` runs static-structure + parser-fixture suites.
- **Validation:** 272 PASS combined — 201 static + 70 parser-fixture + 1 verdict-pill. `bash tests/run-e2e.sh --playground` runs static-structure + parser-fixture suites. Migrations 7 PASS separat. Plugin-validering 219 PASS.
- **Vendored design-system** at `playground/vendor/`, kept in sync via `scripts/sync-design-system.mjs ms-ai-architect`. Standalone — opens from `file://` without server or marketplace dependency.
→ [Full documentation](plugins/ms-ai-architect/README.md)

View file

@ -1,6 +1,6 @@
{
"name": "ms-ai-architect",
"version": "1.13.1",
"version": "1.14.0",
"description": "Microsoft AI Solution Architect - structured architecture guidance for the full Microsoft AI stack",
"author": {
"name": "Kjell Tore Guttormsen"

View file

@ -5,6 +5,63 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.14.0] - 2026-05-08
### Changed — playground root-cause refaktor (6 sesjoner)
Etter v1.13.0 + v1.13.1 patchet 10+ symptomatiske visuelle bugs, dokumenterte v1.14.0-arbeidet at vi brukte DS via "band-aid lokal CSS" (191 linjer, 21 fix-kommentarer) i stedet for DS-konvensjoner. Brukeren valgte root-cause-fix etter å ha lastet ned Anthropic Plugin-Playground v3 referansepakke. Resultatet er DS-konvensjon-adopsjon på tvers av 14 renderere, lokal CSS halvert, og alle reported visuelle bugs løst på rotnivå.
#### Sesjon 2: DS root-cause fix (DS v0.3.x → v0.4.0)
Tre DS-bugs som tidligere ble symptomatisk patchet i lokal CSS er nå fikset i `shared/playground-design-system/components-tier3-supplement.css` og re-syncet til `playground/vendor/`:
- **B-DS-1: `.kanban-card__name`.** `word-break: break-all` knekket midt i ord — endret til `word-break: break-word` + `overflow-wrap: anywhere`. Tilsvarende lokal override i ms-ai-architect playground slettet.
- **B-DS-2: `.expansion__title-main` + `.expansion__title-sub`.** `display: inline` gjorde at title-main og title-sub kjørte sammen på samme linje. Endret til `display: block` så de stables vertikalt. Lokal override slettet.
- **B-DS-3: `.matrix__bubble`.** Manglet `cursor: pointer`, hover-effekt og `:focus-visible` outline når bobler er klikkbare. Lagt til som en del av base-mønsteret.
#### Sesjon 3: Risk-rapporter til DS-konvensjon
`renderDpia`, `renderSecurity`, `renderRos` refaktorert til DS-summary-grid + ros-layout-mønster fra Anthropic-ref `ros-lier-kommune.html`-scenario. Matrix i hovedcell + radar i `<aside class="card">`, top-risks som `<ol class="top-risks">` inne i `<div class="card">`, findings med riktig list-only-mønster (BEM-struktur uendret). Defensive `display:block; clear:both` for `.top-risks` slettet — DS-pattern løser layout uten override.
#### Sesjon 4: Compliance/govern-rapporter til DS-konvensjon
6 renderere bytter lokal `.report-meta`-wrapper mot DS-mønstre:
- `renderAiActPyramid` — pyramide + tier-descs + `<dl class="adr-meta">` for forpliktelser
- `renderRequirements``<div class="findings">` med `findings__list` (master-detail riktig nå)
- `renderConformity` — kanban full bredde over, `<section class="aiact-timeline-section">` full bredde under
- `renderTransparency` — ren `<article>`-struktur uten `.report-meta`-wrapper
- `renderFria` — DPIA-lignende mønster
- `renderReview` — kanban + suppressed-panel som tydelig under-seksjon
#### Sesjon 5: Phase-rapporter til expansion-list
`renderMigrate` + `renderPoc` bytter parallell-bullet `.phase-detail`-seksjoner mot `<div class="expansion">`-list (DS-supplement) — én expansion per fase med traffic-list inne i body. `phases-summary`-tabellen beholdt over expansion-listen for tabell-sammendrag. Lokal `.phase-detail`-CSS slettet.
#### Sesjon 5b: Lavt-scope renderer-fixes
Verifikasjon av tre renderere som ikke krevde DS-refaktor men hadde subtle bugs:
- **`renderCost` key-stats.** `KEY_STATS_CONFIG['cost-distribution']` og `inferVerdict('cost-distribution')` viste "[object Object]" og returnerte alltid 'go' fordi parser-output har `p50/p90 = {monthly, yearly}`-objekter, ikke tall. Begge ekstraherer nå `.monthly` med fallback for flate fixtures.
- **`renderCompare` vinn-attribusjon.** `firstWord`-heuristikk feilet når begge subjekter delte førsteord (f.eks. "Azure AI Foundry" vs "Azure ML + AKS" ga begge fw='azure', kollapset vinn-attribusjon). Erstattet med distinctive-token-matching: full-subject-substring først, deretter ord som er unike for ett subjekt.
- **`renderUtredning` aria-pattern.** Droppet misvisende `role="tab"` / `role="tablist"` (vi rendrer ikke ekte tab-toggle, alle paneler er synlige). Beholdt `aria-current="true"` for visuell aktiv-markør. Ekte tab-toggle defer til v1.15.0.
### Removed
- Lokal `.phase-detail`-CSS (overflødig etter expansion-list-refaktor)
- Lokal `.report-meta`-wrapper-CSS (alle 6 compliance/govern-renderere bytter til DS-pattern)
- Defensive containment-overrides (top-risks/aiact-timeline/phase-detail `clear: both; display: block; width: 100%`)
- Tre lokal-overrides slettet i sesjon 2: `.kanban-card .kanban-card__name { word-break: break-word }`, `.expansion__title-main, .expansion__title-sub { display: block }`, og matrix-bubble cursor/hover-overrides
### Notes on 1.14.0
- Lokal `<style>`-blokk: 191 → 122 effektive linjer (~36% reduksjon siden v1.13.1)
- DS bumpet til v0.4.0 (delt mellom plugins, andre re-syncer på eget tempo)
- Alle 17 renderere PASS visuell QA mot demo-data i begge themes
- Plugin-validering: 219 PASS. Playground E2E: 272 PASS. Migrations: 7 PASS. Full E2E: 42 PASS.
- 24 screenshots (12 surfaces × 2 tema, retina, fullPage) regenerert til `playground/screenshots/v1.14.0/`. v1.10.0 + v1.11.0 beholdt som historisk referanse.
- Refs `V1.14.0-PLAN.local.md` + `V1.14.0-AUDIT.local.md` (slettet ved ship per plan).
## [1.13.1] - 2026-05-06
### Fixed — playground visuelle bugs (post-v1.13.0 manuell QA)

View file

@ -187,9 +187,9 @@ claude --plugin ./plugins/ms-ai-architect
/architect:help
```
## Playground (v3 / v1.13.1)
## Playground (v3 / v1.14.0)
Interaktiv decision-builder + rapport-viewer for Microsoft AI-beslutninger. Erstatter v2 5-stegs-pipelinen med en multi-surface-app som persisterer state og visualiserer importerte rapporter inline. Spec: v3-arkitektur dokumentert under `.claude/projects/2026-05-03-playground-v3-architecture/`. v1.10.0-utvidelser dokumentert under `.claude/projects/2026-05-03-ms-ai-architect-v1-10-playground/`. v1.11.0 leverer design-system 100%-adoption (PARALLEL-CSS-migrasjon til DS-konvensjon, inline `<style>`-trim 37%, severity-coded card borders, app-header-restruktur, `.stack-lg` body spacing, AI Act-pyramide bredde-fix). v1.13.0 leverer fix-pakke som speiler llm-security v7.6.1 — 5 visuelle bugs fikset: `renderFindingsBlock`/`renderRequirements` outer-wrapper bytter `<div class="findings">` (DS grid 360px+1fr klemte indre struktur) til `<section class="report-meta">`; lokal `.report-table` CSS for 6+ rapporter; ROS-matrise-bobler bytter `<span>``<button>` med `data-threat-id` + click-handler som scroller til Trusler-tabell-rad; `renderRadarSvg` bumpet 300×300→380×380 med dynamisk `text-anchor` for å unngå label-overlap ved 6+ akser; `recommendation-card__body` overflow-wrap.
Interaktiv decision-builder + rapport-viewer for Microsoft AI-beslutninger. Erstatter v2 5-stegs-pipelinen med en multi-surface-app som persisterer state og visualiserer importerte rapporter inline. Spec: v3-arkitektur dokumentert under `.claude/projects/2026-05-03-playground-v3-architecture/`. v1.10.0-utvidelser dokumentert under `.claude/projects/2026-05-03-ms-ai-architect-v1-10-playground/`. v1.11.0 leverer design-system 100%-adoption (PARALLEL-CSS-migrasjon til DS-konvensjon, inline `<style>`-trim 37%, severity-coded card borders, app-header-restruktur, `.stack-lg` body spacing, AI Act-pyramide bredde-fix). v1.13.0/.1 patchet 10+ symptomatiske visuelle bugs. v1.14.0 leverer root-cause refaktor over 6 sesjoner: B-DS-1/2/3 fikset i shared/ DS v0.4.0 (kanban-card word-break, expansion title-block, matrix-bubble cursor); 3 risk-renderere (renderDpia/Security/Ros) til DS-summary-grid + ros-layout; 6 compliance/govern-renderere bytter lokal `.report-meta`-wrapper mot DS-konvensjon; renderMigrate + renderPoc til expansion-list per fase (slett `.phase-detail`-CSS); 5b-fixes: renderCost p50/p90-objekter ekstrahert via `.monthly` (var "[object Object]"), renderCompare distinctive-token-matching erstatter firstWord-heuristikk, renderUtredning droppet misvisende `role="tab"`. Lokal `<style>`-blokk: 191 → 122 effektive linjer (~36% reduksjon). Alle 17 renderere PASS visuell QA.
- **Fil:** `playground/ms-ai-architect-playground.html` (~3870+ linjer, single-file v3-arkitektur)
- **4 surfaces:** Onboarding (18 felles felt — 4 strukturerte / 14 fritekst etter v1.10.0) → Home (prosjekt-liste + 3 entry-tracks) → Catalog (25 commands gruppert i 5 expansion-grupper med søk) → Project (per-prosjekt tabs, command-form-prefill fra felles state, paste-back-import med rapport-visualisering)
@ -200,14 +200,15 @@ Interaktiv decision-builder + rapport-viewer for Microsoft AI-beslutninger. Erst
- **Theme:** Mørk default + lys theme-toggle med Aksel-tokens i begge moduser (lagt til i v1.10.0). Persistert i `localStorage('ms-ai-architect-theme')`. Theme-bootstrap-script i `<head>` unngår FOUC.
- **Eksport/import:** JSON Decision Record-envelope (Blob + FileReader), schema-versjon-bevisst på import.
### Validering (v1.10.0-tall)
### Validering (v1.14.0-tall)
| Test | Kommando | Dekning |
|------|----------|---------|
| Statisk struktur | `bash tests/test-playground-v3.sh` | 202 PASS — vendored CSS, surfaces, 25 commands, 14 parsere, 17 renderers (felles grunnskjelett), design-system-klasser, action-handlers, Tier 3-bruk, onboarding field-distribution |
| Parser-fixtures | `bash tests/test-playground-parsers.sh` | 70 PASS — 17 fixtures × parser-routing |
| Migrasjon | `bash tests/test-playground-migrations.sh` | 7 PASS — v1→v2 idempotent migrasjon |
| Kombinert (E2E) | `bash tests/run-e2e.sh --playground` | statisk + parser-suiter |
| Kombinert (E2E) | `bash tests/run-e2e.sh --playground` | 272 PASS — statisk + parser-suiter |
| Plugin-validering | `bash tests/validate-plugin.sh` | 219 PASS |
| Manuell A11Y QA | Se `playground/MANUAL-CHECKLIST.md` | 10 seksjoner inkl. axe-core-kjøring per surface |
| A11Y-rapport | `playground/A11Y-RAPPORT.md` | Statisk vurdering klar — browser-axe-kjøring pending |
@ -215,9 +216,9 @@ Interaktiv decision-builder + rapport-viewer for Microsoft AI-beslutninger. Erst
`scripts/build-demo-state.mjs` leser alle 17 fixture-filer fra `playground/test-fixtures/` og injiserer dem som en `<script type="application/json" id="demo-state-v1">`-blokk i playground HTML (idempotent — erstatter eksisterende blokk). "Last inn demo-data"-knappen på onboarding-overflaten kaller `ACTIONS['load-demo']` som leser blokken, erstatter alle state-grener via Proxy-mutasjon, og navigerer til project-surface med 17 pre-importerte rapporter. `rehydratePasteImports()` kjøres via `queueMicrotask` etter project-surface render — fyller textareas fra `project.reports[id].raw_markdown` og kaller `handlePasteImport` for hver. `handlePasteImport` har equal-value-guard for å unngå render-loop.
`tests/screenshot/` inneholder en frittstående Playwright-runner med egen `package.json` (gitignored `node_modules`). `node run.mjs` produserer 24 PNG-er (12 surfaces × 2 tema, retina, fullPage) under `playground/screenshots/v1.11.0/` (v1.10.0 beholdt som historisk referanse). Disse committes så forkere ser pluginen uten å installere noe. Demo-org er "Acme Kommune" og demo-prosjekt er "Acme: Kunde-chatbot" — konsistente navn på tvers av alle 17 fixtures (etter v1.11.0 rename fra "Acme AS" / "Demosystem").
`tests/screenshot/` inneholder en frittstående Playwright-runner med egen `package.json` (gitignored `node_modules`). `node run.mjs` produserer 24 PNG-er (12 surfaces × 2 tema, retina, fullPage) under `playground/screenshots/v1.14.0/` (v1.10.0 + v1.11.0 beholdt som historisk referanse). Disse committes så forkere ser pluginen uten å installere noe. Demo-org er "Acme Kommune" og demo-prosjekt er "Acme: Kunde-chatbot" — konsistente navn på tvers av alle 17 fixtures (etter v1.11.0 rename fra "Acme AS" / "Demosystem").
### Design-system 100%-adoption (v1.11.0)
### Design-system 100%-adoption (v1.11.0 → v1.14.0)
Sesjon 3-5 la til inline CSS i `playground/ms-ai-architect-playground.html`. v1.11.0 hoisted alle generiske komponenter til `shared/playground-design-system/components-tier3-supplement.css` (DS v0.3.0):
- `.pyramide-desc` / `.pyramide-desc__item`
@ -229,7 +230,9 @@ Sesjon 3-5 la til inline CSS i `playground/ms-ai-architect-playground.html`. v1.
- `.suppressed-panel`
- `.screen-tabs` / `.screen-tab` / `.screen[data-active]`
Alle PARALLEL-CSS-navngrupper migrert til DS-konvensjon. Inline `<style>`-blokk trimmet 202 → 127 linjer (~37%). `renderPageShell` + `renderKeyStatsGrid` refaktorert til DS markup. Severity-coded card-borders på rapport-cards, app-header-restruktur, `.stack-lg` body spacing på home/project/catalog, AI Act-pyramide bredde-fix, eyebrow-label på home-projects.
v1.14.0 (DS v0.4.0): root-cause fix for tre DS-bugs som tidligere ble symptomatisk patchet i lokal CSS — `.kanban-card__name` (break-word + overflow-wrap; var break-all), `.expansion__title-main/sub` (display: block), `.matrix__bubble` (cursor + hover/focus). Fix-en re-syncet til vendored DS, og tilsvarende lokal-overrides slettet. Plus: 14 renderere refaktorert til DS-konvensjon (3 risk-renderere → DS-summary-grid + ros-layout, 6 compliance/govern-renderere → DS-konvensjon, renderMigrate + renderPoc → expansion-list per fase). Lokal `<style>`-blokk: 191 → 122 effektive linjer (~36% reduksjon siden v1.13.1).
Alle PARALLEL-CSS-navngrupper migrert til DS-konvensjon. `renderPageShell` + `renderKeyStatsGrid` refaktorert til DS markup. Severity-coded card-borders på rapport-cards, app-header-restruktur, `.stack-lg` body spacing på home/project/catalog, AI Act-pyramide bredde-fix, eyebrow-label på home-projects.
Ved videre hoisting: re-sync via `node scripts/sync-design-system.mjs ms-ai-architect`. Dette er endringer i delt asset — krever drift-deteksjon-handling per `MANIFEST.json`.

View file

@ -6,7 +6,7 @@
*AI-generated: all code produced by Claude Code through dialog-driven development. [Full disclosure →](../../README.md#ai-generated-code-disclosure)*
![Version](https://img.shields.io/badge/version-1.13.1-blue)
![Version](https://img.shields.io/badge/version-1.14.0-blue)
![Platform](https://img.shields.io/badge/platform-Claude_Code_Plugin-purple)
![Docs](https://img.shields.io/badge/reference_docs-387-green)
![Agents](https://img.shields.io/badge/agents-12-orange)
@ -638,6 +638,7 @@ Category-to-skill routing is defined in `scripts/skill-gen/category-skill-map.js
| Version | Date | Highlights |
|---------|------|-----------|
| **1.14.0** | 2026-05-08 | Playground root-cause refaktor — DS-konvensjon-adopsjon på tvers av 14 renderere over 6 sesjoner. Sesjon 2: B-DS-1/2/3 fikset i shared/ DS v0.4.0 (kanban-card word-break, expansion title-block, matrix-bubble cursor). Sesjon 3: renderDpia/Security/Ros til DS-summary-grid + ros-layout. Sesjon 4: 6 compliance/govern-renderere bytter `.report-meta`-wrapper mot DS-konvensjon (renderAiActPyramid, renderRequirements, renderConformity, renderTransparency, renderFria, renderReview). Sesjon 5: renderMigrate + renderPoc → expansion-list per fase (slett `.phase-detail`-CSS). Sesjon 5b: renderCost key-stats viste "[object Object]" (parser-output har p50/p90 = {monthly,yearly}-objekter — nå ekstrahert via `.monthly`); renderCompare distinctive-token-matching erstatter firstWord-heuristikk; renderUtredning droppet misvisende `role="tab"`-attributter. Lokal `<style>`-blokk: 191 → 122 effektive linjer (~36% reduksjon). 17 renderere PASS visuell QA mot demo-data. 219 plugin-validering, 272 E2E playground, 7 migrations PASS. 24 screenshots regenerert. |
| **1.13.1** | 2026-05-06 | Playground visual bugs patch — 10 bugs identifisert post-v1.13.0 av maintainer i nettleser. Fixet: (B7) classify Forpliktelser indent via `.report-meta` CSS-reset; (B8a) `requirement-expand` ACTIONS-handler manglet — R-01..R-09-rader i AI Act-krav var ikke klikkbare; (B8b) expansion title-main + title-sub display:block så de stables; (B10) kanban-card `word-break:break-word` override DS' break-all; (B11) DPIA matrix-bobler match by description (Pass 1 first-cell exact + Pass 2 any-cell substring); (B12, B13, B15) defensive `display:block; clear:both; width:100%` på top-risks/suppressed-panel/phase-detail/aiact-timeline; (B14) Migrate/POC phases-summary-tabell over phase-detail-seksjoner. 23/23 smoke + 271 E2E + 219 plugin-validering. |
| **1.13.0** | 2026-05-06 | Playground visual DS-fixes — 5 bugs identifisert og fikset i fix-pakke som speiler llm-security v7.6.1: (B1) `renderFindingsBlock` + `renderRequirements` outer-wrapper byttet fra `<div class="findings">` (DS grid 360px+1fr klemte indre struktur) til `<section class="report-meta">`; (B2) lokal `.report-table` CSS for 6+ rapporter (Trusler, Kostnadsoversikt, TCO, Risiko, Key Metrics) som manglet styling; (B3) ROS-matrise-bobler byttet `<span>``<button>` med `data-threat-id` + click-handler som scroller til Trusler-tabell-rad og highlighter; (B4) `renderRadarSvg` bumpet 300×300→380×380, R=125, dynamisk `text-anchor` for å unngå label-overlap ved 6+ akser; (B5) `recommendation-card__body` overflow-wrap. 22/22 smoke-test PASS. 219 plugin-validering. 272 E2E. |
| **1.12.0** | 2026-05-05 | Manuell KB-refresh-arbeidsflyt — ny `/architect:kb-update` slash-kommando som driver poll → endringsrapport → `microsoft_docs_fetch`-oppdatering → commit fra en aktiv Claude Code-sesjon. Schedulering er bevisst utenfor scope og overlatt til brukeren. Tidligere launchd/cron-arkitektur (Wave 3-5: install-kb-cron, weekly-kb-cron, plist/systemd/Windows-templates, auth-mode-validation, lock-file, cost-cap, kb-update-status surfacing i session-start-hook) fjernet — ~1500 linjer kode + 7 testmoduler ut. Holder pluginen klart innenfor Anthropic Consumer Terms § 3 (automated access only via API key or where explicitly permitted). Beholdte utilities (atomic-write, backup, cross-platform-paths, log-rotate) + run-weekly-update + report-changes + build-registry + discover-new-urls fortsatt fullt funksjonelle for change-detection-fasen. 42/42 KB-update-tester PASS. |

View file

@ -45,9 +45,7 @@
<style>
main#app { min-height: 100vh; padding: 0; }
/* Hidden-attribute respekt. Vendored .error-summary, .modal-backdrop osv.
setter eksplisitt display, som overstyrer HTMLs default [hidden] {display:none}.
Globalt override slik at hidden-attributt faktisk skjuler elementet. */
/* Hidden-attribute respekt: vendored DS setter eksplisitt display, overstyrer HTMLs [hidden]. */
[hidden] { display: none !important; }
/* .app-shell + .app-shell--wide hentet fra vendored DS v0.3 (tier3-supplement section 25) */
@ -129,13 +127,9 @@
/* .card + .card__* hentet fra vendored DS (base.css + tier3-supplement). */
.catalog-tool-notice { padding: var(--space-2) var(--space-3); background: var(--color-bg-soft); border-left: 3px solid var(--color-primary-500); border-radius: var(--radius-sm); font-size: var(--font-size-xs); color: var(--color-text-secondary); }
/* Foundation .page__*, .key-stats, .key-stat--{level} hentet fra vendored DS (tier3-supplement section 14-15).
.top-risks*, .top-risk*, .recommendation-card* hentet fra DS section 18-19.
.pair-before-after*, .pyramide-tier-detail*, .tab-list/.tab/.tab-panel også fra DS. */
/* Foundation patterns (page__*, key-stats, top-risks, recommendation-card, pair-before-after, pyramide-tier-detail, tab-list) hentet fra vendored DS. */
/* .verdict-pill: plugin-domain semantikk (go/block/approved/allow/warning/n-a) — distinkt fra
DS .verdict-pill-lg (severity-band: critical/high/medium/low/positive). Domain-pillen brukes
av architect-rapporter for GO/BLOCK-beslutninger; severity-pillen brukes for risiko-band. */
/* .verdict-pill: plugin-domain semantikk (go/block/approved/allow/warning/n-a) — distinkt fra DS .verdict-pill-lg (severity-band). */
.verdict-pill { display: inline-flex; align-items: center; padding: var(--space-2) var(--space-4); border-radius: var(--radius-pill); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: 0.06em; white-space: nowrap; flex-shrink: 0; }
.verdict-pill[data-verdict="go"],
.verdict-pill[data-verdict="approved"],
@ -146,20 +140,17 @@
.verdict-pill[data-verdict="failed"] { background: var(--color-severity-critical); color: var(--color-severity-critical-on); }
.verdict-pill[data-verdict="n-a"] { background: var(--color-bg-soft); color: var(--color-text-secondary); border: 1px solid var(--color-border-subtle); }
/* .scenario-card[data-status="met/partial/missing"]: plugin-spesifikke 3-stadie-status —
DS har kun "winner". Beholdt for AI Act / cost-distribution / capability-matrix-renderers. */
/* .scenario-card[data-status]: plugin-spesifikke 3-stadie-status — DS har kun "winner". Brukt i AI Act / cost / capability-matrix. */
.scenario-card[data-status="met"] { border-left: 4px solid var(--color-state-success); }
.scenario-card[data-status="partial"] { border-left: 4px solid var(--color-severity-medium); }
.scenario-card[data-status="missing"] { border-left: 4px solid var(--color-severity-critical); }
/* AI Act-pyramide-overrides: bumpe label-font så tier-tekst ikke klippes,
sikre tilstrekkelig parent-bredde (DS-default har ingen min-width). */
/* AI Act-pyramide-overrides: bumpe label-font så tier-tekst ikke klippes, sikre tilstrekkelig parent-bredde. */
.pyramide { min-width: 480px; max-width: 100%; }
.pyramide__tier { font-size: var(--font-size-md); padding: var(--space-3) var(--space-4); }
@media (max-width: 560px) { .pyramide { min-width: 0; } .pyramide__tier { font-size: var(--font-size-sm); padding: 8px 12px; } }
/* .read-more-block + .suppressed-panel: native <details>-baserte mønstre — distinkte fra
DS .read-more og .suppressed (som bruker JS-toggled aria-expanded). */
/* .read-more-block + .suppressed-panel: native <details>-baserte mønstre — distinkte fra DS .read-more / .suppressed (JS-toggled). */
.read-more-block { margin: var(--space-2) 0; }
.read-more-block summary { cursor: pointer; color: var(--color-text-link); font-weight: var(--font-weight-medium); }
.suppressed-panel { margin: var(--space-4) 0 0 0; padding: var(--space-3) var(--space-4); background: var(--color-bg-soft); border: 1px dashed var(--color-border-subtle); border-radius: var(--radius-md); opacity: 0.85; }
@ -169,10 +160,7 @@
.suppressed-panel__item { padding: var(--space-2) var(--space-3); background: var(--color-surface); border: 1px solid var(--color-border-subtle); border-radius: var(--radius-sm); font-size: var(--font-size-sm); color: var(--color-text-secondary); display: flex; gap: var(--space-3); align-items: baseline; }
.suppressed-panel__id { font-family: var(--font-family-mono); font-size: var(--font-size-xs); color: var(--color-text-tertiary); }
/* v1.13.0 fix (B2): .report-table — DS har ikke implementert denne klassen, men
playground-rendrere bruker den i 6+ rapporter (Trusler, Kostnadsoversikt,
TCO, Risiko-tabell, Key Metrics). Lokal styling som komplementerer DS-tokens.
Speilet fra llm-security v7.6.1 commit f9b555a. */
/* v1.13.0 fix (B2): .report-table — DS har ikke denne klassen, brukt i 6+ rapporter. Speilet fra llm-security v7.6.1. */
.report-table { width: 100%; border-collapse: collapse; margin: var(--space-3) 0; font-size: var(--font-size-sm); }
.report-table th { text-align: left; padding: 8px 12px; border-bottom: 2px solid var(--color-border-moderate); background: var(--color-bg-soft); font-weight: var(--font-weight-semibold); color: var(--color-text-secondary); text-transform: uppercase; font-size: 11px; letter-spacing: 0.04em; }
.report-table td { padding: 8px 12px; border-bottom: 1px solid var(--color-border-subtle); vertical-align: top; color: var(--color-text-primary); }
@ -180,13 +168,10 @@
.report-table tbody tr:hover { background: var(--color-bg-soft); }
.report-table code { font-family: var(--font-family-mono); font-size: 12px; background: var(--color-surface-sunken); padding: 1px 6px; border-radius: var(--radius-sm); }
/* v1.13.0 fix (B5): recommendation-card body kan inneholde lange single-line
tekster (URLer, owner-tags, dato). Tving word-wrap så grid-celle (auto + 1fr)
ikke skubber innhold utenfor viewport. */
/* v1.13.0 fix (B5): recommendation-card body — tving word-wrap for lange URLer/owner-tags i grid-celle. */
.recommendation-card__body { overflow-wrap: anywhere; word-break: break-word; }
/* v1.14.0 sesjon 3: layout-utilities for risk-rapporter (renderDpia, renderSecurity, renderRos).
Speiler Anthropic-ref ros-lier-scenario. Hoist til DS i v1.15.0 hvis andre plugins trenger samme. */
/* v1.14.0 sesjon 3: layout-utilities for risk-rapporter (renderDpia/Security/Ros). Speiler Anthropic-ref ros-lier-scenario. Hoist til DS i v1.15.0. */
.ros-layout { display: grid; grid-template-columns: 1fr 320px; gap: var(--space-6); align-items: start; margin-block: var(--space-5); }
.summary-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-5); align-items: start; margin-block: var(--space-5); }
@media (max-width: 980px) { .ros-layout, .summary-grid { grid-template-columns: 1fr; } }
@ -199,17 +184,8 @@
.adr-meta dt { font-weight: var(--font-weight-semibold); color: var(--color-text-secondary); }
.adr-meta dd { margin: 0; color: var(--color-text-primary); }
/* B-DS-1, B-DS-2, B-DS-3 (v1.14.0 sesjon 2): tre lokal-overrides slettet.
Fixes nå i shared/playground-design-system/ v0.4.0:
- .kanban-card__name (break-word + overflow-wrap)
- .expansion__title-main/sub (display: block)
- .matrix__bubble (cursor + hover + focus) */
/* v1.14.0 sesjon 5: .phase-detail-CSS slettet — renderMigrate + renderPoc
bruker nå <div class="expansion">-list (DS-supplement) i stedet for det
lokale .phase-detail-mønsteret. v1.13.1-defensive layout-overrides for
.top-risks (sesjon 3), .aiact-timeline + .report-meta + .suppressed-panel
(sesjon 4) og .phase-detail (sesjon 5) er nå alle ute. */
/* B-DS-1/2/3 (sesjon 2): kanban-card-word-break, expansion-title-block, matrix-bubble-cursor — fix i shared/ DS v0.4.0. */
/* v1.14.0 sesjon 5: .phase-detail-CSS slettet (renderMigrate/Poc bruker DS expansion); v1.13.1-defensive overrides for top-risks/aiact-timeline/report-meta/suppressed-panel/phase-detail clear:both alle ute. */
</style>
</head>
<body>

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 961 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

View file

@ -1,5 +1,5 @@
#!/usr/bin/env node
// Capture playground screenshots for v1.11.0 documentation.
// Capture playground screenshots for v1.14.0 documentation.
//
// Opens the single-file playground HTML via file://, drives it through:
// - Initial onboarding (empty state)
@ -8,7 +8,7 @@
// - Each rapport-tab category (regulatory / security / economy / docs / tool)
// - Both themes (dark + light)
//
// Output: playground/screenshots/v1.11.0/<surface>-<theme>.png
// Output: playground/screenshots/v1.14.0/<surface>-<theme>.png
//
// Usage:
// cd tests/screenshot
@ -25,7 +25,7 @@ const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const PLUGIN_ROOT = resolve(__dirname, '..', '..');
const HTML_PATH = join(PLUGIN_ROOT, 'playground', 'ms-ai-architect-playground.html');
const OUT_DIR = join(PLUGIN_ROOT, 'playground', 'screenshots', 'v1.11.0');
const OUT_DIR = join(PLUGIN_ROOT, 'playground', 'screenshots', 'v1.14.0');
const HTML_URL = 'file://' + HTML_PATH;
const VIEWPORT = { width: 1440, height: 900 };