From 71484fd0134a4a52fea7745bb55b36c8f248f7b6 Mon Sep 17 00:00:00 2001 From: shmuelbiller1 Date: Fri, 9 Oct 2026 11:54:37 -0400 Subject: [PATCH] fix(package): preserve nested previews, PDF content, compression and embedded assets --- crates/engine/src/cmd/package.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/crates/engine/src/cmd/package.rs b/crates/engine/src/cmd/package.rs index db9cb823..b027820d 100644 --- a/crates/engine/src/cmd/package.rs +++ b/crates/engine/src/cmd/package.rs @@ -160,12 +160,25 @@ impl<'a> Collector<'a> { if placed.contains(&file.path) { let saved = vectorcraft_format::load_file(&bytes) .map_err(|e| bad(C, format!("linked VectorCraft document {} cannot be packaged: {e}", file.path)))?; + let preview = vectorcraft_format::preview(&bytes); + let pdf = vectorcraft_format::pdf_content(&bytes); + let compressed = bytes.starts_with(&[0x1f, 0x8b]); + let include_linked = saved + .doc + .linked_only_images() + .iter() + .any(|key| saved.doc.images.get(key).is_some_and(|blob| !blob.is_proxy())); let mut nested = saved.doc; self.collect(&mut nested, found_path, &destination_file, depth + 1)?; if self.opts.relink { - // Preserve embedded ICC profiles when rewriting a linked native file. + // Preserve each native file's auxiliary content during relinking: + // thumbnails, PDF-compatible pages, ICC profiles, and embedded linked art. let mut options = vectorcraft_format::SaveOptions::for_doc(&nested); + options.preview = preview; + options.pdf = pdf; options.profiles = saved.profiles; + options.compress = compressed; + options.include_linked = include_linked; bytes = vectorcraft_format::save_with(&nested, &options) .map_err(|e| bad(C, format!("could not rewrite packaged document {}: {e}", file.path)))?; }