makeables 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -9
- package/dist/assets/stickers/moraleja/claude-01.webp +0 -0
- package/dist/assets/stickers/moraleja/claude-02.webp +0 -0
- package/dist/assets/stickers/moraleja/claude-03.webp +0 -0
- package/dist/assets/stickers/moraleja/code-brew-pereira.webp +0 -0
- package/dist/assets/stickers/moraleja/code-brew-san-01.webp +0 -0
- package/dist/assets/stickers/moraleja/code-brew-san-02.webp +0 -0
- package/dist/assets/stickers/moraleja/cooking.webp +0 -0
- package/dist/assets/stickers/moraleja/crafter-01.webp +0 -0
- package/dist/assets/stickers/moraleja/crafter-station.webp +0 -0
- package/dist/assets/stickers/moraleja/curious.webp +0 -0
- package/dist/assets/stickers/moraleja/jsi.webp +0 -0
- package/dist/assets/stickers/moraleja/kebo-01.webp +0 -0
- package/dist/assets/stickers/moraleja/kebo-02.webp +0 -0
- package/dist/assets/stickers/moraleja/kebo-03.webp +0 -0
- package/dist/assets/stickers/moraleja/kebo-04.webp +0 -0
- package/dist/assets/stickers/moraleja/kebo-brand.webp +0 -0
- package/dist/assets/stickers/moraleja/maca.webp +0 -0
- package/dist/assets/stickers/moraleja/moraleja-01.webp +0 -0
- package/dist/assets/stickers/moraleja/moraleja-lfg.webp +0 -0
- package/dist/assets/stickers/moraleja/pawboard.webp +0 -0
- package/dist/assets/stickers/moraleja/provenance.json +223 -0
- package/dist/assets/stickers/moraleja/qwstzw.webp +0 -0
- package/dist/assets/stickers/moraleja/repo-o-fake.webp +0 -0
- package/dist/assets/stickers/moraleja/she-ships.webp +0 -0
- package/dist/assets/stickers/moraleja/ship-or-sink.webp +0 -0
- package/dist/assets/stickers/moraleja/shippeando.webp +0 -0
- package/dist/assets/stickers/moraleja/shippervivbes.webp +0 -0
- package/dist/assets/stickers/moraleja/shipping.webp +0 -0
- package/dist/assets/stickers/moraleja/taste.webp +0 -0
- package/dist/assets/stickers/moraleja/tsb.webp +0 -0
- package/dist/assets/stickers/moraleja/vibing.webp +0 -0
- package/dist/{chunk-QJHEOZGN.js → chunk-NOES67KG.js} +252 -153
- package/dist/cli.js +260 -49
- package/dist/{mcp-AOJ6UJSC.js → mcp-54KV55QM.js} +1 -1
- package/package.json +3 -3
|
@@ -267,7 +267,7 @@ var shaderGenerationSchema = z.object({
|
|
|
267
267
|
})
|
|
268
268
|
}).strict();
|
|
269
269
|
|
|
270
|
-
// ../design/dist/chunk-
|
|
270
|
+
// ../design/dist/chunk-ZDQUANYP.js
|
|
271
271
|
import { z as z3 } from "zod";
|
|
272
272
|
import { z as z2 } from "zod";
|
|
273
273
|
import { z as z22 } from "zod";
|
|
@@ -779,7 +779,7 @@ var designAssetSchema = z3.discriminatedUnion("source", [
|
|
|
779
779
|
// Unchanged artwork and optical maps from an attributed bundled sticker collection.
|
|
780
780
|
z3.object({
|
|
781
781
|
source: z3.literal("sticker"),
|
|
782
|
-
collection: z3.enum(["typingmind", "community"]),
|
|
782
|
+
collection: z3.enum(["typingmind", "community", "moraleja"]),
|
|
783
783
|
slug: z3.string().regex(/^[a-z0-9-]{1,80}$/),
|
|
784
784
|
file: z3.enum(["artwork", "effects"]),
|
|
785
785
|
name: z3.string().min(1).max(80),
|
|
@@ -1366,7 +1366,7 @@ laminated.material = {
|
|
|
1366
1366
|
speed: 0.4
|
|
1367
1367
|
};
|
|
1368
1368
|
|
|
1369
|
-
// ../design/dist/chunk-
|
|
1369
|
+
// ../design/dist/chunk-Z2WIRZRR.js
|
|
1370
1370
|
var andes = design(
|
|
1371
1371
|
"andes",
|
|
1372
1372
|
"Hack the Andes",
|
|
@@ -3554,6 +3554,235 @@ function applyDesignEdits(base, input, locks) {
|
|
|
3554
3554
|
}
|
|
3555
3555
|
return locks ? preserveDesignLocks(base, next, locks) : badgeDesignSchema.parse(next);
|
|
3556
3556
|
}
|
|
3557
|
+
var moralejaStickerCredit = { label: "moraleja.co", url: "https://moraleja.co" };
|
|
3558
|
+
var moralejaCollection = [
|
|
3559
|
+
["moraleja-lfg", "LFG"],
|
|
3560
|
+
["moraleja-01", "Moraleja"],
|
|
3561
|
+
["shipping", "Shipping"],
|
|
3562
|
+
["vibing", "Vibing"],
|
|
3563
|
+
["cooking", "Cooking"],
|
|
3564
|
+
["ship-or-sink", "Ship or Sink"],
|
|
3565
|
+
["she-ships", "She Ships"],
|
|
3566
|
+
["shippeando", "Shippeando"],
|
|
3567
|
+
["shippervivbes", "Shipper Vibes"],
|
|
3568
|
+
["repo-o-fake", "Repo o Fake"],
|
|
3569
|
+
["taste", "Taste"],
|
|
3570
|
+
["curious", "Curious"],
|
|
3571
|
+
["claude-01", "Claude \xB7 01"],
|
|
3572
|
+
["claude-02", "Claude \xB7 02"],
|
|
3573
|
+
["claude-03", "Claude \xB7 03"],
|
|
3574
|
+
["code-brew-pereira", "Code Brew \xB7 Pereira"],
|
|
3575
|
+
["code-brew-san-01", "Code Brew \xB7 El Salvador"],
|
|
3576
|
+
["code-brew-san-02", "Code Brew \xB7 El Salvador Seal"],
|
|
3577
|
+
["crafter-01", "Develop, Preview, Ship"],
|
|
3578
|
+
["crafter-station", "Crafter Station"],
|
|
3579
|
+
["kebo-01", "Kebo \xB7 01"],
|
|
3580
|
+
["kebo-02", "Kebo \xB7 02"],
|
|
3581
|
+
["kebo-03", "Kebo \xB7 03"],
|
|
3582
|
+
["kebo-04", "Kebo \xB7 04"],
|
|
3583
|
+
["kebo-brand", "Kebo"],
|
|
3584
|
+
["pawboard", "Pawboard"],
|
|
3585
|
+
["maca", "Maca"],
|
|
3586
|
+
["jsi", "Just Ship It"],
|
|
3587
|
+
["qwstzw", "Code Brew \xB7 Postage"],
|
|
3588
|
+
["tsb", "TSB"]
|
|
3589
|
+
];
|
|
3590
|
+
var moralejaStickerIds = moralejaCollection.map(
|
|
3591
|
+
([slug]) => `moraleja-${slug}`
|
|
3592
|
+
);
|
|
3593
|
+
var moralejaStickerStyles = moralejaCollection.map(([slug, name]) => ({
|
|
3594
|
+
version: 1,
|
|
3595
|
+
product: "sticker",
|
|
3596
|
+
source: `moraleja-${slug}`,
|
|
3597
|
+
name,
|
|
3598
|
+
description: "Original artwork by moraleja.co \xB7 Gloss vinyl",
|
|
3599
|
+
event: "moraleja.co",
|
|
3600
|
+
artPrompt: "",
|
|
3601
|
+
material: { surface: "prism", roughness: 0.35, iridescence: 0.4, speed: 0.2 },
|
|
3602
|
+
sticker: {
|
|
3603
|
+
finish: "vinyl",
|
|
3604
|
+
border: 18,
|
|
3605
|
+
gloss: 0.65,
|
|
3606
|
+
holography: 0,
|
|
3607
|
+
sparkle: 0,
|
|
3608
|
+
relief: 0.15,
|
|
3609
|
+
flakes: 170,
|
|
3610
|
+
stock: "white",
|
|
3611
|
+
laminate: "gloss",
|
|
3612
|
+
liner: "moraleja.co",
|
|
3613
|
+
seed: 0
|
|
3614
|
+
},
|
|
3615
|
+
assets: {
|
|
3616
|
+
artwork: {
|
|
3617
|
+
source: "sticker",
|
|
3618
|
+
collection: "moraleja",
|
|
3619
|
+
slug,
|
|
3620
|
+
file: "artwork",
|
|
3621
|
+
name,
|
|
3622
|
+
credit: moralejaStickerCredit
|
|
3623
|
+
}
|
|
3624
|
+
},
|
|
3625
|
+
front: {
|
|
3626
|
+
background: "#00000000",
|
|
3627
|
+
layers: [
|
|
3628
|
+
{
|
|
3629
|
+
id: "artwork",
|
|
3630
|
+
name: "Original artwork \xB7 moraleja.co",
|
|
3631
|
+
kind: "image",
|
|
3632
|
+
asset: "artwork",
|
|
3633
|
+
x: 0,
|
|
3634
|
+
y: 0,
|
|
3635
|
+
w: 1024,
|
|
3636
|
+
h: 1024,
|
|
3637
|
+
fit: "contain",
|
|
3638
|
+
opacity: 1,
|
|
3639
|
+
radius: 0
|
|
3640
|
+
}
|
|
3641
|
+
]
|
|
3642
|
+
},
|
|
3643
|
+
back: { background: "#00000000", layers: [] }
|
|
3644
|
+
}));
|
|
3645
|
+
var collection = [
|
|
3646
|
+
[
|
|
3647
|
+
"absolutely-right",
|
|
3648
|
+
"You're Absolutely Right",
|
|
3649
|
+
"Holo glitter border",
|
|
3650
|
+
1,
|
|
3651
|
+
1,
|
|
3652
|
+
1,
|
|
3653
|
+
0.55,
|
|
3654
|
+
"holo-glitter",
|
|
3655
|
+
"gloss"
|
|
3656
|
+
],
|
|
3657
|
+
[
|
|
3658
|
+
"cmd-enter",
|
|
3659
|
+
"Cmd + Enter",
|
|
3660
|
+
"Chrome locket \xB7 pink enamel",
|
|
3661
|
+
1.1,
|
|
3662
|
+
0.3,
|
|
3663
|
+
0.4,
|
|
3664
|
+
0.55,
|
|
3665
|
+
"white",
|
|
3666
|
+
"gloss"
|
|
3667
|
+
],
|
|
3668
|
+
[
|
|
3669
|
+
"energy",
|
|
3670
|
+
"TypingMind Energy",
|
|
3671
|
+
"Glitter vapour \xB7 gloss laminate",
|
|
3672
|
+
1,
|
|
3673
|
+
1,
|
|
3674
|
+
1,
|
|
3675
|
+
0.5,
|
|
3676
|
+
"holo-glitter",
|
|
3677
|
+
"gloss"
|
|
3678
|
+
],
|
|
3679
|
+
[
|
|
3680
|
+
"agi-is-coming",
|
|
3681
|
+
"AGI Is Coming",
|
|
3682
|
+
"Gloss laminate \xB7 sunset print",
|
|
3683
|
+
1,
|
|
3684
|
+
0.45,
|
|
3685
|
+
0.25,
|
|
3686
|
+
0.45,
|
|
3687
|
+
"white",
|
|
3688
|
+
"gloss"
|
|
3689
|
+
],
|
|
3690
|
+
["motion", "TypingMind Motion", "Holographic glitter", 1, 1, 1, 0.6, "holo-glitter", "gloss"],
|
|
3691
|
+
[
|
|
3692
|
+
"typingmind",
|
|
3693
|
+
"TypingMind",
|
|
3694
|
+
"Oil-slick holo on black",
|
|
3695
|
+
1.1,
|
|
3696
|
+
1,
|
|
3697
|
+
0.35,
|
|
3698
|
+
0.4,
|
|
3699
|
+
"holographic",
|
|
3700
|
+
"gloss"
|
|
3701
|
+
],
|
|
3702
|
+
["agi-disco", "AGI Disco", "Mirror-ball holo", 1, 1, 1, 0.5, "holo-glitter", "gloss"],
|
|
3703
|
+
["youre-cooked", "You're Cooked", "Matte vinyl print", 0.7, 0, 0, 0.35, "white", "matte"],
|
|
3704
|
+
[
|
|
3705
|
+
"emotional-support",
|
|
3706
|
+
"Emotional AI Support",
|
|
3707
|
+
"Pastel glitter jar",
|
|
3708
|
+
1,
|
|
3709
|
+
1,
|
|
3710
|
+
1,
|
|
3711
|
+
0.5,
|
|
3712
|
+
"holo-glitter",
|
|
3713
|
+
"gloss"
|
|
3714
|
+
]
|
|
3715
|
+
];
|
|
3716
|
+
var referenceStickerIds = collection.map(
|
|
3717
|
+
([slug]) => `typingmind-${slug}`
|
|
3718
|
+
);
|
|
3719
|
+
var referenceStickerCredit = {
|
|
3720
|
+
label: "Ann Nguyen \xB7 TypingMind",
|
|
3721
|
+
url: "https://www.bubbbly.com/sticker-pack"
|
|
3722
|
+
};
|
|
3723
|
+
var referenceStickerStyles = collection.map(
|
|
3724
|
+
([slug, name, description, gloss, holography, sparkle, relief, stock, laminate]) => ({
|
|
3725
|
+
version: 1,
|
|
3726
|
+
product: "sticker",
|
|
3727
|
+
source: `typingmind-${slug}`,
|
|
3728
|
+
name,
|
|
3729
|
+
description,
|
|
3730
|
+
event: "TypingMind",
|
|
3731
|
+
artPrompt: "",
|
|
3732
|
+
material: { surface: "prism", roughness: 0.35, iridescence: 0.4, speed: 0.2 },
|
|
3733
|
+
sticker: {
|
|
3734
|
+
finish: sparkle === 1 ? "glitter" : stock === "holographic" ? "holographic" : "vinyl",
|
|
3735
|
+
border: 0,
|
|
3736
|
+
gloss,
|
|
3737
|
+
holography,
|
|
3738
|
+
sparkle,
|
|
3739
|
+
relief,
|
|
3740
|
+
flakes: 170,
|
|
3741
|
+
stock,
|
|
3742
|
+
laminate,
|
|
3743
|
+
liner: "TypingMind",
|
|
3744
|
+
seed: 0,
|
|
3745
|
+
effectMap: { asset: "optical-map", layer: "artwork" }
|
|
3746
|
+
},
|
|
3747
|
+
assets: {
|
|
3748
|
+
artwork: {
|
|
3749
|
+
source: "sticker",
|
|
3750
|
+
collection: "typingmind",
|
|
3751
|
+
slug,
|
|
3752
|
+
file: "artwork",
|
|
3753
|
+
name,
|
|
3754
|
+
credit: referenceStickerCredit
|
|
3755
|
+
},
|
|
3756
|
+
"optical-map": {
|
|
3757
|
+
source: "sticker",
|
|
3758
|
+
collection: "typingmind",
|
|
3759
|
+
slug,
|
|
3760
|
+
file: "effects",
|
|
3761
|
+
name: `${name} optical map`,
|
|
3762
|
+
credit: referenceStickerCredit
|
|
3763
|
+
}
|
|
3764
|
+
},
|
|
3765
|
+
front: {
|
|
3766
|
+
background: "#00000000",
|
|
3767
|
+
layers: [
|
|
3768
|
+
{
|
|
3769
|
+
id: "artwork",
|
|
3770
|
+
name: "Original artwork",
|
|
3771
|
+
kind: "image",
|
|
3772
|
+
asset: "artwork",
|
|
3773
|
+
x: 0,
|
|
3774
|
+
y: 0,
|
|
3775
|
+
w: 1024,
|
|
3776
|
+
h: 1024,
|
|
3777
|
+
fit: "contain",
|
|
3778
|
+
opacity: 1,
|
|
3779
|
+
radius: 0
|
|
3780
|
+
}
|
|
3781
|
+
]
|
|
3782
|
+
},
|
|
3783
|
+
back: { background: "#00000000", layers: [] }
|
|
3784
|
+
})
|
|
3785
|
+
);
|
|
3557
3786
|
var printerPresets = {
|
|
3558
3787
|
generic: {
|
|
3559
3788
|
name: "Generic kiss-cut printer",
|
|
@@ -5823,15 +6052,15 @@ var community_sticker_sources_default = {
|
|
|
5823
6052
|
version: 1
|
|
5824
6053
|
}
|
|
5825
6054
|
};
|
|
5826
|
-
var
|
|
6055
|
+
var collection2 = [
|
|
5827
6056
|
["crafter", "12dd5570-2154-4f85-a6e4-f1459854bd43"],
|
|
5828
6057
|
["friday", "9539473f-c73a-4898-a140-2585ddfbc158"],
|
|
5829
6058
|
["brew", "cf3f2e1a-4a31-42de-ad6c-8825303b2f09"]
|
|
5830
6059
|
];
|
|
5831
|
-
var communityStickerIds =
|
|
6060
|
+
var communityStickerIds = collection2.map(
|
|
5832
6061
|
([, id2]) => `community-${id2}`
|
|
5833
6062
|
);
|
|
5834
|
-
var communityStickerStyles =
|
|
6063
|
+
var communityStickerStyles = collection2.map(([slug, id2]) => {
|
|
5835
6064
|
const original = badgeDesignSchema.parse(community_sticker_sources_default[slug]);
|
|
5836
6065
|
const credit2 = { label: "Railly Hugo", url: `https://makeables.dev/submissions/${id2}` };
|
|
5837
6066
|
return badgeDesignSchema.parse({
|
|
@@ -5897,149 +6126,16 @@ var communityStickerStyles = collection.map(([slug, id2]) => {
|
|
|
5897
6126
|
}
|
|
5898
6127
|
});
|
|
5899
6128
|
});
|
|
5900
|
-
var
|
|
5901
|
-
|
|
5902
|
-
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
"holo-glitter",
|
|
5910
|
-
"gloss"
|
|
5911
|
-
],
|
|
5912
|
-
[
|
|
5913
|
-
"cmd-enter",
|
|
5914
|
-
"Cmd + Enter",
|
|
5915
|
-
"Chrome locket \xB7 pink enamel",
|
|
5916
|
-
1.1,
|
|
5917
|
-
0.3,
|
|
5918
|
-
0.4,
|
|
5919
|
-
0.55,
|
|
5920
|
-
"white",
|
|
5921
|
-
"gloss"
|
|
5922
|
-
],
|
|
5923
|
-
[
|
|
5924
|
-
"energy",
|
|
5925
|
-
"TypingMind Energy",
|
|
5926
|
-
"Glitter vapour \xB7 gloss laminate",
|
|
5927
|
-
1,
|
|
5928
|
-
1,
|
|
5929
|
-
1,
|
|
5930
|
-
0.5,
|
|
5931
|
-
"holo-glitter",
|
|
5932
|
-
"gloss"
|
|
5933
|
-
],
|
|
5934
|
-
[
|
|
5935
|
-
"agi-is-coming",
|
|
5936
|
-
"AGI Is Coming",
|
|
5937
|
-
"Gloss laminate \xB7 sunset print",
|
|
5938
|
-
1,
|
|
5939
|
-
0.45,
|
|
5940
|
-
0.25,
|
|
5941
|
-
0.45,
|
|
5942
|
-
"white",
|
|
5943
|
-
"gloss"
|
|
5944
|
-
],
|
|
5945
|
-
["motion", "TypingMind Motion", "Holographic glitter", 1, 1, 1, 0.6, "holo-glitter", "gloss"],
|
|
5946
|
-
[
|
|
5947
|
-
"typingmind",
|
|
5948
|
-
"TypingMind",
|
|
5949
|
-
"Oil-slick holo on black",
|
|
5950
|
-
1.1,
|
|
5951
|
-
1,
|
|
5952
|
-
0.35,
|
|
5953
|
-
0.4,
|
|
5954
|
-
"holographic",
|
|
5955
|
-
"gloss"
|
|
5956
|
-
],
|
|
5957
|
-
["agi-disco", "AGI Disco", "Mirror-ball holo", 1, 1, 1, 0.5, "holo-glitter", "gloss"],
|
|
5958
|
-
["youre-cooked", "You're Cooked", "Matte vinyl print", 0.7, 0, 0, 0.35, "white", "matte"],
|
|
5959
|
-
[
|
|
5960
|
-
"emotional-support",
|
|
5961
|
-
"Emotional AI Support",
|
|
5962
|
-
"Pastel glitter jar",
|
|
5963
|
-
1,
|
|
5964
|
-
1,
|
|
5965
|
-
1,
|
|
5966
|
-
0.5,
|
|
5967
|
-
"holo-glitter",
|
|
5968
|
-
"gloss"
|
|
5969
|
-
]
|
|
6129
|
+
var stickerStyleIds = [
|
|
6130
|
+
...referenceStickerIds,
|
|
6131
|
+
...moralejaStickerIds,
|
|
6132
|
+
...communityStickerIds
|
|
6133
|
+
];
|
|
6134
|
+
var stickerStyles = [
|
|
6135
|
+
...referenceStickerStyles,
|
|
6136
|
+
...moralejaStickerStyles,
|
|
6137
|
+
...communityStickerStyles
|
|
5970
6138
|
];
|
|
5971
|
-
var referenceStickerIds = collection2.map(
|
|
5972
|
-
([slug]) => `typingmind-${slug}`
|
|
5973
|
-
);
|
|
5974
|
-
var referenceStickerCredit = {
|
|
5975
|
-
label: "Ann Nguyen \xB7 TypingMind",
|
|
5976
|
-
url: "https://www.bubbbly.com/sticker-pack"
|
|
5977
|
-
};
|
|
5978
|
-
var referenceStickerStyles = collection2.map(
|
|
5979
|
-
([slug, name, description, gloss, holography, sparkle, relief, stock, laminate]) => ({
|
|
5980
|
-
version: 1,
|
|
5981
|
-
product: "sticker",
|
|
5982
|
-
source: `typingmind-${slug}`,
|
|
5983
|
-
name,
|
|
5984
|
-
description,
|
|
5985
|
-
event: "TypingMind",
|
|
5986
|
-
artPrompt: "",
|
|
5987
|
-
material: { surface: "prism", roughness: 0.35, iridescence: 0.4, speed: 0.2 },
|
|
5988
|
-
sticker: {
|
|
5989
|
-
finish: sparkle === 1 ? "glitter" : stock === "holographic" ? "holographic" : "vinyl",
|
|
5990
|
-
border: 0,
|
|
5991
|
-
gloss,
|
|
5992
|
-
holography,
|
|
5993
|
-
sparkle,
|
|
5994
|
-
relief,
|
|
5995
|
-
flakes: 170,
|
|
5996
|
-
stock,
|
|
5997
|
-
laminate,
|
|
5998
|
-
liner: "TypingMind",
|
|
5999
|
-
seed: 0,
|
|
6000
|
-
effectMap: { asset: "optical-map", layer: "artwork" }
|
|
6001
|
-
},
|
|
6002
|
-
assets: {
|
|
6003
|
-
artwork: {
|
|
6004
|
-
source: "sticker",
|
|
6005
|
-
collection: "typingmind",
|
|
6006
|
-
slug,
|
|
6007
|
-
file: "artwork",
|
|
6008
|
-
name,
|
|
6009
|
-
credit: referenceStickerCredit
|
|
6010
|
-
},
|
|
6011
|
-
"optical-map": {
|
|
6012
|
-
source: "sticker",
|
|
6013
|
-
collection: "typingmind",
|
|
6014
|
-
slug,
|
|
6015
|
-
file: "effects",
|
|
6016
|
-
name: `${name} optical map`,
|
|
6017
|
-
credit: referenceStickerCredit
|
|
6018
|
-
}
|
|
6019
|
-
},
|
|
6020
|
-
front: {
|
|
6021
|
-
background: "#00000000",
|
|
6022
|
-
layers: [
|
|
6023
|
-
{
|
|
6024
|
-
id: "artwork",
|
|
6025
|
-
name: "Original artwork",
|
|
6026
|
-
kind: "image",
|
|
6027
|
-
asset: "artwork",
|
|
6028
|
-
x: 0,
|
|
6029
|
-
y: 0,
|
|
6030
|
-
w: 1024,
|
|
6031
|
-
h: 1024,
|
|
6032
|
-
fit: "contain",
|
|
6033
|
-
opacity: 1,
|
|
6034
|
-
radius: 0
|
|
6035
|
-
}
|
|
6036
|
-
]
|
|
6037
|
-
},
|
|
6038
|
-
back: { background: "#00000000", layers: [] }
|
|
6039
|
-
})
|
|
6040
|
-
);
|
|
6041
|
-
var stickerStyleIds = [...referenceStickerIds, ...communityStickerIds];
|
|
6042
|
-
var stickerStyles = [...referenceStickerStyles, ...communityStickerStyles];
|
|
6043
6139
|
|
|
6044
6140
|
// ../design/dist/catalog.js
|
|
6045
6141
|
var catalog_default = [
|
|
@@ -19915,7 +20011,7 @@ function badgeQrLayout(destination, width, maxCellSize = 20) {
|
|
|
19915
20011
|
return { matrix, cell };
|
|
19916
20012
|
}
|
|
19917
20013
|
|
|
19918
|
-
// ../design/dist/chunk-
|
|
20014
|
+
// ../design/dist/chunk-T6Y3X3GS.js
|
|
19919
20015
|
import { z as z5 } from "zod";
|
|
19920
20016
|
var COMMUNITY_IMAGE_LIMIT = 3e6;
|
|
19921
20017
|
var COMMUNITY_JSON_LIMIT = 256e3;
|
|
@@ -21003,7 +21099,7 @@ async function readPackageJson(value) {
|
|
|
21003
21099
|
}
|
|
21004
21100
|
|
|
21005
21101
|
// package.json
|
|
21006
|
-
var version = "0.
|
|
21102
|
+
var version = "0.8.0";
|
|
21007
21103
|
|
|
21008
21104
|
// src/errors.ts
|
|
21009
21105
|
var InputError = class extends Error {
|
|
@@ -22522,6 +22618,7 @@ function prepareSticker(art, material, optical) {
|
|
|
22522
22618
|
const mask = plate2(width, height);
|
|
22523
22619
|
const coating = plate2(width, height);
|
|
22524
22620
|
const reverse = plate2(width, height);
|
|
22621
|
+
const reverseTexture = plate2(width, height);
|
|
22525
22622
|
const preview = plate2(width, height);
|
|
22526
22623
|
const effects = plate2(width, height);
|
|
22527
22624
|
const source = art.getContext("2d")?.getImageData(0, 0, width, height);
|
|
@@ -22609,6 +22706,7 @@ function prepareSticker(art, material, optical) {
|
|
|
22609
22706
|
for (let x = -width; x < width * 1.5; x += material.liner ? 256 : 145)
|
|
22610
22707
|
reverse.ctx.fillText(material.liner ?? "makeables", x + Math.floor(y / 68) % 2 * 128, y);
|
|
22611
22708
|
reverse.ctx.restore();
|
|
22709
|
+
reverseTexture.ctx.drawImage(reverse.canvas, 0, 0);
|
|
22612
22710
|
reverse.ctx.globalCompositeOperation = "destination-in";
|
|
22613
22711
|
reverse.ctx.drawImage(mask.canvas, 0, 0);
|
|
22614
22712
|
function draw(ctx, light = { x: 0.15, y: -0.2 }) {
|
|
@@ -22678,6 +22776,7 @@ function prepareSticker(art, material, optical) {
|
|
|
22678
22776
|
artwork: art,
|
|
22679
22777
|
surface: surface.canvas,
|
|
22680
22778
|
reverse: reverse.canvas,
|
|
22779
|
+
reverseTexture: reverseTexture.canvas,
|
|
22681
22780
|
mask: mask.canvas,
|
|
22682
22781
|
preview: preview.canvas,
|
|
22683
22782
|
effects: effects.canvas,
|
|
@@ -24101,16 +24200,16 @@ var design_default = '# Art direction, with room to invent\n\nThe catalog is a r
|
|
|
24101
24200
|
var images_default = '# Makeables images\n\nLocal reference tools need no generation service, account or repository checkout.\nUse these when `cards` needs measured geometry, preparation or selective tracing.\nParameters are a JSON object (or `@file`) passed through `--params`. Outputs use\nnew paths; originals are never overwritten. Read each generated preview.\n\n```sh\nmakeables image detect --file reference.png\nmakeables image prepare --file reference.png --out prepared --params \'{"crop":"20,30,1000,630","patch":["80,80,120,80,300,80,6,0"]}\'\nmakeables image trace --file prepared --out card.svg --params \'{"title":"My card","credit":"Source and author","tones":7}\'\nmakeables image sample --file reference.png --params \'{"points":["20,30","100,80"]}\'\nmakeables image measure --file reference.png --params \'{"rows":"100,200","cols":"80","dark":250}\'\nmakeables image map --file reference.png --params \'{"box":"10,20,100,80","colors":6}\'\nmakeables image glyphs --file reference.png --out glyph.svg --params \'{"box":"20,30,200,80","at":"100,200","fill":"#111111"}\'\nmakeables image rotate --file portrait.svg --out card.svg --params \'{"top":"left"}\'\nmakeables image compare --file card.svg --ref reference.png --out compare.png --params \'{"upright":"left","ref-box":"20,30,756,1200"}\'\nmakeables validate --file card.svg --out preview.png\n```\n\n`detect` suggests crop regions; inspect the image rather than trusting the\nheuristic. `prepare` uses source-pixel coordinates, crops near the 1200:756 ratio,\npatches from the untouched source and fills background at the crop border.\nA patch is `destinationX,destinationY,width,height,sourceX,sourceY,feather,flop`;\nonly remove details the user wants removed. Compare every patched area closely.\nOptional `edge-band` and `bg-tol` tune edge cleanup. A substantially different\ncrop ratio is rejected to avoid stretching; rotate portrait objects instead.\n\n`trace` uses 2\u201312 luminance bands and optional `ink` threshold (0\u20131). `raster:true`\nkeeps the prepared image under vector ink. Tracing and `glyphs` require the\noptional `potrace` executable; `makeables doctor` checks it. Install it only\nwithin the user\'s installation authorization (macOS: `brew install potrace`).\nOther operations do not need potrace. No automatic package install occurs.\n\n`sample` returns a local 3\xD73 color average and center pixel. `measure` returns\ndark runs in rows/columns; use these for borders, stroke slopes and barcodes.\n`map` produces a color legend and a small pixel map (at most 160 \xD7 200).\nFor flat reference objects, use measured shapes, shared geometry and original\ntext; trace unusual glyphs selectively. Keep counters with even-odd fill. Draw\nportrait objects upright, retain proportions, then rotate the entire card.\n\nWeb research is optional and uses tools available in the current agent session.\nPrefer official sources for assets and provenance, use community sources for\ncontext, and do not bypass bot checks or invent permission. Preserve attribution\nand distinguish an unofficial colorway from a documented variant. Respect no-web\nrequests; these CLI tools operate on local inputs.\n\n## Optional image generation\n\nUse this after the user chooses generation or requests a change that needs new image content. A style reference alone does not authorize transforming the portrait. Honor an original-photo or filters-only choice; editable monochrome, tint, thermal, crop and other native treatments do not require ai-cli.\n\nDistinguish transforming the person\'s photo from generating separate decorative artwork. A portrait transformation needs the actual portrait, not just the style reference. Keep the person\'s identity, framing, pose and proportions. For separate artwork, leave the portrait unchanged unless the user also requested its transformation.\n\nCheck `makeables doctor --json`. If ai-cli is missing, ask whether to install it for the requested transformation, then run:\n\n```sh\nnpm install --global ai-cli\nai image --help\nai models --type image --json\n```\n\nUse the installed CLI\'s setup instructions for the user\'s AI Gateway credentials. Never put keys in chat, files, prompts, page storage, WebMCP arguments or the session URL. Explain that generation sends the selected source images to an external provider and uses Gateway credits separately from the coding agent\'s subscription. Confirm that processing and spending if not already authorized. If declined, offer the original photo or editable filters and continue with the user\'s choice.\n\nUse the original local photo where available. To transform the current editor photo instead:\n\n```sh\nmakeables studio call badge_get_image --url "$MAKEABLES_URL" --params \'{"target":"portrait"}\' --json > portrait-response.json\nmakeables image extract --file portrait-response.json --out portrait.webp\n```\n\nThe extraction helper also accepts agent-browser\'s WebMCP JSON envelope and refuses to overwrite files. Keep image bytes out of the conversation.\n\nChoose a currently available model that accepts reference images. Verify the installed `ai image --help` flags, then use a prompt tailored to the design:\n\n```sh\nai image -m "$BADGE_IMAGE_MODEL" -i portrait.webp --output transformed.png --json \\\n "Transform only the supplied portrait into detailed pixel art. Preserve this person, head-and-shoulders framing, pose and proportions. No typography and no invented body."\n```\n\nFor a cutout, request background removal explicitly and inspect whether the output has real alpha. An opaque background is not transparency. Do not report an image as transformed if generation failed; keep the original and explain the failure.\n\nImport the result using a fresh state:\n\n```sh\nmakeables studio call badge_inspect --url "$MAKEABLES_URL" --params \'{"section":"state"}\' --json > state.json\nmakeables image params --file transformed.png --state state.json > image-params.json\nmakeables studio call badge_set_image --url "$MAKEABLES_URL" --params @image-params.json --json\n```\n\nFor artwork, add an image layer first, then pass `--target artwork` to `image params`. Inspect the resulting badge on both faces. Original and generated images stay separate so the user can return to the photograph.\n';
|
|
24102
24201
|
|
|
24103
24202
|
// skill-data/sheets.md
|
|
24104
|
-
var sheets_default = "# Sticker sheets\n\nCompose kiss-cut sticker sheets, or a single die-cut sticker, and export a PDF a\nsticker printer accepts without manual prepress. The editor lives at\n`/make/sheet`; the CLI builds, checks and exports the same `.sheet.json` file.\n\n## Types and printer presets\n\n| Type | Cut | Size | Stock | Border |\n|---|---|---|---|---|\n| `classic` (default) | kiss-cut | A5 | white matte | 2 mm white |\n| `small` | kiss-cut | A6 or 10\xD715 cm | white gloss | 2 mm white |\n| `single` | die-cut | wraps the sticker | white gloss | 2 mm white |\n| `clear` | kiss-cut | A6 | transparent | none, White ink under the art |\n| `holographic` | kiss-cut | A6 | holographic | 2 mm, White ink under the art |\n\nThe `generic` printer preset uses a `CutContour` spot at 0.25 pt with overprint,\na `White` spot, 1 mm bleed, 1.5 mm safe zone, 3 mm between cuts and a 5 mm sheet\nmargin. These are common kiss-cut values, not a specific printer's template:\ntell the user to confirm the spot names and template with their printer before\nthe first run.\n\n## Build a sheet\n\n```bash\nmakeables sheet new --type classic --out stickers.sheet.json\nmakeables sheet add --file stickers.sheet.json --sticker typingmind-energy\nmakeables sheet add --file stickers.sheet.json --sticker ./my-sticker.json --width-mm 40\nmakeables sheet pack --file stickers.sheet.json\nmakeables sheet check --file stickers.sheet.json --json\nmakeables sheet export --file stickers.sheet.json --out stickers.pdf --preview proof.png\n```\n\n`--sticker` takes a sticker style id (`makeables styles list --product sticker`)\nor a sticker design JSON. `add` places the sticker at the nearest free spot;\n`pack` rearranges everything around the sheet's `hero` (or the centre), largest\nfirst, keeping each sticker's rotation and turning a quarter only when nothing\nelse fits. Each sticker's canvas is padded so its border and bleed always fit.\n\n`check` reports `printable`, `violations` (`too-close`, `outside-margin`) and\nper-sticker `issues` (the `makeables cut` codes plus `low-resolution` under\n300 dpi). `export` refuses a sheet that is not printable. Review `proof.png`\nwith the user: magenta is the cut line, never printed.\n\n## The PDF\n\nOne page sized to the sheet (a single's page wraps its sticker with the margin).\nLayers: `Art` (each sticker's raster in DeviceCMYK, flat artwork over white\ninside the cut, bled 1 mm), `White` when the type prints white ink (the ink\narea, overprinting) and `CutContour` (one closed path per loop, overprinting).\nColours are converted without an ICC profile; the printer's RIP applies its own.\nThe file is not a certified PDF/X-4; if a printer requires PDF/X, run it through\ntheir preflight.\n";
|
|
24203
|
+
var sheets_default = "# Sticker sheets\n\nCompose kiss-cut sticker sheets, or a single die-cut sticker, and export a PDF a\nsticker printer accepts without manual prepress. The editor lives at\n`/make/sheet`; the CLI builds, checks and exports the same `.sheet.json` file.\n\nThe editor's Templates tab includes three A5 sheets made entirely from moraleja.co\noriginals: Ship it, Code & coffee, and Kebo & friends. Open them from\n`/stickers/moraleja` or use `/make/sheet?template=moraleja-ship-it` (also\n`moraleja-code-coffee`, `moraleja-kebo-friends`). Each template URL keeps its own\nbrowser draft. Applying a template from the library is undoable. Creator credits\nstay in every sticker document when exporting the sheet JSON for CLI use.\n\n## Types and printer presets\n\n| Type | Cut | Size | Stock | Border |\n|---|---|---|---|---|\n| `classic` (default) | kiss-cut | A5 | white matte | 2 mm white |\n| `small` | kiss-cut | A6 or 10\xD715 cm | white gloss | 2 mm white |\n| `single` | die-cut | wraps the sticker | white gloss | 2 mm white |\n| `clear` | kiss-cut | A6 | transparent | none, White ink under the art |\n| `holographic` | kiss-cut | A6 | holographic | 2 mm, White ink under the art |\n\nThe `generic` printer preset uses a `CutContour` spot at 0.25 pt with overprint,\na `White` spot, 1 mm bleed, 1.5 mm safe zone, 3 mm between cuts and a 5 mm sheet\nmargin. These are common kiss-cut values, not a specific printer's template:\ntell the user to confirm the spot names and template with their printer before\nthe first run.\n\n## Build a sheet\n\n```bash\nmakeables sheet new --type classic --out stickers.sheet.json\nmakeables sheet add --file stickers.sheet.json --sticker typingmind-energy\nmakeables sheet add --file stickers.sheet.json --sticker ./my-sticker.json --width-mm 40\nmakeables sheet pack --file stickers.sheet.json\nmakeables sheet check --file stickers.sheet.json --json\nmakeables sheet export --file stickers.sheet.json --out stickers.pdf --preview proof.png\n```\n\n`--sticker` takes a sticker style id (`makeables styles list --product sticker`)\nor a sticker design JSON. `add` places the sticker at the nearest free spot;\n`pack` rearranges everything around the sheet's `hero` (or the centre), largest\nfirst, keeping each sticker's rotation and turning a quarter only when nothing\nelse fits. Each sticker's canvas is padded so its border and bleed always fit.\n\n`check` reports `printable`, `violations` (`too-close`, `outside-margin`) and\nper-sticker `issues` (the `makeables cut` codes plus `low-resolution` under\n300 dpi). `export` refuses a sheet that is not printable. Review `proof.png`\nwith the user: magenta is the cut line, never printed.\n\n## The PDF\n\nOne page sized to the sheet (a single's page wraps its sticker with the margin).\nLayers: `Art` (each sticker's raster in DeviceCMYK, flat artwork over white\ninside the cut, bled 1 mm), `White` when the type prints white ink (the ink\narea, overprinting) and `CutContour` (one closed path per loop, overprinting).\nColours are converted without an ICC profile; the printer's RIP applies its own.\nThe file is not a certified PDF/X-4; if a printer requires PDF/X, run it through\ntheir preflight.\n";
|
|
24105
24204
|
|
|
24106
24205
|
// skill-data/sticker-art-direction.md
|
|
24107
24206
|
var sticker_art_direction_default = '# Sticker art direction\n\nLoad this with `stickers` before creating or adapting a sticker. The studio\'s\nAnn Nguyen \xB7 TypingMind collection is the visual quality reference. The target is\nits considered illustration, typography and physical finish, with a new subject\nand its own identity. Do not paste TypingMind\'s name, slogans or signature into\nan unrelated design. Preserve every supplied creator credit.\n\n## The visual language\n\nStart with **one collectible object or one great typographic composition**:\na locket, a fizzy can, a tiny computer disaster, a keepsake from a place.\nThe idea should be recognizable as a silhouette before the text is read.\nGive it a particular personality, not a generic decorative container.\n\nLettering is part of the drawing. Use a confident, tightly composed hierarchy:\none large phrase, a supporting line, then small details. Chunky inked lettering,\nsoft corners and gently irregular spacing can feel human. Avoid stacking\nunrelated default-font labels in rectangles. Small type is a reward, not the\nmain story. Preserve supplied wording, accents, punctuation and intentional jokes.\n\nChoose a small palette for the subject. Warm cream, near-black contour and two\nor three intentional accents are a useful starting point, not a mandatory rainbow.\nThe reference collection has distinct personalities: silver/pink enamel,\nsunset vinyl, blue-violet energy, pastel vessels, oil-slick black. A family can\nshare craft and material quality without making every sticker the same color.\n\nUse five to seven major shapes and generous calm areas. Aim for mostly clean\nsolid color, smooth near-black contours and only broad, restrained shading.\nSimplify the scene before adding anything. Small type should never compete with\nthe main phrase. Zero to two supporting details are enough. Do not prescribe\nengraving, crosshatching, distressing, ceramic speckles, intricate scenery,\nmetallic bevels or decorative filler. A simpler drawing with good proportions\nis better than a crowded, over-rendered illustration. The live shader supplies\nreflections and glitter; do not bake that noise across the printed image.\n\nLet the materials explain the object. Keep dark outlines and most text solid;\nuse foil on a rim or metal hardware, glitter in selected highlights, raised ink\non enamel and lettering, gloss on glass, matte where the print should stay soft.\nThe white-vinyl designs should be just as considered as the holographic ones.\nFinish the real alpha edge cleanly, with intentional negative holes and enough\nspace around the complete die-cut shape.\n\n## Adapt an existing submission\n\n1. Read its editable package and inspect both its flat artwork and live material.\n Record exact text, logo geometry, concept, creator, submission ID and source\n bytes. Save the original package before revising.\n2. Write a direction specific to that object: what becomes the silhouette, what\n leads the typography, the palette, at most two supporting details, and where the\n material is allowed to shine. State the invariants before generating anything.\n3. Edit native vectors/text when that gives the best result. Use image generation\n for richer illustration when available and authorized. Give the current art\n as the edit target and two or three actual original collection images as visual\n references. Attach the image bytes: mentioning an artist or a URL in text is\n insufficient. Label each image\'s role. Compare against these same references\n after generating. Do not ask for a vague "make it premium".\n Use the original vector logo over the generated illustration when exact brand\n geometry matters; image models can distort even a clearly supplied mark.\n4. Keep the source document and original layers. If an illustrated replacement is\n raster, retain the original layers hidden with clear names; do not claim its\n baked lettering is independently editable. Keep the new artwork and optical\n map as distinct assets so finish changes never repaint the illustration.\n5. Use `material map` or native `regions`. Inspect the actual live reflection and\n separate surfaces. A still illustration with a sparkly border is insufficient.\n6. Compare at 64 px, normal editor size and enlarged. Reopen the portable package,\n test its alpha edge on light/dark backgrounds and test next/peel/layers on mobile.\n Preserve the public submission identity and creator when revising a publication.\n\n## Prompt scaffold\n\nReplace every bracket. Be specific about the object; keep the optical directions\nconsistent with the map you will author.\n\n> Use case: style-transfer for a printable die-cut collectible sticker.\n> Image 1 is the edit target: preserve [concept, identity, exact logo, exact text].\n> Images 2\u20134 are visual references for illustration, typography and material craft\n> only; do not copy their text or brands.\n> Direction: [one sentence with the distinctive object/story].\n> Silhouette/composition: [outline, visual center, lettering placement].\n> Typography: [large phrase, supporting text, tiny detail; custom visual character].\n> Palette: [warm/cool base, outline, 2\u20133 accents tied to the subject].\n> Restraint: five to seven major shapes, mostly clean solid color, generous calm\n> areas, smooth contours, at most two supporting details. Simplify, do not embellish.\n> Material hierarchy: [solid ink], [foil regions], [glitter accents], [raised ink],\n> [gloss or matte]. Keep text legible; do not apply sparkle uniformly.\n> Text verbatim: "[exact text including punctuation and accents]".\n> Flat head-on artwork, complete silhouette with generous margin, no perspective,\n> cast shadow, backdrop, mockup, watermark or surrounding labels. Real transparent\n> alpha when supported. If the selected model cannot output alpha, request a\n> strictly uniform chroma background absent from the artwork, extract a clean\n> alpha matte and inspect fine edges before importing.\n> Avoid: generic vector clipart, default-font plaques, random decoration, inflated\n> balloon shapes, engraving, distressing, crosshatching, intricate scenery,\n> extra ornaments, thick metallic bevels, noise, illegible letters, a white\n> rectangular background, baked stage\n> lighting, copied reference branding.\n\nFor AI Gateway, use the user\'s authorized key in the process environment; never\nstore it in a document, prompt, repository, log or frontend. GPT Image 2 is\navailable through Gateway\'s OpenAI-compatible image generation/edit endpoints.\nUse the environment\'s image-generation workflow rather than installing an\nunrelated provider. Keep the generation prompt and model with the local revision.\nDo not infer that image generation also produced a correctly registered FX map.\n\n## Get the real reference images\n\nRequires Makeables **0.6.0 or newer**. The shared catalog contains nine unchanged\nAnn Nguyen \xB7 TypingMind originals and three revised Community examples. Pick\nreferences by composition: `absolutely-right` for type, `youre-cooked` for a\nsimple comic object, `emotional-support` for a pastel vessel, `cmd-enter` for\nenamel, `energy` for a can, `agi-is-coming` for an illustrated scene.\n\nTheir original artwork is served at\n`https://makeables.dev/stickers/typingmind/<slug>.webp`; the authored numeric\nmap is `<slug>-fx.webp`. Download the artwork for the authorized generation\nrequest, inspect it, then attach those actual files as reference inputs. Never\nsend the RGB optical map as a style image. The CLI also bundles these files\nunder `dist/assets/stickers/typingmind/` for offline use.\n\nThe three Community examples retain their original editable layers hidden; their\nnew illustration and optical map are separate bitmap assets. Reuse their material\nsetup without claiming that lettering baked into a bitmap is editable text.\n\n## Optical recipe\n\n`red = foil`, `green = glitter`, `blue = height/relief`. Use a PNG or lossless WebP.\nA map is numeric data, not a pretty colored preview. Keep it registered to the\nwhole artwork, including transparent padding. Its black areas are plain print.\n\n| Region | Foil | Glitter | Relief |\n| --- | ---: | ---: | ---: |\n| Dark contour / small print | 0\u20130.05 | 0 | 0.3\u20130.65 |\n| Colored enamel / large lettering | 0.05\u20130.2 | 0.02\u20130.15 | 0.6\u20130.9 |\n| Exposed silver rim | 0.85\u20131 | 0.45\u20131 | 0.35\u20130.55 |\n| Glass or ceramic face | 0.05\u20130.15 | 0\u20130.08 | 0.2\u20130.45 |\n| Selected foil highlight | 0.65\u20131 | 0.2\u20130.5 | 0.4\u20130.7 |\n\nThese are starting ranges. Inspect at multiple angles before accepting them.\nUse `border: 0` for an already finished die-cut edge, `flakes: 170` as a reference\nscale, and modest relief. Too much relief makes flat print appear melted.\n\n```sh\nmakeables material map --file sticker.json --id artwork --ref optical.png\nmakeables material set --file sticker.json --params \'{"border":0,"holography":0.9,"sparkle":0.8,"gloss":1,"relief":0.5,"flakes":170,"stock":"holo-glitter","laminate":"gloss"}\'\nmakeables material set --file sticker.json --params \'{"regions":{"lettering":{"foil":0.08,"glitter":0.04,"relief":0.8}}}\'\n```\n\n## Acceptance before showing the result\n\n- The concept reads immediately at thumbnail size and is recognizably the user\'s.\n- All text and the logo are correct. No accidental reference branding appears.\n- The silhouette, letter spacing and supporting details feel deliberately drawn.\n- Foil/glitter are selective; ink remains readable during tilt.\n- The outline is clean on white and near-black, without a chroma halo or cut-off tips.\n- The same live material engine works in the editor, with pause, reduced motion,\n shuffle, curl, completed peel and separated layers.\n- Original layers/credits and both artwork/FX assets survive save/export/reopen.\n\nIf a check fails, make the smallest focused revision and inspect again.\nDo not guarantee taste from a prompt alone; the reference comparison and iteration\nare part of the workflow.\n';
|
|
24108
24207
|
|
|
24109
24208
|
// skill-data/stickers.md
|
|
24110
|
-
var stickers_default = '# Makeables stickers\n\nStickers are the third profile of the shared design document: `product: "sticker"`,\na transparent 1024 \xD7 1024 canvas, and editable text, shapes, vectors and images.\nNo photo or personal information is required. Before designing or adapting, also\nload `makeables skills get sticker-art-direction` for the visual language, prompt\nscaffold, material recipes and quality review.\n\n```sh\nmakeables styles list --product sticker\nmakeables new sticker --style typingmind-absolutely-right --out sticker.json\nmakeables layer set --file sticker.json --id artwork --params \'{"x":100,"y":100,"w":824,"h":824,"rotation":-5}\'\nmakeables material set --file sticker.json --params \'{"finish":"glitter","border":18,"sparkle":0.72,"gloss":0.5}\'\nmakeables render --file sticker.json --out artwork.png\n```\n\n`render` produces the flat artwork. Follow the core guide\'s preview order: embedded MCP App, built-in browser,\nthen CLI + inline PNG. The MCP preview includes the die-cut material. In the\nbuilt-in browser, open `/make/sticker` and import the same JSON. Use the shared Design Studio\'s PNG action\nfor a transparent PNG including the border, glitter and coating. PNG exports\nexclude the stage shadow, tilt and peel. Export JSON preserves editable layers,\nmaterial settings and embedded images. Save keeps the document in that browser.\n\nFinishes: `glitter`, `holographic`, `vinyl`. Border is 0\u201340 canvas pixels;\n`widthMm` (10\u2013300, default 75) is the printed width that turns pixels into\nmillimetres. Sparkle is 0\u20131, gloss is 0\u20131.5, and the integer seed fixes the crystal positions.\nThe interactive preview is a flexible mesh: pointer movement changes studio\nreflections, dragging the center bends the sheet, and dragging a corner rolls\nthe paper reverse into view. Tap the sticker to advance. Flick horizontally to advance or go back. A complete\ncorner pull peels it away into the next sticker; an incomplete pull springs back.\nThe toolbar\u2019s Peel sticker action holds a peel. Glitter crystals keep their positions while their reflections change;\nholographic stock shifts with the light. Pause and reduced-motion preferences\nstop continuous motion. Pause still permits direct dragging; reduced motion keeps\npointer effects static. The preview frames the actual die-cut silhouette, and\nhovering an outer corner lifts it slightly before a drag. Devices without WebGL2\nretain a static material preview.\n\nThe bottom dock selects the same editable styles as the sidebar and retains the\nmost recently loaded community or imported sticker. Each style\nremembers its edits during this studio session; selecting the active thumbnail\ndoes not reset it. Save retains a version in the shared local library. The dock\'s\nMaterial layers control (or `L` while previewing, outside a text field) separates\nsix preview surfaces with a spring animation:\nlaminate, laminate adhesive, ink, stock, adhesive and liner. These describe the\nvisual material, not a manufacturing specification. Focus preview hides the\nside panels; Escape or the focus control brings them back. Save, PNG and Submit\nremain in the same studio. None of these view changes changes the document.\n\nThe sidebar gallery includes nine credited Ann Nguyen \xB7 TypingMind originals with\nunchanged artwork and authored optical maps, plus three refined Community designs\nwith their original source layers retained. All twelve are available in the sidebar,\ndock and offline CLI catalog. Search or filter by finish. The retired\nMakeables lettering presets are no longer offered. For imported artwork, use a\ntransparent PNG/WebP under 2 MB\nand 24 megapixels. Use the same Design Studio as Cards and Badges for layer edits, undo, material\nlocks and versioned local saving. Saved directions appear in the sidebar.\n\n```sh\nmakeables studio start --product sticker --no-open --json\n# Use the returned local session URL for badge_inspect, badge_edit and badge_library.\nmakeables studio save --url "$MAKEABLES_URL" --out sticker.makeables.json --json\nmakeables submit --file sticker.makeables.json --dry-run --json\n```\n\nThe shared studio tools retain their `badge_` names for compatibility. A material\npatch uses `edits.sticker`, for example `{"finish":"glitter","border":24}`.\nThe single editable face is `front`; the paper reverse is a preview interaction.\nDiscover `badge_view` for optional `sticker: {exploded, peeled, focused}` booleans,\nalongside the existing `moving` and `theme` controls. Supply the latest revision\nfrom `badge_inspect`. Exploded and peeled are mutually exclusive, and state reports\nthe active view under `view.sticker`. Exports and submissions always flatten the\nunchanged material document, even while its preview is peeled or separated.\n\nSubmit opens the same `/submit` preview, credit and consent flow as the other\nproducts. Portable packages include one transparent material PNG and editable\nlayers/assets, without participant data. `makeables submit --file sticker.json`\nalso prepares this package directly; `render` remains a flat artwork export.\nAfter the user approves the exact version, submit with `--yes`. A `pending`\nreceipt means admin review, not publication. Approved stickers appear in the\npublic gallery and the studio\'s Community collection and can be reopened for\nediting. Status recovery and author withdrawal use the shared submission service.\n\n\n## Detailed materials, for every sticker\n\nThe same renderer handles originals, imported artwork and generated designs. It uses\nlinear-light shading, HDR glitter reflections, bloom, relief normals and six flexible\nmaterial surfaces. A nice illustration alone is not an optical material: author the\nprint and its surface responses separately.\n\n1. Keep the artwork transparent at 1024 \xD7 1024. Design a clear die-cut silhouette,\n intentional negative space, crisp lettering and generous calm areas. Keep\n editable text/vector layers when creating native artwork. For a supplied original,\n preserve the source image; do not redraw its lettering or flatten away details.\n2. Choose the stock and laminate deliberately. `stock` is `white`, `holographic` or\n `holo-glitter`; `laminate` is `gloss` or `matte`. `holography` and `sparkle` are 0\u20131,\n `relief` is 0\u20131.5, `gloss` is 0\u20131.5, and `flakes` is 40\u2013500 (170 matches the reference).\n Set border to 0 when the supplied artwork already includes its die-cut edge.\n Before delivering, run the print check below; a border of 0 must still pass it.\n3. Author a lossless RGB map registered to the whole artwork image: red controls foil,\n green glitter, blue relief height. Black is plain print. Keep text readable: solid\n ink often wants little foil, the metallic rim strong foil, selected highlights\n glitter, and printed/enamel forms relief. Values can be graded, not only on/off.\n Half-resolution maps are supported. Keep the artwork\u2019s aspect and orientation.\n4. Bind the map to the artwork image layer, or define optical regions on native layers.\n Maps follow contain/cover, position, rotation, clipping, visibility and alpha.\n Regions follow the current editable geometry. Untagged layers above a mapped layer\n restore automatic material in their covered area. A map on a layer takes precedence\n over that layer\u2019s region. Removing the layer removes its optical binding.\n\n```sh\nmakeables material map --file sticker.json --id artwork --ref optical.png\nmakeables material set --file sticker.json --params \'{"border":0,"stock":"holo-glitter","laminate":"gloss","holography":1,"sparkle":1,"gloss":1,"relief":0.55,"flakes":170}\'\n# Or author regions without rasterizing editable text and vector layers:\nmakeables material set --file sticker.json --params \'{"regions":{"headline":{"foil":0.05,"glitter":0.1,"relief":0.85},"ribbon-pink":{"foil":0.9,"glitter":0.8,"relief":0.35}}}\'\n```\n\n5. Inspect the actual live material, not only a flat PNG: check frontal and tilted\n light, each layer, the rear liner, a partial peel, completed peel, shuffle and curl.\n Pause motion for a stable comparison. Use native browser recordings and contact\n sheets when matching a supplied interaction. Check touch-sized screens, reduced\n motion, transparent edges and preservation of unsaved edits.\n6. Export JSON or a portable package to retain both artwork and optical maps. The\n transparent material PNG is a deterministic flat rendition, without the stage or\n animated reflections. Keep creator credit on every supplied reference asset.\n Credit is attribution, not a new license or proof of rights-holder permission.\n\nDo not promise an arbitrary prompt will automatically reach the reference\u2019s detail.\nBuild the artwork and optical regions intentionally, inspect them, and iterate.\n\n## Print check and cut line\n\n```bash\nmakeables cut --file sticker.json --out cut.svg\n```\n\nThe cut offsets the artwork alpha by the border, closes notches narrower than\n1.5 mm and fills holes under 3 mm, so the studio silhouette and the printed cut\nmatch. `cut.svg` is sized in millimetres with one `CutContour` path per loop.\nJSON output reports `printable` and `issues`:\n\n- `touches-edge` (error): the cut reaches the canvas; shrink or move the artwork.\n- `border-under-radius`: under 1 mm the cut follows sharp corners; raise the border.\n- `soft-edge`: with border 0, a semi-transparent matte wider than antialiasing\n prints as a halo; clean the matte or add a border.\n- `notches-closed`, `holes-filled`: the cut bridges detail too small to cut or weed.\n Accept them or open the shape in the artwork.\n\nDo not deliver a sticker for print while `printable` is false. Resolve warnings\nor state them to the user.\n\nTo print several stickers together, or one die-cut sticker with a printer file,\nload `makeables skills get sheets`.\n';
|
|
24209
|
+
var stickers_default = '# Makeables stickers\n\nStickers are the third profile of the shared design document: `product: "sticker"`,\na transparent 1024 \xD7 1024 canvas, and editable text, shapes, vectors and images.\nNo photo or personal information is required. Before designing or adapting, also\nload `makeables skills get sticker-art-direction` for the visual language, prompt\nscaffold, material recipes and quality review.\n\n```sh\nmakeables styles list --product sticker\nmakeables new sticker --style typingmind-absolutely-right --out sticker.json\nmakeables layer set --file sticker.json --id artwork --params \'{"x":100,"y":100,"w":824,"h":824,"rotation":-5}\'\nmakeables material set --file sticker.json --params \'{"finish":"glitter","border":18,"sparkle":0.72,"gloss":0.5}\'\nmakeables render --file sticker.json --out artwork.png\n```\n\n`render` produces the flat artwork. Follow the core guide\'s preview order: embedded MCP App, built-in browser,\nthen CLI + inline PNG. The MCP preview includes the die-cut material. In the\nbuilt-in browser, open `/make/sticker` and import the same JSON. Use the shared Design Studio\'s PNG action\nfor a transparent PNG including the border, glitter and coating. PNG exports\nexclude the stage shadow, tilt and peel. Export JSON preserves editable layers,\nmaterial settings and embedded images. Save keeps the document in that browser.\n\nFinishes: `glitter`, `holographic`, `vinyl`. Border is 0\u201340 canvas pixels;\n`widthMm` (10\u2013300, default 75) is the printed width that turns pixels into\nmillimetres. Sparkle is 0\u20131, gloss is 0\u20131.5, and the integer seed fixes the crystal positions.\nThe interactive preview is a flexible mesh: pointer movement changes studio\nreflections, dragging the center bends the sheet, and dragging a corner rolls\nthe paper reverse into view. Tap the sticker to advance. Flick horizontally to advance or go back. A complete\ncorner pull peels it away into the next sticker; an incomplete pull springs back.\nThe toolbar\u2019s Peel sticker action holds a peel. Glitter crystals keep their positions while their reflections change;\nholographic stock shifts with the light. Pause and reduced-motion preferences\nstop continuous motion. Pause still permits direct dragging; reduced motion keeps\npointer effects static. The preview frames the actual die-cut silhouette, and\nhovering an outer corner lifts it slightly before a drag. Devices without WebGL2\nretain a static material preview.\n\nThe bottom dock selects the same editable styles as the sidebar and retains the\nmost recently loaded community or imported sticker. Each style\nremembers its edits during this studio session; selecting the active thumbnail\ndoes not reset it. Save retains a version in the shared local library. The dock\'s\nMaterial layers control (or `L` while previewing, outside a text field) separates\nsix preview surfaces with a spring animation:\nlaminate, laminate adhesive, ink, stock, adhesive and liner. These describe the\nvisual material, not a manufacturing specification. Focus preview hides the\nside panels; Escape or the focus control brings them back. Save, PNG and Submit\nremain in the same studio. None of these view changes changes the document.\n\nThe sidebar gallery includes nine credited Ann Nguyen \xB7 TypingMind originals with\nunchanged artwork and authored optical maps, 30 moraleja.co originals, and three refined\nCommunity designs with their original source layers retained. All 42 are available in\nthe sidebar, dock and offline CLI catalog. Search by name or creator and filter by\ncollection or finish. `/stickers/moraleja` features her collection and three editable\nsheet templates. Moraleja\'s supplied SVG/PNG masters remain unchanged; display copies\nare lossless WebPs, with an approved bold monospace fallback for Shipper Vibes only.\nThe retired\nMakeables lettering presets are no longer offered. For imported artwork, use a\ntransparent PNG/WebP under 2 MB\nand 24 megapixels. Use the same Design Studio as Cards and Badges for layer edits, undo, material\nlocks and versioned local saving. Saved directions appear in the sidebar.\n\n```sh\nmakeables studio start --product sticker --no-open --json\n# Use the returned local session URL for badge_inspect, badge_edit and badge_library.\nmakeables studio save --url "$MAKEABLES_URL" --out sticker.makeables.json --json\nmakeables submit --file sticker.makeables.json --dry-run --json\n```\n\nThe shared studio tools retain their `badge_` names for compatibility. A material\npatch uses `edits.sticker`, for example `{"finish":"glitter","border":24}`.\nThe single editable face is `front`; the paper reverse is a preview interaction.\nDiscover `badge_view` for optional `sticker: {exploded, peeled, focused}` booleans,\nalongside the existing `moving` and `theme` controls. Supply the latest revision\nfrom `badge_inspect`. Exploded and peeled are mutually exclusive, and state reports\nthe active view under `view.sticker`. Exports and submissions always flatten the\nunchanged material document, even while its preview is peeled or separated.\n\nSubmit opens the same `/submit` preview, credit and consent flow as the other\nproducts. Portable packages include one transparent material PNG and editable\nlayers/assets, without participant data. `makeables submit --file sticker.json`\nalso prepares this package directly; `render` remains a flat artwork export.\nAfter the user approves the exact version, submit with `--yes`. A `pending`\nreceipt means admin review, not publication. Approved stickers appear in the\npublic gallery and the studio\'s Community collection and can be reopened for\nediting. Status recovery and author withdrawal use the shared submission service.\n\n\n## Detailed materials, for every sticker\n\nThe same renderer handles originals, imported artwork and generated designs. It uses\nlinear-light shading, HDR glitter reflections, bloom, relief normals and six flexible\nmaterial surfaces. A nice illustration alone is not an optical material: author the\nprint and its surface responses separately.\n\n1. Keep the artwork transparent at 1024 \xD7 1024. Design a clear die-cut silhouette,\n intentional negative space, crisp lettering and generous calm areas. Keep\n editable text/vector layers when creating native artwork. For a supplied original,\n preserve the source image; do not redraw its lettering or flatten away details.\n2. Choose the stock and laminate deliberately. `stock` is `white`, `holographic` or\n `holo-glitter`; `laminate` is `gloss` or `matte`. `holography` and `sparkle` are 0\u20131,\n `relief` is 0\u20131.5, `gloss` is 0\u20131.5, and `flakes` is 40\u2013500 (170 matches the reference).\n Set border to 0 when the supplied artwork already includes its die-cut edge.\n Before delivering, run the print check below; a border of 0 must still pass it.\n3. Author a lossless RGB map registered to the whole artwork image: red controls foil,\n green glitter, blue relief height. Black is plain print. Keep text readable: solid\n ink often wants little foil, the metallic rim strong foil, selected highlights\n glitter, and printed/enamel forms relief. Values can be graded, not only on/off.\n Half-resolution maps are supported. Keep the artwork\u2019s aspect and orientation.\n4. Bind the map to the artwork image layer, or define optical regions on native layers.\n Maps follow contain/cover, position, rotation, clipping, visibility and alpha.\n Regions follow the current editable geometry. Untagged layers above a mapped layer\n restore automatic material in their covered area. A map on a layer takes precedence\n over that layer\u2019s region. Removing the layer removes its optical binding.\n\n```sh\nmakeables material map --file sticker.json --id artwork --ref optical.png\nmakeables material set --file sticker.json --params \'{"border":0,"stock":"holo-glitter","laminate":"gloss","holography":1,"sparkle":1,"gloss":1,"relief":0.55,"flakes":170}\'\n# Or author regions without rasterizing editable text and vector layers:\nmakeables material set --file sticker.json --params \'{"regions":{"headline":{"foil":0.05,"glitter":0.1,"relief":0.85},"ribbon-pink":{"foil":0.9,"glitter":0.8,"relief":0.35}}}\'\n```\n\n5. Inspect the actual live material, not only a flat PNG: check frontal and tilted\n light, each layer, the rear liner, a partial peel, completed peel, shuffle and curl.\n Pause motion for a stable comparison. Use native browser recordings and contact\n sheets when matching a supplied interaction. Check touch-sized screens, reduced\n motion, transparent edges and preservation of unsaved edits.\n6. Export JSON or a portable package to retain both artwork and optical maps. The\n transparent material PNG is a deterministic flat rendition, without the stage or\n animated reflections. Keep creator credit on every supplied reference asset.\n Credit is attribution, not a new license or proof of rights-holder permission.\n\nDo not promise an arbitrary prompt will automatically reach the reference\u2019s detail.\nBuild the artwork and optical regions intentionally, inspect them, and iterate.\n\n## Print check and cut line\n\n```bash\nmakeables cut --file sticker.json --out cut.svg\n```\n\nThe cut offsets the artwork alpha by the border, closes notches narrower than\n1.5 mm and fills holes under 3 mm, so the studio silhouette and the printed cut\nmatch. `cut.svg` is sized in millimetres with one `CutContour` path per loop.\nJSON output reports `printable` and `issues`:\n\n- `touches-edge` (error): the cut reaches the canvas; shrink or move the artwork.\n- `border-under-radius`: under 1 mm the cut follows sharp corners; raise the border.\n- `soft-edge`: with border 0, a semi-transparent matte wider than antialiasing\n prints as a halo; clean the matte or add a border.\n- `notches-closed`, `holes-filled`: the cut bridges detail too small to cut or weed.\n Accept them or open the shape in the artwork.\n\nDo not deliver a sticker for print while `printable` is false. Resolve warnings\nor state them to the user.\n\nTo print several stickers together, or one die-cut sticker with a printer file,\nload `makeables skills get sheets`.\n';
|
|
24111
24210
|
|
|
24112
24211
|
// skill-data/wallet.md
|
|
24113
|
-
var wallet_default = "# Makeables Wallet\n\nApply or switch the artwork of an existing iPhone Wallet card, or remove a\ncustom design by restoring its original issuer artwork. This changes artwork,\nnot payment credentials or enrollment. It uses experimental, unofficial device\nservices; compatibility depends on iOS. Artwork apply has been tested on a\nWallet card. Restoration of an actual Wallet card is still unverified; state\nthat limitation before the user's first requested device operation.\n\nLoad this guide when the user chooses installation after a card preview, asks\nto change an existing Wallet skin, or asks to restore it. Speak their language.\nCreating or approving a design alone does not authorize a phone write. A\nrequest to apply that exact design authorizes the write once its target is\nestablished; do not add a redundant confirmation.\n\n## Setup and complete artwork\n\nWallet work requires macOS and an iPhone connected over USB, unlocked and\ntrusted. Design/rendering still work on other platforms. Ask only for a missing\nimage or target; never request payment numbers, credentials or raw resource IDs.\n\n```sh\nmakeables wallet doctor\nmakeables wallet setup\n```\n\nSetup downloads a versioned, checksum-verified macOS companion from the public\nMakeables community releases. It includes its Python runtime, native bridges\nand image exporter; a source checkout, Python installation or Xcode is not\nneeded. Reuse the user's existing installation authorization.\n\nUse the saved card JSON, complete SVG, or a flat PNG. For a rendered preview of\nexactly what will be applied:\n\n```sh\nmakeables wallet prep --file card.json --out wallet-preview\n```\n\nOpen `wallet-preview/cardBackgroundCombined@3x.png` and inspect it. The command\nrenders the **entire composition** to opaque 1536 \xD7 969, then prepares the two\nPNGs and PDF. Never extract an SVG's embedded background and discard its vectors.\nKeep chip/logo/details the user requested, check Wallet's lower-left number\narea, and omit account numbers or cardholder names from the artwork. Use\n`--side back` only if that is the selected face. Wallet uses a static image;\nlive shader animation belongs to the studio.\n\n## Select the device and card\n\nTell the user to keep the phone connected, open Wallet, authenticate, and tap\nthe exact card during the scan:\n\n```sh\nmakeables wallet list\n```\n\nThe scan takes up to 45 seconds. Multiple phones produce device selection\nhandles; repeat with `--device d-...`. Cards receive local handles such as\n`c-...`, valid for ten minutes. These identify the cards observed during the\nscan, not an inferred bank or cardholder. If several cards appear, establish\nwhich tapped card the user intended. If redacted or ambiguous, repeat the\nread-only scan; never choose the first resource by default.\n\nReport observable milestones and elapsed time, not invented percentages.\nPreparation is usually 1\u20133 minutes and a device operation roughly 1\u20134 minutes;\nthe connection and iOS can vary. Keep the process alive while it works.\n\n## Apply or switch a design\n\nAfter inspecting the art and establishing the requested target:\n\n```sh\nmakeables wallet apply --file card.json --card c-SELECTION --yes\n```\n\n`--yes` records the user's request for this design on this card. It does not\nauthorize another card or a future design. The helper verifies the connected\ndevice, backs up the original artwork, checks hashes, saves a private visible\ncopy and only then applies the prepared artwork. A copy failure stops the write.\nFor an already customized card, it reuses its verified original instead of\nbacking up the custom skin as though it were the issuer artwork.\n\nTo switch the same card using an established original backup:\n\n```sh\nmakeables wallet backups\nmakeables wallet apply --file next-card.json --backup b-BACKUP --yes\n```\n\nChoose the matching backup explicitly when several exist. A reissued card needs\na fresh selection and original backup. An unresolved earlier operation must be\nrecovered before another apply. Device operations are serialized locally.\n\n## Restore and preserve backups\n\n```sh\nmakeables wallet backups\nmakeables wallet backups --backup \"/absolute/path/to/original-backup\"\nmakeables wallet restore --backup b-BACKUP --yes\n```\n\nRestore verifies the original files and the connected device before writing.\nIt restores issuer artwork, not an intermediate custom design. It does not\ndelete the bank card from Wallet.\n\nOriginal copies live in `~/Documents/Makeables/Wallet Backups/`, with private\noperational state under `~/Library/Application Support/Makeables/Wallet/`.\nThey survive CLI updates and companion reinstalls. Keep both locations private\nand retain originals until the user no longer needs restore. Do not attach\nbackups, IDs, device logs or their contents to chat, public issues or the repo.\n\nOld `makeables` or `drawr-helper` installations may have originals under their\nown `backups/cards/` directory. Use an explicit verified path with `--backup`;\ndo not assume that a new install owns the old backup. A missing original is not\npermission to invent one or treat the current custom skin as issuer artwork.\n\n## Check the result and stop on uncertainty\n\nOnly a receipt with `status: complete` or `status: restored` is success. Check\nthe returned backup path, then ask the user to force-close/reopen Wallet and\nconfirm the visible result. Keep the design document for future iterations.\n\nA timeout, disconnect or failed command may have changed the device. Preserve\nevery backup and inspect `wallet backups` plus the private diagnostic path in\nthe error receipt. Do not blindly retry a write. The installed companion\nincludes recovery notes. For a verified transaction snapshot from this version,\n`makeables wallet recover --backup \"/absolute/path/to/transaction\" --device d-SELECTION --yes`\nrestores recorded staging/Books state on the matching device. Inspect the private\nsnapshot and use this only for requested recovery, before another artwork write.\nLegacy transactions without device binding require their original helper. Report what completed and what remains uncertain.\n";
|
|
24212
|
+
var wallet_default = "# Makeables Wallet\n\nApply or switch the artwork of an existing iPhone Wallet card, or remove a\ncustom design by restoring its original issuer artwork. This changes artwork,\nnot payment credentials or enrollment. It uses experimental, unofficial device\nservices; compatibility depends on iOS. Apply and restoration have been tested\non a Wallet card. On September 30, 2026, companion 0.2.0 restored one card using\nits original one-shot transport; backup hashes were verified and the user\nconfirmed the appearance. The optimized persistent/batched restore path still\nneeds device validation. This single case does not establish broad compatibility.\n\nLoad this guide when the user chooses installation after a card preview, asks\nto change an existing Wallet skin, or asks to restore it. Speak their language.\nCreating or approving a design alone does not authorize a phone write. A\nrequest to apply that exact design authorizes the write once its target is\nestablished; do not add a redundant confirmation.\n\n## Install with the fewest steps\n\nWallet work requires macOS and an iPhone connected over USB, unlocked and\ntrusted. Design/rendering still work on other platforms. Ask only for a missing\nimage or target; never request payment numbers, credentials or raw resource IDs.\n\nReuse the artwork, confirmed target and original-backup receipt from this\nconversation. Do not rediscover them or request the same confirmation again.\nIf the target is not established, tell the user to open Wallet and tap the\nintended card, then run:\n\n```sh\nmakeables wallet install --file card.json --json\n```\n\nThis checks and sets up the companion, prepares the complete artwork once, then\nscans for the card. **It does not apply artwork without a target and `--yes`.**\nThe receipt contains a persistent `assets` directory, `preview`, local selection\nhandles and a structured `next` command. Use those exact returned values:\n\n- `needs-device`: connect/unlock/trust the iPhone, or choose a listed device.\n Continue with `--assets <returned-path> --device d-SELECTION`.\n- `needs-card`: tap the card during another selection scan; continue with\n `--assets <returned-path>`. No re-render is necessary.\n- `needs-selection`: inspect `preview`, establish which detected card the\n user intended, then install:\n\n```sh\nmakeables wallet install --assets \"/returned/prepared/assets\" --card c-SELECTION --yes --json\n```\n\nIf the same card already has an established original backup, skip the scan.\nFor artwork whose complete rendered composition has already been inspected:\n\n```sh\nmakeables wallet install --file next-card.json --backup b-BACKUP --yes --json\n```\n\nPrefer `--assets` when that exact design is already prepared. Choose the\nmatching backup explicitly when several exist. A reissued card needs a fresh\nselection and original backup. `--yes` records the user's request for this\ndesign and target, not permission for a different card or future design.\n\n`install` sets up the checksum-verified macOS companion when needed. It includes\nPython, native bridges and the image exporter; no source checkout, Python\ninstallation or Xcode is needed. `wallet doctor` is diagnostic, not a mandatory\nextra step before every install. `wallet setup`, `prep`, `list` and `apply`\nremain available for individual steps.\n\n## Complete artwork and target identity\n\nUse the saved card JSON, complete SVG, or flat PNG. The CLI renders the\n**entire composition** to opaque 1536 \xD7 969, then prepares two PNGs and a PDF.\nNever extract an SVG's embedded background and discard its vectors.\nKeep chip/logo/details the user requested, check Wallet's lower-left number\narea, and omit account numbers or cardholder names from the artwork. Use\n`--side back` only if that is the selected face. Wallet uses a static image;\nlive shader animation belongs to the studio. To inspect a new composition\nseparately, prepare it once and reuse the resulting directory:\n\n```sh\nmakeables wallet prep --file card.json --out wallet-preview\nmakeables wallet install --assets wallet-preview --backup b-BACKUP --yes\n```\n\nOpen `wallet-preview/cardBackgroundCombined@3x.png` before that write if the\ncomplete render has not yet been inspected. Use `--file` or `--assets`, not both.\n\nSelection handles such as `c-...` expire after ten minutes. They identify an\nobserved card, **not its bank, name or last four digits**. If the receipt only\nsays \u201CObserved card 1\u201D (or \u201CTapped card 1\u201D on older companions), use the user's established target or ask once whether\nthe card they tapped is that target. Never infer bank identity from tap order.\nIf several candidates appear in one event, establish the target or repeat\nselection; never silently pick the first.\n\nWith a capable companion, `install` stops scanning after the first identifiable\nselection event; background cache activity and redacted selections cannot\ntrigger early completion. All candidates from that event are preserved. `wallet list --first` does the\nsame. `wallet list` without `--first` still scans for up to 45 seconds; use it\nwhen an exhaustive scan is needed or iOS exposes no identifiable selection\nevent. `--seconds` changes the maximum. Older\ncompanions fall back to the full scan; `doctor.capabilities` reports\n`first-selection`, `persistent-media` and `timed-progress` when available.\nNewer companions also report `restore-progress`, `batched-restore`,\n`transport-timing`, `transaction-timing` and `saved-receipts`. A CLI-only update does not upgrade the\ncompanion transport; use its reported capabilities.\n\nThe helper verifies device identity, backs up issuer artwork, checks hashes\nand saves a private visible copy before applying the design. A backup-copy\nfailure stops the artwork write. Existing verified originals are reused instead\nof backing up the custom skin. Unresolved earlier operations require recovery.\nDevice operations are serialized locally.\n\n## Progress and agent execution\n\nRun installation or restoration as one live process with a generous tool timeout. If the\nhost returns a session, wait on that same session in 30\u201360-second intervals;\ndo not poll every second, restart the command or launch a parallel scan.\nForward actual `wallet_progress` phases and elapsed times: `setup`, `prepare`,\n`selection`, `preflight`, `backup`, `write`, `restore`, `remove-added`, `refresh`,\n`verify`. Avoid invented\npercentages and fixed completion promises. Device time varies; connection reuse\nreduces overhead but does not establish a sub-30-second guarantee.\n\nOnly `status: complete` means the artwork operation finished. New companions\nalso return `backupVerified`, `reusedOriginal`, `timing`, `mediaRequests`,\n`nextAction: reopen-wallet`, a private `receipt` path and a structured `restore`\nhandoff with the selected `backupId`. Keep those returned values for a later\nuser-requested restore. Backup verification is not visual verification\nof the phone. Ask the user to reopen Wallet and check the appearance.\n\nA selection failure returns reusable `assets`/`preview` when preparation\nfinished. `deviceWriteAttempted: false` allows repeating selection after fixing\nthe connection. If true, or absent on an old companion, preserve backups and\ninspect the failure before another write. Never turn a timeout into an\nautomatic apply retry.\n\n`timing.phases` measures helper phases. `timing.transports` measures AFC, ZIP\nand AirTraffic work inside those phases; do not add it to the total again.\nAFC `connectionMs` and `operationMs` are parts of AFC elapsed time. ZIP and\nAirTraffic include their subprocess lifetimes. `timing.transactions` separates\nBooks snapshots and staging/Books cleanup; these durations overlap with AFC\nand phase timings too. Failed calls are counted;\nmissing native timings after a failed startup or on an older bridge do not\nmean zero connection cost. CLI `elapsedMs` also includes orchestration.\n\n## Restore and preserve backups\n\nWhen the user requests the original artwork, use the established backup from\nthe successful apply receipt directly. Its device/card binding replaces a new\nselection scan. The existing request authorizes that restore; do not ask the\nsame confirmation again or run `doctor`/`backups` as extra mandatory steps.\n\n```sh\nmakeables wallet restore --backup b-BACKUP --yes --json\n```\n\nRestore verifies the original files and the connected device before writing.\nIt restores issuer artwork, not an intermediate custom design. It does not\ndelete the bank card from Wallet. Use this command for \u201Cremove skin\u201D or\n\u201Crestore original artwork\u201D; there is no separate uninstall command.\n\nWith a capable companion, restore reuses one Media session, removes added\nartwork in one batch and refreshes each cache directory sequentially. Never\nparallelize these transactions: they share temporary Books state. Progress\nfollows `preflight \u2192 restore \u2192 remove-added \u2192 refresh \u2192 verify`; phases with\nno work can be absent. A successful `status: restored` receipt includes\n`backupVerified`, counts of original assets restored/added assets removed/cache\nfiles removed, timing, a saved receipt and `nextAction: reopen-wallet`.\n\nIf the target receipt is unavailable or the previous operation is uncertain,\ninspect the known backup, or list backups and establish the intended target:\n\n```sh\nmakeables wallet backups --backup b-BACKUP --json\nmakeables wallet backups --json\n```\n\nInspection returns the current backup `status` and, when available,\n`lastCompletedOperation` with its private receipt path. The saved receipt is\nhistorical: it does not prove that a later operation did not fail. Check the\ncurrent backup status before using an old success as evidence. No command\nautomatically chooses the last card or authorizes a future restore.\n\nOriginal copies live in `~/Documents/Makeables/Wallet Backups/`, with private\noperational state under `~/Library/Application Support/Makeables/Wallet/`.\nThey survive CLI updates and companion reinstalls. Keep both locations private\nand retain originals until the user no longer needs restore. Do not attach\nbackups, IDs, device logs or their contents to chat, public issues or the repo.\n\nOld `makeables` or `drawr-helper` installations may have originals under their\nown `backups/cards/` directory. Use an explicit verified path with `--backup`;\ndo not assume that a new install owns the old backup. A missing original is not\npermission to invent one or treat the current custom skin as issuer artwork.\n\n## Check the result and stop on uncertainty\n\nOnly a receipt with `status: complete` or `status: restored` is success. Check\nthe returned backup path, then ask the user to force-close/reopen Wallet and\nconfirm the visible result. Keep the design document for future iterations.\n\nA timeout, disconnect or failed command may have changed the device. Preserve\nevery backup and inspect `wallet backups` plus the private diagnostic path in\nthe error receipt. Do not blindly retry a write. The installed companion\nincludes recovery notes. For a verified transaction snapshot from this version,\n`makeables wallet recover --backup \"/absolute/path/to/transaction\" --device d-SELECTION --yes`\nrestores recorded staging/Books state on the matching device. Inspect the private\nsnapshot and use this only for requested recovery, before another artwork write.\nLegacy transactions without device binding require their original helper. Report what completed and what remains uncertain.\n";
|
|
24114
24213
|
|
|
24115
24214
|
// src/skills.ts
|
|
24116
24215
|
var skills = {
|