…amera/particles bug-hunt, #1231 resize loop
- video sprites: pending requestVideoFrameCallback keeps detached elements
at full frame rate in fullscreen; version-gated GPU uploads; statePause fix
- bug-hunt batch (13 findings, all verified): onVisibilityChange churn,
camera listener leaks + bounds-origin clamp, particle pool release race,
play-once replay dead-end, zero-delay hang, destroy(arguments) forwarding,
DropTarget validation, getNextChild, Text array aliasing, NineSlice seams
- #1231: canvas defaults to display:block + content-box measurement kills
the auto-scale resize feedback loop
- hardening: setTexture(video) TypeError, BMFont padding order, dead
texture-cache refinement removed (#1489)
Closes #1231
Closes #1489
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JvxaXQRgQn5AoR8DNkv6Wg
19.9.1 (patch release)
Bug Fixes
Tooling
Routine batch: playwright 1.62 (+ matching CI container), vite 8.1.5, biome 2.5.5, eslint 10.8 stack, shell-quote >=1.9 security override (CVE-2026-13311, dev-only). The new chromium headless shell provides WebGL locally — 14 previously-skipped WebGL tests now run.
Tests: 172 files, 5209 passed, 1 skipped (full turbo build + suite). 3 new spec files, ~40 new regression tests.
Closes #1231
Closes #1489
🤖 Generated with Claude Code
https://claude.ai/code/session_01JvxaXQRgQn5AoR8DNkv6Wg