Skip to content

Preserve inline textual CSS properties through recascade #848

Description

@wieslawsoltes

Problem

The exact Linux full-V8 runtime package gate exposed two problems in webscene_css_effect_values_tests:

  1. several ID selectors in the fixture had lower specificity than the existing #effects > span rule, so the original compound-filter failure was a stale test expectation;
  2. a real cascade defect remained: CSSOM writes for textual properties whose native property mask is zero (including filter, clip-path, masks, and related retained effects) were stored in CSSStyleDeclaration, but a later recascade cleared their computed textual values and did not replay the inline declaration.

This made element.style.filter = 'blur(4px)' report authored state while the retained scene continued to use the stylesheet brightness(0.5). It also required correct author !important precedence over normal inline declarations.

Fix scope

  • replay cold inline declarations after stylesheet declarations during a one-node recascade;
  • preserve author !important precedence and restore the inline value when the important stylesheet is removed;
  • route both generic and named CSSOM setters for cold properties through the normal one-node cascade;
  • return the final cascaded retained-effect value from computed style;
  • correct fixture specificity and current mask metadata expectations;
  • retain the 4,096-node/100-cycle performance, scene-order, localized-damage, and memory gates.

Acceptance

  • inline filter updates computed style and retained blur damage immediately;
  • author !important overrides normal inline filter, and removing the rule restores the inline value;
  • compound effect values retain authored function order;
  • the focused full-V8 executable passes with 4,096 nodes, 100 selector cycles, localized 22x16 blur damage, and zero retained heap growth;
  • no subtree recascade or mutation-lived winner cache is introduced.

Implementation

Implemented on fix/css-compound-filter-id-848 in commit 9ebf6dbc.

Activity

  1. added
    bugSomething isn't working
    vscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integration
    on Sep 20, 2026
  2. changed the title [-]Preserve compound CSS filter values through initial ID invalidation[/-] [+]Preserve inline textual CSS properties through recascade[/+] on Sep 20, 2026
  3. added
    vscode-oss/mergedMerged for the AppScene/WebScene VS Code OSS integration
    and removed
    vscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integration
    on Sep 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingvscode-oss/mergedMerged for the AppScene/WebScene VS Code OSS integration

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions