Repository navigation
Complete native CSS paint, stacking, clipping, transform, and text coverage #241
Description
Activity
- addedvscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integrationPlanned for the AppScene/WebScene VS Code OSS integration
on Sep 17, 2026 #246 identifies a concrete generated-text coverage gap for this paint/text tranche. A pseudo-element can override
font-sizeandline-height, but WebScene does not retain its winningfont-family; pseudo layout and kind-3 publication use the originating element's family. In unchanged Code OSS that sends Seti PUA code points U+E023/U+E099 throughsystem-uifallback and creates the oversized white/cyan shapes.The focused acceptance slice is: parent system font +
::beforedownloadable icon font, exact computed family/content/box, exact kind-3 family and intrinsic metrics, native reference pixels bounded to the icon slot, class mutation to another family and exact restoration, and a 4,096-node retained-tree/performance bound. No AppScene renderer change is needed. Detailed capture/provenance and scheduling are recorded on #246.Issue #246 now has a local review candidate
6e6d5568for the isolated CSS defect: generated::beforetext dropped its computedfont-familybetween cascade, layout, and kind-3 serialization. The candidate preserves the winning/inherited family and has exact native/Chromium PUA pixels plus cascade, mutation, retained-tree, cache, and 4,096-node gates. Exact main fails native by 21,796 pixels; the candidate passes. Live overlap with merged #292 and open #291/#294/#76 is zero. Schedule focused review/integration next; product closure remains gated by #259's exact-package Code OSS regions.Coordination refresh: #246 is no longer a local candidate. Its focused generated icon-font fix merged through PR #295 as
0d3b29da78df774ac41e90ff251c7b2ffb828d43. #246 now waits only for the shared #259 exact-package tab and Explorer visual regions.#241 remains the broader paint/stacking/clipping/transform/text owner; do not reopen or duplicate the merged font-family serialization defect here.
Retained clipping advanced through #449 / PR #451, merged as
3813a31772917655f71be8a15b04aeb096a049d8.Centered length/percentage
clip-path: circle(...)now emits balanced rounded clip scopes using the existing scene ABI and presenter behavior. This establishes the smallest nonrectangular retained clip without introducing a new command or touching stacking, layout, masks, filters, or backdrop isolation.The exact unchanged Code OSS Markdown
polygon(...)consumer remains unimplemented, along with positioned/keyword circles and the other #256 effects. Tests, browser/native pixels, performance/lifecycle work, hosted checks, CI monitoring, and product acceptance were skipped under the implementation-first instruction and remain debt under #241/#256.Retained clipping advanced through #456 / PR #458, merged as
a9f309c8ff80d701ef34e66aece8441e0f8f7fb6.WebScene now clips the exact unchanged Code OSS Markdown diff indicator polygon. Native resolves bounded 3–64 point
px/%paths and publishes them through the existing balanced clip scope; the shared Avalonia/Uno presenter and Flutter apply the indexed path. The scene struct/version and command kinds remain unchanged, and existing inset/circle behavior is preserved.Fill-rule variants, other units/functions, remaining clip shapes, masks, filters, backdrop effects, and isolation remain under #241/#256. Tests, browser/native pixels, performance/lifecycle work, hosted checks, CI monitoring, and product acceptance were skipped under the implementation-first instruction and remain debt.
Retained foreground effects advanced through #463 / PR #464, merged as
d27290970ef4913b89a083da89a220726ee5e29b.Single-function number/percentage
filter: brightness(...)now wraps the element and descendant paint in the existing balanced retained group and applies matching RGB matrices in Avalonia/Uno and Flutter. Non-nonefilters now participate in atomic stacking-context traversal. Existing opacity groups retain their prior encoding.Compound filters, animation/interpolation, blur damage, other functions, masks, backdrop effects, and further isolation remain under #241/#256. Tests, browser/native pixels, performance/lifecycle work, hosted checks, CI monitoring, and product acceptance were skipped under the implementation-first instruction and remain debt.
Retained foreground effects advanced through #468 / PR #469, merged as
c595be47332adb88a50c374804c299f3db814616.Single-function number/percentage
filter: grayscale(...)now reuses the balanced retained filter group and applies matching luminance matrices in Avalonia/Uno and Flutter. The implementation preserves the existing brightness and opacity encodings and directly covers pinned Code OSS session/Chat grayscale consumers.Compound and animated filters, contrast and other functions, masks, backdrop effects, and remaining isolation stay under #241/#256. Tests, browser/native pixels, performance/lifecycle work, hosted checks, CI monitoring, and product acceptance were skipped under the implementation-first instruction and remain debt.
CSS paint implementation update: focused foreground-filter child #471 merged through PR #473 at
e4d8f5f9ce775839a83c08d2f42e64b471ea8bfc(source6ebd4006950359b36f42bf23c9016070a0a63ea6).WebScene now retains single-function number/percentage
filter: contrast(...)through the existing balanced kind 30/31 foreground-filter group. Kind 30 bit 29 selects contrast andstroke_widthcarries a bounded 0–10 multiplier; Avalonia/Uno and Flutter apply matching midpoint-centered RGB matrices. Existing opacity, brightness, and grayscale encodings remain intact, with no scene struct, version, capability, or command-kind change.Compound and animated filters, blur and expanded damage, masks, backdrop effects, and remaining isolation stay under #241/#256. Tests, builds, browser/native pixel contracts, performance, memory, lifecycle, exact-package visual gates, hosted checks, and CI monitoring were skipped under the implementation-only instruction and remain validation debt. No consolidation PR was merged.
Implementation-first re-audit at WebScene
488b9790confirms static product-used filters, blur damage, clips, masks, backdrop effects, and Flutter SVG geometry are implemented through #256/#508. Remaining static paint work is execution/package evidence. The next concrete product-used defect is animated filter progression, correctly owned by #242, so no overlapping #241 change was made.git diff --checkpassed; no runtime validation ran.
Current paint checkpoint — 20 September 2026
Exact merged heads: WebScene
a46b62e14eb197603f7e227c1558afb9088633b0; AppScene97702daeb9ad71341ced7226f0aa966dc77ea53c; unchanged Code OSS645f29cc3176500b4b5762ba887cf2a7f0ffdf2c; local vscode-demoe4b98e5470cd7856aff3dfd6843c8e125d7db933(clean, intentionally unpushed). Open consolidations remain WebScene #76085bba760fa571c8f08ea866dc5dd1ec27c4d376, AppScene #65ce66ef6ceb776b3f14e129f853bfc08b5c5e608c, and vscode-demo #1; do not merge them. One-agent mode is active.#799/#806 is merged with interaction-only state and no new paint command or scene node. Later qualification must prove contact scrolling/cancellation and unchanged mouse pixels/geometry on editors, tabs, split views, terminal, and Chat. Existing paint, stacking, clipping, transform, text, and exact-pixel debt remains open.
Parent tracker: #235
Problem
Correct layout can still produce incorrect native output when text, generated content, backgrounds, borders, clipping, transforms, opacity, stacking, images, or native controls are represented incorrectly in the retained scene.
Proposed work
Acceptance