Skip to content

Preserve inline textual CSS through recascade - #853

Merged
wieslawsoltes merged 1 commit into
mainfrom
fix/css-compound-filter-id-848
Sep 20, 2026
Merged

wieslawsoltes merged 1 commit into
mainfrom
fix/css-compound-filter-id-848

Conversation

@wieslawsoltes

Copy link
Copy Markdown
Collaborator

Problem and resulting behavior

Inline textual properties such as filter were stored by CSSOM but disappeared from computed style and retained paint after any later recascade. For example, setting element.style.filter = 'blur(4px)' left the retained scene at the stylesheet's brightness(0.5) value.

This change replays cold inline declarations through the existing one-node cascade, preserves author !important precedence, and reads computed effects from final cascaded state. It also corrects stale selector-specificity and mask-metadata assumptions in the effects fixture.

Closes #848.

Performance and validation

  • no subtree recascade or mutation-lived winner cache;
  • cold CSSOM writes use the existing one-node cascade;
  • author-important scanning occurs only when replaying cold inline declarations;
  • focused full-V8 gate passed with 4,096 effects, 100 selector cycles in 16.589s, 100 publication cycles in 4.037s, zero retained heap growth, and 22x16 localized blur damage;
  • regression covers author !important override and inline restoration after stylesheet removal;
  • git diff --check passed.

@wieslawsoltes
wieslawsoltes changed the base branch from fix/v8-persistent-teardown-851 to main September 20, 2026 14:09
@wieslawsoltes
wieslawsoltes merged commit 4c2068e into main Sep 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Preserve inline textual CSS properties through recascade

1 participant