# Changelog

## Score

- CAI 67 → 65 (-1.2)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.

## Lenses

- Code Health 94 → 93 (-0.6)
- Architecture 100 → 98 (-1.6)
- Maturity 58 → 56 (-2.3)
- Readiness 61 → 61 (+0.0)
- Security 80 → 80 (-0.2)

## Resolved (2)

- Duplicated block (8 lines × 2) (dev.exs)
- Off-boarding risk: anonymized user #1

## New (8)

- Change coupling: dev.exs ↔ registry.ex (dev.exs)
- Duplicated block (7 lines × 2) (dev.exs)
- Medium IaC: CKV_DOCKER_2 (Dockerfile)
- Off-boarding risk: anonymized user #1
- filter (cognitive 16) (assets/js/petal_components.js)
- filter (cyclomatic 16) (assets/js/petal_components.js)
- keydown (cognitive 18) (assets/js/petal_components.js)
- keydown (cyclomatic 19) (assets/js/petal_components.js)

## Changes since last survey

- 100 commits — 71 feature/other, 29 fixes

## By area

- (root) — 41 commits
- (repo) — 28 commits
- lib/petal_components — 26 commits
- assets/default.css — 2 commits
- assets/js — 2 commits
- test/petal — 1 commit

## Notable commits

- fix: Merge pull request #522 from petalframework/revert-playground-footer
- fix: fix(brand-icon): standalone icons enter the accessibility tree (Greptile catch)
- fix: fix(combo_box): caret clicks keep the query; required/form reach the select
- fix: fix(combo_box): typing stays inside the component
- fix: fix(css): de-bang the has-error family, scheme dropdown and stray markup - specificity was always enough
- fix: fix(css): icon geometry gets !important back; toggle radios paint nothing when forced visible
- fix: fix(css): icon sizing drops !important for the doubled-selector contract
- fix: fix(css): modal and slide-over roots leave the flow - opening no longer shifts siblings
- fix: fix(css): remove the dead file-input error rule
- fix: fix(css): toggle-item and alert-glyph icon sizing join the !important contract
- fix: fix(language-select): fragment-only paths carry the locale as a relative query
- fix: fix(language-select): the locale query lands before a fragment (Greptile catch)
- fix: fix(pagination): normalize simple-variant pages, type=button in event mode
- fix: fix(pagination): type=button also when the caller picks link_type="button"
- fix: fix(playground): marquee page renders its registry loop once (Greptile finding)
- fix: fix(radius): field/input multi-selects clamp too (Greptile catch)
- fix: fix(radius): tall elements clamp the token - no more full-radius ellipses
- fix: fix(scheme-switch): slotted text icons centre - the forced child becomes a centring flex box
- fix: fix(showcase): marquee page renders its registry example (Greptile finding)
- fix: fix(showcase): multi-view carousel needs transition_type=slide (Greptile catch)
- …and 80 more
