fix(llm-security): playground v7.6.1 — visuelle bugs i v7.6.0

Seks bugs fanget av maintainer ved manuell verifisering i nettleser etter
v7.6.0-release. Alle skyldes mismatch mellom DS-klasser og hvordan
playground-rendrere brukte dem, eller manglende DS-implementasjoner av
klasser playground-rendrere antok eksisterte.

Fixes:
- renderFindingsBlock brukte .findings outer-class som DS har som
  2-kolonners grid (360px list + 1fr detail-panel) — headeren havnet
  i venstre kolonne, items i høyre, brutt layout i alle 18 rapporter
  med findings. Erstattet med .report-meta + h4 + findings__list >
  findings__group + findings__group-header + findings__items
  (korrekt DS-mønster, kun list-delen).
- .report-table manglet helt i DS men brukes i 7+ rendrere (OWASP,
  Supply chain, Scanner Risk Matrix, Plugin-meta, Permission-matrise,
  Live-meter, Siste runs, Godkjenninger, Mitigation roadmap). Lagt
  lokal CSS-implementasjon i playground-HTML style-blokk: border-
  collapse, zebra-hover, header-styling. Komplementerer DS-tokens
  uten å modifisere vendor.
- renderPreDeploy traffic-lights brukte .sm-card__grade som er fast
  28x28 px (én A-F-bokstav) — kuttet PASS til AS og PASS-WITH-NOTES
  til PASS-WITH-... i alle traffic-light-cards. Erstattet med
  bredde-tilpasset status-pill via inline styling (severity-soft +
  on tokens).
- Threat-model matrix-bobler ikke klikkbare. Erstattet span med
  button type=button data-threat-id + aria-label. Click-handler
  scroller til tilsvarende rad i Trusler-tabellen og fremhever
  den i 1.6 sek.
- Radar-labels overlappet ved 6+ akser fordi alle brukte
  text-anchor=middle. Økt SVG-størrelse 280 → 380, radius 105 → 125.
  Bytter text-anchor fra middle til start/end basert på horisontal-
  posisjon.
- recommendation-card__body tekstoverflyt på lange single-line tekster
  (vilkår, owner-tags, dato). Lagt overflow-wrap: anywhere;
  word-break: break-word i lokal style-blokk.

Verifisering:
- 4/4 fix-spesifikke smoke-tester passerer
- 18/18 renderere produserer fortsatt komplett HTML mot
  dft-komplett-demo (regresjons-test)
- Filendring playground.html 10677 → 10753 linjer (+76 netto)

Versjonsbump v7.6.0 → v7.6.1 (patch — bugfix-only, ingen scanner- eller
hook-atferdsendringer):
- plugins/llm-security/.claude-plugin/plugin.json
- plugins/llm-security/package.json
- plugins/llm-security/README.md (badge)
- plugins/llm-security/CHANGELOG.md ([7.6.1] entry)
- plugins/llm-security/playground/llm-security-playground.html (footer)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-06 14:33:19 +02:00
commit f9b555aa64
5 changed files with 142 additions and 15 deletions

View file

@ -6,6 +6,57 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
## [7.6.1] - 2026-05-06
Playground v7.6.0 visuell-patch. Seks bugs fanget under maintainer-
verifisering i nettleser; alle skyldes mismatch mellom DS-klasser og
hvordan playground-rendrere brukte dem (eller manglende DS-implementasjoner
av klasser playground-rendrere antok eksisterte). Ingen scanner- eller
hook-behavior-changes.
### Fixed
- **`renderFindingsBlock` brukte `.findings` outer-class** som DS har som
2-kolonners grid (`grid-template-columns: 360px 1fr`) for list+detail-
panel-layout. Resultat: findings-headeren havnet i venstre 360px-
kolonne og items i 1fr-kolonnen, brutt layout i alle 18 rapporter med
findings. Erstattet med `<section class="report-meta">` + `<h4>` +
`findings__list > findings__group > findings__group-header +
findings__items` (korrekt DS-mønster).
- **`.report-table` mangler i DS** men brukes i 7+ rendrere (OWASP-
kategorier, Supply chain, Scanner Risk Matrix, Plugin-meta, Permission-
matrise, Live-meter, Siste runs, Godkjenninger, Mitigation roadmap).
Lagt lokal CSS-implementasjon i playground-HTML `<style>`-blokk:
border-collapse, zebra-hover, header-styling, td-padding. Komplementerer
DS-tokens uten å modifisere vendor.
- **`renderPreDeploy` traffic-lights brukte `.sm-card__grade`** som er
fast `28×28 px` (designet for én A-F-bokstav) — kuttet "PASS" til "AS"
og "PASS-WITH-NOTES" til "PASS-WITH-..." i alle traffic-light-cards.
Erstattet med en bredde-tilpasset status-pill via inline styling
(severity-soft + on tokens).
- **Threat-model matrix-bobler ikke klikkbare**`<span>` uten event-
handler. Erstattet med `<button type="button" data-threat-id>` +
`aria-label`. Lagt til click-handler som scroller til tilsvarende rad
i Trusler-tabellen og fremhever den i 1.6 sek.
- **Radar-labels overlappet** ved 6+ akser fordi alle brukte
`text-anchor="middle"` med samme radius-offset. Økt SVG-størrelse fra
280×280 til 380×380, radius fra 105 til 125. Bytter `text-anchor` fra
`middle` til `start`/`end` basert på horisontal-posisjon (Math.cos(ang)
> 0.2 / < -0.2 / mellom).
- **`recommendation-card__body` tekstoverflyt** — lange single-line
tekster (vilkår, owner-tags, dato) ble klippet av container. Lagt
`overflow-wrap: anywhere; word-break: break-word` i lokal `<style>`-
blokk.
### Verification
- 4/4 fix-spesifikke smoke-tester passerer (`findings__list`,
`data-threat-id`-button, `viewBox="0 0 380 380"`, ingen `sm-card__grade
data-grade` i pre-deploy).
- 18/18 renderere produserer fortsatt komplett HTML-output mot
`dft-komplett-demo` (regresjons-test).
- Filendring: playground.html 10677 → 10753 linjer (+76 netto).
## [7.6.0] - 2026-05-06
Playground Tier 3-referanse-case. v7.6.0 hever playgroundet