Completed focused slice — 19 September 2026
PR #502 was rebased onto merged provider #501 and merged as WebScene main commit a17a0db7a3e3bcf474279edc060f1cbe9b69e9b5; this issue is closed. The merged slice covers policy-loaded SVG masks, versioned retained resources, isolated destination-in Skia/Flutter projection, repeat/position/size, uncovered-region clearing, caching, and fail-closed invalid resources. Authored regressions were not executed. Controlled ServiceWorker loading, raster/multiple/radial/luminance/non-add masks, and richer Flutter SVG remain scheduled under #256.
Problem
Unchanged Code OSS uses URL-backed SVG masks for activity, view, file, progress, welcome, extension, MCP, release-note, and theme icons. WebScene can already load and tile the same SVG resources as CSS backgrounds, but retained mask publication only accepts linear gradients. The affected elements therefore paint their foreground color as solid rectangles or lose the intended icon silhouette.
Bounded implementation
- Reuse the policy-aware CSS image loader and immutable SVG source/cache used by URL-backed backgrounds.
- Retain a versioned SVG mask resource containing viewBox, repeat, position, size, and markup after successful policy/load checks.
- Apply the SVG alpha with destination-in inside the existing isolated mask group in Skia/Avalonia/Uno and Flutter.
- Preserve contain/cover/auto, percentage/pixel size, position, and repeat/no-repeat axes; clear uncovered pixels for partial/no-repeat tiles.
- Include resource identity in scene equality/damage and release cached resources through existing renderer lifecycle paths.
- Fail closed for raster masks, unsafe/unresolved resources, multiple layers, luminance mode, and unsupported composites.
- Add retained-command, backend, mutation/replacement, resource-policy, cache/lifecycle, and Code OSS consumer regression coverage.
Dependency and deferred gates
Stack this consumer on the focused mask-shorthand provider so Code OSS shorthand URLs reach the same longhand pipeline. Browser/native pixels, Skia/Flutter parity, performance, memory, exact-package, and CI gates remain required before release promotion but are deferred under the current throughput directive.
Parent: #256. Coordination: #236/#241/#266.
Completed focused slice — 19 September 2026
PR #502 was rebased onto merged provider #501 and merged as WebScene main commit
a17a0db7a3e3bcf474279edc060f1cbe9b69e9b5; this issue is closed. The merged slice covers policy-loaded SVG masks, versioned retained resources, isolated destination-in Skia/Flutter projection, repeat/position/size, uncovered-region clearing, caching, and fail-closed invalid resources. Authored regressions were not executed. Controlled ServiceWorker loading, raster/multiple/radial/luminance/non-add masks, and richer Flutter SVG remain scheduled under #256.Problem
Unchanged Code OSS uses URL-backed SVG masks for activity, view, file, progress, welcome, extension, MCP, release-note, and theme icons. WebScene can already load and tile the same SVG resources as CSS backgrounds, but retained mask publication only accepts linear gradients. The affected elements therefore paint their foreground color as solid rectangles or lose the intended icon silhouette.
Bounded implementation
Dependency and deferred gates
Stack this consumer on the focused mask-shorthand provider so Code OSS shorthand URLs reach the same longhand pipeline. Browser/native pixels, Skia/Flutter parity, performance, memory, exact-package, and CI gates remain required before release promotion but are deferred under the current throughput directive.
Parent: #256. Coordination: #236/#241/#266.