@agent-native/core-corpus 0.214.0 → 0.216.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 (1096) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/actions/references/action-fields.md +1 -1
  3. package/corpus/templates/analytics/CHANGELOG.md +1 -0
  4. package/corpus/templates/analytics/changelog/2026-10-21-session-replay-quotas-count-the-compressed-size-analytics-st.md +6 -0
  5. package/corpus/templates/analytics/server/lib/session-replay.ts +40 -9
  6. package/corpus/templates/assets/.agents/skills/actions/references/action-fields.md +1 -1
  7. package/corpus/templates/brain/.agents/skills/actions/references/action-fields.md +1 -1
  8. package/corpus/templates/calendar/.agents/skills/actions/references/action-fields.md +1 -1
  9. package/corpus/templates/chat/.agents/skills/actions/references/action-fields.md +1 -1
  10. package/corpus/templates/clips/.agents/skills/actions/references/action-fields.md +1 -1
  11. package/corpus/templates/community/qr/package.json +1 -1
  12. package/corpus/templates/content/.agents/skills/actions/references/action-fields.md +1 -1
  13. package/corpus/templates/content/.agents/skills/content-product-development/references/verification.md +36 -0
  14. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +10 -0
  15. package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +11 -0
  16. package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +4 -2
  17. package/corpus/templates/content/CHANGELOG.md +46 -0
  18. package/corpus/templates/content/acceptance/_writers.ts +604 -0
  19. package/corpus/templates/content/acceptance/generate-action-registry.ts +10 -0
  20. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/create-document.json +75 -0
  21. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/duplicate-page.json +75 -0
  22. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/edit-document-find-and-replace-without-a-revision.json +75 -0
  23. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/edit-document-find-and-replace.json +75 -0
  24. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/edit-document-initializecontent.json +75 -0
  25. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/import-content.json +75 -0
  26. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/local-files-import-content-source-existing-page.json +75 -0
  27. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/local-files-import-content-source-new-page.json +75 -0
  28. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/local-files-sync-local-folder-source-changed-file.json +75 -0
  29. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/local-files-sync-local-folder-source-new-file.json +75 -0
  30. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/restore-document-version.json +75 -0
  31. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/set-document-property-primary-blocks-field.json +75 -0
  32. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/set-image-alt-text.json +75 -0
  33. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/undo-content-import.json +75 -0
  34. package/corpus/templates/content/acceptance/golden/gate-off-stored-bytes/update-document-browser-full-rewrite.json +75 -0
  35. package/corpus/templates/content/acceptance/known-loss.ts +69 -0
  36. package/corpus/templates/content/acceptance/round-trip-corpus.ts +1397 -0
  37. package/corpus/templates/content/actions/_blocks-field-identity.ts +35 -1
  38. package/corpus/templates/content/actions/_content-database-lifecycle.ts +11 -11
  39. package/corpus/templates/content/actions/_content-database-personal-view.ts +2 -0
  40. package/corpus/templates/content/actions/_content-favorites.ts +37 -0
  41. package/corpus/templates/content/actions/_database-membership-lock.ts +39 -8
  42. package/corpus/templates/content/actions/_database-navigation.ts +19 -21
  43. package/corpus/templates/content/actions/_database-row-batch.ts +41 -18
  44. package/corpus/templates/content/actions/_database-row-mutation.ts +17 -28
  45. package/corpus/templates/content/actions/_database-source-utils.ts +18 -1
  46. package/corpus/templates/content/actions/_database-utils.ts +3 -0
  47. package/corpus/templates/content/actions/_database-view-setup.ts +16 -0
  48. package/corpus/templates/content/actions/_document-edit-mutation.ts +33 -32
  49. package/corpus/templates/content/actions/_document-flush.ts +593 -171
  50. package/corpus/templates/content/actions/_document-save-locks.ts +54 -0
  51. package/corpus/templates/content/actions/_document-save-row.ts +133 -0
  52. package/corpus/templates/content/actions/_github-source.ts +18 -8
  53. package/corpus/templates/content/actions/_move-page-to-space.ts +189 -25
  54. package/corpus/templates/content/actions/_nfm-syntax.ts +2 -0
  55. package/corpus/templates/content/actions/_row-lock-order.ts +115 -0
  56. package/corpus/templates/content/actions/create-content-database.ts +11 -0
  57. package/corpus/templates/content/actions/create-document.ts +13 -1
  58. package/corpus/templates/content/actions/delete-content-database.ts +17 -14
  59. package/corpus/templates/content/actions/delete-document-property.ts +5 -0
  60. package/corpus/templates/content/actions/delete-document.ts +270 -97
  61. package/corpus/templates/content/actions/edit-document.ts +18 -5
  62. package/corpus/templates/content/actions/export-document.ts +3 -0
  63. package/corpus/templates/content/actions/get-blocks-field-word-count.ts +22 -5
  64. package/corpus/templates/content/actions/import-content-source.ts +170 -54
  65. package/corpus/templates/content/actions/move-document.ts +191 -73
  66. package/corpus/templates/content/actions/pull-document.ts +8 -2
  67. package/corpus/templates/content/actions/remove-database-items.ts +23 -4
  68. package/corpus/templates/content/actions/restore-content-database.ts +76 -55
  69. package/corpus/templates/content/actions/restore-document-version.ts +19 -35
  70. package/corpus/templates/content/actions/restore-document.ts +65 -53
  71. package/corpus/templates/content/actions/rollback-created-slash-document.ts +11 -16
  72. package/corpus/templates/content/actions/set-document-property.ts +15 -1
  73. package/corpus/templates/content/actions/share-local-file-document.ts +18 -14
  74. package/corpus/templates/content/actions/suggest-document-edit.ts +2 -3
  75. package/corpus/templates/content/actions/sync-local-folder-source.ts +35 -1
  76. package/corpus/templates/content/actions/undo-content-import.ts +16 -12
  77. package/corpus/templates/content/actions/update-content-database-view.ts +2 -0
  78. package/corpus/templates/content/actions/update-document.ts +19 -14
  79. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +1 -6
  80. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +49 -3
  81. package/corpus/templates/content/app/components/editor/ContentImportDialog.tsx +2 -0
  82. package/corpus/templates/content/app/components/editor/DocumentBlockFields.tsx +53 -11
  83. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +608 -353
  84. package/corpus/templates/content/app/components/editor/StaticDocumentBody.tsx +765 -0
  85. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +233 -80
  86. package/corpus/templates/content/app/components/editor/blockFieldSaveController.ts +32 -3
  87. package/corpus/templates/content/app/components/editor/blockFieldSaveRegistry.ts +88 -23
  88. package/corpus/templates/content/app/components/editor/comment-anchors.ts +19 -0
  89. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +205 -71
  90. package/corpus/templates/content/app/components/editor/document-flush-participant.ts +253 -0
  91. package/corpus/templates/content/app/components/editor/editor-transaction-meta.ts +28 -0
  92. package/corpus/templates/content/app/components/editor/extensions/AudioBlock.tsx +2 -1
  93. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +27 -6
  94. package/corpus/templates/content/app/components/editor/extensions/LocalMdxComponentNode.tsx +0 -1
  95. package/corpus/templates/content/app/components/editor/extensions/NotionExtensions.tsx +4 -4
  96. package/corpus/templates/content/app/components/editor/extensions/SuggestionHighlight.ts +24 -2
  97. package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +25 -6
  98. package/corpus/templates/content/app/components/editor/pending-document-persistence.ts +59 -1
  99. package/corpus/templates/content/app/components/editor/stored-body-images.ts +27 -0
  100. package/corpus/templates/content/app/components/editor/suggestions/presentation-rebase.ts +17 -0
  101. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +11 -4
  102. package/corpus/templates/content/app/components/trash/TrashBrowser.tsx +4 -1
  103. package/corpus/templates/content/app/global.css +21 -0
  104. package/corpus/templates/content/app/hooks/use-content-trash.ts +8 -0
  105. package/corpus/templates/content/app/import-messages.ts +25 -0
  106. package/corpus/templates/content/app/trash-messages.ts +16 -0
  107. package/corpus/templates/content/changelog/2026-10-16-a-page-open-in-a-tab-that-shows-it-s-in-the-trash-reopens-wi.md +6 -0
  108. package/corpus/templates/content/changelog/2026-10-16-a-page-restored-from-trash-returns-to-its-place-in-its-colle.md +6 -0
  109. package/corpus/templates/content/changelog/2026-10-16-agent-written-markdown-keeps-nested-lists-indented-with-spac.md +6 -0
  110. package/corpus/templates/content/changelog/2026-10-16-opening-a-page-you-can-edit-no-longer-rebuilds-its-editor-on.md +6 -0
  111. package/corpus/templates/content/changelog/2026-10-16-pages-moved-or-imported-at-the-same-time-can-no-longer-end-u.md +6 -0
  112. package/corpus/templates/content/changelog/2026-10-16-re-importing-a-markdown-export-of-a-page-no-longer-reports-t.md +6 -0
  113. package/corpus/templates/content/changelog/2026-10-16-saving-a-page-or-restoring-one-of-its-versions-no-longer-fai.md +6 -0
  114. package/corpus/templates/content/changelog/2026-10-17-agents-reading-a-page-you-have-open-no-longer-wait-or-fail-w.md +6 -0
  115. package/corpus/templates/content/changelog/2026-10-19-fresh-document-reads-require-confirmation-from-every-open-ed.md +6 -0
  116. package/corpus/templates/content/changelog/2026-10-20-html-table-cells-preserve-a-trailing-backslash-when-opening-.md +6 -0
  117. package/corpus/templates/content/changelog/2026-10-20-preserve-empty-paragraph-colors-and-refuse-unsupported-inlin.md +6 -0
  118. package/corpus/templates/content/changelog/2026-10-20-the-advanced-filter-and-each-filter-group-inside-it-have-the.md +6 -0
  119. package/corpus/templates/content/changelog/2026-10-21-blocks-fields-keep-unconfirmed-saves-visible-and-agent-reads.md +6 -0
  120. package/corpus/templates/content/changelog/2026-10-21-preserve-compact-table-row-groups-and-report-invalid-block-colors.md +6 -0
  121. package/corpus/templates/content/changelog/2026-10-21-suggested-edits-show-an-agent-s-whole-reason-open-a-group-to.md +6 -0
  122. package/corpus/templates/content/changelog/2026-10-21-suggestions-keep-refusing-unmatched-emphasis-in-stored-markd.md +6 -0
  123. package/corpus/templates/content/changelog/2026-10-22-accept-remaining-and-reject-remaining-show-the-result-for-ev.md +6 -0
  124. package/corpus/templates/content/changelog/2026-10-22-accepting-a-group-of-suggested-edits-saves-faster-and-adds-o.md +6 -0
  125. package/corpus/templates/content/changelog/2026-10-22-agents-read-saved-page-text-after-failed-icon-change.md +6 -0
  126. package/corpus/templates/content/changelog/2026-10-22-changes-made-from-a-menu-or-popover-such-as-an-image-s-alt-t.md +6 -0
  127. package/corpus/templates/content/changelog/2026-10-22-text-an-agent-writes-inside-a-callout-column-or-synced-block.md +6 -0
  128. package/corpus/templates/content/e2e/auth-files.ts +28 -0
  129. package/corpus/templates/content/e2e/convergence-summary.ts +84 -29
  130. package/corpus/templates/content/e2e/gate-arm.ts +15 -0
  131. package/corpus/templates/content/e2e/global-setup.ts +43 -75
  132. package/corpus/templates/content/e2e/global-teardown.ts +34 -0
  133. package/corpus/templates/content/e2e/helpers.ts +598 -92
  134. package/corpus/templates/content/e2e/live-body-gate.ts +188 -0
  135. package/corpus/templates/content/e2e/playwright.config.ts +12 -3
  136. package/corpus/templates/content/e2e/server-identity.ts +47 -0
  137. package/corpus/templates/content/e2e/stored-form/collab-blocks.ts +123 -0
  138. package/corpus/templates/content/package.json +1 -1
  139. package/corpus/templates/content/scripts/_stored-form-census-kinds.ts +30 -2
  140. package/corpus/templates/content/scripts/historical-icon-apply.ts +9 -1
  141. package/corpus/templates/content/scripts/trace-startup.mjs +460 -133
  142. package/corpus/templates/content/server/db/exec.ts +58 -0
  143. package/corpus/templates/content/server/db/schema.ts +1 -0
  144. package/corpus/templates/content/server/lib/content-trash-purge.ts +208 -144
  145. package/corpus/templates/content/server/lib/document-metadata-updated-at.ts +43 -1
  146. package/corpus/templates/content/server/lib/document-revision.ts +23 -0
  147. package/corpus/templates/content/server/lib/live-body-writer.ts +199 -0
  148. package/corpus/templates/content/server/lib/notion-sync.ts +63 -29
  149. package/corpus/templates/content/server/lib/notion.ts +5 -5
  150. package/corpus/templates/content/server/lib/suggested-edits.ts +357 -230
  151. package/corpus/templates/content/server/plugins/db.ts +5 -0
  152. package/corpus/templates/content/server/routes/api/documents/[id]/move.patch.ts +50 -168
  153. package/corpus/templates/content/shared/api.ts +2 -0
  154. package/corpus/templates/content/shared/blocks-fields-manifest.ts +106 -0
  155. package/corpus/templates/content/shared/database-query.ts +192 -30
  156. package/corpus/templates/content/shared/document-export.ts +12 -14
  157. package/corpus/templates/content/shared/document-flush-protocol.ts +88 -0
  158. package/corpus/templates/content/shared/editor-save-state.ts +97 -0
  159. package/corpus/templates/content/shared/feature-flags.ts +10 -0
  160. package/corpus/templates/content/shared/import/markdown.ts +91 -7
  161. package/corpus/templates/content/shared/import/types.ts +2 -0
  162. package/corpus/templates/content/shared/inline-math.ts +6 -4
  163. package/corpus/templates/content/shared/nfm-fidelity.ts +247 -0
  164. package/corpus/templates/content/shared/nfm.ts +1933 -340
  165. package/corpus/templates/content/shared/suggestion-diff.ts +13 -0
  166. package/corpus/templates/content/shared/suggestion-formatting.ts +143 -20
  167. package/corpus/templates/content/shared/suggestion-text.ts +39 -0
  168. package/corpus/templates/content/vitest.config.ts +10 -0
  169. package/corpus/templates/crm/.agents/skills/actions/references/action-fields.md +1 -1
  170. package/corpus/templates/design/.agents/skills/actions/references/action-fields.md +1 -1
  171. package/corpus/templates/design/.agents/skills/native-effects/SKILL.md +9 -2
  172. package/corpus/templates/design/.generated/bridge/shader-fill-preview.generated.ts +3 -249
  173. package/corpus/templates/design/.generated/bridge/shader-runtime.generated.ts +5 -88
  174. package/corpus/templates/design/AGENTS.md +1 -3
  175. package/corpus/templates/design/CHANGELOG.md +32 -0
  176. package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +1 -6
  177. package/corpus/templates/design/DESIGN-STUDIO-PLAN.md +5 -7
  178. package/corpus/templates/design/actions/_native-local-export-server.ts +44 -31
  179. package/corpus/templates/design/actions/_native-render-contexts.ts +76 -21
  180. package/corpus/templates/design/actions/claim-native-local-export.ts +5 -0
  181. package/corpus/templates/design/actions/finish-native-local-export.ts +13 -2
  182. package/corpus/templates/design/actions/get-native-shader-approvals.ts +35 -0
  183. package/corpus/templates/design/actions/get-shader.ts +134 -219
  184. package/corpus/templates/design/actions/list-design-extensions.ts +3 -58
  185. package/corpus/templates/design/actions/request-native-local-export.ts +32 -6
  186. package/corpus/templates/design/actions/run-design-extension-action.ts +0 -29
  187. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +131 -108
  188. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +0 -218
  189. package/corpus/templates/design/app/components/design/DesignThumbnail.tsx +59 -3
  190. package/corpus/templates/design/app/components/design/EditPanel.tsx +35 -47
  191. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +242 -62
  192. package/corpus/templates/design/app/components/design/NativePreviewErrorBoundary.tsx +53 -0
  193. package/corpus/templates/design/app/components/design/bridge/codegen.ts +18 -3
  194. package/corpus/templates/design/app/components/design/bridge/native-composition-clock.ts +5 -4
  195. package/corpus/templates/design/app/components/design/bridge/native-dom.ts +37 -0
  196. package/corpus/templates/design/app/components/design/bridge/native-intrinsic-image.ts +2 -1
  197. package/corpus/templates/design/app/components/design/bridge/native-mesh-grid.ts +90 -0
  198. package/corpus/templates/design/app/components/design/bridge/native-opaque-public-asset.ts +363 -0
  199. package/corpus/templates/design/app/components/design/bridge/native-opaque-worker-lease.ts +179 -0
  200. package/corpus/templates/design/app/components/design/bridge/native-preview-geometry.ts +132 -7
  201. package/corpus/templates/design/app/components/design/bridge/native-preview-policy.ts +4 -0
  202. package/corpus/templates/design/app/components/design/bridge/native-preview-viewport-transport.ts +378 -0
  203. package/corpus/templates/design/app/components/design/bridge/native-scene-body-transform.ts +62 -0
  204. package/corpus/templates/design/app/components/design/bridge/native-scene-presentation-element.ts +10 -0
  205. package/corpus/templates/design/app/components/design/bridge/native-shader-runtime.bridge.ts +646 -167
  206. package/corpus/templates/design/app/components/design/bridge/native-source-provider.ts +246 -192
  207. package/corpus/templates/design/app/components/design/bridge/native-stateful-resource.ts +2 -2
  208. package/corpus/templates/design/app/components/design/bridge/native-stateless-compute.ts +5 -2
  209. package/corpus/templates/design/app/components/design/bridge/native-svg-source.ts +11 -1
  210. package/corpus/templates/design/app/components/design/bridge/native-worker-broker.ts +6 -0
  211. package/corpus/templates/design/app/components/design/bridge/native-worker-entry.ts +761 -303
  212. package/corpus/templates/design/app/components/design/bridge/native-worker-fill.ts +16 -6
  213. package/corpus/templates/design/app/components/design/bridge/native-worker-gpu.ts +854 -91
  214. package/corpus/templates/design/app/components/design/bridge/native-worker-host.ts +15 -1
  215. package/corpus/templates/design/app/components/design/bridge/native-worker-input-assets.ts +200 -0
  216. package/corpus/templates/design/app/components/design/bridge/native-worker-protocol.ts +40 -1
  217. package/corpus/templates/design/app/components/design/bridge/native-worker-scene-host.ts +425 -126
  218. package/corpus/templates/design/app/components/design/bridge/native-worker-source-snapshot.ts +21 -0
  219. package/corpus/templates/design/app/components/design/bridge/shader-fill-preview.bridge.ts +5 -371
  220. package/corpus/templates/design/app/components/design/bridge/shader-runtime.bridge.ts +4 -146
  221. package/corpus/templates/design/app/components/design/design-canvas/interact-document.ts +5 -9
  222. package/corpus/templates/design/app/components/design/design-canvas/native-preview-surface.ts +150 -0
  223. package/corpus/templates/design/app/components/design/design-canvas/native-public-asset-preview.ts +409 -0
  224. package/corpus/templates/design/app/components/design/design-canvas/native-public-worker-preview.ts +1086 -0
  225. package/corpus/templates/design/app/components/design/design-canvas/private-replay-screenshot-preview.ts +2 -2
  226. package/corpus/templates/design/app/components/design/edit-panel/effects-properties.tsx +15 -26
  227. package/corpus/templates/design/app/components/design/edit-panel/fill-properties.tsx +74 -67
  228. package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +7 -19
  229. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +39 -30
  230. package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +4 -0
  231. package/corpus/templates/design/app/components/design/inspector/NativeShaderColorControls.tsx +3 -7
  232. package/corpus/templates/design/app/components/design/inspector/NativeShaderPaintControls.tsx +12 -5
  233. package/corpus/templates/design/app/components/design/inspector/NativeShaderPanel.tsx +705 -190
  234. package/corpus/templates/design/app/components/design/inspector/fill-field-reading.ts +1 -2
  235. package/corpus/templates/design/app/components/design/inspector/index.ts +0 -6
  236. package/corpus/templates/design/app/components/design/inspector/native-catalog-display.ts +26 -5
  237. package/corpus/templates/design/app/components/design/inspector/native-shader-catalog-fixture.ts +42 -0
  238. package/corpus/templates/design/app/components/design/inspector/native-shader-catalog-preview.ts +51 -33
  239. package/corpus/templates/design/app/components/design/inspector/native-shader-paint.ts +1 -0
  240. package/corpus/templates/design/app/components/design/inspector/native-shader-property-draft.ts +89 -23
  241. package/corpus/templates/design/app/components/design/inspector/saved-glsl-shader.tsx +243 -0
  242. package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +54 -5
  243. package/corpus/templates/design/app/components/design/shader-source-coordination.ts +66 -0
  244. package/corpus/templates/design/app/components/design/use-native-shader-approvals.ts +36 -8
  245. package/corpus/templates/design/app/components/templates/TemplatePreview.tsx +60 -3
  246. package/corpus/templates/design/app/i18n/en-US.ts +78 -2
  247. package/corpus/templates/design/app/pages/Present.tsx +36 -1
  248. package/corpus/templates/design/app/pages/design-editor/commands/apply-file-content-update.ts +1 -1
  249. package/corpus/templates/design/app/pages/design-editor/commands/apply-local-content-update.ts +1 -1
  250. package/corpus/templates/design/app/pages/design-editor/commands/commit-visual-styles.ts +2 -3
  251. package/corpus/templates/design/app/pages/design-editor/commands/cross-screen-element-drop.ts +1 -1
  252. package/corpus/templates/design/app/pages/design-editor/commands/layer-move-to-screen.ts +1 -1
  253. package/corpus/templates/design/app/pages/design-editor/commands/paste-selection.ts +1 -1
  254. package/corpus/templates/design/app/pages/design-editor/commands/paste-svg-layer.ts +1 -1
  255. package/corpus/templates/design/app/pages/design-editor/commands/prepare-content-history-replay.ts +1 -1
  256. package/corpus/templates/design/app/pages/design-editor/commands/redo.ts +1 -1
  257. package/corpus/templates/design/app/pages/design-editor/commands/render-png-blob.ts +84 -41
  258. package/corpus/templates/design/app/pages/design-editor/commands/shader-source-edit.ts +1 -1
  259. package/corpus/templates/design/app/pages/design-editor/commands/undo.ts +1 -1
  260. package/corpus/templates/design/app/pages/design-editor/design-editor-view.tsx +0 -2
  261. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-content-and-components.ts +4 -33
  262. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-export-and-handoff.ts +2 -2
  263. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-history.ts +0 -11
  264. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-layer-models.ts +2 -55
  265. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-screen-rendering.tsx +0 -3
  266. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-selection-and-styles.ts +0 -24
  267. package/corpus/templates/design/app/pages/design-editor/text-edit-utils.ts +0 -16
  268. package/corpus/templates/design/app/pages/design-editor/use-native-local-export-requests.ts +70 -11
  269. package/corpus/templates/design/app/pages/design-editor/view/single-screen-canvas.tsx +0 -2
  270. package/corpus/templates/design/changelog/2026-10-20-folded-mesh-adds-an-animated-sculpted-fill-with-editable-col.md +6 -0
  271. package/corpus/templates/design/changelog/2026-10-20-read-only-design-views-render-native-shader-previews-in-nest.md +6 -0
  272. package/corpus/templates/design/changelog/2026-10-20-selected-screens-with-shader-effects-can-be-exported-togethe.md +6 -0
  273. package/corpus/templates/design/changelog/2026-10-20-shader-previews-reuse-validated-scene-data-while-panning-inc.md +6 -0
  274. package/corpus/templates/design/changelog/2026-10-20-shader-previews-stay-aligned-while-you-zoom.md +6 -0
  275. package/corpus/templates/design/changelog/2026-10-20-signed-out-sessions-no-longer-watch-for-private-png-export-r.md +6 -0
  276. package/corpus/templates/design/changelog/2026-10-21-effect-thumbnails-show-richer-previews.md +6 -0
  277. package/corpus/templates/design/changelog/2026-10-21-native-effects-render-across-previews.md +6 -0
  278. package/corpus/templates/design/changelog/2026-10-21-native-shader-previews-use-less-gpu-memory-when-many-mesh-ef.md +6 -0
  279. package/corpus/templates/design/changelog/2026-10-21-opening-design-no-longer-shows-png-export-errors-when-no-exp.md +6 -0
  280. package/corpus/templates/design/changelog/2026-10-21-pulsing-border-controls-grouped.md +6 -0
  281. package/corpus/templates/design/changelog/2026-10-21-pulsing-border-follows-element-outlines.md +6 -0
  282. package/corpus/templates/design/changelog/2026-10-21-remove-obsolete-shader-fills.md +6 -0
  283. package/corpus/templates/design/changelog/2026-10-21-shader-previews-recover-from-temporary-gpu-and-image-failure.md +6 -0
  284. package/corpus/templates/design/changelog/2026-10-22-shader-fills-and-effects-render-correctly-on-canvas-elements.md +6 -0
  285. package/corpus/templates/design/package.json +0 -1
  286. package/corpus/templates/design/playwright.config.ts +1 -1
  287. package/corpus/templates/design/scripts/runtime-budget-zoom.ts +9 -21
  288. package/corpus/templates/design/scripts/runtime-budget.ts +10 -24
  289. package/corpus/templates/design/server/plugins/agent-chat.ts +0 -2
  290. package/corpus/templates/design/shared/effect-graph.ts +46 -1
  291. package/corpus/templates/design/shared/generation-output-receipt.ts +0 -1
  292. package/corpus/templates/design/shared/native-effect-animation-capability.ts +6 -0
  293. package/corpus/templates/design/shared/native-effect-folded-mesh-v1.ts +268 -0
  294. package/corpus/templates/design/shared/native-effect-folded-mesh-v2.ts +310 -0
  295. package/corpus/templates/design/shared/native-effect-folded-mesh.ts +489 -0
  296. package/corpus/templates/design/shared/native-effect-gallery-additions.ts +2 -2
  297. package/corpus/templates/design/shared/native-effect-paint.ts +8 -0
  298. package/corpus/templates/design/shared/native-effect-parameter-constraints.ts +8 -1
  299. package/corpus/templates/design/shared/native-effect-presets.ts +18 -1
  300. package/corpus/templates/design/shared/native-effect-property-presentation.ts +81 -0
  301. package/corpus/templates/design/shared/native-effect-pulsing-border-v3.ts +281 -0
  302. package/corpus/templates/design/shared/native-effect-pulsing-border-v4.ts +284 -0
  303. package/corpus/templates/design/shared/native-effect-pulsing-border.ts +300 -0
  304. package/corpus/templates/design/shared/native-effect-trust.ts +6 -0
  305. package/corpus/templates/design/shared/native-effect-wgsl.ts +12 -0
  306. package/corpus/templates/design/shared/native-effects.ts +528 -15
  307. package/corpus/templates/design/shared/native-input-resources.ts +36 -0
  308. package/corpus/templates/design/shared/native-local-export.ts +14 -0
  309. package/corpus/templates/design/shared/native-parameter-animation.ts +1 -0
  310. package/corpus/templates/design/shared/native-pointer-input.ts +9 -11
  311. package/corpus/templates/design/shared/shader-fills.ts +0 -513
  312. package/corpus/templates/design/vitest.setup.ts +7 -1
  313. package/corpus/templates/dispatch/.agents/skills/actions/references/action-fields.md +1 -1
  314. package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +20 -18
  315. package/corpus/templates/factory/.agents/skills/actions/references/action-fields.md +1 -1
  316. package/corpus/templates/factory/.agents/skills/review-latest-feedback/SKILL.md +36 -80
  317. package/corpus/templates/factory/.agents/skills/review-latest-feedback/references/channel-inventory.md +54 -16
  318. package/corpus/templates/factory/.agents/skills/review-latest-feedback/references/slack-reaction-replies.md +50 -73
  319. package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +20 -18
  320. package/corpus/templates/forms/.agents/skills/actions/references/action-fields.md +1 -1
  321. package/corpus/templates/mail/.agents/skills/actions/references/action-fields.md +1 -1
  322. package/corpus/templates/plan/.agents/skills/actions/references/action-fields.md +1 -1
  323. package/corpus/templates/slides/.agents/skills/actions/references/action-fields.md +1 -1
  324. package/corpus/templates/slides-2/.agents/skills/actions/SKILL.md +199 -0
  325. package/corpus/templates/slides-2/.agents/skills/actions/references/action-fields.md +145 -0
  326. package/corpus/templates/slides-2/.agents/skills/actions/references/examples.md +96 -0
  327. package/corpus/templates/slides-2/.agents/skills/actions/references/provider-apis.md +95 -0
  328. package/corpus/templates/slides-2/.agents/skills/adding-a-feature/SKILL.md +235 -0
  329. package/corpus/templates/slides-2/.agents/skills/agent-native-docs/SKILL.md +161 -0
  330. package/corpus/templates/slides-2/.agents/skills/agent-native-toolkit/SKILL.md +314 -0
  331. package/corpus/templates/slides-2/.agents/skills/analytics-data-for-decks/SKILL.md +44 -0
  332. package/corpus/templates/slides-2/.agents/skills/apply-slide-comments/SKILL.md +63 -0
  333. package/corpus/templates/slides-2/.agents/skills/client-side-routing/SKILL.md +87 -0
  334. package/corpus/templates/slides-2/.agents/skills/context-awareness/SKILL.md +282 -0
  335. package/corpus/templates/slides-2/.agents/skills/create-deck/SKILL.md +263 -0
  336. package/corpus/templates/slides-2/.agents/skills/create-deck/references/reference-inputs.md +72 -0
  337. package/corpus/templates/slides-2/.agents/skills/create-deck/references/slide-templates.md +93 -0
  338. package/corpus/templates/slides-2/.agents/skills/create-deck/references/source-material.md +16 -0
  339. package/corpus/templates/slides-2/.agents/skills/creative-context/SKILL.md +134 -0
  340. package/corpus/templates/slides-2/.agents/skills/customizing-agent-native/SKILL.md +219 -0
  341. package/corpus/templates/slides-2/.agents/skills/deck-management/SKILL.md +182 -0
  342. package/corpus/templates/slides-2/.agents/skills/delegate-to-agent/SKILL.md +62 -0
  343. package/corpus/templates/slides-2/.agents/skills/design-systems/SKILL.md +233 -0
  344. package/corpus/templates/slides-2/.agents/skills/external-agents/SKILL.md +549 -0
  345. package/corpus/templates/slides-2/.agents/skills/external-agents/references/mcp-apps-embedding.md +169 -0
  346. package/corpus/templates/slides-2/.agents/skills/frontend-design/SKILL.md +102 -0
  347. package/corpus/templates/slides-2/.agents/skills/frontend-design/references/visual-direction.md +102 -0
  348. package/corpus/templates/slides-2/.agents/skills/image-generation-via-a2a/SKILL.md +134 -0
  349. package/corpus/templates/slides-2/.agents/skills/performance/SKILL.md +79 -0
  350. package/corpus/templates/slides-2/.agents/skills/portability/SKILL.md +108 -0
  351. package/corpus/templates/slides-2/.agents/skills/real-time-sync/SKILL.md +146 -0
  352. package/corpus/templates/slides-2/.agents/skills/reliable-mutations/SKILL.md +72 -0
  353. package/corpus/templates/slides-2/.agents/skills/secrets/SKILL.md +82 -0
  354. package/corpus/templates/slides-2/.agents/skills/security/SKILL.md +80 -0
  355. package/corpus/templates/slides-2/.agents/skills/self-modifying-code/SKILL.md +123 -0
  356. package/corpus/templates/slides-2/.agents/skills/shadcn-ui/SKILL.md +71 -0
  357. package/corpus/templates/slides-2/.agents/skills/sharing/SKILL.md +286 -0
  358. package/corpus/templates/slides-2/.agents/skills/slide-design/SKILL.md +144 -0
  359. package/corpus/templates/slides-2/.agents/skills/slide-editing/SKILL.md +284 -0
  360. package/corpus/templates/slides-2/.agents/skills/slide-editing/references/animations.md +33 -0
  361. package/corpus/templates/slides-2/.agents/skills/slide-editing/references/freeform-objects.md +22 -0
  362. package/corpus/templates/slides-2/.agents/skills/slide-editing/references/restyling.md +69 -0
  363. package/corpus/templates/slides-2/.agents/skills/slide-editing/references/transitions.md +26 -0
  364. package/corpus/templates/slides-2/.agents/skills/slide-editing/references/video.md +45 -0
  365. package/corpus/templates/slides-2/.agents/skills/slide-images/SKILL.md +136 -0
  366. package/corpus/templates/slides-2/.agents/skills/storing-data/SKILL.md +234 -0
  367. package/corpus/templates/slides-2/.agents/skills/turn-into-skill/SKILL.md +112 -0
  368. package/corpus/templates/slides-2/.agents/skills/turn-into-skill/agents/openai.yaml +4 -0
  369. package/corpus/templates/slides-2/.agents/skills/workspace-conventions/SKILL.md +103 -0
  370. package/corpus/templates/slides-2/.builder/rules/deploy-app.mdc +22 -0
  371. package/corpus/templates/slides-2/.builder/rules/organize-ui.mdc +9 -0
  372. package/corpus/templates/slides-2/.dockerignore +61 -0
  373. package/corpus/templates/slides-2/.env.example +23 -0
  374. package/corpus/templates/slides-2/.ignore +3 -0
  375. package/corpus/templates/slides-2/.mcp.json +8 -0
  376. package/corpus/templates/slides-2/.oxfmtrc.json +8 -0
  377. package/corpus/templates/slides-2/AGENTS.md +66 -0
  378. package/corpus/templates/slides-2/CHANGELOG.md +76 -0
  379. package/corpus/templates/slides-2/DEVELOPING.md +157 -0
  380. package/corpus/templates/slides-2/README.md +58 -0
  381. package/corpus/templates/slides-2/THIRD_PARTY_NOTICES.md +33 -0
  382. package/corpus/templates/slides-2/_gitignore +38 -0
  383. package/corpus/templates/slides-2/actions/_agent-presence.ts +29 -0
  384. package/corpus/templates/slides-2/actions/_app-url.ts +37 -0
  385. package/corpus/templates/slides-2/actions/_deck-app-scope.ts +30 -0
  386. package/corpus/templates/slides-2/actions/_deck-tracking.ts +260 -0
  387. package/corpus/templates/slides-2/actions/_deck-write.ts +206 -0
  388. package/corpus/templates/slides-2/actions/_imported-slide-source.ts +162 -0
  389. package/corpus/templates/slides-2/actions/_inline-image-storage.ts +1013 -0
  390. package/corpus/templates/slides-2/actions/_linked-design-system.ts +83 -0
  391. package/corpus/templates/slides-2/actions/_presenter-notes.ts +83 -0
  392. package/corpus/templates/slides-2/actions/_render-artifacts.ts +111 -0
  393. package/corpus/templates/slides-2/actions/_slide-source.ts +344 -0
  394. package/corpus/templates/slides-2/actions/_tab-state.ts +51 -0
  395. package/corpus/templates/slides-2/actions/_test-brandfetch.ts +31 -0
  396. package/corpus/templates/slides-2/actions/_uploaded-files.ts +114 -0
  397. package/corpus/templates/slides-2/actions/add-deck.ts +123 -0
  398. package/corpus/templates/slides-2/actions/add-slide-comment.ts +267 -0
  399. package/corpus/templates/slides-2/actions/add-slide.ts +888 -0
  400. package/corpus/templates/slides-2/actions/analyze-brand-assets.ts +66 -0
  401. package/corpus/templates/slides-2/actions/apply-design-system.ts +111 -0
  402. package/corpus/templates/slides-2/actions/approve-deck-access-request.ts +287 -0
  403. package/corpus/templates/slides-2/actions/audit-contrast.ts +143 -0
  404. package/corpus/templates/slides-2/actions/check-image-gen.ts +17 -0
  405. package/corpus/templates/slides-2/actions/clone-context-slide.ts +340 -0
  406. package/corpus/templates/slides-2/actions/clone-creative-context-deck.ts +143 -0
  407. package/corpus/templates/slides-2/actions/control-deck-history.ts +186 -0
  408. package/corpus/templates/slides-2/actions/control-presenter.ts +117 -0
  409. package/corpus/templates/slides-2/actions/control-slide-editor.ts +267 -0
  410. package/corpus/templates/slides-2/actions/create-deck-from-template.ts +274 -0
  411. package/corpus/templates/slides-2/actions/create-deck.ts +1243 -0
  412. package/corpus/templates/slides-2/actions/create-design-system.ts +131 -0
  413. package/corpus/templates/slides-2/actions/create-share-link.ts +127 -0
  414. package/corpus/templates/slides-2/actions/db-health.ts +22 -0
  415. package/corpus/templates/slides-2/actions/delete-asset.ts +154 -0
  416. package/corpus/templates/slides-2/actions/delete-deck.ts +427 -0
  417. package/corpus/templates/slides-2/actions/delete-design-system.ts +167 -0
  418. package/corpus/templates/slides-2/actions/delete-slide-comment.ts +143 -0
  419. package/corpus/templates/slides-2/actions/delete-staged-dataset.ts +30 -0
  420. package/corpus/templates/slides-2/actions/duplicate-deck.ts +299 -0
  421. package/corpus/templates/slides-2/actions/export-google-slides.ts +41 -0
  422. package/corpus/templates/slides-2/actions/export-html.ts +770 -0
  423. package/corpus/templates/slides-2/actions/export-pptx.ts +2203 -0
  424. package/corpus/templates/slides-2/actions/extract-pdf.ts +49 -0
  425. package/corpus/templates/slides-2/actions/generate-image-api.ts +671 -0
  426. package/corpus/templates/slides-2/actions/generate-image.ts +492 -0
  427. package/corpus/templates/slides-2/actions/get-agent-access-deck.ts +52 -0
  428. package/corpus/templates/slides-2/actions/get-deck-access-status.ts +130 -0
  429. package/corpus/templates/slides-2/actions/get-deck-design-tokens.ts +62 -0
  430. package/corpus/templates/slides-2/actions/get-deck-reference-context.ts +232 -0
  431. package/corpus/templates/slides-2/actions/get-deck-template.ts +38 -0
  432. package/corpus/templates/slides-2/actions/get-deck-version.ts +85 -0
  433. package/corpus/templates/slides-2/actions/get-deck.ts +562 -0
  434. package/corpus/templates/slides-2/actions/get-design-system-decode-job-status.ts +57 -0
  435. package/corpus/templates/slides-2/actions/get-design-system-tier-limit.ts +12 -0
  436. package/corpus/templates/slides-2/actions/get-design-system.ts +453 -0
  437. package/corpus/templates/slides-2/actions/get-google-docs-status.ts +106 -0
  438. package/corpus/templates/slides-2/actions/get-google-picker-token.ts +84 -0
  439. package/corpus/templates/slides-2/actions/get-home-suggestions.ts +52 -0
  440. package/corpus/templates/slides-2/actions/get-layout-overflows.ts +192 -0
  441. package/corpus/templates/slides-2/actions/get-slide-render.ts +125 -0
  442. package/corpus/templates/slides-2/actions/get-slide-source.ts +115 -0
  443. package/corpus/templates/slides-2/actions/get-slide-theme-preview.ts +64 -0
  444. package/corpus/templates/slides-2/actions/get-slide-theme.ts +44 -0
  445. package/corpus/templates/slides-2/actions/get-slides-2-upload-storage-status.ts +17 -0
  446. package/corpus/templates/slides-2/actions/get-slides-notification-prefs.ts +37 -0
  447. package/corpus/templates/slides-2/actions/get-workspace-defaults.ts +51 -0
  448. package/corpus/templates/slides-2/actions/image-gen-status.ts +35 -0
  449. package/corpus/templates/slides-2/actions/import-code.ts +26 -0
  450. package/corpus/templates/slides-2/actions/import-design-project.ts +49 -0
  451. package/corpus/templates/slides-2/actions/import-document.ts +125 -0
  452. package/corpus/templates/slides-2/actions/import-docx.ts +57 -0
  453. package/corpus/templates/slides-2/actions/import-file.ts +1273 -0
  454. package/corpus/templates/slides-2/actions/import-from-url.ts +25 -0
  455. package/corpus/templates/slides-2/actions/import-google-doc.ts +208 -0
  456. package/corpus/templates/slides-2/actions/import-google-font.ts +110 -0
  457. package/corpus/templates/slides-2/actions/import-google-slides-reference.ts +667 -0
  458. package/corpus/templates/slides-2/actions/import-pptx.ts +564 -0
  459. package/corpus/templates/slides-2/actions/import-svgl-logo.ts +115 -0
  460. package/corpus/templates/slides-2/actions/index-design-system-with-builder.ts +181 -0
  461. package/corpus/templates/slides-2/actions/index-uploaded-design-system-files.ts +77 -0
  462. package/corpus/templates/slides-2/actions/list-assets.ts +286 -0
  463. package/corpus/templates/slides-2/actions/list-deck-templates.ts +83 -0
  464. package/corpus/templates/slides-2/actions/list-deck-versions.ts +185 -0
  465. package/corpus/templates/slides-2/actions/list-decks.ts +591 -0
  466. package/corpus/templates/slides-2/actions/list-design-systems.ts +180 -0
  467. package/corpus/templates/slides-2/actions/list-slide-comments.ts +128 -0
  468. package/corpus/templates/slides-2/actions/list-slide-themes.ts +17 -0
  469. package/corpus/templates/slides-2/actions/list-staged-datasets.ts +14 -0
  470. package/corpus/templates/slides-2/actions/logo-config.ts +13 -0
  471. package/corpus/templates/slides-2/actions/navigate.ts +158 -0
  472. package/corpus/templates/slides-2/actions/patch-deck.ts +2378 -0
  473. package/corpus/templates/slides-2/actions/provider-api-catalog.ts +25 -0
  474. package/corpus/templates/slides-2/actions/provider-api-docs.ts +83 -0
  475. package/corpus/templates/slides-2/actions/provider-api-request.ts +222 -0
  476. package/corpus/templates/slides-2/actions/query-staged-dataset.ts +83 -0
  477. package/corpus/templates/slides-2/actions/read-composer-source.ts +108 -0
  478. package/corpus/templates/slides-2/actions/request-deck-access.ts +803 -0
  479. package/corpus/templates/slides-2/actions/restore-deck-version.ts +203 -0
  480. package/corpus/templates/slides-2/actions/run.ts +2 -0
  481. package/corpus/templates/slides-2/actions/save-deck.ts +313 -0
  482. package/corpus/templates/slides-2/actions/search-google-fonts.ts +61 -0
  483. package/corpus/templates/slides-2/actions/search-images.ts +30 -0
  484. package/corpus/templates/slides-2/actions/search-logos.ts +23 -0
  485. package/corpus/templates/slides-2/actions/search-svgl-logos.ts +42 -0
  486. package/corpus/templates/slides-2/actions/set-default-design-system.ts +88 -0
  487. package/corpus/templates/slides-2/actions/set-workspace-defaults.ts +61 -0
  488. package/corpus/templates/slides-2/actions/start-design-system-upload.ts +80 -0
  489. package/corpus/templates/slides-2/actions/sync-design-system-with-builder.ts +84 -0
  490. package/corpus/templates/slides-2/actions/toggle-slide-comment-reaction.ts +150 -0
  491. package/corpus/templates/slides-2/actions/transform-slide-objects.ts +1528 -0
  492. package/corpus/templates/slides-2/actions/update-asset.ts +499 -0
  493. package/corpus/templates/slides-2/actions/update-deck-aspect-ratio.ts +95 -0
  494. package/corpus/templates/slides-2/actions/update-deck-design-tokens.ts +175 -0
  495. package/corpus/templates/slides-2/actions/update-design-system.ts +95 -0
  496. package/corpus/templates/slides-2/actions/update-slide-comment.ts +213 -0
  497. package/corpus/templates/slides-2/actions/update-slide-source.ts +353 -0
  498. package/corpus/templates/slides-2/actions/update-slide.ts +850 -0
  499. package/corpus/templates/slides-2/actions/update-slides-notification-prefs.ts +55 -0
  500. package/corpus/templates/slides-2/actions/view-screen.ts +1098 -0
  501. package/corpus/templates/slides-2/agent-native.app-skill.json +165 -0
  502. package/corpus/templates/slides-2/agent-native.config.ts +20 -0
  503. package/corpus/templates/slides-2/agent-native.json +18 -0
  504. package/corpus/templates/slides-2/app/components/ThemeToggle.tsx +47 -0
  505. package/corpus/templates/slides-2/app/components/comments/SlideCommentPins.tsx +781 -0
  506. package/corpus/templates/slides-2/app/components/comments/SlideCommentsPanel.tsx +1075 -0
  507. package/corpus/templates/slides-2/app/components/deck/DeckCard.tsx +304 -0
  508. package/corpus/templates/slides-2/app/components/deck/DeckFilterMenu.tsx +83 -0
  509. package/corpus/templates/slides-2/app/components/deck/ExcalidrawSlide.tsx +183 -0
  510. package/corpus/templates/slides-2/app/components/deck/MermaidRenderer.tsx +126 -0
  511. package/corpus/templates/slides-2/app/components/deck/SlideRenderer.tsx +1553 -0
  512. package/corpus/templates/slides-2/app/components/design-system/DesignSystemCard.tsx +235 -0
  513. package/corpus/templates/slides-2/app/components/design-system/DesignSystemSetup.tsx +2021 -0
  514. package/corpus/templates/slides-2/app/components/design-system/builder-design-system-upload.ts +200 -0
  515. package/corpus/templates/slides-2/app/components/design-system/builder-index-response.ts +104 -0
  516. package/corpus/templates/slides-2/app/components/editor/AddSlidePopover.tsx +461 -0
  517. package/corpus/templates/slides-2/app/components/editor/AiEditingMarker.tsx +24 -0
  518. package/corpus/templates/slides-2/app/components/editor/AlignmentGuides.tsx +82 -0
  519. package/corpus/templates/slides-2/app/components/editor/AnimationsPanel.tsx +698 -0
  520. package/corpus/templates/slides-2/app/components/editor/AppMenu.tsx +356 -0
  521. package/corpus/templates/slides-2/app/components/editor/AssetLibraryPanel.tsx +508 -0
  522. package/corpus/templates/slides-2/app/components/editor/BlockBubbleMenu.tsx +548 -0
  523. package/corpus/templates/slides-2/app/components/editor/DeckAccessDeniedPage.tsx +173 -0
  524. package/corpus/templates/slides-2/app/components/editor/DeckEditorSkeleton.tsx +35 -0
  525. package/corpus/templates/slides-2/app/components/editor/DeferredPopoverFallback.tsx +148 -0
  526. package/corpus/templates/slides-2/app/components/editor/EditorActionCluster.tsx +217 -0
  527. package/corpus/templates/slides-2/app/components/editor/EditorSidebar.tsx +1047 -0
  528. package/corpus/templates/slides-2/app/components/editor/EditorToolbar.tsx +1285 -0
  529. package/corpus/templates/slides-2/app/components/editor/ExportMenu.tsx +579 -0
  530. package/corpus/templates/slides-2/app/components/editor/GeneratingOverlay.tsx +21 -0
  531. package/corpus/templates/slides-2/app/components/editor/GeneratingSlidePreview.tsx +73 -0
  532. package/corpus/templates/slides-2/app/components/editor/GoogleDocImportHint.tsx +378 -0
  533. package/corpus/templates/slides-2/app/components/editor/GoogleDriveConnectionCta.tsx +154 -0
  534. package/corpus/templates/slides-2/app/components/editor/GoogleSlidesReferenceImport.tsx +299 -0
  535. package/corpus/templates/slides-2/app/components/editor/HistoryPanel.tsx +354 -0
  536. package/corpus/templates/slides-2/app/components/editor/HomeQuickStartDialog.tsx +202 -0
  537. package/corpus/templates/slides-2/app/components/editor/ImageCropOverlay.tsx +820 -0
  538. package/corpus/templates/slides-2/app/components/editor/ImageDropPromptPopover.tsx +280 -0
  539. package/corpus/templates/slides-2/app/components/editor/ImageGenPanel.tsx +244 -0
  540. package/corpus/templates/slides-2/app/components/editor/ImageOverlay.tsx +280 -0
  541. package/corpus/templates/slides-2/app/components/editor/ImageSearchPanel.tsx +183 -0
  542. package/corpus/templates/slides-2/app/components/editor/ImportDeckButton.tsx +247 -0
  543. package/corpus/templates/slides-2/app/components/editor/LogoSearchPanel.tsx +366 -0
  544. package/corpus/templates/slides-2/app/components/editor/MermaidToExcalidrawPanel.tsx +99 -0
  545. package/corpus/templates/slides-2/app/components/editor/MissingDeckAccessPane.tsx +219 -0
  546. package/corpus/templates/slides-2/app/components/editor/NewDeckReferenceStep.tsx +812 -0
  547. package/corpus/templates/slides-2/app/components/editor/PromptDialog.tsx +963 -0
  548. package/corpus/templates/slides-2/app/components/editor/QuestionFlow.tsx +119 -0
  549. package/corpus/templates/slides-2/app/components/editor/RequestDeckAccessDialog.tsx +101 -0
  550. package/corpus/templates/slides-2/app/components/editor/ShareDialog.tsx +126 -0
  551. package/corpus/templates/slides-2/app/components/editor/SlideContextToolbar.tsx +1471 -0
  552. package/corpus/templates/slides-2/app/components/editor/SlideEditor.tsx +11183 -0
  553. package/corpus/templates/slides-2/app/components/editor/SlideOverflowWarning.tsx +82 -0
  554. package/corpus/templates/slides-2/app/components/editor/SlideScrollStack.tsx +307 -0
  555. package/corpus/templates/slides-2/app/components/editor/SlideSlashCommandMenu.tsx +692 -0
  556. package/corpus/templates/slides-2/app/components/editor/SlideThumbnailContextMenu.tsx +52 -0
  557. package/corpus/templates/slides-2/app/components/editor/SlideTransitionControl.tsx +184 -0
  558. package/corpus/templates/slides-2/app/components/editor/SlidesComposerContext.tsx +789 -0
  559. package/corpus/templates/slides-2/app/components/editor/SlidesComposerContextProvider.tsx +74 -0
  560. package/corpus/templates/slides-2/app/components/editor/SlidesLayersPanel.tsx +377 -0
  561. package/corpus/templates/slides-2/app/components/editor/SpeakerNotesPanel.tsx +119 -0
  562. package/corpus/templates/slides-2/app/components/editor/TweaksPanel.tsx +77 -0
  563. package/corpus/templates/slides-2/app/components/editor/UploadStorageGate.tsx +37 -0
  564. package/corpus/templates/slides-2/app/components/editor/bullet-editing.ts +880 -0
  565. package/corpus/templates/slides-2/app/components/editor/canvas-interactions/index.ts +12 -0
  566. package/corpus/templates/slides-2/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +119 -0
  567. package/corpus/templates/slides-2/app/components/editor/commit-active-edit.ts +14 -0
  568. package/corpus/templates/slides-2/app/components/editor/editor-command-model.ts +35 -0
  569. package/corpus/templates/slides-2/app/components/editor/fit-text-object.ts +31 -0
  570. package/corpus/templates/slides-2/app/components/editor/in-place-text-session.browser-cases.json +983 -0
  571. package/corpus/templates/slides-2/app/components/editor/in-place-text-session.browser-host.ts +747 -0
  572. package/corpus/templates/slides-2/app/components/editor/in-place-text-session.ts +6891 -0
  573. package/corpus/templates/slides-2/app/components/editor/inline-edit-session.ts +26 -0
  574. package/corpus/templates/slides-2/app/components/editor/list-editing.ts +501 -0
  575. package/corpus/templates/slides-2/app/components/editor/rich-text-selection.ts +975 -0
  576. package/corpus/templates/slides-2/app/components/editor/rte-test-utils.ts +265 -0
  577. package/corpus/templates/slides-2/app/components/editor/selection-overlay-measurement.ts +191 -0
  578. package/corpus/templates/slides-2/app/components/editor/slide-escape-arbiter.ts +34 -0
  579. package/corpus/templates/slides-2/app/components/editor/slide-object-interactions.ts +6362 -0
  580. package/corpus/templates/slides-2/app/components/editor/slide-object-transform.browser-host.ts +19 -0
  581. package/corpus/templates/slides-2/app/components/editor/slide-pointer-target.ts +432 -0
  582. package/corpus/templates/slides-2/app/components/editor/slide-presence.ts +13 -0
  583. package/corpus/templates/slides-2/app/components/editor/slide-style.ts +243 -0
  584. package/corpus/templates/slides-2/app/components/editor/slide-text-targets.ts +540 -0
  585. package/corpus/templates/slides-2/app/components/editor/style-clipboard.ts +102 -0
  586. package/corpus/templates/slides-2/app/components/editor/use-prompt-import.ts +159 -0
  587. package/corpus/templates/slides-2/app/components/home/SlidesHomeLibrary.tsx +79 -0
  588. package/corpus/templates/slides-2/app/components/layout/AgentWorkIndicator.tsx +193 -0
  589. package/corpus/templates/slides-2/app/components/layout/Header.tsx +110 -0
  590. package/corpus/templates/slides-2/app/components/layout/Layout.tsx +492 -0
  591. package/corpus/templates/slides-2/app/components/layout/Sidebar.tsx +109 -0
  592. package/corpus/templates/slides-2/app/components/layout/layout-route-policy.ts +28 -0
  593. package/corpus/templates/slides-2/app/components/presentation/PresentationView.tsx +1116 -0
  594. package/corpus/templates/slides-2/app/components/presentation/PresenterView.tsx +526 -0
  595. package/corpus/templates/slides-2/app/components/presentation/SlideTransitionStage.tsx +297 -0
  596. package/corpus/templates/slides-2/app/components/presentation/present-channel.ts +31 -0
  597. package/corpus/templates/slides-2/app/components/presentation/slide-build-steps.ts +231 -0
  598. package/corpus/templates/slides-2/app/components/presentation/slide-navigation.ts +273 -0
  599. package/corpus/templates/slides-2/app/components/presentation/slide-transition-motion.ts +258 -0
  600. package/corpus/templates/slides-2/app/components/presentation/voice-navigation.ts +61 -0
  601. package/corpus/templates/slides-2/app/components/settings/notification-settings.tsx +93 -0
  602. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2AssetBrowser.tsx +726 -0
  603. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2CommandMenu.tsx +453 -0
  604. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2Comments.tsx +571 -0
  605. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2DesignTokens.tsx +345 -0
  606. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2Editor.tsx +4804 -0
  607. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2ExportMenu.tsx +671 -0
  608. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2FontBrowser.tsx +342 -0
  609. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2ImageCropControls.tsx +487 -0
  610. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2Inspector.tsx +950 -0
  611. package/corpus/templates/slides-2/app/components/slides-2-editor/Slides2SvglLogoSearchDialog.tsx +332 -0
  612. package/corpus/templates/slides-2/app/components/slides-2-editor/cross-slide-edit-history.ts +151 -0
  613. package/corpus/templates/slides-2/app/components/slides-2-editor/design-token-presets.ts +140 -0
  614. package/corpus/templates/slides-2/app/components/slides-2-editor/editor-action-errors.ts +47 -0
  615. package/corpus/templates/slides-2/app/components/slides-2-editor/editor-export-errors.ts +60 -0
  616. package/corpus/templates/slides-2/app/components/slides-2-editor/geometry.ts +275 -0
  617. package/corpus/templates/slides-2/app/components/slides-2-editor/image-crop-style.ts +82 -0
  618. package/corpus/templates/slides-2/app/components/slides-2-editor/inline-text-editor.tsx +631 -0
  619. package/corpus/templates/slides-2/app/components/slides-2-editor/keyboard-shortcuts.ts +104 -0
  620. package/corpus/templates/slides-2/app/components/slides-2-editor/object-insertion.ts +13 -0
  621. package/corpus/templates/slides-2/app/components/slides-2-editor/preview-patches.ts +54 -0
  622. package/corpus/templates/slides-2/app/components/slides-2-editor/sandbox-render-errors.ts +23 -0
  623. package/corpus/templates/slides-2/app/components/slides-2-editor/source-structure.ts +634 -0
  624. package/corpus/templates/slides-2/app/components/slides-2-editor/types.ts +85 -0
  625. package/corpus/templates/slides-2/app/components/slides-2-presenter/Slides2BlackoutOverlay.tsx +13 -0
  626. package/corpus/templates/slides-2/app/components/slides-2-presenter/Slides2ControlBar.tsx +285 -0
  627. package/corpus/templates/slides-2/app/components/slides-2-presenter/Slides2HelpDialog.tsx +72 -0
  628. package/corpus/templates/slides-2/app/components/slides-2-presenter/Slides2JumpInput.tsx +38 -0
  629. package/corpus/templates/slides-2/app/components/slides-2-presenter/Slides2LaserPointer.tsx +67 -0
  630. package/corpus/templates/slides-2/app/components/slides-2-presenter/Slides2Overview.tsx +161 -0
  631. package/corpus/templates/slides-2/app/components/slides-2-presenter/Slides2Player.tsx +839 -0
  632. package/corpus/templates/slides-2/app/components/slides-2-presenter/Slides2ProgressBar.tsx +23 -0
  633. package/corpus/templates/slides-2/app/components/slides-2-presenter/keyboard.ts +36 -0
  634. package/corpus/templates/slides-2/app/components/slides-2-presenter/presenter-channel.ts +131 -0
  635. package/corpus/templates/slides-2/app/components/slides-2-presenter/use-presenter-action-bridge.ts +296 -0
  636. package/corpus/templates/slides-2/app/components/slides-2-presenter/useSlides2TouchSwipe.ts +80 -0
  637. package/corpus/templates/slides-2/app/components/slides-2-runtime/SandboxedSlide.tsx +724 -0
  638. package/corpus/templates/slides-2/app/components/slides-2-runtime/SlideContentRenderer.tsx +137 -0
  639. package/corpus/templates/slides-2/app/components/slides-2-runtime/Slides2Canvas.tsx +99 -0
  640. package/corpus/templates/slides-2/app/components/slides-2-runtime/constants.ts +4 -0
  641. package/corpus/templates/slides-2/app/components/slides-2-runtime/protocol.ts +1400 -0
  642. package/corpus/templates/slides-2/app/components/slides-2-runtime/transition-frame.ts +439 -0
  643. package/corpus/templates/slides-2/app/components/templates/DeckTemplateLibrary.tsx +314 -0
  644. package/corpus/templates/slides-2/app/components/templates/DeckTemplatePreview.tsx +60 -0
  645. package/corpus/templates/slides-2/app/components/templates/DeckTemplateStage.tsx +45 -0
  646. package/corpus/templates/slides-2/app/components/ui/alert-dialog.tsx +1 -0
  647. package/corpus/templates/slides-2/app/components/ui/avatar.tsx +1 -0
  648. package/corpus/templates/slides-2/app/components/ui/button-group.tsx +1 -0
  649. package/corpus/templates/slides-2/app/components/ui/button.tsx +1 -0
  650. package/corpus/templates/slides-2/app/components/ui/card.tsx +1 -0
  651. package/corpus/templates/slides-2/app/components/ui/command.tsx +1 -0
  652. package/corpus/templates/slides-2/app/components/ui/context-menu.tsx +32 -0
  653. package/corpus/templates/slides-2/app/components/ui/dialog.tsx +1 -0
  654. package/corpus/templates/slides-2/app/components/ui/dropdown-menu.tsx +1 -0
  655. package/corpus/templates/slides-2/app/components/ui/filter-trigger.tsx +1 -0
  656. package/corpus/templates/slides-2/app/components/ui/input.tsx +1 -0
  657. package/corpus/templates/slides-2/app/components/ui/label.tsx +1 -0
  658. package/corpus/templates/slides-2/app/components/ui/popover.tsx +1 -0
  659. package/corpus/templates/slides-2/app/components/ui/progress.tsx +1 -0
  660. package/corpus/templates/slides-2/app/components/ui/scroll-area.tsx +1 -0
  661. package/corpus/templates/slides-2/app/components/ui/select.tsx +1 -0
  662. package/corpus/templates/slides-2/app/components/ui/separator.tsx +1 -0
  663. package/corpus/templates/slides-2/app/components/ui/sheet.tsx +1 -0
  664. package/corpus/templates/slides-2/app/components/ui/skeleton.tsx +1 -0
  665. package/corpus/templates/slides-2/app/components/ui/slider.tsx +1 -0
  666. package/corpus/templates/slides-2/app/components/ui/spinner.tsx +1 -0
  667. package/corpus/templates/slides-2/app/components/ui/switch.tsx +1 -0
  668. package/corpus/templates/slides-2/app/components/ui/tabs.tsx +59 -0
  669. package/corpus/templates/slides-2/app/components/ui/textarea.tsx +1 -0
  670. package/corpus/templates/slides-2/app/components/ui/toggle-group.tsx +1 -0
  671. package/corpus/templates/slides-2/app/components/ui/toolkit-provider.tsx +17 -0
  672. package/corpus/templates/slides-2/app/components/ui/tooltip.tsx +1 -0
  673. package/corpus/templates/slides-2/app/components/visual-editor/CanvasCommentPins.tsx +46 -0
  674. package/corpus/templates/slides-2/app/components/visual-editor/DrawOverlay.tsx +27 -0
  675. package/corpus/templates/slides-2/app/components/visual-editor/MultiSelectChip.tsx +97 -0
  676. package/corpus/templates/slides-2/app/components/visual-editor/SaveStatusIndicator.tsx +273 -0
  677. package/corpus/templates/slides-2/app/components/visual-editor/index.ts +4 -0
  678. package/corpus/templates/slides-2/app/context/DeckContext.tsx +7486 -0
  679. package/corpus/templates/slides-2/app/design-system.ts +3 -0
  680. package/corpus/templates/slides-2/app/entry.client.tsx +10 -0
  681. package/corpus/templates/slides-2/app/entry.server.tsx +10 -0
  682. package/corpus/templates/slides-2/app/global.css +1626 -0
  683. package/corpus/templates/slides-2/app/hooks/use-agent-generating.ts +517 -0
  684. package/corpus/templates/slides-2/app/hooks/use-compact-editor-layout.ts +26 -0
  685. package/corpus/templates/slides-2/app/hooks/use-contrast-audit-bridge.ts +49 -0
  686. package/corpus/templates/slides-2/app/hooks/use-deck-access-reload.ts +70 -0
  687. package/corpus/templates/slides-2/app/hooks/use-deck-access.ts +50 -0
  688. package/corpus/templates/slides-2/app/hooks/use-deck-design-system.ts +146 -0
  689. package/corpus/templates/slides-2/app/hooks/use-deck-history-action-bridge.ts +266 -0
  690. package/corpus/templates/slides-2/app/hooks/use-deck-presence.ts +89 -0
  691. package/corpus/templates/slides-2/app/hooks/use-deck-role.ts +46 -0
  692. package/corpus/templates/slides-2/app/hooks/use-deck-versions.ts +43 -0
  693. package/corpus/templates/slides-2/app/hooks/use-design-system-workflows.ts +11 -0
  694. package/corpus/templates/slides-2/app/hooks/use-design-systems.ts +31 -0
  695. package/corpus/templates/slides-2/app/hooks/use-generating-slide-preview.ts +115 -0
  696. package/corpus/templates/slides-2/app/hooks/use-navigation-state.ts +229 -0
  697. package/corpus/templates/slides-2/app/hooks/use-new-deck-generation-signal.ts +46 -0
  698. package/corpus/templates/slides-2/app/hooks/use-new-deck-generation.ts +710 -0
  699. package/corpus/templates/slides-2/app/hooks/use-sidebar-collapsed.ts +95 -0
  700. package/corpus/templates/slides-2/app/hooks/use-slide-comments.ts +202 -0
  701. package/corpus/templates/slides-2/app/hooks/use-slide-file-storage-status.ts +55 -0
  702. package/corpus/templates/slides-2/app/hooks/use-undo-selection.ts +66 -0
  703. package/corpus/templates/slides-2/app/hooks/use-workspace-defaults.ts +31 -0
  704. package/corpus/templates/slides-2/app/i18n/en-US.ts +1507 -0
  705. package/corpus/templates/slides-2/app/i18n/index.ts +19 -0
  706. package/corpus/templates/slides-2/app/lib/agent-visible-message.ts +21 -0
  707. package/corpus/templates/slides-2/app/lib/aspect-ratios.ts +7 -0
  708. package/corpus/templates/slides-2/app/lib/asset-error-copy.ts +59 -0
  709. package/corpus/templates/slides-2/app/lib/canvas-zoom.ts +47 -0
  710. package/corpus/templates/slides-2/app/lib/composer-context.ts +152 -0
  711. package/corpus/templates/slides-2/app/lib/composer-draft.ts +34 -0
  712. package/corpus/templates/slides-2/app/lib/contrast-audit.ts +390 -0
  713. package/corpus/templates/slides-2/app/lib/contrast-resolve.ts +240 -0
  714. package/corpus/templates/slides-2/app/lib/create-deck-generation.ts +938 -0
  715. package/corpus/templates/slides-2/app/lib/deck-access-lost.ts +4 -0
  716. package/corpus/templates/slides-2/app/lib/deck-backup.ts +186 -0
  717. package/corpus/templates/slides-2/app/lib/deck-editor-loading.ts +91 -0
  718. package/corpus/templates/slides-2/app/lib/deck-export-file-client.ts +77 -0
  719. package/corpus/templates/slides-2/app/lib/deck-filter.ts +52 -0
  720. package/corpus/templates/slides-2/app/lib/deck-list-loading.ts +16 -0
  721. package/corpus/templates/slides-2/app/lib/deck-preview-frame.ts +15 -0
  722. package/corpus/templates/slides-2/app/lib/deck-share-links.ts +9 -0
  723. package/corpus/templates/slides-2/app/lib/deck-sorting.ts +19 -0
  724. package/corpus/templates/slides-2/app/lib/deferred-editor-surfaces.ts +24 -0
  725. package/corpus/templates/slides-2/app/lib/design-system-selection.ts +11 -0
  726. package/corpus/templates/slides-2/app/lib/design-systems.ts +231 -0
  727. package/corpus/templates/slides-2/app/lib/dynamic-import.ts +50 -0
  728. package/corpus/templates/slides-2/app/lib/editor-agent-handoff.ts +92 -0
  729. package/corpus/templates/slides-2/app/lib/editor-shortcuts.ts +153 -0
  730. package/corpus/templates/slides-2/app/lib/export-google-slides-client.ts +168 -0
  731. package/corpus/templates/slides-2/app/lib/export-pdf-client.ts +684 -0
  732. package/corpus/templates/slides-2/app/lib/export-pptx-client.ts +2420 -0
  733. package/corpus/templates/slides-2/app/lib/generation-lifecycle.ts +24 -0
  734. package/corpus/templates/slides-2/app/lib/generation-state.ts +247 -0
  735. package/corpus/templates/slides-2/app/lib/google-docs-client.ts +110 -0
  736. package/corpus/templates/slides-2/app/lib/google-slides-export-availability-client.ts +53 -0
  737. package/corpus/templates/slides-2/app/lib/google-slides-reference-source.ts +18 -0
  738. package/corpus/templates/slides-2/app/lib/image-download.ts +85 -0
  739. package/corpus/templates/slides-2/app/lib/image-drop-to-agent.ts +210 -0
  740. package/corpus/templates/slides-2/app/lib/import-uploaded-deck.ts +132 -0
  741. package/corpus/templates/slides-2/app/lib/inline-edit-remote.ts +55 -0
  742. package/corpus/templates/slides-2/app/lib/localize-slides-changelog.ts +47 -0
  743. package/corpus/templates/slides-2/app/lib/mermaid-blocks.ts +18 -0
  744. package/corpus/templates/slides-2/app/lib/new-deck-reference-selection.ts +174 -0
  745. package/corpus/templates/slides-2/app/lib/normalize-slide-padding.ts +74 -0
  746. package/corpus/templates/slides-2/app/lib/pending-deck-changes.ts +33 -0
  747. package/corpus/templates/slides-2/app/lib/portaled-layer.ts +7 -0
  748. package/corpus/templates/slides-2/app/lib/pptx-google-slides.ts +204 -0
  749. package/corpus/templates/slides-2/app/lib/prompt-attachment-adapter.ts +37 -0
  750. package/corpus/templates/slides-2/app/lib/prompt-file-uploads.ts +557 -0
  751. package/corpus/templates/slides-2/app/lib/recent-references.ts +106 -0
  752. package/corpus/templates/slides-2/app/lib/reference-document-hydration.ts +406 -0
  753. package/corpus/templates/slides-2/app/lib/register-chat-renderers.tsx +645 -0
  754. package/corpus/templates/slides-2/app/lib/reveal-after-delete.ts +55 -0
  755. package/corpus/templates/slides-2/app/lib/sanitize-slide-html.ts +752 -0
  756. package/corpus/templates/slides-2/app/lib/slide-agent-context.ts +148 -0
  757. package/corpus/templates/slides-2/app/lib/slide-animation-elements.ts +900 -0
  758. package/corpus/templates/slides-2/app/lib/slide-clipboard.ts +534 -0
  759. package/corpus/templates/slides-2/app/lib/slide-comment-anchor.ts +286 -0
  760. package/corpus/templates/slides-2/app/lib/slide-content-merge.ts +295 -0
  761. package/corpus/templates/slides-2/app/lib/slide-image-replacement.ts +1919 -0
  762. package/corpus/templates/slides-2/app/lib/slide-live-remote.ts +215 -0
  763. package/corpus/templates/slides-2/app/lib/slide-scroll.ts +56 -0
  764. package/corpus/templates/slides-2/app/lib/slide-source-map.ts +1099 -0
  765. package/corpus/templates/slides-2/app/lib/slide-video.ts +390 -0
  766. package/corpus/templates/slides-2/app/lib/slides-relay-tracking.ts +114 -0
  767. package/corpus/templates/slides-2/app/lib/streaming-slide-html.ts +77 -0
  768. package/corpus/templates/slides-2/app/lib/tab-id.ts +3 -0
  769. package/corpus/templates/slides-2/app/lib/template-navigation.ts +15 -0
  770. package/corpus/templates/slides-2/app/lib/text-tool-shortcut.ts +75 -0
  771. package/corpus/templates/slides-2/app/lib/undo-reveal.ts +332 -0
  772. package/corpus/templates/slides-2/app/lib/upload-response.ts +107 -0
  773. package/corpus/templates/slides-2/app/lib/utils.ts +38 -0
  774. package/corpus/templates/slides-2/app/lib/validate-native-slide-html.ts +177 -0
  775. package/corpus/templates/slides-2/app/lib/video-upload.ts +354 -0
  776. package/corpus/templates/slides-2/app/pages/DeckEditor.tsx +6158 -0
  777. package/corpus/templates/slides-2/app/pages/DesignSystems.tsx +363 -0
  778. package/corpus/templates/slides-2/app/pages/Index.tsx +3254 -0
  779. package/corpus/templates/slides-2/app/pages/NotFound.tsx +33 -0
  780. package/corpus/templates/slides-2/app/pages/Presentation.tsx +120 -0
  781. package/corpus/templates/slides-2/app/pages/SharedPresentation.tsx +174 -0
  782. package/corpus/templates/slides-2/app/pages/SlideThemeDetail.tsx +227 -0
  783. package/corpus/templates/slides-2/app/pages/SlideThemes.tsx +155 -0
  784. package/corpus/templates/slides-2/app/pages/Slides2EditorPage.tsx +1618 -0
  785. package/corpus/templates/slides-2/app/pages/Slides2PresenterConsolePage.tsx +937 -0
  786. package/corpus/templates/slides-2/app/pages/Slides2PresenterPage.tsx +979 -0
  787. package/corpus/templates/slides-2/app/pages/Templates.tsx +32 -0
  788. package/corpus/templates/slides-2/app/root.tsx +391 -0
  789. package/corpus/templates/slides-2/app/routes/$.tsx +10 -0
  790. package/corpus/templates/slides-2/app/routes/_index.tsx +1 -0
  791. package/corpus/templates/slides-2/app/routes/access-request.approve.tsx +276 -0
  792. package/corpus/templates/slides-2/app/routes/agent.tsx +19 -0
  793. package/corpus/templates/slides-2/app/routes/chat.$threadId.tsx +1 -0
  794. package/corpus/templates/slides-2/app/routes/chat.tsx +190 -0
  795. package/corpus/templates/slides-2/app/routes/deck.$id.tsx +10 -0
  796. package/corpus/templates/slides-2/app/routes/deck.$id_.present.tsx +10 -0
  797. package/corpus/templates/slides-2/app/routes/design-systems.tsx +10 -0
  798. package/corpus/templates/slides-2/app/routes/extensions.$id.$slug.tsx +2 -0
  799. package/corpus/templates/slides-2/app/routes/extensions.$id.tsx +5 -0
  800. package/corpus/templates/slides-2/app/routes/extensions._index.tsx +5 -0
  801. package/corpus/templates/slides-2/app/routes/extensions.tsx +5 -0
  802. package/corpus/templates/slides-2/app/routes/home-layout.tsx +31 -0
  803. package/corpus/templates/slides-2/app/routes/home.tsx +22 -0
  804. package/corpus/templates/slides-2/app/routes/p.$id.tsx +195 -0
  805. package/corpus/templates/slides-2/app/routes/settings.$.tsx +1 -0
  806. package/corpus/templates/slides-2/app/routes/settings.tsx +131 -0
  807. package/corpus/templates/slides-2/app/routes/share.$token.tsx +137 -0
  808. package/corpus/templates/slides-2/app/routes/slide.tsx +209 -0
  809. package/corpus/templates/slides-2/app/routes/team.tsx +11 -0
  810. package/corpus/templates/slides-2/app/routes/templates.tsx +1 -0
  811. package/corpus/templates/slides-2/app/routes/themes.$id.tsx +1 -0
  812. package/corpus/templates/slides-2/app/routes/themes.tsx +1 -0
  813. package/corpus/templates/slides-2/app/routes.ts +24 -0
  814. package/corpus/templates/slides-2/app/vite-env.d.ts +24 -0
  815. package/corpus/templates/slides-2/changelog/2026-10-17-find-and-switch-decks-from-the-presenter-console.md +6 -0
  816. package/corpus/templates/slides-2/changelog/2026-10-17-meet-slides-2-create-and-refine-editable-slide-decks-with-an.md +6 -0
  817. package/corpus/templates/slides-2/changelog/2026-10-17-pptx-image-export.md +6 -0
  818. package/corpus/templates/slides-2/changelog/2026-10-17-visual-editor.md +6 -0
  819. package/corpus/templates/slides-2/changelog/2026-10-18-apply-an-accessible-design-system-to-an-existing-deck-before.md +6 -0
  820. package/corpus/templates/slides-2/changelog/2026-10-18-choose-a-template-or-start-a-new-presentation-from-the-slide.md +6 -0
  821. package/corpus/templates/slides-2/changelog/2026-10-18-generate-decks-from-a-prompt-then-edit-slide-elements-direct.md +6 -0
  822. package/corpus/templates/slides-2/changelog/2026-10-18-generate-presentation-decks-from-a-prompt-and-edit-every-sli.md +6 -0
  823. package/corpus/templates/slides-2/changelog/2026-10-18-new-presentation-drafts-save-before-generation-starts-so-you.md +6 -0
  824. package/corpus/templates/slides-2/changelog/2026-10-18-the-assistant-can-undo-redo-and-save-pending-edits-in-the-vi.md +6 -0
  825. package/corpus/templates/slides-2/changelog/2026-10-19-agents-can-insert-duplicate-and-delete-canvas-objects-in-sou.md +6 -0
  826. package/corpus/templates/slides-2/changelog/2026-10-19-browse-slide-themes.md +6 -0
  827. package/corpus/templates/slides-2/changelog/2026-10-19-clicking-a-slide-preview-in-overview-selects-that-slide.md +6 -0
  828. package/corpus/templates/slides-2/changelog/2026-10-19-create-decks-from-a-prompt-and-edit-slides-directly-on-the-c.md +6 -0
  829. package/corpus/templates/slides-2/changelog/2026-10-19-creating-and-editing-decks-now-starts-with-the-tools-most-re.md +6 -0
  830. package/corpus/templates/slides-2/changelog/2026-10-19-deleting-decks-revokes-public-links.md +7 -0
  831. package/corpus/templates/slides-2/changelog/2026-10-19-escape-cancels-an-in-progress-slide-drag-without-losing-earl.md +6 -0
  832. package/corpus/templates/slides-2/changelog/2026-10-19-import-failures-now-show-clear-localized-descriptions-instea.md +6 -0
  833. package/corpus/templates/slides-2/changelog/2026-10-19-presenter-controls-stay-responsive-when-moving-over-the-slid.md +6 -0
  834. package/corpus/templates/slides-2/changelog/2026-10-19-presenter-notes-stay-private-from-viewers-and-commenters.md +6 -0
  835. package/corpus/templates/slides-2/changelog/2026-10-19-preview-generated-slides-in-chat.md +6 -0
  836. package/corpus/templates/slides-2/changelog/2026-10-19-remote-image-previews-accept-supported-raster-formats.md +6 -0
  837. package/corpus/templates/slides-2/changelog/2026-10-19-search-the-svgl-catalog-and-add-svg-logos-to-a-deck-or-the-g.md +6 -0
  838. package/corpus/templates/slides-2/changelog/2026-10-19-slide-generation-explains-when-react-effect-hooks-cannot-run.md +6 -0
  839. package/corpus/templates/slides-2/changelog/2026-10-19-the-editor-highlights-hovered-objects-and-keeps-image-replac.md +6 -0
  840. package/corpus/templates/slides-2/changelog/2026-10-19-the-slide-editor-uses-the-shared-agent-native-controls.md +6 -0
  841. package/corpus/templates/slides-2/changelog/2026-10-20-deck-editing-controls-match-the-workspace.md +6 -0
  842. package/corpus/templates/slides-2/changelog/2026-10-20-google-slides-imports-now-report-missing-image-data-instead-.md +6 -0
  843. package/corpus/templates/slides-2/changelog/2026-10-20-imports-and-previews-handle-large-content-safely.md +6 -0
  844. package/corpus/templates/slides-2/changelog/2026-10-20-public-deck-pages-can-export-source-backed-slides-to-pdf.md +6 -0
  845. package/corpus/templates/slides-2/changelog/2026-10-20-saved-slide-images-stay-available.md +6 -0
  846. package/corpus/templates/slides-2/changelog/2026-10-20-scope-global-media-picks-to-assets-the-current-deck-can-reso.md +6 -0
  847. package/corpus/templates/slides-2/components.json +20 -0
  848. package/corpus/templates/slides-2/drizzle.config.ts +3 -0
  849. package/corpus/templates/slides-2/learnings.defaults.md +5 -0
  850. package/corpus/templates/slides-2/netlify.toml +24 -0
  851. package/corpus/templates/slides-2/package.json +147 -0
  852. package/corpus/templates/slides-2/public/agent-native-icon-dark.svg +10 -0
  853. package/corpus/templates/slides-2/public/agent-native-icon-light.svg +10 -0
  854. package/corpus/templates/slides-2/public/agent-native-logo-dark.svg +21 -0
  855. package/corpus/templates/slides-2/public/agent-native-logo-light.svg +21 -0
  856. package/corpus/templates/slides-2/public/assets/builder-logo-white.svg +15 -0
  857. package/corpus/templates/slides-2/public/assets/generated/preview.html +61 -0
  858. package/corpus/templates/slides-2/public/assets/intuit-logo-white.svg +6 -0
  859. package/corpus/templates/slides-2/public/assets/walmart-logo-white.svg +6 -0
  860. package/corpus/templates/slides-2/public/chatgpt-plugin-icon.svg +7 -0
  861. package/corpus/templates/slides-2/public/favicon.svg +1 -0
  862. package/corpus/templates/slides-2/public/icon-180.svg +1 -0
  863. package/corpus/templates/slides-2/public/icon-192.svg +1 -0
  864. package/corpus/templates/slides-2/public/icon-512.svg +1 -0
  865. package/corpus/templates/slides-2/public/manifest.json +20 -0
  866. package/corpus/templates/slides-2/public/placeholder.svg +1 -0
  867. package/corpus/templates/slides-2/public/robots.txt +14 -0
  868. package/corpus/templates/slides-2/public/visual-edit-structure-proof.html +99 -0
  869. package/corpus/templates/slides-2/react-router.config.ts +7 -0
  870. package/corpus/templates/slides-2/scripts/edit-fidelity/README.md +499 -0
  871. package/corpus/templates/slides-2/scripts/edit-fidelity/authoring-fuzz.ts +9517 -0
  872. package/corpus/templates/slides-2/scripts/edit-fidelity/baseline.json +16427 -0
  873. package/corpus/templates/slides-2/scripts/edit-fidelity/dev-server-url.ts +10 -0
  874. package/corpus/templates/slides-2/scripts/edit-fidelity/lib/in-page.ts +1975 -0
  875. package/corpus/templates/slides-2/scripts/edit-fidelity/lib/metrics.ts +1401 -0
  876. package/corpus/templates/slides-2/scripts/edit-fidelity/retry-infra.ts +7 -0
  877. package/corpus/templates/slides-2/scripts/edit-fidelity/run-options.ts +21 -0
  878. package/corpus/templates/slides-2/scripts/edit-fidelity/run-outcomes.ts +127 -0
  879. package/corpus/templates/slides-2/scripts/edit-fidelity/run.ts +8451 -0
  880. package/corpus/templates/slides-2/scripts/export-fidelity/README.md +116 -0
  881. package/corpus/templates/slides-2/scripts/export-fidelity/compare-layout-lib.ts +241 -0
  882. package/corpus/templates/slides-2/scripts/export-fidelity/compare-layout.ts +30 -0
  883. package/corpus/templates/slides-2/scripts/export-fidelity/diff.ts +222 -0
  884. package/corpus/templates/slides-2/scripts/export-fidelity/export.ts +765 -0
  885. package/corpus/templates/slides-2/scripts/export-fidelity/fixtures/agent-dark-deck.json +48 -0
  886. package/corpus/templates/slides-2/scripts/export-fidelity/generate-calibration.ts +765 -0
  887. package/corpus/templates/slides-2/scripts/export-fidelity/google-export.ts +137 -0
  888. package/corpus/templates/slides-2/scripts/export-fidelity/google-layout.ts +82 -0
  889. package/corpus/templates/slides-2/scripts/export-fidelity/resolve-pkg.ts +29 -0
  890. package/corpus/templates/slides-2/scripts/migrate-production.ts +22 -0
  891. package/corpus/templates/slides-2/server/db/index.ts +73 -0
  892. package/corpus/templates/slides-2/server/db/schema.ts +189 -0
  893. package/corpus/templates/slides-2/server/handlers/assets-url.ts +13 -0
  894. package/corpus/templates/slides-2/server/handlers/assets.ts +3217 -0
  895. package/corpus/templates/slides-2/server/handlers/decks.ts +185 -0
  896. package/corpus/templates/slides-2/server/handlers/demo.ts +9 -0
  897. package/corpus/templates/slides-2/server/handlers/design-systems.ts +219 -0
  898. package/corpus/templates/slides-2/server/handlers/google-docs-auth.ts +165 -0
  899. package/corpus/templates/slides-2/server/handlers/image-gen.ts +153 -0
  900. package/corpus/templates/slides-2/server/handlers/image-providers/gemini.ts +209 -0
  901. package/corpus/templates/slides-2/server/handlers/image-providers/index.ts +61 -0
  902. package/corpus/templates/slides-2/server/handlers/image-providers/openai.ts +288 -0
  903. package/corpus/templates/slides-2/server/handlers/image-providers/types.ts +35 -0
  904. package/corpus/templates/slides-2/server/handlers/import/docx-parser.ts +31 -0
  905. package/corpus/templates/slides-2/server/handlers/import/html-converter.ts +1534 -0
  906. package/corpus/templates/slides-2/server/handlers/import/pdf-fidelity-parser.ts +1039 -0
  907. package/corpus/templates/slides-2/server/handlers/import/pdf-sidecar-reader.ts +81 -0
  908. package/corpus/templates/slides-2/server/handlers/import/pdf-style-digest.ts +187 -0
  909. package/corpus/templates/slides-2/server/handlers/import/pptx-assets.ts +155 -0
  910. package/corpus/templates/slides-2/server/handlers/import/pptx-parser.ts +57 -0
  911. package/corpus/templates/slides-2/server/handlers/request-auth-context.ts +108 -0
  912. package/corpus/templates/slides-2/server/handlers/share.ts +52 -0
  913. package/corpus/templates/slides-2/server/handlers/uploads-chunked.ts +1066 -0
  914. package/corpus/templates/slides-2/server/handlers/uploads.ts +457 -0
  915. package/corpus/templates/slides-2/server/lib/access-request-email.ts +66 -0
  916. package/corpus/templates/slides-2/server/lib/assets-image-delegation.ts +331 -0
  917. package/corpus/templates/slides-2/server/lib/bounded-multipart.ts +49 -0
  918. package/corpus/templates/slides-2/server/lib/builder-design-system-proxy.ts +122 -0
  919. package/corpus/templates/slides-2/server/lib/chat-attachments.ts +425 -0
  920. package/corpus/templates/slides-2/server/lib/chatgpt-directory-tools.ts +246 -0
  921. package/corpus/templates/slides-2/server/lib/chunked-upload-session.ts +195 -0
  922. package/corpus/templates/slides-2/server/lib/comment-notifications.ts +184 -0
  923. package/corpus/templates/slides-2/server/lib/deck-access-requests.ts +102 -0
  924. package/corpus/templates/slides-2/server/lib/deck-asset-scope.ts +150 -0
  925. package/corpus/templates/slides-2/server/lib/deck-export-tracking.ts +119 -0
  926. package/corpus/templates/slides-2/server/lib/deck-templates/a-case-study.ts +154 -0
  927. package/corpus/templates/slides-2/server/lib/deck-templates/a-company.ts +160 -0
  928. package/corpus/templates/slides-2/server/lib/deck-templates/a-pitch.ts +151 -0
  929. package/corpus/templates/slides-2/server/lib/deck-templates/a-quarterly.ts +264 -0
  930. package/corpus/templates/slides-2/server/lib/deck-templates/a-shared.ts +35 -0
  931. package/corpus/templates/slides-2/server/lib/deck-templates/a-update.ts +188 -0
  932. package/corpus/templates/slides-2/server/lib/deck-templates/a-workshop.ts +196 -0
  933. package/corpus/templates/slides-2/server/lib/deck-templates/b-keynote.ts +131 -0
  934. package/corpus/templates/slides-2/server/lib/deck-templates/b-lesson.ts +209 -0
  935. package/corpus/templates/slides-2/server/lib/deck-templates/b-manifesto.ts +149 -0
  936. package/corpus/templates/slides-2/server/lib/deck-templates/b-portfolio.ts +144 -0
  937. package/corpus/templates/slides-2/server/lib/deck-templates/b-research.ts +221 -0
  938. package/corpus/templates/slides-2/server/lib/deck-templates/b-roadmap.ts +264 -0
  939. package/corpus/templates/slides-2/server/lib/deck-templates/b-shared.ts +44 -0
  940. package/corpus/templates/slides-2/server/lib/deck-templates/group-a.ts +16 -0
  941. package/corpus/templates/slides-2/server/lib/deck-templates/group-b.ts +16 -0
  942. package/corpus/templates/slides-2/server/lib/deck-templates/legacy.ts +567 -0
  943. package/corpus/templates/slides-2/server/lib/deck-templates.ts +60 -0
  944. package/corpus/templates/slides-2/server/lib/deck-versions.ts +233 -0
  945. package/corpus/templates/slides-2/server/lib/design-system-workflows.ts +22 -0
  946. package/corpus/templates/slides-2/server/lib/emails.ts +84 -0
  947. package/corpus/templates/slides-2/server/lib/env-config.ts +15 -0
  948. package/corpus/templates/slides-2/server/lib/fetch-remote-image.ts +245 -0
  949. package/corpus/templates/slides-2/server/lib/generation-completion.ts +278 -0
  950. package/corpus/templates/slides-2/server/lib/google-docs-access.ts +51 -0
  951. package/corpus/templates/slides-2/server/lib/google-docs-error.ts +54 -0
  952. package/corpus/templates/slides-2/server/lib/google-docs-oauth.ts +422 -0
  953. package/corpus/templates/slides-2/server/lib/google-fonts.ts +509 -0
  954. package/corpus/templates/slides-2/server/lib/google-oauth-preflight.ts +119 -0
  955. package/corpus/templates/slides-2/server/lib/google-slides-export-availability.ts +55 -0
  956. package/corpus/templates/slides-2/server/lib/image-proxy-response.ts +16 -0
  957. package/corpus/templates/slides-2/server/lib/image-proxy-url.ts +155 -0
  958. package/corpus/templates/slides-2/server/lib/import-asset-storage.ts +214 -0
  959. package/corpus/templates/slides-2/server/lib/imported-asset-batch.ts +218 -0
  960. package/corpus/templates/slides-2/server/lib/legacy-slide-source.ts +692 -0
  961. package/corpus/templates/slides-2/server/lib/media-search-providers.ts +216 -0
  962. package/corpus/templates/slides-2/server/lib/native-creative-context.ts +295 -0
  963. package/corpus/templates/slides-2/server/lib/pdf-parse-setup.ts +115 -0
  964. package/corpus/templates/slides-2/server/lib/provider-api.ts +57 -0
  965. package/corpus/templates/slides-2/server/lib/request-wait-until.ts +30 -0
  966. package/corpus/templates/slides-2/server/lib/shared-deck.ts +29 -0
  967. package/corpus/templates/slides-2/server/lib/slide-asset-references.ts +309 -0
  968. package/corpus/templates/slides-2/server/lib/slide-content-patch.ts +1004 -0
  969. package/corpus/templates/slides-2/server/lib/slide-hygiene.ts +731 -0
  970. package/corpus/templates/slides-2/server/lib/slide-image-insertion.ts +136 -0
  971. package/corpus/templates/slides-2/server/lib/slide-reveal-issues.ts +41 -0
  972. package/corpus/templates/slides-2/server/lib/slide-source-editing/babel-walk.ts +117 -0
  973. package/corpus/templates/slides-2/server/lib/slide-source-editing/batch-edit.ts +152 -0
  974. package/corpus/templates/slides-2/server/lib/slide-source-editing/edit-ops.ts +1478 -0
  975. package/corpus/templates/slides-2/server/lib/slide-source-editing/image-target.ts +128 -0
  976. package/corpus/templates/slides-2/server/lib/slide-source-editing/text-diff.ts +23 -0
  977. package/corpus/templates/slides-2/server/lib/slide-source-limits.ts +9 -0
  978. package/corpus/templates/slides-2/server/lib/slide-source.ts +1786 -0
  979. package/corpus/templates/slides-2/server/lib/slide-theme-demo-sources.ts +2106 -0
  980. package/corpus/templates/slides-2/server/lib/slide-themes.ts +2174 -0
  981. package/corpus/templates/slides-2/server/lib/slide-worker-runtime.ts +1995 -0
  982. package/corpus/templates/slides-2/server/lib/slides-tracking.ts +73 -0
  983. package/corpus/templates/slides-2/server/lib/source-import.ts +213 -0
  984. package/corpus/templates/slides-2/server/lib/svgl.ts +364 -0
  985. package/corpus/templates/slides-2/server/lib/tenant-files.ts +179 -0
  986. package/corpus/templates/slides-2/server/lib/upload-storage-status.ts +9 -0
  987. package/corpus/templates/slides-2/server/lib/uploaded-asset-cleanup-outbox.ts +521 -0
  988. package/corpus/templates/slides-2/server/lib/uploaded-asset-object-lifecycle.ts +404 -0
  989. package/corpus/templates/slides-2/server/lib/uploaded-fonts.ts +696 -0
  990. package/corpus/templates/slides-2/server/lib/uploaded-reference-storage.ts +77 -0
  991. package/corpus/templates/slides-2/server/lib/validate-slide-animations.ts +341 -0
  992. package/corpus/templates/slides-2/server/middleware/auth.ts +6 -0
  993. package/corpus/templates/slides-2/server/plugins/_dev-upload-stub.ts +6 -0
  994. package/corpus/templates/slides-2/server/plugins/agent-chat.ts +402 -0
  995. package/corpus/templates/slides-2/server/plugins/auth.ts +31 -0
  996. package/corpus/templates/slides-2/server/plugins/collab.ts +30 -0
  997. package/corpus/templates/slides-2/server/plugins/config.ts +6 -0
  998. package/corpus/templates/slides-2/server/plugins/core-routes.ts +30 -0
  999. package/corpus/templates/slides-2/server/plugins/creative-context.ts +187 -0
  1000. package/corpus/templates/slides-2/server/plugins/db.ts +462 -0
  1001. package/corpus/templates/slides-2/server/plugins/feature-flags.ts +5 -0
  1002. package/corpus/templates/slides-2/server/plugins/labs.ts +8 -0
  1003. package/corpus/templates/slides-2/server/plugins/orphaned-asset-cleanup.ts +17 -0
  1004. package/corpus/templates/slides-2/server/plugins/otel.ts +6 -0
  1005. package/corpus/templates/slides-2/server/plugins/transactional-emails.ts +5 -0
  1006. package/corpus/templates/slides-2/server/register-secrets.ts +209 -0
  1007. package/corpus/templates/slides-2/server/routes/[...page].get.ts +5 -0
  1008. package/corpus/templates/slides-2/server/routes/[...page].head.ts +1 -0
  1009. package/corpus/templates/slides-2/server/routes/[base]/_agent-native/google-docs/auth-url.get.ts +1 -0
  1010. package/corpus/templates/slides-2/server/routes/[base]/_agent-native/google-docs/callback.get.ts +1 -0
  1011. package/corpus/templates/slides-2/server/routes/_agent-native/google-docs/auth-url.get.ts +1 -0
  1012. package/corpus/templates/slides-2/server/routes/_agent-native/google-docs/callback.get.ts +1 -0
  1013. package/corpus/templates/slides-2/server/routes/api/assets/upload-video.post.ts +1 -0
  1014. package/corpus/templates/slides-2/server/routes/api/assets/upload.post.ts +1 -0
  1015. package/corpus/templates/slides-2/server/routes/api/assets/video-uploads.delete.ts +1 -0
  1016. package/corpus/templates/slides-2/server/routes/api/deck-agent-context.json.get.ts +105 -0
  1017. package/corpus/templates/slides-2/server/routes/api/decks/events.get.ts +1 -0
  1018. package/corpus/templates/slides-2/server/routes/api/demo.get.ts +1 -0
  1019. package/corpus/templates/slides-2/server/routes/api/exports/[filename].get.ts +221 -0
  1020. package/corpus/templates/slides-2/server/routes/api/exports/google-slides.post.ts +240 -0
  1021. package/corpus/templates/slides-2/server/routes/api/exports/html.post.ts +67 -0
  1022. package/corpus/templates/slides-2/server/routes/api/exports/pptx.post.ts +100 -0
  1023. package/corpus/templates/slides-2/server/routes/api/gen-preview/[...].get.ts +24 -0
  1024. package/corpus/templates/slides-2/server/routes/api/generated/[...].get.ts +24 -0
  1025. package/corpus/templates/slides-2/server/routes/api/image-proxy.get.ts +518 -0
  1026. package/corpus/templates/slides-2/server/routes/api/import-assets/[token].get.ts +70 -0
  1027. package/corpus/templates/slides-2/server/routes/api/preview-images.get.ts +20 -0
  1028. package/corpus/templates/slides-2/server/routes/api/share/[token].get.ts +1 -0
  1029. package/corpus/templates/slides-2/server/routes/api/uploads-chunked/[sessionId]/chunk.post.ts +1 -0
  1030. package/corpus/templates/slides-2/server/routes/api/uploads-chunked/[sessionId]/status.get.ts +1 -0
  1031. package/corpus/templates/slides-2/server/routes/api/uploads-chunked/[sessionId].delete.ts +1 -0
  1032. package/corpus/templates/slides-2/server/routes/api/uploads-chunked/start.post.ts +1 -0
  1033. package/corpus/templates/slides-2/server/routes/api/uploads.delete.ts +1 -0
  1034. package/corpus/templates/slides-2/server/routes/api/uploads.post.ts +1 -0
  1035. package/corpus/templates/slides-2/server/workspace-defaults.ts +196 -0
  1036. package/corpus/templates/slides-2/shared/action-ui.ts +147 -0
  1037. package/corpus/templates/slides-2/shared/agent-readable.ts +2 -0
  1038. package/corpus/templates/slides-2/shared/api.ts +406 -0
  1039. package/corpus/templates/slides-2/shared/app-state-tabs.ts +30 -0
  1040. package/corpus/templates/slides-2/shared/app-storage.ts +9 -0
  1041. package/corpus/templates/slides-2/shared/aspect-ratios.ts +49 -0
  1042. package/corpus/templates/slides-2/shared/blank-slide.ts +179 -0
  1043. package/corpus/templates/slides-2/shared/client-compatibility.ts +2 -0
  1044. package/corpus/templates/slides-2/shared/contrast-audit.ts +255 -0
  1045. package/corpus/templates/slides-2/shared/deck-access.ts +26 -0
  1046. package/corpus/templates/slides-2/shared/deck-app-scope.ts +14 -0
  1047. package/corpus/templates/slides-2/shared/deck-content.ts +37 -0
  1048. package/corpus/templates/slides-2/shared/deck-history-control.ts +79 -0
  1049. package/corpus/templates/slides-2/shared/deck-scope.ts +5 -0
  1050. package/corpus/templates/slides-2/shared/deck-title.ts +199 -0
  1051. package/corpus/templates/slides-2/shared/deck-write.ts +61 -0
  1052. package/corpus/templates/slides-2/shared/design-flags.ts +7 -0
  1053. package/corpus/templates/slides-2/shared/design-system-validation.ts +88 -0
  1054. package/corpus/templates/slides-2/shared/editor-control.ts +120 -0
  1055. package/corpus/templates/slides-2/shared/generation-timing.ts +19 -0
  1056. package/corpus/templates/slides-2/shared/google-docs.ts +69 -0
  1057. package/corpus/templates/slides-2/shared/labs.ts +10 -0
  1058. package/corpus/templates/slides-2/shared/overview-navigation.ts +34 -0
  1059. package/corpus/templates/slides-2/shared/ownership.ts +6 -0
  1060. package/corpus/templates/slides-2/shared/pdf-sidecar.ts +130 -0
  1061. package/corpus/templates/slides-2/shared/presenter-control.ts +111 -0
  1062. package/corpus/templates/slides-2/shared/representative-slide.ts +89 -0
  1063. package/corpus/templates/slides-2/shared/slide-background.ts +30 -0
  1064. package/corpus/templates/slides-2/shared/slide-comment-anchor.ts +117 -0
  1065. package/corpus/templates/slides-2/shared/slide-comment-reactions.ts +47 -0
  1066. package/corpus/templates/slides-2/shared/slide-design-tokens.ts +92 -0
  1067. package/corpus/templates/slides-2/shared/slide-fit.ts +78 -0
  1068. package/corpus/templates/slides-2/shared/slide-ids.ts +133 -0
  1069. package/corpus/templates/slides-2/shared/slide-number.ts +124 -0
  1070. package/corpus/templates/slides-2/shared/slide-object-structure.ts +790 -0
  1071. package/corpus/templates/slides-2/shared/slide-text-range-selection.ts +50 -0
  1072. package/corpus/templates/slides-2/shared/slide-transitions.ts +70 -0
  1073. package/corpus/templates/slides-2/shared/slides-2-transition.ts +194 -0
  1074. package/corpus/templates/slides-2/shared/slides-user-prefs.ts +22 -0
  1075. package/corpus/templates/slides-2/shared/source-import-errors.ts +12 -0
  1076. package/corpus/templates/slides-2/shared/source-runtime-export.ts +76 -0
  1077. package/corpus/templates/slides-2/shared/upload-types.ts +41 -0
  1078. package/corpus/templates/slides-2/ssr-entry.ts +11 -0
  1079. package/corpus/templates/slides-2/tsconfig.json +27 -0
  1080. package/corpus/templates/slides-2/vite.config.ts +77 -0
  1081. package/corpus/templates/slides-2/vitest.config.ts +28 -0
  1082. package/corpus/templates/tasks/.agents/skills/actions/references/action-fields.md +1 -1
  1083. package/package.json +1 -1
  1084. package/corpus/templates/design/.agents/skills/shader-fills/SKILL.md +0 -182
  1085. package/corpus/templates/design/actions/apply-shader-fill.ts +0 -450
  1086. package/corpus/templates/design/actions/apply-shader.ts +0 -257
  1087. package/corpus/templates/design/actions/preview-shader-fill.ts +0 -157
  1088. package/corpus/templates/design/app/components/design/inspector/GlslShaderPanel.tsx +0 -1144
  1089. package/corpus/templates/design/app/components/design/inspector/SHADER_INTEGRATION.md +0 -450
  1090. package/corpus/templates/design/app/components/design/inspector/ShaderControls.stories.tsx +0 -71
  1091. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +0 -555
  1092. package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +0 -105
  1093. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +0 -433
  1094. package/corpus/templates/design/app/components/design/inspector/color-picker-shader-pane.tsx +0 -648
  1095. package/corpus/templates/design/shared/shader-fill.ts +0 -174
  1096. package/corpus/templates/design/shared/shader-presets.ts +0 -1523
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: shadcn-ui
3
+ description: >-
4
+ Using the app's local UI adapter and Toolkit or shadcn primitives. Use when
5
+ choosing or composing standard controls, implementing dialogs, menus, or
6
+ forms, or changing component variants and theme tokens.
7
+ scope: dev
8
+ ---
9
+
10
+ # shadcn/ui and Local UI Adapters
11
+
12
+ Use the components already provided by the app. Read the app's design-system
13
+ configuration, Toolkit provider, and local UI components before adding or
14
+ changing a control. Their exports, variants, and props are the contract; do
15
+ not guess from upstream examples.
16
+
17
+ ## Keep imports behind the local adapter
18
+
19
+ Product pages and domain components should import standard controls through the
20
+ app's configured local UI alias. In the Chat starter, that is
21
+ `@/components/ui/*`; its `app/components/ui/button.tsx` is a one-line
22
+ re-export of `@agent-native/toolkit/ui/button`. Follow an adjacent local shim
23
+ when the app needs another Toolkit primitive that is already exported there.
24
+
25
+ Use the app's configured design system and provider mapping for controls passed
26
+ to shared Toolkit surfaces. For shared Toolkit feature presentation, use the
27
+ semantic components exposed by `@agent-native/toolkit/design-system`; keep the
28
+ feature behavior in its existing controller and customize only its supported
29
+ presentation seam.
30
+
31
+ ## Compose existing controls
32
+
33
+ - Prefer a primitive's built-in variant and size. Put page layout on a parent
34
+ instead of overriding shared component appearance for one screen.
35
+ - Use the app's semantic theme tokens for reusable UI, such as
36
+ `bg-background`, `text-muted-foreground`, `border-border`, and `bg-primary`.
37
+ Keep theme values in the app's existing CSS theme file.
38
+ - Use the control that matches the choice: `Switch` for a binary setting,
39
+ `Checkbox` for independent multi-select, `RadioGroup` for one choice from a
40
+ short set, and `Select` or the app's combobox for a longer predefined list.
41
+ - Compose cards and form fields from the primitives already available. Avoid
42
+ adding explanatory copy that repeats a visible title or label; see
43
+ `frontend-design` for the app's surface-density rules.
44
+ - Put selectable items inside their menu or list group primitives. Keep tab
45
+ triggers inside the tab list. Supply an accessible title to dialog, sheet,
46
+ drawer, and alert-dialog content.
47
+ - Match the trigger API to the actual local component. Toolkit wrappers may
48
+ expose a different API from the upstream primitive; inspect its props before
49
+ using options such as `asChild` or `render`.
50
+
51
+ ## Keep controls operable
52
+
53
+ Use the app's existing field components and validation pattern. Associate
54
+ errors with their inputs and expose invalid state to assistive technology.
55
+ Icon-only actions need an accessible name and a usable focus target. Use the
56
+ icon package already installed by the app.
57
+
58
+ Do not recreate menus, popovers, dialogs, or confirmations with absolute
59
+ positioning and custom click-outside handlers. Never use browser `alert`,
60
+ `confirm`, or `prompt`; use the app's dialog primitives. Keep overlay focus,
61
+ keyboard, dismissal, and stacking behavior from the existing primitive.
62
+
63
+ For small visual refinements, use layout classes and semantic tokens. Avoid raw
64
+ palette overrides, arbitrary one-off values, and manual overlay `z-index` unless
65
+ you are fixing a reproduced bug. Use `gap-*` for layout spacing and the app's
66
+ class-merging helper when it has one.
67
+
68
+ ## Related skill
69
+
70
+ - **frontend-design** — Product UX, density, visual direction, and responsive
71
+ behavior.
@@ -0,0 +1,286 @@
1
+ ---
2
+ name: sharing
3
+ description: >-
4
+ Framework-level sharing and privacy for user-authored resources
5
+ (dashboards, documents, forms, decks, etc.). Use when making a resource
6
+ table ownable, wiring list/read/update access checks, or dropping the
7
+ standard share dialog into a template.
8
+ scope: dev
9
+ metadata:
10
+ internal: true
11
+ ---
12
+
13
+ # Sharing — Private by Default, Explicit Share
14
+
15
+ ## Rule
16
+
17
+ Any resource a user **creates** (dashboards, documents, forms, decks, compositions, booking links, issues, analyses) is **private to the creator** by default and visible to others only when they have been **explicitly shared** with or when the creator changes visibility to `org` or `public`.
18
+
19
+ This is the framework-level primitive. Every ownable resource gets it for free — same API, same UI, same skill.
20
+
21
+ Workspace apps are the intentional organization-scoped exception: their default
22
+ visibility is `org`, configurable by an organization owner/admin. The creator is
23
+ stored as the app owner, and the creator or an organization owner/admin can
24
+ change the app's visibility or manage its share grants.
25
+
26
+ ## Concepts
27
+
28
+ ### Three visibility levels
29
+
30
+ - **`private`** — owner + explicit share grants only. Default.
31
+ - **`org`** — owner + explicit grants + anyone in the same org (read-only).
32
+ - **`public`** — owner + explicit grants + **anyone with the link** (read-only). Public docs do NOT appear in other users' list/sidebar/search results — `accessFilter` omits them by default. They're reachable by id (`resolveAccess` admits them) so direct links and SSR routes like `/p/:id` keep working. If a list endpoint legitimately needs cross-user public discovery (a template gallery, etc.), pass `accessFilter(table, shares, ctx, minRole, { includePublic: true })`.
33
+
34
+ Visibility is coarse. Explicit share grants are fine-grained (per user, reusable
35
+ organization group, or per org).
36
+
37
+ ### Roles on a share grant
38
+
39
+ - **`viewer`** — read only.
40
+ - **`commenter`** — read + add comments, but cannot edit the resource or manage shares.
41
+ - **`editor`** — read + write.
42
+ - **`admin`** — read + write + manage shares. Does NOT replace the single `owner_email` on the resource.
43
+
44
+ Share roles apply to one resource; organization roles apply to a team; app
45
+ roles apply within one app. These are separate permissions. For role setup,
46
+ use `agent-native-docs` to find the current organization and app-role guide.
47
+
48
+ Before adding an admin gate, identify which role system protects that operation
49
+ and use its existing role descriptor and permission checks. Do not replace role
50
+ checks with an email comparison or a custom `isAdmin` column.
51
+
52
+ ### Anonymous public URLs stay separate
53
+
54
+ Form "publish" slugs, booking-link slugs, any feature that exposes a URL to unauthenticated users — these are a different axis and are NOT controlled by the sharing system. Keep them alongside it.
55
+
56
+ ## Make a resource ownable
57
+
58
+ In your template's `server/db/schema.ts`:
59
+
60
+ ```ts
61
+ import { sql } from "drizzle-orm";
62
+ import { pgTable, text } from "drizzle-orm/pg-core";
63
+ import {
64
+ createSharesTable,
65
+ ownableColumns,
66
+ } from "@agent-native/core/db/schema";
67
+
68
+ export const decks = pgTable("decks", {
69
+ id: text("id").primaryKey(),
70
+ title: text("title").notNull(),
71
+ data: text("data").notNull(),
72
+ createdAt: text("created_at").notNull().default(sql`now()`),
73
+ updatedAt: text("updated_at").notNull().default(sql`now()`),
74
+ ...ownableColumns(), // adds owner_email, org_id, visibility
75
+ });
76
+
77
+ export const deckShares = createSharesTable("deck_shares");
78
+ ```
79
+
80
+ Then register it **in `server/db/index.ts`** (not the schema file — keeps the schema file free of the `getDb` closure and avoids circular imports):
81
+
82
+ ```ts
83
+ // server/db/index.ts
84
+ import * as schema from "./schema.js";
85
+ import { createGetDb } from "@agent-native/core/db";
86
+ import { registerShareableResource } from "@agent-native/core/sharing";
87
+
88
+ export const getDb = createGetDb(schema);
89
+ export { schema };
90
+
91
+ registerShareableResource({
92
+ type: "deck",
93
+ resourceTable: schema.decks,
94
+ sharesTable: schema.deckShares,
95
+ displayName: "Deck",
96
+ titleColumn: "title",
97
+ getResourcePath: (deck) => `/deck/${deck.id}`,
98
+ getDb,
99
+ });
100
+ ```
101
+
102
+ The `type` string is the stable id the UI and actions use. `getDb` is required — the framework-level share actions use it to reach your template's DB.
103
+
104
+ ### Restricting public visibility and cross-org user shares
105
+
106
+ Some resources should NOT be reachable by an arbitrary authenticated user even with the link, and should NOT be shareable to an email outside the org. Two optional registration flags lock these axes down:
107
+
108
+ ```ts
109
+ registerShareableResource({
110
+ type: "extension",
111
+ // ...
112
+ allowPublic: false, // hides "Public" in the share dialog and rejects it server-side
113
+ requireOrgMemberForUserShares: true, // user shares must target an org member or pending invitee
114
+ supportsGroupShares: true, // enable reusable organization groups for this resource
115
+ });
116
+ ```
117
+
118
+ - **`allowPublic: false`** — `set-resource-visibility('public')` throws `ForbiddenError`, `accessFilter` / `resolveAccess` treat any stored `'public'` row as private (defense in depth against bad data), and the share popover hides the "Public" option. `list-resource-shares` returns `policy.allowPublic: false` so the UI follows the server.
119
+ - **`requireOrgMemberForUserShares: true`** — `share-resource` looks up `principalId` in `org_members` and `org_invitations` (pending) for the resource's `orgId` and rejects user shares to anyone else. The same flag also pins `principalType: "org"` shares to the resource's own org — sharing to a *different* org would let that org's members run code in the viewer's auth context (same threat model as a public extension). (The flag name is kept for backward compatibility; treat it as "lock both user and org shares to the resource's org".)
120
+
121
+ Use both for resources that execute code or expose privileged data with the *viewer's* credentials. A public or cross-org-shared resource with that access could let an unrelated user act with the viewer's credentials.
122
+
123
+ Defaults match historical behaviour: `allowPublic: true`, `requireOrgMemberForUserShares: false`. Resources that don't set the flags work as before.
124
+
125
+ ### Reusable organization groups
126
+
127
+ The workspace organization model stores reusable groups in
128
+ `workspace_user_groups`. Organization owners/admins manage the groups and their
129
+ members through the existing group actions. Set `supportsGroupShares: true` on a
130
+ resource registration to enable `principalType: "group"` in the generic share
131
+ actions and the shared popover's autocomplete. Group ids are always checked
132
+ against the resource's organization, and membership is evaluated at access time
133
+ so group changes apply to existing shares.
134
+
135
+ Workspace apps opt into this flag and use the organization default visibility
136
+ setting. The app creator is the durable `owner_email`, while organization
137
+ owners/admins receive admin access through the registration's
138
+ `canManageAccess` callback.
139
+
140
+ ## Filter list/read queries
141
+
142
+ ```ts
143
+ import { accessFilter } from "@agent-native/core/sharing";
144
+
145
+ const rows = await db
146
+ .select()
147
+ .from(schema.decks)
148
+ .where(accessFilter(schema.decks, schema.deckShares));
149
+ ```
150
+
151
+ `accessFilter` admits rows the current user owns, has been shared on, or that the user can reach via `org` visibility. `public` rows are NOT admitted by default — see the visibility section above for why and how to opt in.
152
+
153
+ ## Guard write actions
154
+
155
+ ```ts
156
+ import { assertAccess } from "@agent-native/core/sharing";
157
+
158
+ export default defineAction({
159
+ schema: z.object({ id: z.string(), title: z.string() }),
160
+ run: async (args) => {
161
+ await assertAccess("deck", args.id, "editor");
162
+ // ...proceed
163
+ },
164
+ });
165
+ ```
166
+
167
+ For delete actions use `"admin"` (or fold in `"owner"` to require the real owner).
168
+
169
+ `authorize` is a different axis, not an alternative: it gates whether the caller may run the operation at all, while `assertAccess` scopes which row they may touch. A write action restricted to some teammates needs both — `authorize: appAccess.requireAny(...)` on the action, `assertAccess` inside `run`.
170
+
171
+ ## Create actions must set owner
172
+
173
+ When inserting a new row, fill `ownerEmail` and `orgId` from the request context:
174
+
175
+ ```ts
176
+ import { fail } from "@agent-native/core/action";
177
+ import {
178
+ getRequestUserEmail,
179
+ getRequestOrgId,
180
+ } from "@agent-native/core/server/request-context";
181
+
182
+ const ownerEmail = getRequestUserEmail();
183
+ // Never fall back to a shared sentinel owner; require an authenticated session.
184
+ if (!ownerEmail) fail("Not authenticated", { statusCode: 401 });
185
+
186
+ await db.insert(schema.decks).values({
187
+ id: crypto.randomUUID(),
188
+ title,
189
+ data,
190
+ ownerEmail,
191
+ orgId: getRequestOrgId(),
192
+ // visibility defaults to 'private'
193
+ // ...
194
+ });
195
+ ```
196
+
197
+ ## Drop in the share UI
198
+
199
+ ```tsx
200
+ import { ShareButton } from "@agent-native/toolkit/app/sharing";
201
+
202
+ // In the resource's header/toolbar:
203
+ <ShareButton
204
+ resourceType="deck"
205
+ resourceId={deck.id}
206
+ resourceTitle={deck.title}
207
+ />;
208
+ ```
209
+
210
+ For list views, show `<VisibilityBadge visibility={row.visibility} />` next to each resource.
211
+
212
+ ## Standard share surface
213
+
214
+ All app share popovers should use the same compact surface contract:
215
+
216
+ - Use the text-only `ShareTrigger` from `@agent-native/toolkit/sharing`.
217
+ - Render ordinary links with `ShareCopyRow`, which exposes a Copy action without
218
+ printing the raw URL.
219
+ - Keep general access and individual people access in the standard Core sharing
220
+ flow. The people flow supports email invites, roles, notifications, and
221
+ removal through the shared share actions.
222
+ - Add `ShareAgentsSection` only when the resource has a real agent-readable
223
+ link or prompt. Keep it collapsed by default and supply domain-specific
224
+ content through the shared section shell.
225
+ - When `supportsGroupShares` is enabled, keep the existing people input as the
226
+ only entry point and include organization groups in its autocomplete. Do not
227
+ add a separate group-management surface to each resource.
228
+ - App-specific tabs or controls may remain when they represent a real domain
229
+ action (for example, an embed-code editor), but they should retain the same
230
+ trigger, copy-row, access, and spacing language.
231
+
232
+ `ShareDisclosureSection` is the toolkit-owned shell for optional expandable
233
+ share details; use its `ShareAgentsSection` or `SharePeopleSection` wrappers
234
+ instead of creating another collapsible share panel in a template.
235
+
236
+ ## Actions available everywhere
237
+
238
+ The framework auto-mounts these actions in every template — no per-template boilerplate:
239
+
240
+ | Action | Args | Purpose |
241
+ | -------------------------- | ------------------------------------------------------------------------------ | ----------------------------------------- |
242
+ | `share-resource` | `resourceType, resourceId, principalType, principalId, role, notify?, resourceUrl?, message?` | Grant a user, group, or org access. `notify` defaults to true for individual user shares; `resourceUrl` can provide the direct app link and `message` an optional short note for the notification email. |
243
+ | `unshare-resource` | `resourceType, resourceId, principalType, principalId` | Revoke access. |
244
+ | `list-resource-shares` | `resourceType, resourceId` | Current visibility + all share grants. |
245
+ | `set-resource-visibility` | `resourceType, resourceId, visibility` | Change to `private` / `org` / `public`. |
246
+
247
+ Both the agent and the UI use these same actions. The agent calls them as tools;
248
+ UI code should use `ShareButton` / `ShareDialog` or the action client hooks
249
+ instead of hand-writing route calls.
250
+
251
+ To re-skin the share notification email for the whole app, register
252
+ `overrideTransactionalEmail("core.resource-shared", render)` from a server
253
+ plugin. Do not fork `share-resource` or add another per-resource hook: the
254
+ registration's `getBrandName` / `getLogoUrl` / `getSender` / `getHeroHtml` /
255
+ `getShareEmailExtras` hooks still feed the default template and the override's
256
+ props. See
257
+ `/docs/deployment#email-templates`.
258
+
259
+ ## Migration pattern for existing tables
260
+
261
+ When retrofitting an existing resource table:
262
+
263
+ 1. Add `owner_email`, `org_id`, `visibility` columns (defaults `'local@localhost'`, `NULL`, `'private'`).
264
+ 2. Backfill `owner_email` from any prior creator trail; otherwise leave the default.
265
+ 3. Add the companion `{type}_shares` table.
266
+ 4. Register via `registerShareableResource`.
267
+ 5. Update list/read actions to use `accessFilter`.
268
+ 6. Update update/delete actions to `assertAccess` with the correct role.
269
+ 7. Add `<ShareButton>` to the resource header.
270
+ 8. Add `getResourcePath` in the registration so agent-triggered shares can email a direct link even when no UI supplied `resourceUrl`.
271
+
272
+ ## Templates that opt out
273
+
274
+ Sharing doesn't apply to:
275
+
276
+ - **Personal-data apps** (mail) — user-scoped by design.
277
+ - **External source-of-truth data** — apply the access policy enforced by the upstream system.
278
+ - **Demo/boilerplate** (starter) — no resources.
279
+
280
+ For these, add a short note to the template's `AGENTS.md` explaining why.
281
+
282
+ ## Debugging
283
+
284
+ - `ForbiddenError` from an action means the current user isn't owner / hasn't been shared / can't meet the role bar.
285
+ - If the agent can't see a resource it just created, check that the insert actually set `owner_email` from the request context.
286
+ - If a share doesn't take effect in the UI, confirm the template's `list-*` action uses `accessFilter` — the share rows are there but nothing is reading them yet.
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: slide-design
3
+ description: >-
4
+ Visual craft for beautiful slides: typography, composition, color,
5
+ imagery, rhythm, and a critique pass. Use when generating slides or
6
+ when asked to make a deck or slide beautiful, polished, prettier, more
7
+ designed, or less generic. Defers to the linked design system and reference
8
+ deck.
9
+ ---
10
+
11
+ # Slide Design
12
+
13
+ "Make it beautiful" is a request for visual craft, not new content. Keep the
14
+ user's copy, facts, images, and slide order; change how they look. A beautiful
15
+ deck reads as the work of a studio with a point of view, not a template.
16
+
17
+ ## Precedence
18
+
19
+ This skill supplies craft, not a direction. The direction comes from the
20
+ user's prompt and the brief `create-deck` builds from it; never swap in a
21
+ preset style. The `design-systems` Precedence list decides what wins:
22
+
23
+ - **Design system linked:** it owns tokens (colors, fonts and weights, type
24
+ sizes, spacing, radius, accents, logos, image style, custom CSS) through the
25
+ `--ds-*` wrapper. Add nothing it does not define and never detach it. Beauty
26
+ comes from using fewer of its elements more deliberately: scale contrast
27
+ within its sizes, composition, negative space, alignment, a scarce accent.
28
+ - **Reference deck:** owns layouts, chrome, and markup idiom, and tokens too
29
+ when no system is linked. Tighten inside its patterns; when none fits,
30
+ compose from its conventions. It is a pattern library, not an outline.
31
+ - **Attached style reference:** match its measured type scale, weights,
32
+ colors, alignment, and margins.
33
+ - **Existing deck with an established look** (including a starter template):
34
+ its slides are the reference. Refine it; change the style only when asked.
35
+ - **Nothing linked:** realize the direction the prompt implies with this
36
+ whole skill.
37
+
38
+ Explicit constraints in the current request beat all of these. If a selected
39
+ system or reference is unavailable, tell the user the deck was styled without
40
+ it instead of silently using this skill's defaults.
41
+
42
+ ## Typography
43
+
44
+ Type does most of the work.
45
+
46
+ - **Use registered fonts.** The Slides 2 editor can search the Google Fonts
47
+ catalog and import a chosen variant to configured file storage. Apply the
48
+ returned font family and asset handle through the design-token panel or
49
+ `update-deck-design-tokens`. The sandbox loads only the selected registered
50
+ font files. Source CSS still cannot use remote font URLs, `@import`, or
51
+ `@font-face`; unsupported families fall back silently.
52
+ - **Extreme scale contrast.** Let one element dominate. On 960x540: statement
53
+ or big number 72-120px, headline 32-56px, body 16-20px, labels 12-14px. A
54
+ 96px number over 13px labels is striking; 40px over 28px is flat. Body never
55
+ drops below 16px.
56
+ - **Tight display type:** letter-spacing -0.02 to -0.05em, line-height
57
+ 0.95-1.1. Body line-height 1.35-1.5, about 60 characters per line max.
58
+ - **Labels as labels:** small uppercase with +0.06 to +0.12em tracking, or
59
+ mono, for eyebrows, running heads, axis labels, and page numbers.
60
+ - **Weight is hierarchy.** One heavy and one regular weight; mid-weights
61
+ everywhere look mushy. Size and weight before color.
62
+ - **Details:** curly quotes, en dashes for ranges, tabular numerals for aligned
63
+ figures, no orphaned last word on a headline (rebalance with `max-width` or a
64
+ `<br>`).
65
+
66
+ ## Composition
67
+
68
+ - **Grid:** 12 columns inside the wrapper padding, 16-24px gutters. Snap every
69
+ edge.
70
+ - **Asymmetry over centering.** Headline in 5-7 columns, evidence large in the
71
+ rest. Center only title and statement slides.
72
+ - **Negative space is a material.** One line of type in the lower-left third of
73
+ an empty slide can be the best slide in the deck.
74
+ - **One spacing scale** (the system's gaps, else 8/16/24/40/64): close for
75
+ related, far for unrelated. Equal gaps everywhere read as amateur.
76
+ - **Optical alignment:** nudge large type to look flush with small text.
77
+ - **One focal point.** Squint; one thing should land first.
78
+ - **One idea per slide; split, do not shrink.** A slide over the `create-deck`
79
+ Fit budget becomes two slides, not smaller type or clipped overflow.
80
+ - Keep layout in normal flex/grid flow; `slide-editing` owns flow and fit
81
+ constraints.
82
+
83
+ ## Color
84
+
85
+ With a system or reference, use only its colors; these rules govern how.
86
+
87
+ - **Restrained palette:** background, ink, one or two tinted neutrals, one
88
+ accent.
89
+ - **No pure defaults:** warm or tinted off-white (`#F4F1EA`) over `#FFFFFF`,
90
+ near-black or deep navy over `#000000`, greys leaning with the palette.
91
+ - **Accent is scarce:** one number, bar, word, or rule per slide.
92
+ - **Fixed canvas:** rhythm comes from composition and accent, not alternating
93
+ light and dark slides.
94
+ - Readable contrast is part of beauty; `audit-contrast` is the check.
95
+
96
+ ## Imagery and graphics
97
+
98
+ - **One treatment:** the same crop, color grade, and radius on every image;
99
+ respect the system's `imageStyle`.
100
+ - **Go big or leave it out:** a full-height column or most of the canvas.
101
+ Small floating thumbnails read as placeholders.
102
+ - **Screenshots as hero shots:** crop to what the headline is about, scale up,
103
+ set on a fitting surface.
104
+ - **One graphic vocabulary:** 1-2px rules, large index numbers ("01"), one
105
+ repeated shape motif. Every shape needs a semantic role.
106
+ - **Charts in the deck's type and palette:** thin strokes, direct labels, the
107
+ key series in the accent, the rest neutral, no gridline or legend clutter.
108
+
109
+ ## Rhythm
110
+
111
+ - Reuse a small layout family: title, section, statement, big number, headline
112
+ + image, split, grid of 3, quote, closing. Alternate dense and sparse; avoid
113
+ three identical layouts in a row.
114
+ - Fixed chrome in the same place on every slide: a small running head, a page
115
+ number like `04 / 12` from the `create-deck` slide-number tokens (never typed
116
+ digits, which go stale on reorder), maybe a hairline.
117
+ - Title and section slides carry the strongest expression of the direction.
118
+
119
+ ## What reads as generic
120
+
121
+ Everything centered at similar sizes in one weight; purple-to-blue gradients,
122
+ glass, glows, gradient text; rows of rounded icon + title + description cards;
123
+ emoji or decorative icons; shadows and borders on every block; stock
124
+ people-at-laptops; bullet walls or shrunk text; default blue and default chart
125
+ colors; mixed radii, alignments, and gaps; decoration filling space that should
126
+ stay empty.
127
+
128
+ ## Critique pass
129
+
130
+ After rendering, before `get-layout-overflows` and `audit-contrast`, check
131
+ each changed slide:
132
+
133
+ 1. **Squint:** one clear focal point, balanced masses.
134
+ 2. **Direction:** delivers the requested look and matches the other slides;
135
+ with a system linked, every color, font, radius, and logo comes from it.
136
+ 3. **Scale:** real contrast between the largest and smallest type.
137
+ 4. **Grid:** edges align within and across slides; chrome never moves.
138
+ 5. **Subtract:** remove what does not serve the slide.
139
+ 6. **Portfolio:** would a strong designer show it? If not, make the one change
140
+ that would.
141
+ 7. **Craft:** no orphans, straight quotes, awkward breaks, blurry images, or
142
+ off-system colors and fonts.
143
+
144
+ Fix findings in one correction pass.