# Changelog

## Score

- CAI 58 → 47 (-11.6)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.15) — scores are not directly comparable.

## Lenses

- Code Health 79 → 89 (+10.0)
- Architecture 99 → 94 (-4.5)
- Maturity 59 → 66 (+7.0)
- Readiness 59 → 27 (-31.6)
- Security 50 → 50 (-0.5)

## Resolved (250)

- Animator._animate (cognitive 27) (src/textual/_animator.py)
- Animator._animate (cyclomatic 21) (src/textual/_animator.py)
- App.__init__ (cognitive 24) (src/textual/app.py)
- App.__init__ (cyclomatic 19) (src/textual/app.py)
- App._display (cognitive 19) (src/textual/app.py)
- App.on_event (cognitive 56) (src/textual/app.py)
- App.on_event (cyclomatic 27) (src/textual/app.py)
- BackgroundScreen.process_segments (cognitive 24) (src/textual/renderables/background_screen.py)
- Bar.__rich_console__ (cognitive 16) (src/textual/renderables/bar.py)
- Bar.__rich_console__ (cyclomatic 16) (src/textual/renderables/bar.py)
- BindingsMap.apply_keymap (cognitive 58) (src/textual/binding.py)
- BindingsMap.apply_keymap (cyclomatic 16) (src/textual/binding.py)
- ByteStreamParser.feed (cognitive 16) (src/textual/drivers/_byte_stream.py)
- Canvas.render (cognitive 26) (src/textual/canvas.py)
- Change coupling: constants.py ↔ types.py (src/textual/css/constants.py)
- Change coupling: horizontal.py ↔ vertical.py (src/textual/layouts/horizontal.py)
- ChopsUpdate.__rich_console__ (cognitive 42) (src/textual/_compositor.py)
- ChopsUpdate.render_segments (cognitive 16) (src/textual/_compositor.py)
- Color.parse (cyclomatic 17) (src/textual/color.py)
- ColorProperty.__set__ (cognitive 20) (src/textual/css/_style_properties.py)
- …and 230 more

## New (24)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (11 lines × 2) (src/textual/_styles_cache.py)
- Duplicated block (11 lines × 2) (src/textual/dom.py)
- Duplicated block (11 lines × 2) (src/textual/widgets/_tabs.py)
- Duplicated block (12 lines × 4) (tests/css/test_parse.py)
- Duplicated block (15 lines × 11) (tests/css/test_parse.py)
- Duplicated block (15 lines × 2) (src/textual/css/_styles_builder.py)
- Duplicated block (15 lines × 2) (src/textual/widgets/_data_table.py)
- Duplicated block (16 lines × 3) (src/textual/design.py)
- Duplicated block (16 lines × 5) (tests/css/test_parse.py)
- Duplicated block (17 lines × 2) (src/textual/renderables/text_opacity.py)
- Duplicated block (18 lines × 2) (src/textual/style.py)
- Duplicated block (19 lines × 2) (src/textual/widgets/_button.py)
- Duplicated block (5 lines × 2) (docs/examples/widgets/sparkline_colors.py)
- Duplicated block (6 lines × 2) (examples/calculator.py)
- Duplicated block (7 lines × 2) (docs/examples/styles/outline_all.py)
- Duplicated block (7 lines × 2) (src/textual/css/styles.py)
- Duplicated block (9 lines × 2) (src/textual/cache.py)
- Duplicated block (9 lines × 2) (src/textual/design.py)
- …and 4 more

## Architecture

- Containers 0 added · 0 removed · contexts 0 added · 1 removed · edges 0 added · 0 removed

## Removed bounded contexts (1)

- python
