ZIP bundles
Status
| Field | Value |
|---|---|
| Extension(s) | .zip |
| Common ecosystem | Design seller and export packages |
| Format family | Bundle/container |
| Satin Studio status | Supported |
| Open / import | Yes |
| Export | Yes |
| Confidence | High for distribution role. |
What it is
ZIP files commonly bundle many machine formats, thread charts, previews, and worksheets.
How Satin Studio uses it
Opening a bundle shows its machine files, thread charts, previews, and worksheets before you choose what to import. Export bundles collect selected machine targets and handoff documents without changing the editable project.
Versions and variants
ZIP itself is standard, but embroidery bundles vary by seller. Satin Studio identifies the bundle layout before matching sidecars and choosing a preferred source file.
File identification notes
Standard ZIP archive.
Observed structure notes
- ZIP local file headers begin with
50 4B 03 04; central-directory records and an end-of-central-directory record describe the archive index. - Embroidery ZIP bundles are package conventions on top of ZIP. The archive parser only identifies files; Satin Studio still needs rules for choosing source files, sidecars, previews, and worksheets.
- ZIP entries may use compression, data descriptors, ZIP64 extensions, and UTF-8 filename flags. Safe bundle import must reject path traversal and absolute paths before extraction.
Structure sketch
ZIP bundles are containers. Satin Studio inspects entries and lets you choose among supported source files.
struct ZipBundle<'a> {
local_files: &'a [ZipLocalFile<'a>],
central_directory: &'a [u8],
end_of_central_directory: &'a [u8],
}
struct ZipLocalFile<'a> {
signature: [u8; 4], // 50 4B 03 04
file_name: &'a str,
compressed_payload: &'a [u8],
}
Safe import rejects absolute paths, parent-directory escapes, oversized expansion, encrypted members without credentials, and nested archive bombs.