fix: LayoutContainer.destroy() disposes overflow container children#130
Merged
Conversation
commit: |
Zyie
force-pushed
the
fix/layout-container-destroy
branch
from
June 12, 2026 11:05
2c3e075 to
b2fa19c
Compare
npm rebuild ran every dependency install script with output hidden; on a cold cache the electron (242MB) and chromium (~170MB) binary downloads could stall without a timeout and hang the job for hours. Tests only use webkit, which the playwright install step still provides.
The webkit download can stall indefinitely on degraded runner networks (socket timeout resets per received byte). Cache the browser binaries, time-bound the install step and job, and auto-cancel superseded runs.
Playwright <1.60 hangs after browser downloads complete on recent Node 24 (microsoft/playwright#40998). This was the root cause of the CI jobs hanging in npm rebuild (@playwright/browser-chromium postinstall) and in the browser install step.
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.
Overview
Fixes #123.
LayoutContainer.destroy()previously only calledsuper.destroy(), which — becauseContainermutation methods (addChild,removeChildren, etc.) are bound tooverflowContainer— operated on the overflow container's children instead of the LayoutContainer's own structural children (background, overflowContainer, mask, stroke). The result was leaked children and a partially destroyed container.The fix restores the original
Containermethods before teardown, explicitly destroys theoverflowContainerso its children are disposed, then callssuper.destroy()so the structural children are cleaned up properly. Also adapts to pixi.js 8.18.1 renames and bumps dev dependencies.Fixes
LayoutContainer.destroy()now cleans up both overflow container children and the LayoutContainer's own structural children (fixes Utility children of a LayoutContainer (overflow container, background, stroke and mask) are not being destroyed on destroy() call. #123)Layout.findRoot()no longer dereferences a null parent during upward traversalChores
pixi.jsto^8.18.1and adapt to renamed APIs (IRenderLayer→RenderLayer, assetloadParser: 'loadTextures'→parser: 'texture')@playwright/browser-chromium,playwright,@vitest/browser,@storybook/react-vite, and other dev dependenciesPre-Merge Checklist