AF.4: validate and harden Affinity 3 artboards, text and images

This commit is contained in:
Riccardo Balloch committed 2026-10-09 13:45:55 +00:00
1 parent c2711df30b
commit 79c5d673ff
28 files changed
+2343 -116

No files matched your search

+31
View File
@@ -20,3 +20,34 @@ fbb196e918e302c16f8de9f2e6dffaef70ab3c317b32a9f44607fd4b2ead0206 jac21-SimpleLo
9d874245936483de3ec04cca48b383028d33666801dff1814246a44e695e29b8 jac21-SimpleLogoBanner.afdesign
e1b121d7c3d02356baa5dea512f5aa1fe77249c28d7b227e29cab2bc67ec323a eviltwo-AssetStore.aftemplate
ec1072cb03fcd0ed7ac1dfc7e087f4920df545fe9c84a386a7dac2fd33fbbe1f leakcanary-vector_icon.afdesign
9bea4e2ceddc2438943c3b26505299389d07c64bbe2821be01eba9e69a06ce1e patchy-adjust-curves.af
3141df41efeab7a250782e1418d96d4faf3b15107763df8002714aa8a8edd259 patchy-adjust-hsl.af
0361284661e1376b91675cb5f7705b1d560711c9f86aa53e255ee5365e023680 patchy-artboards.af
7239c42b6f9fb25b6ad9c12397afb4e0c1361a505e8126855d3a8cb45b192b87 patchy-blend-affinity.af
4d1fd761dd1508a31d37c4f4acbe01ca0d336ef3cb9bfdcddfc40ad4102f9d74 patchy-cmyk.af
75975eea4c325b90beac5015f6c2731156e90a5ec0f4c0a22aa6324e5dcb4ffc patchy-dpi300.af
bd15ca80e322eb38460176e1b9b187247c3b9e455e55624f71ae5db1122a1eed patchy-embedded-jpeg.af
62c9a5c4cff475a1a47ad6582d24b4fcb56ac84e94641b7ca44c9f8b05053bf1 patchy-fx-blur.af
d515c84a702aee19359740e61f4ff16b02e363533f24287be5e1ba4b3539ef54 patchy-fx-gradient.af
eeb8f0988a7effe2088ead4015916bed13875d9aaa88a3bf477127214831e820 patchy-fx.af
3da524362f70f316c3be4beab2022e2ae7275bbd153cc7204bc328a7dc8a538a patchy-group.af
25ee650339e7951a4db76932e889e0558134bd6b55be7c5b5c7d54b601c053bf patchy-incremental-chain.af
f83c1bd0108315c95f55ddbfb84b7188e73c301dbeb0e3a209ddf991075737b0 patchy-lab.af
da724875124ca2dea2ab69671198c9e0af87f8e325d634c8f6d4256210b00dcc patchy-lazy-placed.af
59da2bb7d58a356e09ca1819020af85bb05217b1b24ec55df9f9f2ff5235c68a patchy-live-filter.af
9e505e5dc5f0854d2a13ae30699b000b32f40b80d80afd570f00a33952ca895e patchy-rgba16.af
9f2a838484399dfc4da4af893facf9d0cd33ed40173aa88264fe8f3756d81a42 patchy-rgba8.af
5dab9c128aa791558ccb8e995e6bf89cc1c50bfcd907dfdce9c764163503e17a patchy-shapes-2.af
dba88c1c2e1c1cca947af6ebc82e32457301b228c8f6a9483edbae7c4ef32653 patchy-shapes.af
f03afbf8965a137439f2fb5d228e2c3349ca81d26e4e7e426b2fcc191348a7f4 patchy-text-artistic.af
66b4fadba91cdf974c1ddef021ce073ecc09b5b25d8c273d400d6c71265b7b75 patchy-text-caps.af
0cf93a1105878ad237e7f3d724be8e85619efd91d2c7fc6ae63b121e0930fc72 patchy-text-frame.af
dfb6ca947e0d33091a7d6d9466f379cc22e3e8847ae7722d8e93bd89a0e8b813 patchy-text-indent.af
56c5d030b9956151110e57fe83aebc47d141efce4df424f6ff5643312c4a7549 patchy-text-para-spacing.af
a5ccb62ee8d7e36d1a19a037aba989a5ba0232767e9f3305f7d9f7d4603291dd patchy-text-rotated.af
07c54ed90e49c4d791964228bee638fbff95a7b06dc3eccbedb3016f9fcef05e patchy-text-runs.af
87e1dee23769932b7e414116233063a8d68726cbffdebb975b3cd0ef447c602a patchy-transform.af
fa5dd80f44ae0712a9888c62953fd442a28119034d343db93b7892d5d2a61328 patchy-vector-mask.af
8ab1995ecbd9306ebcb7a4d2cd81701f34401e67f08b242f14dc3e3d04c94803 patchy-vector.af
bbc50c8c376e0e5980939be7df6769feed1a30289c7efc6391b204dfb15de88d patchy-LICENSE.txt
150e423be0c5eb22f252a38c2de68ab3ccec7e20bfba166f7ddd622ac243d8f4 patchy-NOTICE.txt
+44 -3
View File
@@ -3,8 +3,9 @@
//! They land in `corpus/affinity/` (gitignored, never committed). `vectorcraft-affinity`'s
//! `real_files` test and the engine's `affinity_corpus` test use them when present.
//!
//! Only permissively licensed files (CC0, MIT, Apache-2.0) whose metadata holds no personal paths
//! are listed. Moving a pin: change the commit, re-run, review the manifest diff.
//! Only permissively licensed files (CC0, MIT, Apache-2.0) are listed. Fixture provenance and
//! exclusions are documented in docs/affinity-validation.md. Moving a pin: change the commit,
//! re-run, review the manifest diff. Metadata is never imported or published by the app.
use std::path::Path;
use std::process::Command;
@@ -15,6 +16,44 @@ use crate::{root, run, sha256};
type Source = (&'static str, &'static str, &'static str, &'static [(&'static str, &'static str)]);
const SOURCES: &[Source] = &[
(
"SethRobinson/Patchy",
"de84eab550758b30fa062e479f5778cce7693b73",
"MIT",
&[
("LICENSE", "patchy-LICENSE.txt"),
("NOTICE-THIRD-PARTY.md", "patchy-NOTICE.txt"),
("test-fixtures/af/tiny-adjust-curves.af", "patchy-adjust-curves.af"),
("test-fixtures/af/tiny-adjust-hsl.af", "patchy-adjust-hsl.af"),
("test-fixtures/af/tiny-artboards.af", "patchy-artboards.af"),
("test-fixtures/af/tiny-blend-affinity.af", "patchy-blend-affinity.af"),
("test-fixtures/af/tiny-cmyk.af", "patchy-cmyk.af"),
("test-fixtures/af/tiny-dpi300.af", "patchy-dpi300.af"),
("test-fixtures/af/tiny-embedded-jpeg.af", "patchy-embedded-jpeg.af"),
("test-fixtures/af/tiny-fx-blur.af", "patchy-fx-blur.af"),
("test-fixtures/af/tiny-fx-gradient.af", "patchy-fx-gradient.af"),
("test-fixtures/af/tiny-fx.af", "patchy-fx.af"),
("test-fixtures/af/tiny-group.af", "patchy-group.af"),
("test-fixtures/af/tiny-incremental-chain.af", "patchy-incremental-chain.af"),
("test-fixtures/af/tiny-lab.af", "patchy-lab.af"),
("test-fixtures/af/tiny-lazy-placed.af", "patchy-lazy-placed.af"),
("test-fixtures/af/tiny-live-filter.af", "patchy-live-filter.af"),
("test-fixtures/af/tiny-rgba16.af", "patchy-rgba16.af"),
("test-fixtures/af/tiny-rgba8.af", "patchy-rgba8.af"),
("test-fixtures/af/tiny-shapes-2.af", "patchy-shapes-2.af"),
("test-fixtures/af/tiny-shapes.af", "patchy-shapes.af"),
("test-fixtures/af/tiny-text-artistic.af", "patchy-text-artistic.af"),
("test-fixtures/af/tiny-text-caps.af", "patchy-text-caps.af"),
("test-fixtures/af/tiny-text-frame.af", "patchy-text-frame.af"),
("test-fixtures/af/tiny-text-indent.af", "patchy-text-indent.af"),
("test-fixtures/af/tiny-text-para-spacing.af", "patchy-text-para-spacing.af"),
("test-fixtures/af/tiny-text-rotated.af", "patchy-text-rotated.af"),
("test-fixtures/af/tiny-text-runs.af", "patchy-text-runs.af"),
("test-fixtures/af/tiny-transform.af", "patchy-transform.af"),
("test-fixtures/af/tiny-vector-mask.af", "patchy-vector-mask.af"),
("test-fixtures/af/tiny-vector.af", "patchy-vector.af"),
],
),
(
"samuel-etver/vector-art",
"255f8add3c8f0740196e22bd59502b811b532f0b",
@@ -97,7 +136,9 @@ pub fn fetch() -> Result<(), String> {
}
}
sources.push_str(&format!("| {name} | https://github.com/{repo}/blob/{commit}/{path} | {licence} |\n"));
count += 1;
if out.extension().is_some_and(|e| e != "txt") {
count += 1;
}
}
}
std::fs::write(dest.join("SOURCES.md"), sources).map_err(|e| format!("SOURCES.md: {e}"))?;