Skip to content

Interpolate bounded foreground filters on the host clock #537

Closed

Description

@wieslawsoltes

Parent: #242. CSS epic: #235. Release epic: #227.

Proven gap

Unchanged Code OSS uses CSS Transitions between grayscale(1) and none on Chat/agent/session icons and between none and brightness(1.2) on Chat debug hover. WebScene paints bounded foreground filter lists but does not interpolate them or keep host frame demand active.

Focused implementation

  • Reuse one typed retained foreground-filter list for parsing, transition state, computed style, and paint.
  • Preserve authored order and the existing 16-function/value bounds for blur, brightness, contrast, grayscale, and saturate.
  • Interpolate only compatible same-order lists, padding prefixes and none with function-specific identities.
  • Advance from host timestamps, emit run/start/cancel/end, support reversal, and release frame demand after completion.
  • Keep transitions paint-only and preserve stacking context until a final none clears the identity list.
  • Account retained filter state in allocation/certification metrics.
  • Add native temporal/CSSOM/scene/layout/event/reversal/idle coverage, a 128-element browser contract, and a midpoint pixel reftest.

Acceptance and deferred gates

  • Implementation rebased on WebScene main e33fdbc6c11fd292070b5c8442568da39d39c57d.
  • Focused regression sources authored.
  • git diff --check passed.
  • Execute Chromium/native temporal, pixel, performance, allocation, lifecycle, and idle gates.
  • Run exact Code OSS and package acceptance.

Filter keyframes, WAAPI, additional functions, and mismatched/reordered-list interpolation remain outside this slice.

Activity

  1. wieslawsoltes commented on Sep 19, 2026

    @wieslawsoltes
    CollaboratorAuthor

    Completed by #538 and merged to WebScene main as 24e31e49c574b99674ce679d85731960be1f9286. Compatible bounded blur/brightness/contrast/grayscale/saturate lists now interpolate on the host clock through computed style and retained paint, with reversal, lifecycle events, allocation accounting, and idle cleanup. Only git diff --check ran. Product-used filter keyframes remain the active #242 slice.

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

    vscode-oss/plannedPlanned 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