Skip to content

Implement typed registered custom-property animations - #752

Merged
wieslawsoltes merged 1 commit into
mainfrom
feature/code-oss-typed-property-748
Sep 19, 2026
Merged

wieslawsoltes merged 1 commit into
mainfrom
feature/code-oss-typed-property-748

Conversation

@wieslawsoltes

@wieslawsoltes wieslawsoltes commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator

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.

Unchanged Code OSS registers <angle> and <percentage> custom properties for chat, terminal, banner, browser-view, and voice animations. WebScene previously discarded the registrations, exposed no CSSPropertyRule, and sampled their keyframes discretely.

This adds the bounded runtime slice required by those existing sources:

  • retain valid document-level @property descriptors and owner lifetime;
  • apply inherits:false, typed initial values, and invalid-at-computed-value fallback;
  • interpolate admitted custom-property keyframes on the host clock;
  • update dependent retained background, mask, and border-image tokens only when samples change;
  • expose CSSPropertyRule identity/descriptors through the existing stylesheet CSSOM layer;
  • account for and compact registrations, stops, dependencies, and animation state;
  • avoid per-node custom-property allocation across unrelated DOM nodes.

Bounds are 64 registrations per document, 128-byte names/values, eight custom tracks per keyframe definition, 64 stops per track, and the existing eight-animation admission budget.

Validation:

  • webscene_css_parser_tests
  • native_web_css_service, including invalid registration rejection, midpoint sampling, dependent token update, owner removal, and zero allocations across 256 unrelated nodes
  • git diff --check
  • capabilities/profile JSON parsing

The live V8 contract is included for CI because this host checkout does not have the V8 SDK. It covers CSSOM delete/insert replacement, initial/inheritance behavior, invalid inline values, typed midpoint sampling, dependent paint, and forwards fill. Conic-gradient and border-image rasterization remain separate paint work.

Closes #748

@wieslawsoltes
wieslawsoltes merged commit 68c5b8b into main Sep 19, 2026
3 of 16 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.

Implement typed @property animations used by Code OSS

1 participant