@m0saic/templates 0.2.0 → 0.3.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.
Files changed (28) hide show
  1. package/LICENSE +12 -12
  2. package/README.md +7 -7
  3. package/dist/m0saic/alpine/contributor-table/v1/assets/README.md +13 -13
  4. package/dist/m0saic/alpine/contributor-table/v1/assets/layout-lite.m0 +9 -9
  5. package/dist/m0saic/alpine/contributor-table/v1/assets/layout-standard.m0 +9 -9
  6. package/dist/m0saic/benchmark/battery/assets/media/README.md +16 -16
  7. package/dist/m0saic/benchmark/battery/assets/scenarios/duration-long.mosaic +80 -80
  8. package/dist/m0saic/benchmark/battery/assets/scenarios/encoders-base.mosaic +32 -32
  9. package/dist/m0saic/benchmark/battery/assets/scenarios/geometry-grid.mosaic +592 -592
  10. package/dist/m0saic/benchmark/battery/assets/scenarios/lifetime-window-fade.mosaic +28 -28
  11. package/dist/m0saic/benchmark/battery/assets/scenarios/real-bar-graph.mosaic +1979 -1979
  12. package/dist/m0saic/benchmark/battery/assets/scenarios/real-donut.mosaic +796 -796
  13. package/dist/m0saic/benchmark/battery/assets/scenarios/real-screencap-grid.mosaic +4590 -4590
  14. package/dist/m0saic/benchmark/battery/assets/scenarios/real-stat-card.mosaic +186 -186
  15. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-audio.mosaic +31 -31
  16. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-lavfi.mosaic +32 -32
  17. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-media.mosaic +73 -73
  18. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-nested.mosaic +48 -48
  19. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-ref.mosaic +24 -24
  20. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-text.mosaic +120 -120
  21. package/dist/m0saic/benchmark/report/v1/assets/sample-session/benchmark.json +41 -41
  22. package/dist/m0saic/brand/qr-stamp/assets/brand-qr-with-logo.svg +7 -7
  23. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/bake-fin-qr.sh +11 -11
  24. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-layout.m0p +5146 -5146
  25. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/title-layout.m0p +130 -130
  26. package/dist/m0saic/media/blur-regions/v1/tutorial.d.ts +8 -1
  27. package/dist/m0saic/media/blur-regions/v1/tutorial.js +36 -7
  28. package/package.json +6 -6
@@ -1,130 +1,130 @@
1
- {
2
- "format": "m0p",
3
- "version": 1,
4
- "created": "2026-06-23T00:00:00.000Z",
5
- "app": "@m0saic/templates",
6
- "appVersion": null,
7
- "meta": {
8
- "title": "FFmpeg Weekly Pulse — title beat layout (3 aspects)"
9
- },
10
- "regions": null,
11
- "custom": {
12
- "source": "sandbox 2026-06-23-ffmpeg-pulse-title · human-approved, GCD-compacted desktop+square"
13
- },
14
- "variants": {
15
- "desktop": {
16
- "meta": null,
17
- "size": {
18
- "width": 1920,
19
- "height": 1080
20
- },
21
- "m0": "54[0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,96(0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),-,0,0,0,0,0,0,48(0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),-,0,0,0,0,0,96(0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),-,0,0,0,0,96(0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,-,0,0,0,0,0,0,0,16(0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,1)]{9[0,-,96(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,-]}",
22
- "labels": {
23
- "r/gcolc17/fc15": {
24
- "text": "Logo"
25
- },
26
- "r/gcolc25/fc28": {
27
- "text": "Title"
28
- },
29
- "r/gcolc32/fc57": {
30
- "text": "Subtitle"
31
- },
32
- "r/gcolc38/fc34": {
33
- "text": "Date pill"
34
- },
35
- "r/gcolc38/fc44": {
36
- "text": "Week pill"
37
- },
38
- "r/gcolc53/fc15": {
39
- "text": "Watermark"
40
- },
41
- "r/ov1c0/gcolc2/fc40": {
42
- "text": "Wordmark"
43
- }
44
- },
45
- "derive": {
46
- "background": null
47
- },
48
- "masks": null,
49
- "fill": null,
50
- "rankSets": null,
51
- "custom": null
52
- },
53
- "mobile": {
54
- "meta": null,
55
- "size": {
56
- "width": 1080,
57
- "height": 1920
58
- },
59
- "m0": "192[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-),0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,-),0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,54(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,-),0,0,-]{192[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,108(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-]}",
60
- "labels": {
61
- "r/gcolc101/fc31": {
62
- "text": "Date pill"
63
- },
64
- "r/gcolc101/fc44": {
65
- "text": "Week pill"
66
- },
67
- "r/gcolc188/fc49": {
68
- "text": "Watermark"
69
- },
70
- "r/gcolc44/fc12": {
71
- "text": "Logo"
72
- },
73
- "r/gcolc66/fc50": {
74
- "text": "Title"
75
- },
76
- "r/gcolc85/fc48": {
77
- "text": "Subtitle"
78
- },
79
- "r/ov1c0/gcolc43/fc76": {
80
- "text": "Wordmark"
81
- }
82
- },
83
- "derive": {
84
- "background": null
85
- },
86
- "masks": null,
87
- "fill": null,
88
- "rankSets": null,
89
- "custom": null
90
- },
91
- "square": {
92
- "meta": null,
93
- "size": {
94
- "width": 1080,
95
- "height": 1080
96
- },
97
- "m0": "108[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-),0,0,-,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-),0,0,-,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,54(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,-),0,-]{216[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-]}",
98
- "labels": {
99
- "r/gcolc105/fc51": {
100
- "text": "Watermark"
101
- },
102
- "r/gcolc35/fc12": {
103
- "text": "Logo"
104
- },
105
- "r/gcolc52/fc50": {
106
- "text": "Title"
107
- },
108
- "r/gcolc67/fc50": {
109
- "text": "Subtitle"
110
- },
111
- "r/gcolc80/fc30": {
112
- "text": "Date pill"
113
- },
114
- "r/gcolc80/fc41": {
115
- "text": "Week pill"
116
- },
117
- "r/ov1c0/gcolc70/fc75": {
118
- "text": "Wordmark"
119
- }
120
- },
121
- "derive": {
122
- "background": null
123
- },
124
- "masks": null,
125
- "fill": null,
126
- "rankSets": null,
127
- "custom": null
128
- }
129
- }
130
- }
1
+ {
2
+ "format": "m0p",
3
+ "version": 1,
4
+ "created": "2026-06-23T00:00:00.000Z",
5
+ "app": "@m0saic/templates",
6
+ "appVersion": null,
7
+ "meta": {
8
+ "title": "FFmpeg Weekly Pulse — title beat layout (3 aspects)"
9
+ },
10
+ "regions": null,
11
+ "custom": {
12
+ "source": "sandbox 2026-06-23-ffmpeg-pulse-title · human-approved, GCD-compacted desktop+square"
13
+ },
14
+ "variants": {
15
+ "desktop": {
16
+ "meta": null,
17
+ "size": {
18
+ "width": 1920,
19
+ "height": 1080
20
+ },
21
+ "m0": "54[0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,96(0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),-,0,0,0,0,0,0,48(0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),-,0,0,0,0,0,96(0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),-,0,0,0,0,96(0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,-,0,0,0,0,0,0,0,16(0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,1)]{9[0,-,96(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,-]}",
22
+ "labels": {
23
+ "r/gcolc17/fc15": {
24
+ "text": "Logo"
25
+ },
26
+ "r/gcolc25/fc28": {
27
+ "text": "Title"
28
+ },
29
+ "r/gcolc32/fc57": {
30
+ "text": "Subtitle"
31
+ },
32
+ "r/gcolc38/fc34": {
33
+ "text": "Date pill"
34
+ },
35
+ "r/gcolc38/fc44": {
36
+ "text": "Week pill"
37
+ },
38
+ "r/gcolc53/fc15": {
39
+ "text": "Watermark"
40
+ },
41
+ "r/ov1c0/gcolc2/fc40": {
42
+ "text": "Wordmark"
43
+ }
44
+ },
45
+ "derive": {
46
+ "background": null
47
+ },
48
+ "masks": null,
49
+ "fill": null,
50
+ "rankSets": null,
51
+ "custom": null
52
+ },
53
+ "mobile": {
54
+ "meta": null,
55
+ "size": {
56
+ "width": 1080,
57
+ "height": 1920
58
+ },
59
+ "m0": "192[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-),0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,-),0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,54(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,-),0,0,-]{192[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,108(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-]}",
60
+ "labels": {
61
+ "r/gcolc101/fc31": {
62
+ "text": "Date pill"
63
+ },
64
+ "r/gcolc101/fc44": {
65
+ "text": "Week pill"
66
+ },
67
+ "r/gcolc188/fc49": {
68
+ "text": "Watermark"
69
+ },
70
+ "r/gcolc44/fc12": {
71
+ "text": "Logo"
72
+ },
73
+ "r/gcolc66/fc50": {
74
+ "text": "Title"
75
+ },
76
+ "r/gcolc85/fc48": {
77
+ "text": "Subtitle"
78
+ },
79
+ "r/ov1c0/gcolc43/fc76": {
80
+ "text": "Wordmark"
81
+ }
82
+ },
83
+ "derive": {
84
+ "background": null
85
+ },
86
+ "masks": null,
87
+ "fill": null,
88
+ "rankSets": null,
89
+ "custom": null
90
+ },
91
+ "square": {
92
+ "meta": null,
93
+ "size": {
94
+ "width": 1080,
95
+ "height": 1080
96
+ },
97
+ "m0": "108[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-),0,0,-,0,0,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-),0,0,-,0,0,0,0,0,0,0,0,0,54(0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,54(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,-),0,-]{216[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-]}",
98
+ "labels": {
99
+ "r/gcolc105/fc51": {
100
+ "text": "Watermark"
101
+ },
102
+ "r/gcolc35/fc12": {
103
+ "text": "Logo"
104
+ },
105
+ "r/gcolc52/fc50": {
106
+ "text": "Title"
107
+ },
108
+ "r/gcolc67/fc50": {
109
+ "text": "Subtitle"
110
+ },
111
+ "r/gcolc80/fc30": {
112
+ "text": "Date pill"
113
+ },
114
+ "r/gcolc80/fc41": {
115
+ "text": "Week pill"
116
+ },
117
+ "r/ov1c0/gcolc70/fc75": {
118
+ "text": "Wordmark"
119
+ }
120
+ },
121
+ "derive": {
122
+ "background": null
123
+ },
124
+ "masks": null,
125
+ "fill": null,
126
+ "rankSets": null,
127
+ "custom": null
128
+ }
129
+ }
130
+ }
@@ -8,10 +8,17 @@
8
8
  * rounded cards, pill chips, one brand accent.
9
9
  *
10
10
  * RECORDING SEAM: the action beats carry founder-recorded Make captures
11
- * (converted to small mp4s). `TUTORIAL_CLIPS` maps beat → { path, durationMs };
11
+ * (converted to small mp4s). `TUTORIAL_CLIPS` maps beat → { file, durationMs };
12
12
  * a clip becomes the beat's visual inside the window frame and the beat runs
13
13
  * the clip's length. Beats without clips render their animated mocks. No fs
14
14
  * probing — templates stay deterministic.
15
+ *
16
+ * The clips SHIP with the package (W4, 2026-09-27): they live under the
17
+ * package-root `assets/templates/<encoded id>/tutorial/`, the one tree every
18
+ * surface already carries — the web build mirrors it to `/template-assets/`,
19
+ * Desktop unpacks it from the asar and rebases the served URL to the file.
20
+ * Until then the paths pointed into the sandbox on the author's laptop, so
21
+ * the packaged app's tutorial played without them (first-user test).
15
22
  */
16
23
  import type { MosaicDocumentPipeline, MosaicEngineContext } from "@m0saic/types";
17
24
  /** Build the six-beat walkthrough (scrubbable; ~25s, longer when clips land). */
@@ -9,10 +9,17 @@
9
9
  * rounded cards, pill chips, one brand accent.
10
10
  *
11
11
  * RECORDING SEAM: the action beats carry founder-recorded Make captures
12
- * (converted to small mp4s). `TUTORIAL_CLIPS` maps beat → { path, durationMs };
12
+ * (converted to small mp4s). `TUTORIAL_CLIPS` maps beat → { file, durationMs };
13
13
  * a clip becomes the beat's visual inside the window frame and the beat runs
14
14
  * the clip's length. Beats without clips render their animated mocks. No fs
15
15
  * probing — templates stay deterministic.
16
+ *
17
+ * The clips SHIP with the package (W4, 2026-09-27): they live under the
18
+ * package-root `assets/templates/<encoded id>/tutorial/`, the one tree every
19
+ * surface already carries — the web build mirrors it to `/template-assets/`,
20
+ * Desktop unpacks it from the asar and rebases the served URL to the file.
21
+ * Until then the paths pointed into the sandbox on the author's laptop, so
22
+ * the packaged app's tutorial played without them (first-user test).
16
23
  */
17
24
  Object.defineProperty(exports, "__esModule", { value: true });
18
25
  exports.renderBlurRegionsTutorial = renderBlurRegionsTutorial;
@@ -20,13 +27,35 @@ const types_1 = require("@m0saic/types");
20
27
  const template_utils_1 = require("@m0saic/template-utils");
21
28
  const screencap_grid_cover_1 = require("../../screencap_grid/v2/screencap-grid-cover");
22
29
  const TUTORIAL_FPS = 30;
23
- const SR = "/Users/qusimone/src/m0saic/packages/sandbox/production/media-blur-regions-v1/fixtures/screen_recordings";
24
30
  const TUTORIAL_CLIPS = {
25
- draw: { path: `${SR}/invoice_sr.mp4`, durationMs: 10483 },
26
- brush: { path: `${SR}/signed-letter_sr.mp4`, durationMs: 7967 },
27
- inbox: { path: `${SR}/inbox_sr.mp4`, durationMs: 17533 },
28
- chat: { path: `${SR}/chat_sr.mp4`, durationMs: 13133 },
31
+ draw: { file: "invoice_sr.mp4", durationMs: 10483 },
32
+ brush: { file: "signed-letter_sr.mp4", durationMs: 7967 },
33
+ inbox: { file: "inbox_sr.mp4", durationMs: 17533 },
34
+ chat: { file: "chat_sr.mp4", durationMs: 13133 },
29
35
  };
36
+ /** Where the clips ship, relative to the package root — the same tree the
37
+ * registered previews live in (`assets/templates/<encoded id>/`). */
38
+ const TUTORIAL_CLIP_DIR = "assets/templates/@m0saic__media__blur-regions__v1/tutorial";
39
+ /**
40
+ * The clip as an asset for THIS runtime — the pattern the Screencap Grid and
41
+ * Subtitle Burn covers ship with. Node (the CLI's `--tutorial`, electron
42
+ * main) reads the packaged file: this module sits five folders below the
43
+ * package root in both `src/` and `dist/`, and an asar path is rewritten to
44
+ * its unpacked twin inline (no node:path import — the browser bundle has
45
+ * none). The browser plays the same file through the served
46
+ * `/template-assets/` tree, which Desktop's host rebases to the file on disk.
47
+ */
48
+ function tutorialClipAsset(clip) {
49
+ var _a;
50
+ const isNode = typeof process !== "undefined" && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);
51
+ if (!isNode)
52
+ return { kind: "url", url: `/template-assets/${TUTORIAL_CLIP_DIR}/${clip.file}`, mediaType: "video" };
53
+ const here = `${__dirname}`;
54
+ const unpacked = here.includes("/app.asar/")
55
+ ? here.split("/app.asar/").join("/app.asar.unpacked/")
56
+ : here.split("\\app.asar\\").join("\\app.asar.unpacked\\");
57
+ return { kind: "file", path: `${unpacked}/../../../../../${TUTORIAL_CLIP_DIR}/${clip.file}`, mediaType: "video" };
58
+ }
30
59
  // ---------------------------------------------------------------------------
31
60
  // SaaS palette — deliberate single dark look (brand orange accent).
32
61
  // ---------------------------------------------------------------------------
@@ -315,7 +344,7 @@ function beatVisual(spec, type) {
315
344
  };
316
345
  return {
317
346
  comp: windowCard((0, screencap_grid_cover_1.onboardingLeaf)(media), { chrome: false }),
318
- assets: { [assetId]: { kind: "file", path: clip.path, mediaType: "video" } },
347
+ assets: { [assetId]: tutorialClipAsset(clip) },
319
348
  clipMs: clip.durationMs,
320
349
  };
321
350
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m0saic/templates",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -29,14 +29,14 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@m0saic/community-m": "^0.2.0",
32
- "@m0saic/dictionary": "^0.2.0",
32
+ "@m0saic/dictionary": "^0.3.0",
33
33
  "@m0saic/dsl": "^2.0.0",
34
34
  "@m0saic/dsl-file-formats": "^2.0.0",
35
35
  "@m0saic/dsl-stdlib": "^3.0.0",
36
- "@m0saic/platform": "^0.2.0",
37
- "@m0saic/template-utils": "^0.2.0",
38
- "@m0saic/text": "^0.2.0",
39
- "@m0saic/types": "^0.2.0",
36
+ "@m0saic/platform": "^0.3.0",
37
+ "@m0saic/template-utils": "^0.3.0",
38
+ "@m0saic/text": "^0.3.0",
39
+ "@m0saic/types": "^0.3.0",
40
40
  "@resvg/resvg-wasm": "^2.6.2"
41
41
  },
42
42
  "files": [