Skip to content

Implement typed @property animations used by Code OSS #748

Description

@wieslawsoltes

Active implementation checkpoint — 20 September 2026

Exact upstream heads are WebScene 3cc78ac28101e23f07ded947b44869277da6632d and AppScene acf42662309ea601720ed07c440cf183d7c73fe3; unchanged Code OSS is 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c. Local vscode-demo is 06b5fa4328bae547e40462cbd049b6322f8e8d8e, clean, 294 commits ahead, and intentionally unpushed with Actions disabled.

Focused merge stacks

One-agent mode is enforced. No subagent is active. Reusable runtime behavior continues to land in WebScene or AppScene; unchanged Code OSS remains pinned. The change-related #752 and #753 runs passed. Broad PR CI/NuGet plus consolidation, post-merge main and previous-main runs were canceled to release runners; no WebScene job is intentionally retained between focused PRs. Full package, performance, visual, physical-platform and VM qualification remains deferred under the fast implementation directive; focused parser/native correctness and allocation checks are complete locally.

Next: finish the remaining planned CSS and product features, then physical Linux pixels, synchronization/device-loss/resize/soak/performance, visual comparison, VM/computer-use, and unchanged Code OSS Release qualification. Rich clipboard MIME, MULTIPLE/SAVE_TARGETS, recorded desktop-service/cross-platform work, workspace/Explorer, file/save, terminal, Markdown preview, accessibility, lifecycle, package-size, and no-browser promotion gates remain tracked and incomplete.

Parent trackers: #239, #242, and CSS epic #235

Proven Code OSS scope

Unchanged Code OSS 645f29c ships seven document-level @property registrations used by inline chat, terminal chat, chat input, session banners, browser view, and voice UI. The registered values are bounded to <angle> and <percentage>, use inherits: false, and supply an initial-value. Their keyframes animate the custom property and consume it from retained gradient/mask or transform paint.

WebScene currently parses ordinary custom properties as strings but does not retain @property descriptors, expose CSSPropertyRule, apply registered inheritance/initial semantics, or interpolate registered custom-property keyframes. Unsupported registration makes these Code OSS animations discrete or absent.

Implementation scope

  • parse and retain document-level @property --name { syntax; inherits; initial-value } for the exact <angle> and <percentage> grammars;
  • reject invalid names/descriptors/initial values atomically and bound registration count/name/value storage;
  • apply non-inheriting initial values and typed computed serialization through the existing custom-property cascade;
  • retain typed custom-property stops in the existing bounded animation track budget and interpolate them on the host clock;
  • update dependent declarations and retained paint only when the sampled typed value changes;
  • expose the matching CSSPropertyRule reflection/mutation slice without wrapper-only fake support;
  • release registrations, rule wrappers, tracks, and dependencies on sheet replacement/removal, navigation, and teardown.

Gates

  • browser/native contracts for valid and invalid registrations, cascade/inheritance, CSSOM identity/mutation, angle/percentage interpolation, sheet replacement, and teardown;
  • exact Code OSS fixtures for the seven registrations and their consuming declarations;
  • bounded unrelated-rule/DOM scaling, eight-track admission, zero idle frames when paused/settled, allocation/RSS stability, and scene/pixel checks;
  • portable native/parser and released-RID package gates before merge.

Broader CSS Properties and Values grammars, CSS.registerProperty(), additive composition, arbitrary registered types, full gradient/mask paint, and unregistered custom-property interpolation remain outside this ticket.

Activity

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

    enhancementNew feature or requestvscode-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