Release 19.9.1 — video fullscreen frame-sync, 17-fix batch, #1231 resize loop - #1550
Merged
Conversation
…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
…ite 8.1.5, biome 2.5.5, eslint 10.8, shell-quote >=1.9 advisory) - playwright 1.62.0 with matching v1.62.0-noble CI container - vite 8.1.5 (override + specs move together), biome 2.5.5 (+ schema URL, 2 spec files reformatted), eslint 10.8 / typescript-eslint 8.65 / eslint-plugin-jsdoc 63, tsx, turbo, vite-plugin-glsl, js-base64, react bits - shell-quote override ^1.9.0 (CVE-2026-13311, dev-only transitive) - texture.spec #1448 test made unit-pool-reset-aware (exposed by the new chromium headless shell providing WebGL — 14 previously-skipped WebGL tests now run locally) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvxaXQRgQn5AoR8DNkv6Wg
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
19.9.1 (patch release)
Bug Fixes
requestVideoFrameCallbackkeeps the browser delivering frames at full rate for the engine's detached video elements; uploads are now version-gated (GPU upload only when a frame was actually presented). Also fixes the never-firingstatePausepause listener.onVisibilityChangefired leave/enter every frame; destroyed cameras leaked global listeners (one camera per state switch undercameraClass); camera clamp ignored non-zero world origins; particle pool release race; play-once animations could never be replayed; zero-delay frames froze the game;destroy(arguments)forwarding;DropTarget.setCheckMethodvalidation;getNextChildnon-member aliasing;Text/BitmapTextcaller-array wipe;NineSliceSpritefractional-corner seams.display: blockand auto-scale measures the container's content box. Reproduced failing-first intests/resize-feedback.spec.js.setTexture(video)rejects with a clearTypeError(would silently freeze on frame 0); BMFont padding order (padLeft/padRightwere swapped, and the old spec codified the bug); dead texture-cache frame-dimension refinement removed (TextureCache.get(image, frame): framewidth/frameheight refinement is a no-op for every atlas format #1489) with the single-atlas contract now test-codified.Tooling
Routine batch: playwright 1.62 (+ matching CI container), vite 8.1.5, biome 2.5.5, eslint 10.8 stack,
shell-quote >=1.9security 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