vectorcraft/crates/render/src
arhammusheer 5beac4f122 #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate
Rarely set fields move into one optional boxed NodeExtras, and large NodeKind payloads (images,
live shapes, blends, envelopes) are boxed. Every object, and every undo step that copies it,
shrinks: a 50k-path move keeps ~24.5 MB per step instead of ~40 MB. Files stay byte-identical
(Node keeps its flat JSON through a borrowed Serialize and a from-wire Deserialize, no flatten),
and loading is slightly faster. Undo and redo reuse their step's size estimate instead of
walking the document again (8.3 -> 5.6 ms for a 50k-path move).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VmMmc1J8XeNLxhRihWv9cc

# Conflicts:
#	crates/engine/src/cmd/graph.rs
#	crates/svg/src/export.rs
2026-10-12 11:02:32 +07:00
..
encode #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
brush_fx.rs #1244: render caches bounded by bytes, evicting the least recently used instead of clearing 2026-10-12 11:02:17 +07:00
freeform.rs #1244: render caches bounded by bytes, evicting the least recently used instead of clearing 2026-10-12 11:02:17 +07:00
fx.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
group.rs Fix #787: raster exports keep translucent edges over opaque art opaque 2026-10-10 11:12:13 +07:00
images.rs #1244: one shared, byte-budgeted store for decoded images; render caches that sweep and stay bounded 2026-10-12 11:02:17 +07:00
ink.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
lib.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
live.rs #1244: render caches bounded by bytes, evicting the least recently used instead of clearing 2026-10-12 11:02:17 +07:00
lru.rs #1244: render caches bounded by bytes, evicting the least recently used instead of clearing 2026-10-12 11:02:17 +07:00
paint.rs Fix #1140: gradient stops blend colour and opacity apart on the canvas, as the exports do 2026-10-11 16:00:36 +07:00
pattern.rs #1244: render caches bounded by bytes, evicting the least recently used instead of clearing 2026-10-12 11:02:17 +07:00
placed_document.rs Placed documents: on screen, cached bitmaps made in the background 2026-10-08 12:20:51 -07:00
proof.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
tests.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_adjust.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_blend.rs M3.73: blend modes follow the reference formulas on screen, in SVG and in PDF 2026-10-05 00:27:31 +07:00
tests_charstroke.rs M3.40: stroke on type — the Stroke panel edits the characters' stroke 2026-10-05 01:09:55 +07:00
tests_clip.rs M3.26: clipping sets with any clip shape 2026-10-04 17:23:57 +07:00
tests_cmykblend.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_container.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_fontchange.rs Fix #36: the font menus list the installed fonts, with a search field 2026-10-06 00:49:22 +07:00
tests_freeform.rs M3.81: freeform gradients: colour points with spread, smooth lines, first points placed inside the shape 2026-10-05 01:21:38 +07:00
tests_fxzoom.rs Fix #755: blurred type no longer shifts as the view moves 2026-10-10 10:27:49 +07:00
tests_isolation.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_knockout.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_layeropts.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_memory.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_objectfx.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_placed_document.rs Placed documents: on screen, cached bitmaps made in the background 2026-10-08 12:20:51 -07:00
tests_setup.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_strokegradient.rs M3.83: gradients within, along or across a stroke 2026-10-05 05:47:54 +07:00
tests_tileedge.rs M3.72: Tile Edge Color dialog and Show Swatch Bounds in pattern editing 2026-10-05 01:50:25 +07:00