mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-25 07:31:11 +00:00
6ca5bf359d
* security(compose): bound dense working sets and repeated group evaluation Smart-filter mixing and stroke fitting work tile by tile instead of over the union of sparse surfaces; render_layer admits its rect like render; hidden layers no longer disable the proxy and uniform-area shortcuts; Blend If groups nested deeper than two are judged by their result, so nesting costs polynomial instead of exponential work; effect builds past an absolute byte cap are skipped. * CodeRabbit #8949: exact tile skips in filter_mask, allocated-tile scan in fit_stroke, contrasting backdrop in the nested-group test - filter_mask mix/unmix: bare tiles (no tiles on either side) skip for non-alpha formats too when the two surfaces' default pixels are equal; differing defaults still get processed, so the clone's default pixel is never left wrong under a non-unit mask - shape_split fit_stroke: scan the union of the three surfaces' allocated tiles (exact skip when all three defaults are transparent) instead of every tile of a 300k-canvas document; non-transparent defaults fall back to the full scan - tests: the nested-groups assertion now uses a black backdrop so the asserted white can only come from rendering through the group chain fixes CodeRabbit review comments (major/minor) on filter_mask.rs:27,29, shape_split.rs:126, tests.rs:2354 * compose: skip a BTreeSet in fit_stroke — a sorted Vec compiles under the wasm toolchain (E0599 on ::drain there)