vectorcraft/crates/metafile/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
..
import Lint: as_chunks for constant chunk sizes, as clippy 1.99 asks 2026-10-05 12:14:56 -07:00
bytes.rs M4.95: EMF and WMF open, place and paste as vector objects 2026-10-05 15:24:27 +07:00
dib.rs Lint: as_chunks for constant chunk sizes, as clippy 1.99 asks 2026-10-05 12:14:56 -07:00
emf.rs M4.94: EMF and WMF export from Export As and document.export 2026-10-05 15:24:24 +07:00
import.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 M4.95: EMF and WMF open, place and paste as vector objects 2026-10-05 15:24:27 +07:00
scene.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.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_import.rs AI import: groups and nested groups survive 2026-10-08 17:06:57 +07:00
wmf.rs Lint: as_chunks for constant chunk sizes, as clippy 1.99 asks 2026-10-05 12:14:56 -07:00