Files
callmeBallochandClaude Opus 5.5 297a01b6aa AF.3: native Affinity import with artboards, vectors, text and images
Open and Place read Affinity documents natively (.af from Affinity 3,
.afdesign/.afphoto/.afpub from Affinity 1 and 2): layers and sublayers,
groups, artboards with their names and backgrounds, Publisher pages side
by side, curves with live corners, parametric shapes, compound shapes,
clipping by nesting, vector and pixel masks, solid and gradient fills,
strokes, fill layers, artistic and frame text, placed images (their
original JPEG/PNG), pixel layers, embedded documents as their cached
picture, opacity, visibility, locking and blend modes, at the document's
resolution in points. Unsupported content (effects, adjustments, brushes,
master pages, special shapes, Affinity-only blend modes...) is listed in
the import warning, one line per kind. A file whose native data can't be
read opens as its embedded preview with the reason, and that preview
cannot be placed or used as a template or library. Save never writes back
over the Affinity file and there is no Affinity export.

The document semantics were fitted to the thumbnails Affinity embeds in
176 public documents. `cargo xtask corpus --affinity` fetches 22 public
CC0/MIT/Apache-2.0 documents at pinned commits, sha256-verified; the new
engine test renders each and compares it with Affinity's own thumbnail
(0-4.4 of 255 mean difference, per-file ceilings). import_fuzz mutates a
synthetic native document's stream and container through open, render
and export; the fuzz crate gains a stream target.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01GQPh8UDgMyARR5Hat9UchC
2026-10-08 17:58:11 +00:00

147 lines
6.1 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!-- Template: packaging/macos/package.sh (release) and `cargo xtask bundle` (development)
substitute @VERSION@ (full, e.g. 0.2.0-rc.1), @SHORT_VERSION@ (numeric X.Y.Z) and @BUILD_SHA@. -->
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>VectorCraft</string>
<key>CFBundleName</key>
<string>VectorCraft</string>
<key>CFBundleExecutable</key>
<string>VectorCraft</string>
<key>CFBundleIdentifier</key>
<string>ai.storyteller.vectorcraft</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>@SHORT_VERSION@</string>
<key>CFBundleVersion</key>
<string>@SHORT_VERSION@</string>
<key>VectorCraftVersion</key>
<string>@VERSION@</string>
<key>VectorCraftBuildCommit</key>
<string>@BUILD_SHA@</string>
<key>CFBundleIconFile</key>
<string>VectorCraft</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.graphics-design</string>
<!-- Must match MACOSX_DEPLOYMENT_TARGET in package.sh. Big Sur is the first release on
Apple silicon and has the Metal feature set wgpu targets. -->
<key>LSMinimumSystemVersion</key>
<string>11.0</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
<key>NSRequiresAquaSystemAppearance</key>
<false/>
<key>NSHumanReadableCopyright</key>
<string>Copyright © the VectorCraft authors. MIT OR Apache-2.0.</string>
<!-- Every format File › Open reads (OPEN_EXTS in crates/engine/src/cmd/fileio/mod.rs; a test in
apps/vectorcraft checks this list), so Finder offers VectorCraft for them (Open With,
double-click, Dock drop). VectorCraft owns its own formats; for the others it is an
alternate, so it doesn't take over another app's files. The app isn't NSDocument-based (no
NSDocumentClass): it opens these files itself (apps/vectorcraft/src/open_documents.rs). -->
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key><string>VectorCraft Document</string>
<key>LSItemContentTypes</key><array><string>ai.storyteller.vectorcraft.document</string></array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Owner</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>VectorCraft Template</string>
<key>CFBundleTypeExtensions</key><array><string>vctemplate</string></array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Owner</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>SVG</string>
<key>CFBundleTypeExtensions</key><array><string>svg</string><string>svgz</string></array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Alternate</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>PDF</string>
<key>CFBundleTypeExtensions</key><array><string>pdf</string></array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Alternate</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>PDF-compatible .ai</string>
<key>CFBundleTypeExtensions</key><array><string>ai</string><string>ait</string></array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Alternate</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>EPS</string>
<key>CFBundleTypeExtensions</key><array><string>eps</string></array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Alternate</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>Affinity</string>
<key>CFBundleTypeExtensions</key><array><string>af</string><string>afdesign</string><string>afpub</string></array>
<key>CFBundleTypeRole</key><string>Viewer</string>
<key>LSHandlerRank</key><string>Alternate</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>DXF</string>
<key>CFBundleTypeExtensions</key><array><string>dxf</string></array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Alternate</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>EMF and WMF</string>
<key>CFBundleTypeExtensions</key><array><string>emf</string><string>wmf</string></array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Alternate</string>
</dict>
<dict>
<key>CFBundleTypeName</key><string>Image</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>png</string><string>jpg</string><string>jpeg</string><string>gif</string>
<string>webp</string><string>tif</string><string>tiff</string><string>bmp</string>
</array>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>LSHandlerRank</key><string>Alternate</string>
</dict>
</array>
<!-- VectorCraft's own format (.drawcraft is its name from before the rename). -->
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>ai.storyteller.vectorcraft.document</string>
<key>UTTypeDescription</key>
<string>VectorCraft Document</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.image</string>
</array>
<key>UTTypeIconFile</key>
<string>VectorCraft</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array><string>vectorcraft</string><string>drawcraft</string></array>
<key>public.mime-type</key>
<array><string>application/x-vectorcraft</string></array>
</dict>
</dict>
</array>
</dict>
</plist>