sketchmark 2.1.0 → 2.1.2

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 (117) hide show
  1. package/package.json +1 -7
  2. package/ANIMATABLE_MATRIX.md +0 -177
  3. package/KERNEL_SPEC.md +0 -412
  4. package/PACKS.md +0 -81
  5. package/PRESETS.md +0 -182
  6. package/dist/src/builders/index.d.ts +0 -64
  7. package/dist/src/builders/index.js +0 -212
  8. package/dist/src/compounds.d.ts +0 -13
  9. package/dist/src/compounds.js +0 -118
  10. package/dist/src/deck.d.ts +0 -4
  11. package/dist/src/deck.js +0 -91
  12. package/dist/src/export/index.d.ts +0 -8
  13. package/dist/src/export/index.js +0 -15
  14. package/dist/src/kernel.d.ts +0 -8
  15. package/dist/src/kernel.js +0 -68
  16. package/dist/src/motion.d.ts +0 -4
  17. package/dist/src/motion.js +0 -262
  18. package/dist/src/patch.d.ts +0 -5
  19. package/dist/src/patch.js +0 -72
  20. package/dist/src/player/index.d.ts +0 -68
  21. package/dist/src/player/index.js +0 -600
  22. package/dist/src/project.d.ts +0 -11
  23. package/dist/src/project.js +0 -107
  24. package/dist/src/render/raw-three.d.ts +0 -7
  25. package/dist/src/render/raw-three.js +0 -17
  26. package/dist/src/render/three-html.d.ts +0 -2
  27. package/dist/src/render/three-html.js +0 -257
  28. package/dist/src/render/three-preview-svg.d.ts +0 -3
  29. package/dist/src/render/three-preview-svg.js +0 -102
  30. package/dist/src/scenes.d.ts +0 -4
  31. package/dist/src/scenes.js +0 -26
  32. package/dist/src/sequences.d.ts +0 -43
  33. package/dist/src/sequences.js +0 -109
  34. package/dist/src/shapes/builtins.d.ts +0 -2
  35. package/dist/src/shapes/builtins.js +0 -393
  36. package/dist/src/shapes/common.d.ts +0 -9
  37. package/dist/src/shapes/common.js +0 -76
  38. package/dist/src/shapes/geometry.d.ts +0 -22
  39. package/dist/src/shapes/geometry.js +0 -166
  40. package/dist/src/shapes/index.d.ts +0 -2
  41. package/dist/src/shapes/index.js +0 -18
  42. package/dist/src/shapes/registry.d.ts +0 -8
  43. package/dist/src/shapes/registry.js +0 -31
  44. package/dist/src/shapes/types.d.ts +0 -32
  45. package/dist/src/shapes/types.js +0 -2
  46. package/examples/1730642890464.jpg +0 -0
  47. package/examples/app-screen.svg +0 -1
  48. package/examples/app-screen.visual.json +0 -503
  49. package/examples/dashboard-table.svg +0 -1
  50. package/examples/dashboard-table.visual.json +0 -708
  51. package/examples/dev-docs.svg +0 -1
  52. package/examples/dev-docs.visual.json +0 -248
  53. package/examples/explainer.mp4 +0 -0
  54. package/examples/explainer.visual.json +0 -1713
  55. package/examples/group-origin-effects-lab-check.svg +0 -1
  56. package/examples/group-origin-effects-lab.visual.json +0 -1880
  57. package/examples/image-clip-radius.visual.json +0 -271
  58. package/examples/make-app-screen.cjs +0 -368
  59. package/examples/make-dashboard-table.cjs +0 -277
  60. package/examples/make-dev-docs.cjs +0 -233
  61. package/examples/make-explainer.cjs +0 -438
  62. package/examples/make-group-origin-effects-lab.cjs +0 -370
  63. package/examples/make-image-clip-radius.cjs +0 -169
  64. package/examples/make-modal-dialog.cjs +0 -355
  65. package/examples/make-origin-effects-lab.cjs +0 -311
  66. package/examples/make-preset-character-motion.cjs +0 -32
  67. package/examples/make-presets-demo.cjs +0 -30
  68. package/examples/make-pricing.cjs +0 -286
  69. package/examples/make-product-demo.cjs +0 -468
  70. package/examples/make-product-hero.cjs +0 -223
  71. package/examples/make-release-notes.cjs +0 -333
  72. package/examples/make-settings-panel.cjs +0 -435
  73. package/examples/make-split-preview.cjs +0 -248
  74. package/examples/make-storyboard.cjs +0 -215
  75. package/examples/make-transcript.cjs +0 -234
  76. package/examples/make-typography-test.cjs +0 -397
  77. package/examples/make-ui-demo-explainer.cjs +0 -1094
  78. package/examples/make-ui-flow.cjs +0 -762
  79. package/examples/make-walkthrough.cjs +0 -815
  80. package/examples/modal-dialog.svg +0 -1
  81. package/examples/modal-dialog.visual.json +0 -239
  82. package/examples/origin-effects-lab-check.svg +0 -1
  83. package/examples/origin-effects-lab.visual.json +0 -1412
  84. package/examples/preset-character-motion.visual.json +0 -949
  85. package/examples/presets-demo.visual.json +0 -787
  86. package/examples/pricing.svg +0 -1
  87. package/examples/pricing.visual.json +0 -652
  88. package/examples/product-demo.mp4 +0 -0
  89. package/examples/product-demo.visual.json +0 -866
  90. package/examples/product-hero.svg +0 -1
  91. package/examples/product-hero.visual.json +0 -242
  92. package/examples/release-notes.svg +0 -1
  93. package/examples/release-notes.visual.json +0 -467
  94. package/examples/settings-panel.svg +0 -1
  95. package/examples/settings-panel.visual.json +0 -501
  96. package/examples/split-preview.svg +0 -1
  97. package/examples/split-preview.visual.json +0 -124
  98. package/examples/storyboard.svg +0 -1
  99. package/examples/storyboard.visual.json +0 -312
  100. package/examples/transcript.svg +0 -1
  101. package/examples/transcript.visual.json +0 -407
  102. package/examples/typography-indent-check.svg +0 -1
  103. package/examples/typography-lineheight-0.svg +0 -1
  104. package/examples/typography-lineheight-2.svg +0 -1
  105. package/examples/typography-test-check.svg +0 -1
  106. package/examples/typography-test.svg +0 -1
  107. package/examples/typography-test.visual.json +0 -757
  108. package/examples/ui-demo-explainer-billing.svg +0 -1
  109. package/examples/ui-demo-explainer-check.svg +0 -1
  110. package/examples/ui-demo-explainer-save.svg +0 -1
  111. package/examples/ui-demo-explainer-toggle.svg +0 -1
  112. package/examples/ui-demo-explainer.mp4 +0 -0
  113. package/examples/ui-demo-explainer.visual.json +0 -2597
  114. package/examples/ui-flow.mp4 +0 -0
  115. package/examples/ui-flow.visual.json +0 -1211
  116. package/examples/walkthrough.mp4 +0 -0
  117. package/examples/walkthrough.visual.json +0 -1372
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="1120" height="880" viewBox="0 0 1120 880" role="img"><rect x="0" y="0" width="1120" height="880" fill="#ffffff"/><text id="hero-headline" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="48" font-weight="800" fill="#0f172a"><tspan x="560" y="96">Ship faster with less friction</tspan></text><text id="hero-subheadline" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="18" font-weight="400" fill="#475569"><tspan x="560" y="149">A modern platform for teams who want to build, deploy, and iterate</tspan><tspan x="560" y="176.9">without wrestling infrastructure or waiting on bottlenecks.</tspan></text><path id="chip-bg-0" d="M 261.75 212 L 461.25 212 Q 479.25 212 479.25 230 L 479.25 230 Q 479.25 248 461.25 248 L 261.75 248 Q 243.75 248 243.75 230 L 243.75 230 Q 243.75 212 261.75 212 Z" fill="#f1f5f9" stroke="#e2e8f0" stroke-width="1"/><text id="chip-text-0" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="500" fill="#334155"><tspan x="361.5" y="230">Real-time Collaboration</tspan></text><path id="chip-bg-1" d="M 511.25 212 L 651.25 212 Q 669.25 212 669.25 230 L 669.25 230 Q 669.25 248 651.25 248 L 511.25 248 Q 493.25 248 493.25 230 L 493.25 230 Q 493.25 212 511.25 212 Z" fill="#f1f5f9" stroke="#e2e8f0" stroke-width="1"/><text id="chip-text-1" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="500" fill="#334155"><tspan x="581.25" y="230">One-click Deploy</tspan></text><path id="chip-bg-2" d="M 701.25 212 L 858.25 212 Q 876.25 212 876.25 230 L 876.25 230 Q 876.25 248 858.25 248 L 701.25 248 Q 683.25 248 683.25 230 L 683.25 230 Q 683.25 212 701.25 212 Z" fill="#f1f5f9" stroke="#e2e8f0" stroke-width="1"/><text id="chip-text-2" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="500" fill="#334155"><tspan x="779.75" y="230">Built-in Analytics</tspan></text><path id="hero-divider" d="M 80 304 L 1040 304" fill="none" stroke="#e2e8f0" stroke-width="1"/><text id="section-title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="26" font-weight="700" fill="#1e293b"><tspan x="80" y="365">Why teams choose us</tspan></text><text id="section-para" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="15" font-weight="400" fill="#475569"><tspan x="80" y="403.5">Most platforms promise speed but deliver complexity. We took a different approach:</tspan><tspan x="80" y="429">strip away everything that doesn't directly help you ship. No configuration mazes,</tspan><tspan x="80" y="454.5">no permission matrices, no waiting for DevOps. Just write code, push, and see it live.</tspan></text><path id="bullet-dot-0" d="M 85 505 A 4 4 0 1 1 85 505.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="bullet-text-0" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="15" font-weight="400" fill="#475569"><tspan x="100" y="503.5">Zero-config deployments with automatic scaling and rollback</tspan></text><path id="bullet-dot-1" d="M 85 541 A 4 4 0 1 1 85 541.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="bullet-text-1" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="15" font-weight="400" fill="#475569"><tspan x="100" y="539.5">Collaborative editing with live cursors and instant sync</tspan></text><path id="bullet-dot-2" d="M 85 577 A 4 4 0 1 1 85 577.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="bullet-text-2" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="15" font-weight="400" fill="#475569"><tspan x="100" y="575.5">Unified dashboard for logs, metrics, and error tracking</tspan></text><path id="bullet-dot-3" d="M 85 613 A 4 4 0 1 1 85 613.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="bullet-text-3" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="15" font-weight="400" fill="#475569"><tspan x="100" y="611.5">Native integrations with GitHub, GitLab, and Bitbucket</tspan></text><path id="bullet-dot-4" d="M 85 649 A 4 4 0 1 1 85 649.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="bullet-text-4" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="15" font-weight="400" fill="#475569"><tspan x="100" y="647.5">SOC 2 Type II certified with end-to-end encryption</tspan></text></svg>
@@ -1,242 +0,0 @@
1
- {
2
- "version": 1,
3
- "canvas": {
4
- "width": 1120,
5
- "height": 880,
6
- "background": "#ffffff"
7
- },
8
- "elements": [
9
- {
10
- "id": "hero-headline",
11
- "type": "text",
12
- "x": 560,
13
- "y": 72,
14
- "text": "Ship faster with less friction",
15
- "align": "center",
16
- "valign": "top",
17
- "fontSize": 48,
18
- "fontFamily": "Inter, system-ui, sans-serif",
19
- "weight": 800,
20
- "fill": "#0f172a"
21
- },
22
- {
23
- "id": "hero-subheadline",
24
- "type": "text",
25
- "x": 560,
26
- "y": 140,
27
- "text": "A modern platform for teams who want to build, deploy, and iterate\nwithout wrestling infrastructure or waiting on bottlenecks.",
28
- "align": "center",
29
- "valign": "top",
30
- "fontSize": 18,
31
- "fontFamily": "Inter, system-ui, sans-serif",
32
- "weight": 400,
33
- "lineHeight": 1.55,
34
- "fill": "#475569",
35
- "maxWidth": 960
36
- },
37
- {
38
- "id": "chip-bg-0",
39
- "type": "path",
40
- "d": "M 261.75 212 L 461.25 212 Q 479.25 212 479.25 230 L 479.25 230 Q 479.25 248 461.25 248 L 261.75 248 Q 243.75 248 243.75 230 L 243.75 230 Q 243.75 212 261.75 212 Z",
41
- "fill": "#f1f5f9",
42
- "stroke": "#e2e8f0",
43
- "strokeWidth": 1
44
- },
45
- {
46
- "id": "chip-text-0",
47
- "type": "text",
48
- "x": 361.5,
49
- "y": 230,
50
- "text": "Real-time Collaboration",
51
- "align": "center",
52
- "valign": "middle",
53
- "fontSize": 14,
54
- "fontFamily": "Inter, system-ui, sans-serif",
55
- "weight": 500,
56
- "fill": "#334155"
57
- },
58
- {
59
- "id": "chip-bg-1",
60
- "type": "path",
61
- "d": "M 511.25 212 L 651.25 212 Q 669.25 212 669.25 230 L 669.25 230 Q 669.25 248 651.25 248 L 511.25 248 Q 493.25 248 493.25 230 L 493.25 230 Q 493.25 212 511.25 212 Z",
62
- "fill": "#f1f5f9",
63
- "stroke": "#e2e8f0",
64
- "strokeWidth": 1
65
- },
66
- {
67
- "id": "chip-text-1",
68
- "type": "text",
69
- "x": 581.25,
70
- "y": 230,
71
- "text": "One-click Deploy",
72
- "align": "center",
73
- "valign": "middle",
74
- "fontSize": 14,
75
- "fontFamily": "Inter, system-ui, sans-serif",
76
- "weight": 500,
77
- "fill": "#334155"
78
- },
79
- {
80
- "id": "chip-bg-2",
81
- "type": "path",
82
- "d": "M 701.25 212 L 858.25 212 Q 876.25 212 876.25 230 L 876.25 230 Q 876.25 248 858.25 248 L 701.25 248 Q 683.25 248 683.25 230 L 683.25 230 Q 683.25 212 701.25 212 Z",
83
- "fill": "#f1f5f9",
84
- "stroke": "#e2e8f0",
85
- "strokeWidth": 1
86
- },
87
- {
88
- "id": "chip-text-2",
89
- "type": "text",
90
- "x": 779.75,
91
- "y": 230,
92
- "text": "Built-in Analytics",
93
- "align": "center",
94
- "valign": "middle",
95
- "fontSize": 14,
96
- "fontFamily": "Inter, system-ui, sans-serif",
97
- "weight": 500,
98
- "fill": "#334155"
99
- },
100
- {
101
- "id": "hero-divider",
102
- "type": "path",
103
- "d": "M 80 304 L 1040 304",
104
- "stroke": "#e2e8f0",
105
- "strokeWidth": 1,
106
- "fill": "none"
107
- },
108
- {
109
- "id": "section-title",
110
- "type": "text",
111
- "x": 80,
112
- "y": 352,
113
- "text": "Why teams choose us",
114
- "align": "left",
115
- "valign": "top",
116
- "fontSize": 26,
117
- "fontFamily": "Inter, system-ui, sans-serif",
118
- "weight": 700,
119
- "fill": "#1e293b"
120
- },
121
- {
122
- "id": "section-para",
123
- "type": "text",
124
- "x": 80,
125
- "y": 396,
126
- "text": "Most platforms promise speed but deliver complexity. We took a different approach:\nstrip away everything that doesn't directly help you ship. No configuration mazes,\nno permission matrices, no waiting for DevOps. Just write code, push, and see it live.",
127
- "align": "left",
128
- "valign": "top",
129
- "fontSize": 15,
130
- "fontFamily": "Inter, system-ui, sans-serif",
131
- "weight": 400,
132
- "lineHeight": 1.7,
133
- "fill": "#475569",
134
- "maxWidth": 960
135
- },
136
- {
137
- "id": "bullet-dot-0",
138
- "type": "path",
139
- "d": "M 85 505 A 4 4 0 1 1 85 505.01 Z",
140
- "fill": "#2563eb",
141
- "stroke": "none"
142
- },
143
- {
144
- "id": "bullet-text-0",
145
- "type": "text",
146
- "x": 100,
147
- "y": 496,
148
- "text": "Zero-config deployments with automatic scaling and rollback",
149
- "align": "left",
150
- "valign": "top",
151
- "fontSize": 15,
152
- "fontFamily": "Inter, system-ui, sans-serif",
153
- "weight": 400,
154
- "fill": "#475569",
155
- "maxWidth": 940
156
- },
157
- {
158
- "id": "bullet-dot-1",
159
- "type": "path",
160
- "d": "M 85 541 A 4 4 0 1 1 85 541.01 Z",
161
- "fill": "#2563eb",
162
- "stroke": "none"
163
- },
164
- {
165
- "id": "bullet-text-1",
166
- "type": "text",
167
- "x": 100,
168
- "y": 532,
169
- "text": "Collaborative editing with live cursors and instant sync",
170
- "align": "left",
171
- "valign": "top",
172
- "fontSize": 15,
173
- "fontFamily": "Inter, system-ui, sans-serif",
174
- "weight": 400,
175
- "fill": "#475569",
176
- "maxWidth": 940
177
- },
178
- {
179
- "id": "bullet-dot-2",
180
- "type": "path",
181
- "d": "M 85 577 A 4 4 0 1 1 85 577.01 Z",
182
- "fill": "#2563eb",
183
- "stroke": "none"
184
- },
185
- {
186
- "id": "bullet-text-2",
187
- "type": "text",
188
- "x": 100,
189
- "y": 568,
190
- "text": "Unified dashboard for logs, metrics, and error tracking",
191
- "align": "left",
192
- "valign": "top",
193
- "fontSize": 15,
194
- "fontFamily": "Inter, system-ui, sans-serif",
195
- "weight": 400,
196
- "fill": "#475569",
197
- "maxWidth": 940
198
- },
199
- {
200
- "id": "bullet-dot-3",
201
- "type": "path",
202
- "d": "M 85 613 A 4 4 0 1 1 85 613.01 Z",
203
- "fill": "#2563eb",
204
- "stroke": "none"
205
- },
206
- {
207
- "id": "bullet-text-3",
208
- "type": "text",
209
- "x": 100,
210
- "y": 604,
211
- "text": "Native integrations with GitHub, GitLab, and Bitbucket",
212
- "align": "left",
213
- "valign": "top",
214
- "fontSize": 15,
215
- "fontFamily": "Inter, system-ui, sans-serif",
216
- "weight": 400,
217
- "fill": "#475569",
218
- "maxWidth": 940
219
- },
220
- {
221
- "id": "bullet-dot-4",
222
- "type": "path",
223
- "d": "M 85 649 A 4 4 0 1 1 85 649.01 Z",
224
- "fill": "#2563eb",
225
- "stroke": "none"
226
- },
227
- {
228
- "id": "bullet-text-4",
229
- "type": "text",
230
- "x": 100,
231
- "y": 640,
232
- "text": "SOC 2 Type II certified with end-to-end encryption",
233
- "align": "left",
234
- "valign": "top",
235
- "fontSize": 15,
236
- "fontFamily": "Inter, system-ui, sans-serif",
237
- "weight": 400,
238
- "fill": "#475569",
239
- "maxWidth": 940
240
- }
241
- ]
242
- }
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="1080" height="1380" viewBox="0 0 1080 1380" role="img"><rect x="0" y="0" width="1080" height="1380" fill="#ffffff"/><text id="title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="44" font-weight="800" fill="#0f172a"><tspan x="72" y="78">Release Notes</tspan></text><text id="version" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="18" font-weight="600" fill="#1e293b"><tspan x="72" y="125">v2.4.0</tspan></text><text id="date" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="15" font-weight="400" fill="#94a3b8"><tspan x="144" y="125.5">— May 27, 2026</tspan></text><path id="divider-top" d="M 72 152 L 1008 152" fill="none" stroke="#e2e8f0" stroke-width="1"/><text id="s1-heading" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="24" font-weight="700" fill="#1e293b"><tspan x="72" y="204">New Features</tspan></text><path id="new-pill-bg" d="M 251 195 L 281 195 Q 292 195 292 206 L 292 206 Q 292 217 281 217 L 251 217 Q 240 217 240 206 L 240 206 Q 240 195 251 195 Z" fill="#10b981" stroke="none" stroke-width="0"/><text id="new-pill-text" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="700" fill="#ffffff"><tspan x="266" y="206">New</tspan></text><text id="s1a-sub" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#334155"><tspan x="72" y="242">Real-time Collaboration</tspan></text><path id="s1a-dot-0" d="M 78 270 A 3.5 3.5 0 1 1 78 270.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s1a-text-0" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="269">Multiple users can now edit the same document simultaneously</tspan><tspan x="92" y="292.1">with live cursor presence and conflict-free merging.</tspan></text><path id="s1a-dot-1" d="M 78 330 A 3.5 3.5 0 1 1 78 330.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s1a-text-1" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="329">Inline comments and threads are synced in real time across</tspan><tspan x="92" y="352.1">all connected sessions without page reload.</tspan></text><path id="s1a-dot-2" d="M 78 390 A 3.5 3.5 0 1 1 78 390.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s1a-text-2" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="389">Permission scopes support viewer, commenter, and editor</tspan><tspan x="92" y="412.1">roles with granular per-section access control.</tspan></text><text id="s1b-sub" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#334155"><tspan x="72" y="466">Export Pipeline</tspan></text><path id="s1b-dot-0" d="M 78 494 A 3.5 3.5 0 1 1 78 494.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s1b-text-0" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="493">Added PDF and DOCX export targets with full styling</tspan><tspan x="92" y="516.1">preservation and embedded font support.</tspan></text><path id="s1b-dot-1" d="M 78 554 A 3.5 3.5 0 1 1 78 554.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s1b-text-1" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="553">Batch export now runs in parallel workers, reducing</tspan><tspan x="92" y="576.1">processing time by up to 4x on large document sets.</tspan></text><text id="s2-heading" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="24" font-weight="700" fill="#1e293b"><tspan x="72" y="650">Improvements</tspan></text><text id="s2a-sub" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#334155"><tspan x="72" y="688">Performance</tspan></text><path id="s2a-dot-0" d="M 78 716 A 3.5 3.5 0 1 1 78 716.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s2a-text-0" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="715">Timeline resolution is now 3x faster due to a rewritten</tspan><tspan x="92" y="738.1">interpolation engine with pre-compiled curve LUTs.</tspan></text><path id="s2a-dot-1" d="M 78 776 A 3.5 3.5 0 1 1 78 776.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s2a-text-1" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="775">Initial document load time reduced by 40% through</tspan><tspan x="92" y="798.1">lazy hydration of off-screen element groups.</tspan></text><path id="s2a-dot-2" d="M 78 836 A 3.5 3.5 0 1 1 78 836.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s2a-text-2" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="835">Memory usage during preview reduced by caching</tspan><tspan x="92" y="858.1">resolved frames and evicting stale entries on scroll.</tspan></text><text id="s2b-sub" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#334155"><tspan x="72" y="912">Editor UX</tspan></text><path id="s2b-dot-0" d="M 78 940 A 3.5 3.5 0 1 1 78 940.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s2b-text-0" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="939">Undo history now groups rapid sequential edits into</tspan><tspan x="92" y="962.1">single entries for cleaner rollback behavior.</tspan></text><path id="s2b-dot-1" d="M 78 1000 A 3.5 3.5 0 1 1 78 1000.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s2b-text-1" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="999">Keyboard shortcuts panel redesigned with searchable</tspan><tspan x="92" y="1022.1">categories and conflict detection warnings.</tspan></text><text id="s3-heading" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="24" font-weight="700" fill="#1e293b"><tspan x="72" y="1096">Bug Fixes</tspan></text><text id="s3a-sub" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#334155"><tspan x="72" y="1134">Rendering</tspan></text><path id="s3a-dot-0" d="M 78 1162 A 3.5 3.5 0 1 1 78 1162.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s3a-text-0" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="1161">Fixed incorrect gradient interpolation when stop offsets</tspan><tspan x="92" y="1184.1">were defined in descending order.</tspan></text><path id="s3a-dot-1" d="M 78 1222 A 3.5 3.5 0 1 1 78 1222.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s3a-text-1" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="1221">Resolved clipping mask artifacts on group elements</tspan><tspan x="92" y="1244.1">with non-zero rotation and nested transforms.</tspan></text><path id="s3a-dot-2" d="M 78 1282 A 3.5 3.5 0 1 1 78 1282.01 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="s3a-text-2" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="92" y="1281">Text elements with empty strings no longer produce</tspan><tspan x="92" y="1304.1">invalid SVG output during frame resolution.</tspan></text></svg>