Repository navigation
Description
Current paint checkpoint — 20 September 2026
Exact merged heads: WebScene a46b62e14eb197603f7e227c1558afb9088633b0; AppScene 97702daeb9ad71341ced7226f0aa966dc77ea53c; unchanged Code OSS 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c; local vscode-demo e4b98e5470cd7856aff3dfd6843c8e125d7db933 (clean, intentionally unpushed). Open consolidations remain WebScene #76 085bba760fa571c8f08ea866dc5dd1ec27c4d376, AppScene #65 ce66ef6ceb776b3f14e129f853bfc08b5c5e608c, 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
- Add deterministic browser/native raster and scene-structure contracts for text/glyph fallback, decoration, pseudo/generated content, backgrounds, gradients, borders/radii, clipping, transforms, opacity, stacking contexts, and image sizing.
- Prove paint invalidation for style changes without rebuilding unaffected scene subtrees.
- Define missing-glyph and non-rendering control-character behavior.
- Track paint ordering, scene node count, publication count, allocation, and memory.
Acceptance
- Pixel/geometry contracts use fixed fonts, viewport, theme, and bounded thresholds.
- Dynamic mutations repaint the correct nodes and preserve stacking order.
- Non-rendering Unicode controls never reach unsafe glyph measurement paths; coordinate with AppScene Skip GPU work for caret-only host frames #120.
- VS Code Settings controls, editor text, terminal, and overlays pass scenario-specific visual gates.
- Fix catalog script and logical sizing compatibility #148 retained image/fade work remains the baseline and [Epic] CSS features, compatibility, validation, and performance #235 records results.
Activity
wieslawsoltes commentedon 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.wieslawsoltes commentedon Sep 17, 2026
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.wieslawsoltes commentedon Sep 18, 2026
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.
wieslawsoltes commentedon Sep 18, 2026
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.wieslawsoltes commentedon Sep 18, 2026
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.
wieslawsoltes commentedon Sep 18, 2026
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.
wieslawsoltes commentedon Sep 18, 2026
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.
wieslawsoltes commentedon Sep 18, 2026
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.
wieslawsoltes commentedon Sep 19, 2026
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.