@agent-native/core 0.82.0 → 0.84.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 (474) hide show
  1. package/README.md +2 -2
  2. package/corpus/README.md +1 -1
  3. package/corpus/core/CHANGELOG.md +34 -0
  4. package/corpus/core/README.md +2 -2
  5. package/corpus/core/docs/content/cloneable-saas.mdx +2 -2
  6. package/corpus/core/docs/content/faq.mdx +1 -1
  7. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
  8. package/corpus/core/docs/content/locales/ar-SA/faq.mdx +1 -1
  9. package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +1 -1
  10. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
  11. package/corpus/core/docs/content/locales/de-DE/faq.mdx +1 -1
  12. package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +1 -1
  13. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
  14. package/corpus/core/docs/content/locales/es-ES/faq.mdx +1 -1
  15. package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +1 -1
  16. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  17. package/corpus/core/docs/content/locales/fr-FR/faq.mdx +1 -1
  18. package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +1 -1
  19. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
  20. package/corpus/core/docs/content/locales/hi-IN/faq.mdx +1 -1
  21. package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +1 -1
  22. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  23. package/corpus/core/docs/content/locales/ja-JP/faq.mdx +1 -1
  24. package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +1 -1
  25. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
  26. package/corpus/core/docs/content/locales/ko-KR/faq.mdx +1 -1
  27. package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +1 -1
  28. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
  29. package/corpus/core/docs/content/locales/pt-BR/faq.mdx +1 -1
  30. package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +1 -1
  31. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
  32. package/corpus/core/docs/content/locales/zh-CN/faq.mdx +1 -1
  33. package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +1 -1
  34. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
  35. package/corpus/core/docs/content/locales/zh-TW/faq.mdx +1 -1
  36. package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +1 -1
  37. package/corpus/core/docs/content/template-chat.mdx +1 -1
  38. package/corpus/core/package.json +1 -1
  39. package/corpus/core/src/agent/engine/builtin.ts +1 -1
  40. package/corpus/core/src/agent/engine/output-tokens.ts +1 -1
  41. package/corpus/core/src/agent/harness/acp-adapter.ts +28 -4
  42. package/corpus/core/src/agent/harness/ai-sdk-adapter.ts +3 -0
  43. package/corpus/core/src/agent/harness/translate.ts +3 -0
  44. package/corpus/core/src/agent/harness/types.ts +1 -0
  45. package/corpus/core/src/agent/model-config.ts +34 -13
  46. package/corpus/core/src/agent/production-agent.ts +87 -10
  47. package/corpus/core/src/agent/thread-data-builder.ts +29 -4
  48. package/corpus/core/src/agent/tool-call-journal.ts +109 -48
  49. package/corpus/core/src/agent/types.ts +6 -1
  50. package/corpus/core/src/cli/design-connect.ts +106 -0
  51. package/corpus/core/src/cli/gateway-helpers.ts +17 -0
  52. package/corpus/core/src/cli/recap.ts +0 -2
  53. package/corpus/core/src/cli/skills.ts +54 -16
  54. package/corpus/core/src/cli/workspace-dev.ts +29 -5
  55. package/corpus/core/src/client/AssistantChat.tsx +89 -42
  56. package/corpus/core/src/client/CommandMenu.tsx +34 -12
  57. package/corpus/core/src/client/DefaultSpinner.tsx +8 -1
  58. package/corpus/core/src/client/chat/message-components.tsx +49 -1
  59. package/corpus/core/src/client/chat/repo-helpers.ts +71 -0
  60. package/corpus/core/src/client/chat/run-recovery.tsx +15 -5
  61. package/corpus/core/src/client/components/ApiKeySettings.tsx +8 -8
  62. package/corpus/core/src/client/components/CodeRequiredDialog.tsx +26 -15
  63. package/corpus/core/src/client/components/MissingKeyCard.tsx +13 -6
  64. package/corpus/core/src/client/composer/TiptapComposer.tsx +4 -3
  65. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +0 -1
  66. package/corpus/core/src/client/guided-questions.tsx +21 -27
  67. package/corpus/core/src/client/integrations/IntegrationCard.tsx +1 -1
  68. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +1 -1
  69. package/corpus/core/src/client/onboarding/OnboardingBanner.tsx +2 -2
  70. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +23 -19
  71. package/corpus/core/src/client/resources/ResourceEditor.tsx +18 -10
  72. package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
  73. package/corpus/core/src/client/settings/SettingsPanel.tsx +8 -3
  74. package/corpus/core/src/client/settings/useBuilderStatus.ts +8 -41
  75. package/corpus/core/src/client/useProductionAgent.ts +6 -2
  76. package/corpus/core/src/deploy/build.ts +1 -1
  77. package/corpus/core/src/observability/traces.ts +3 -3
  78. package/corpus/core/src/onboarding/default-steps.ts +1 -1
  79. package/corpus/core/src/scripts/agent-engines/manage-agent-engine.ts +1 -1
  80. package/corpus/core/src/scripts/agent-engines/set-agent-engine.ts +1 -1
  81. package/corpus/core/src/server/agent-chat-plugin.ts +177 -81
  82. package/corpus/core/src/server/core-routes-plugin.ts +7 -1
  83. package/corpus/core/src/server/open-route.ts +59 -40
  84. package/corpus/core/src/shared/reasoning-effort.ts +2 -0
  85. package/corpus/core/src/sharing/access.ts +22 -2
  86. package/corpus/core/src/sharing/registry.ts +18 -0
  87. package/corpus/core/src/styles/agent-native.css +104 -20
  88. package/corpus/core/src/styles/rich-markdown-editor.css +11 -10
  89. package/corpus/templates/analytics/actions/hubspot-deals.ts +64 -4
  90. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +10 -10
  91. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +10 -10
  92. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +6 -5
  93. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +9 -9
  94. package/corpus/templates/analytics/app/global.css +4 -0
  95. package/corpus/templates/analytics/app/lib/chart-theme.ts +13 -0
  96. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +22 -24
  97. package/corpus/templates/analytics/changelog/2026-06-30-dashboard-charts-now-use-theme-aware-tooltip-and-grid-colors.md +6 -0
  98. package/corpus/templates/analytics/changelog/2026-06-30-fixed-ask-composer-spacing-so-the-chat-field-has-a-comfortab.md +6 -0
  99. package/corpus/templates/calendar/AGENTS.md +4 -0
  100. package/corpus/templates/calendar/actions/connect-google-calendar.ts +80 -0
  101. package/corpus/templates/calendar/changelog/2026-06-30-calendar-now-gives-the-agent-a-safe-google-connection-link-i.md +6 -0
  102. package/corpus/templates/calendar/server/plugins/agent-chat.ts +4 -0
  103. package/corpus/templates/content/.env.local.example +6 -0
  104. package/corpus/templates/content/AGENTS.md +10 -1
  105. package/corpus/templates/content/actions/_builder-cms-read-client.ts +14 -1
  106. package/corpus/templates/content/actions/_builder-cms-source-adapter.ts +43 -0
  107. package/corpus/templates/content/actions/_builder-cms-write-adapter.ts +79 -7
  108. package/corpus/templates/content/actions/_database-source-utils.ts +987 -22
  109. package/corpus/templates/content/actions/_database-utils.ts +41 -0
  110. package/corpus/templates/content/actions/_local-file-documents.ts +74 -1
  111. package/corpus/templates/content/actions/attach-content-database-source.ts +33 -8
  112. package/corpus/templates/content/actions/change-content-database-source-role.ts +14 -0
  113. package/corpus/templates/content/actions/disconnect-content-database-source.ts +3 -0
  114. package/corpus/templates/content/actions/execute-builder-source-execution.ts +71 -3
  115. package/corpus/templates/content/actions/list-content-databases.ts +41 -33
  116. package/corpus/templates/content/actions/process-builder-body-hydration.ts +47 -0
  117. package/corpus/templates/content/actions/update-document.ts +93 -0
  118. package/corpus/templates/content/app/blocks/SourceComponentBlock.tsx +277 -0
  119. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +2 -0
  120. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  121. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +45 -4
  122. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +5 -1
  123. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +92 -0
  124. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +5 -3
  125. package/corpus/templates/content/app/components/editor/extensions/registryBlocks.ts +41 -0
  126. package/corpus/templates/content/app/components/editor/registrySlashItems.ts +4 -0
  127. package/corpus/templates/content/app/global.css +16 -8
  128. package/corpus/templates/content/app/hooks/use-content-database.ts +24 -0
  129. package/corpus/templates/content/app/i18n/zh-TW.ts +24 -0
  130. package/corpus/templates/content/app/i18n-data.ts +212 -0
  131. package/corpus/templates/content/app/lib/content-command-search.ts +64 -0
  132. package/corpus/templates/content/app/root.tsx +236 -8
  133. package/corpus/templates/content/changelog/2026-06-29-builder-cms-sources-now-sync-article-bodies-through-content.md +6 -0
  134. package/corpus/templates/content/changelog/2026-06-30-builder-article-media-now-render-as-images-and-embeds-when-r.md +6 -0
  135. package/corpus/templates/content/changelog/2026-06-30-builder-source-components-now-render-as-preserved-preview-bl.md +6 -0
  136. package/corpus/templates/content/changelog/2026-06-30-cmd-k-search-now-opens-from-the-editor-and-finds-real-content.md +6 -0
  137. package/corpus/templates/content/changelog/2026-06-30-editor-floating-toolbars-now-use-theme-aware-colors-in-light.md +6 -0
  138. package/corpus/templates/content/package.json +3 -1
  139. package/corpus/templates/content/scripts/check-native-deps.mjs +57 -0
  140. package/corpus/templates/content/scripts/dev-database.mjs +83 -0
  141. package/corpus/templates/content/scripts/seed-demo-user.mjs +107 -0
  142. package/corpus/templates/content/server/db/schema.ts +27 -0
  143. package/corpus/templates/content/server/plugins/db.ts +33 -0
  144. package/corpus/templates/content/shared/api.ts +45 -0
  145. package/corpus/templates/content/shared/builder-mdx.ts +905 -5
  146. package/corpus/templates/content/shared/nfm-registry.ts +2 -0
  147. package/corpus/templates/content/shared/source-component-block.ts +141 -0
  148. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +6 -1
  149. package/corpus/templates/design/actions/add-localhost-screens.ts +63 -8
  150. package/corpus/templates/design/actions/apply-motion-edit.ts +12 -46
  151. package/corpus/templates/design/actions/list-design-native-assets.ts +2 -1
  152. package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +49 -1
  153. package/corpus/templates/design/actions/navigate.ts +3 -12
  154. package/corpus/templates/design/actions/open-visual-edit.ts +341 -0
  155. package/corpus/templates/design/actions/view-screen.ts +1 -1
  156. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
  157. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +350 -15
  158. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +71 -91
  159. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +25 -27
  160. package/corpus/templates/design/app/components/design/DeviceFrame.tsx +1 -1
  161. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +2 -2
  162. package/corpus/templates/design/app/components/design/EditPanel.tsx +1111 -570
  163. package/corpus/templates/design/app/components/design/LayersPanel.tsx +162 -32
  164. package/corpus/templates/design/app/components/design/MotionDock.tsx +268 -240
  165. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1193 -207
  166. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -1
  167. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +81 -102
  168. package/corpus/templates/design/app/components/design/StatesPanel.tsx +6 -6
  169. package/corpus/templates/design/app/components/design/TokensPanel.tsx +11 -11
  170. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +9 -7
  171. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1225 -154
  172. package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +130 -37
  173. package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +24 -11
  174. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +184 -162
  175. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +137 -79
  176. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +13 -13
  177. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +8 -8
  178. package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +2 -2
  179. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +4 -4
  180. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +3 -3
  181. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +13 -7
  182. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -11
  183. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +4 -4
  184. package/corpus/templates/design/app/components/design/inspector/index.ts +2 -0
  185. package/corpus/templates/design/app/components/design/types.ts +19 -0
  186. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +61 -78
  187. package/corpus/templates/design/app/components/layout/Header.tsx +0 -1
  188. package/corpus/templates/design/app/components/layout/Layout.tsx +3 -2
  189. package/corpus/templates/design/app/components/layout/Sidebar.tsx +0 -2
  190. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +5 -4
  191. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +1 -1
  192. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +2 -2
  193. package/corpus/templates/design/app/global.css +56 -0
  194. package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -5
  195. package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -7
  196. package/corpus/templates/design/app/hooks/use-question-flow.ts +3 -2
  197. package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +6 -4
  198. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +6 -3
  199. package/corpus/templates/design/app/i18n/zh-TW.ts +5 -14
  200. package/corpus/templates/design/app/i18n-data.ts +63 -188
  201. package/corpus/templates/design/app/lib/agent-chat.ts +13 -0
  202. package/corpus/templates/design/app/pages/DesignEditor.tsx +1755 -401
  203. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +9 -5
  204. package/corpus/templates/design/app/pages/DesignSystems.tsx +2 -2
  205. package/corpus/templates/design/app/pages/Index.tsx +49 -26
  206. package/corpus/templates/design/app/pages/NotFound.tsx +25 -8
  207. package/corpus/templates/design/app/pages/VisualEdit.tsx +17 -5
  208. package/corpus/templates/design/app/routes/examples.tsx +1 -7
  209. package/corpus/templates/design/app/routes/templates.tsx +7 -4
  210. package/corpus/templates/design/changelog/2026-06-30-board-shapes-and-auto-layout-controls-are-clearer.md +6 -0
  211. package/corpus/templates/design/changelog/2026-06-30-canvas-editing-now-keeps-undo-redo-and-cross-screen-layer-mo.md +6 -0
  212. package/corpus/templates/design/changelog/2026-06-30-component-selections-now-use-purple-component-chrome-and-sho.md +6 -0
  213. package/corpus/templates/design/changelog/2026-06-30-constraints-now-stay-tucked-into-a-compact-inspector-preview.md +6 -0
  214. package/corpus/templates/design/changelog/2026-06-30-creating-a-component-now-opens-in-a-compact-inspector-popove.md +6 -0
  215. package/corpus/templates/design/changelog/2026-06-30-design-cards-no-longer-show-legacy-project-type-badges.md +6 -0
  216. package/corpus/templates/design/changelog/2026-06-30-design-chat-now-keeps-new-turns-in-the-visible-design-agent-.md +6 -0
  217. package/corpus/templates/design/changelog/2026-06-30-design-editor-panels-now-keep-their-compact-text-sizing-cons.md +6 -0
  218. package/corpus/templates/design/changelog/2026-06-30-design-no-longer-shows-the-connected-local-code-warning-bann.md +6 -0
  219. package/corpus/templates/design/changelog/2026-06-30-design-now-opens-to-the-files-panel-unless-a-generation-is-a.md +6 -0
  220. package/corpus/templates/design/changelog/2026-06-30-design-opens-with-a-cleaner-empty-canvas-and-loading-preview.md +6 -0
  221. package/corpus/templates/design/changelog/2026-06-30-design-tools-use-simpler-less-decorative-icons.md +6 -0
  222. package/corpus/templates/design/changelog/2026-06-30-dragging-absolute-elements-no-longer-shows-coordinate-labels.md +6 -0
  223. package/corpus/templates/design/changelog/2026-06-30-fixed-all-screens-opening-too-zoomed-in-by-default.md +6 -0
  224. package/corpus/templates/design/changelog/2026-06-30-fixed-the-public-design-assets-sidebar-so-native-components-.md +6 -0
  225. package/corpus/templates/design/changelog/2026-06-30-fixed-the-screen-overview-board-so-empty-board-space-no-long.md +6 -0
  226. package/corpus/templates/design/changelog/2026-06-30-full-view-screens-can-now-scroll-while-remaining-editable.md +6 -0
  227. package/corpus/templates/design/changelog/2026-06-30-inspector-element-headers-show-the-selected-html-tag-and-the.md +6 -0
  228. package/corpus/templates/design/changelog/2026-06-30-inspector-inputs-stay-compact-across-desktop-breakpoints.md +6 -0
  229. package/corpus/templates/design/changelog/2026-06-30-layers-can-be-multi-selected-from-the-canvas-and-edited-toge.md +6 -0
  230. package/corpus/templates/design/changelog/2026-06-30-local-visual-edit-links-can-edit-localhost-frames-without-si.md +6 -0
  231. package/corpus/templates/design/changelog/2026-06-30-localhost-visual-edit-frames-can-now-be-selected-and-edited.md +6 -0
  232. package/corpus/templates/design/changelog/2026-06-30-marquee-selection-now-works-inside-screens-multi-selected-la.md +6 -0
  233. package/corpus/templates/design/changelog/2026-06-30-motion-is-now-available-from-the-persistent-left-rail-and-th.md +6 -0
  234. package/corpus/templates/design/changelog/2026-06-30-motion-timeline-collapse-and-reopen-animations-feel-smoother.md +6 -0
  235. package/corpus/templates/design/changelog/2026-06-30-multi-select-outlines-now-stay-consistent-across-all-screens.md +6 -0
  236. package/corpus/templates/design/changelog/2026-06-30-new-board-shapes-now-start-with-neutral-gray-styling.md +6 -0
  237. package/corpus/templates/design/changelog/2026-06-30-new-designs-open-into-a-steadier-loading-state-before-the-ed.md +6 -0
  238. package/corpus/templates/design/changelog/2026-06-30-new-designs-show-a-loading-state-during-handoff-and-keep-edi.md +6 -0
  239. package/corpus/templates/design/changelog/2026-06-30-public-visual-edit-design-links-now-open-directly-instead-of.md +6 -0
  240. package/corpus/templates/design/changelog/2026-06-30-removed-the-confusing-states-section-from-the-design-editor-.md +6 -0
  241. package/corpus/templates/design/changelog/2026-06-30-removed-the-templates-gallery-from-design-navigation.md +6 -0
  242. package/corpus/templates/design/changelog/2026-06-30-share-stays-visible-as-soon-as-editable-designs-load.md +6 -0
  243. package/corpus/templates/design/changelog/2026-06-30-signed-out-save-and-share-controls-use-simpler-labels-and-op.md +6 -0
  244. package/corpus/templates/design/changelog/2026-06-30-text-added-on-the-canvas-now-focuses-cleanly-with-the-right-.md +6 -0
  245. package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-is-simpler-and-its-bottom.md +6 -0
  246. package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-now-follows-the-current-t.md +6 -0
  247. package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-child-layout-controls-o.md +6 -0
  248. package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-the-ask-ai-section-abov.md +6 -0
  249. package/corpus/templates/design/changelog/2026-06-30-the-design-review-panel-no-longer-shows-a-separate-inline-au.md +6 -0
  250. package/corpus/templates/design/changelog/2026-06-30-the-empty-designs-page-now-focuses-on-a-single-primary-new-d.md +6 -0
  251. package/corpus/templates/design/changelog/2026-06-30-the-layers-panel-header-stays-as-layers-while-multiple-items.md +6 -0
  252. package/corpus/templates/design/changelog/2026-06-30-the-missing-design-screen-now-uses-a-neutral-back-button.md +6 -0
  253. package/corpus/templates/design/changelog/2026-06-30-the-motion-timeline-now-closes-without-squeezing-the-canvas-.md +6 -0
  254. package/corpus/templates/design/changelog/2026-06-30-the-new-design-connect-ai-setup-now-lines-up-with-the-compos.md +6 -0
  255. package/corpus/templates/design/changelog/2026-06-30-the-screen-overview-board-now-blends-into-the-canvas-and-new.md +6 -0
  256. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-drops-now-show-screen-guides.md +6 -0
  257. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-keep-a-transparent-backdrop-and-.md +6 -0
  258. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-select-reliably-from-all-screens.md +6 -0
  259. package/corpus/templates/design/changelog/2026-06-30-visual-edit-can-open-and-refresh-localhost-screens-in-one-au.md +6 -0
  260. package/corpus/templates/design/e2e/helpers.ts +15 -4
  261. package/corpus/templates/design/server/db/index.ts +52 -0
  262. package/corpus/templates/design/server/plugins/agent-chat.ts +5 -0
  263. package/corpus/templates/design/server/plugins/auth.ts +1 -0
  264. package/corpus/templates/design/server/plugins/core-routes.ts +4 -0
  265. package/corpus/templates/design/shared/board-file.ts +380 -5
  266. package/corpus/templates/design/shared/board-objects.ts +2 -2
  267. package/corpus/templates/design/shared/code-layer.ts +50 -6
  268. package/corpus/templates/design/shared/motion-compiler.ts +27 -0
  269. package/corpus/templates/macros/app/components/DailyProgress.tsx +41 -37
  270. package/corpus/templates/macros/app/components/ExerciseCard.tsx +2 -2
  271. package/corpus/templates/macros/app/components/MealCard.tsx +2 -2
  272. package/corpus/templates/macros/app/components/VoiceDictation.tsx +1 -1
  273. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -1
  274. package/corpus/templates/macros/app/components/WeightCard.tsx +2 -2
  275. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  276. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -1
  277. package/corpus/templates/macros/app/routes/_index.tsx +5 -5
  278. package/corpus/templates/macros/app/routes/analytics.tsx +1 -1
  279. package/corpus/templates/macros/changelog/2026-06-30-dashboard-loading-and-chart-surfaces-now-use-theme-aware-col.md +6 -0
  280. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +14 -11
  281. package/corpus/templates/mail/app/global.css +3 -2
  282. package/corpus/templates/mail/changelog/2026-06-30-compose-floating-toolbars-now-use-theme-aware-colors-in-ligh.md +6 -0
  283. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
  284. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +3 -3
  285. package/corpus/templates/slides/app/global.css +10 -0
  286. package/corpus/templates/slides/app/pages/Index.tsx +55 -51
  287. package/corpus/templates/slides/changelog/2026-06-30-deck-thumbnails-collapse-cleanly-to-one-column-when-the-chat.md +6 -0
  288. package/dist/agent/engine/anthropic-engine.d.ts +2 -2
  289. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  290. package/dist/agent/engine/builder-engine.d.ts +2 -2
  291. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  292. package/dist/agent/engine/builtin.js +1 -1
  293. package/dist/agent/engine/builtin.js.map +1 -1
  294. package/dist/agent/engine/output-tokens.js +1 -1
  295. package/dist/agent/engine/output-tokens.js.map +1 -1
  296. package/dist/agent/harness/acp-adapter.d.ts +4 -1
  297. package/dist/agent/harness/acp-adapter.d.ts.map +1 -1
  298. package/dist/agent/harness/acp-adapter.js +19 -2
  299. package/dist/agent/harness/acp-adapter.js.map +1 -1
  300. package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
  301. package/dist/agent/harness/ai-sdk-adapter.js +3 -0
  302. package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
  303. package/dist/agent/harness/translate.d.ts.map +1 -1
  304. package/dist/agent/harness/translate.js +3 -0
  305. package/dist/agent/harness/translate.js.map +1 -1
  306. package/dist/agent/harness/types.d.ts +1 -0
  307. package/dist/agent/harness/types.d.ts.map +1 -1
  308. package/dist/agent/harness/types.js.map +1 -1
  309. package/dist/agent/model-config.d.ts +21 -20
  310. package/dist/agent/model-config.d.ts.map +1 -1
  311. package/dist/agent/model-config.js +31 -13
  312. package/dist/agent/model-config.js.map +1 -1
  313. package/dist/agent/production-agent.d.ts.map +1 -1
  314. package/dist/agent/production-agent.js +85 -10
  315. package/dist/agent/production-agent.js.map +1 -1
  316. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  317. package/dist/agent/thread-data-builder.js +27 -6
  318. package/dist/agent/thread-data-builder.js.map +1 -1
  319. package/dist/agent/tool-call-journal.d.ts +11 -9
  320. package/dist/agent/tool-call-journal.d.ts.map +1 -1
  321. package/dist/agent/tool-call-journal.js +92 -40
  322. package/dist/agent/tool-call-journal.js.map +1 -1
  323. package/dist/agent/types.d.ts +5 -1
  324. package/dist/agent/types.d.ts.map +1 -1
  325. package/dist/agent/types.js.map +1 -1
  326. package/dist/cli/design-connect.d.ts.map +1 -1
  327. package/dist/cli/design-connect.js +84 -0
  328. package/dist/cli/design-connect.js.map +1 -1
  329. package/dist/cli/gateway-helpers.d.ts +4 -0
  330. package/dist/cli/gateway-helpers.d.ts.map +1 -1
  331. package/dist/cli/gateway-helpers.js +9 -0
  332. package/dist/cli/gateway-helpers.js.map +1 -1
  333. package/dist/cli/recap.d.ts.map +1 -1
  334. package/dist/cli/recap.js +0 -2
  335. package/dist/cli/recap.js.map +1 -1
  336. package/dist/cli/skills.d.ts.map +1 -1
  337. package/dist/cli/skills.js +54 -16
  338. package/dist/cli/skills.js.map +1 -1
  339. package/dist/cli/workspace-dev.d.ts.map +1 -1
  340. package/dist/cli/workspace-dev.js +33 -6
  341. package/dist/cli/workspace-dev.js.map +1 -1
  342. package/dist/client/AssistantChat.d.ts.map +1 -1
  343. package/dist/client/AssistantChat.js +72 -26
  344. package/dist/client/AssistantChat.js.map +1 -1
  345. package/dist/client/CommandMenu.d.ts +6 -2
  346. package/dist/client/CommandMenu.d.ts.map +1 -1
  347. package/dist/client/CommandMenu.js +25 -14
  348. package/dist/client/CommandMenu.js.map +1 -1
  349. package/dist/client/DefaultSpinner.d.ts.map +1 -1
  350. package/dist/client/DefaultSpinner.js +8 -1
  351. package/dist/client/DefaultSpinner.js.map +1 -1
  352. package/dist/client/chat/message-components.d.ts +7 -1
  353. package/dist/client/chat/message-components.d.ts.map +1 -1
  354. package/dist/client/chat/message-components.js +37 -1
  355. package/dist/client/chat/message-components.js.map +1 -1
  356. package/dist/client/chat/repo-helpers.d.ts +1 -0
  357. package/dist/client/chat/repo-helpers.d.ts.map +1 -1
  358. package/dist/client/chat/repo-helpers.js +59 -0
  359. package/dist/client/chat/repo-helpers.js.map +1 -1
  360. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  361. package/dist/client/chat/run-recovery.js +4 -4
  362. package/dist/client/chat/run-recovery.js.map +1 -1
  363. package/dist/client/components/ApiKeySettings.js +8 -8
  364. package/dist/client/components/ApiKeySettings.js.map +1 -1
  365. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  366. package/dist/client/components/CodeRequiredDialog.js +24 -15
  367. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  368. package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
  369. package/dist/client/components/MissingKeyCard.js +11 -6
  370. package/dist/client/components/MissingKeyCard.js.map +1 -1
  371. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  372. package/dist/client/composer/TiptapComposer.js +4 -3
  373. package/dist/client/composer/TiptapComposer.js.map +1 -1
  374. package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
  375. package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
  376. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  377. package/dist/client/guided-questions.d.ts.map +1 -1
  378. package/dist/client/guided-questions.js +6 -6
  379. package/dist/client/guided-questions.js.map +1 -1
  380. package/dist/client/integrations/IntegrationCard.js +1 -1
  381. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  382. package/dist/client/integrations/IntegrationsPanel.js +1 -1
  383. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  384. package/dist/client/onboarding/OnboardingBanner.js +2 -2
  385. package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
  386. package/dist/client/onboarding/OnboardingPanel.js +23 -19
  387. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  388. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  389. package/dist/client/resources/ResourceEditor.js +13 -10
  390. package/dist/client/resources/ResourceEditor.js.map +1 -1
  391. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  392. package/dist/client/resources/ResourcesPanel.js +2 -1
  393. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  394. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  395. package/dist/client/settings/SettingsPanel.js +8 -3
  396. package/dist/client/settings/SettingsPanel.js.map +1 -1
  397. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  398. package/dist/client/settings/useBuilderStatus.js +6 -38
  399. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  400. package/dist/client/useProductionAgent.d.ts +2 -1
  401. package/dist/client/useProductionAgent.d.ts.map +1 -1
  402. package/dist/client/useProductionAgent.js.map +1 -1
  403. package/dist/deploy/build.js +1 -1
  404. package/dist/deploy/build.js.map +1 -1
  405. package/dist/notifications/routes.d.ts +3 -3
  406. package/dist/observability/routes.d.ts +3 -3
  407. package/dist/observability/traces.d.ts.map +1 -1
  408. package/dist/observability/traces.js.map +1 -1
  409. package/dist/onboarding/default-steps.js +1 -1
  410. package/dist/onboarding/default-steps.js.map +1 -1
  411. package/dist/scripts/agent-engines/manage-agent-engine.js +1 -1
  412. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  413. package/dist/scripts/agent-engines/set-agent-engine.js +1 -1
  414. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  415. package/dist/server/agent-chat-plugin.d.ts +3 -0
  416. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  417. package/dist/server/agent-chat-plugin.js +134 -72
  418. package/dist/server/agent-chat-plugin.js.map +1 -1
  419. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  420. package/dist/server/core-routes-plugin.d.ts +3 -0
  421. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  422. package/dist/server/core-routes-plugin.js +4 -1
  423. package/dist/server/core-routes-plugin.js.map +1 -1
  424. package/dist/server/open-route.d.ts +9 -0
  425. package/dist/server/open-route.d.ts.map +1 -1
  426. package/dist/server/open-route.js +48 -38
  427. package/dist/server/open-route.js.map +1 -1
  428. package/dist/shared/reasoning-effort.js +3 -0
  429. package/dist/shared/reasoning-effort.js.map +1 -1
  430. package/dist/sharing/access.d.ts.map +1 -1
  431. package/dist/sharing/access.js +18 -2
  432. package/dist/sharing/access.js.map +1 -1
  433. package/dist/sharing/registry.d.ts +10 -0
  434. package/dist/sharing/registry.d.ts.map +1 -1
  435. package/dist/sharing/registry.js.map +1 -1
  436. package/dist/styles/agent-native.css +104 -20
  437. package/dist/styles/rich-markdown-editor.css +11 -10
  438. package/docs/content/cloneable-saas.mdx +2 -2
  439. package/docs/content/faq.mdx +1 -1
  440. package/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
  441. package/docs/content/locales/ar-SA/faq.mdx +1 -1
  442. package/docs/content/locales/ar-SA/template-chat.mdx +1 -1
  443. package/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
  444. package/docs/content/locales/de-DE/faq.mdx +1 -1
  445. package/docs/content/locales/de-DE/template-chat.mdx +1 -1
  446. package/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
  447. package/docs/content/locales/es-ES/faq.mdx +1 -1
  448. package/docs/content/locales/es-ES/template-chat.mdx +1 -1
  449. package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  450. package/docs/content/locales/fr-FR/faq.mdx +1 -1
  451. package/docs/content/locales/fr-FR/template-chat.mdx +1 -1
  452. package/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
  453. package/docs/content/locales/hi-IN/faq.mdx +1 -1
  454. package/docs/content/locales/hi-IN/template-chat.mdx +1 -1
  455. package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  456. package/docs/content/locales/ja-JP/faq.mdx +1 -1
  457. package/docs/content/locales/ja-JP/template-chat.mdx +1 -1
  458. package/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
  459. package/docs/content/locales/ko-KR/faq.mdx +1 -1
  460. package/docs/content/locales/ko-KR/template-chat.mdx +1 -1
  461. package/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
  462. package/docs/content/locales/pt-BR/faq.mdx +1 -1
  463. package/docs/content/locales/pt-BR/template-chat.mdx +1 -1
  464. package/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
  465. package/docs/content/locales/zh-CN/faq.mdx +1 -1
  466. package/docs/content/locales/zh-CN/template-chat.mdx +1 -1
  467. package/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
  468. package/docs/content/locales/zh-TW/faq.mdx +1 -1
  469. package/docs/content/locales/zh-TW/template-chat.mdx +1 -1
  470. package/docs/content/template-chat.mdx +1 -1
  471. package/package.json +1 -1
  472. package/corpus/templates/design/app/components/design/LocalSourceEditBanner.tsx +0 -157
  473. package/corpus/templates/design/app/lib/design-templates.ts +0 -1305
  474. package/corpus/templates/design/app/pages/Templates.tsx +0 -279
@@ -1,121 +1,101 @@
1
1
  import { Skeleton } from "@/components/ui/skeleton";
2
+ import { Spinner } from "@/components/ui/spinner";
3
+
4
+ const panelGhost = "bg-[var(--design-editor-skeleton-panel-ghost-bg)]";
2
5
 
3
6
  /**
4
- * Loading placeholder for the design editor. Mirrors the real editor chrome
5
- * (side rails + canvas with a faux design frame) so the load reads as
6
- * "a design is coming" instead of a bare spinner on a black void.
7
+ * Loading placeholder for the design editor. Keeps the shell recognizable while
8
+ * staying quiet enough that it does not read as mock content.
7
9
  */
8
10
  export function DesignEditorSkeleton({
9
11
  embedded = false,
12
+ pendingGeneration = false,
10
13
  }: {
11
14
  embedded?: boolean;
15
+ pendingGeneration?: boolean;
12
16
  }) {
13
- return (
14
- <div className="flex h-full overflow-hidden bg-background">
15
- {!embedded && (
16
- <aside className="hidden w-80 shrink-0 border-r border-border bg-[var(--design-editor-panel-bg)] lg:flex">
17
- <div className="flex w-[52px] shrink-0 flex-col items-center border-r border-border py-3">
18
- <Skeleton className="mb-3 size-8 rounded-md" />
19
- <Skeleton className="mb-5 h-px w-8 rounded-none" />
20
- <div className="flex flex-1 flex-col items-center gap-4">
21
- {Array.from({ length: 5 }).map((_, index) => (
22
- <Skeleton key={index} className="h-[48px] w-12 rounded-lg" />
23
- ))}
24
- </div>
25
- </div>
26
- <div className="flex min-w-0 flex-1 flex-col">
27
- <div className="flex h-10 shrink-0 items-center border-b border-border px-3">
28
- <Skeleton className="h-5 min-w-0 flex-1 rounded" />
17
+ if (pendingGeneration) {
18
+ return (
19
+ <div className="flex h-full overflow-hidden bg-[var(--design-editor-canvas-bg)]">
20
+ {!embedded && (
21
+ <aside className="relative flex min-h-0 shrink-0 border-r border-[var(--design-editor-panel-divider-color)] bg-[var(--design-editor-panel-bg)]">
22
+ <div className="flex w-[52px] shrink-0 flex-col items-center p-3">
23
+ <Skeleton className={`size-8 rounded-md ${panelGhost}`} />
24
+ <div className="mt-8 flex w-full flex-col items-center gap-3">
25
+ <Skeleton className={`size-8 rounded-lg ${panelGhost}`} />
26
+ <Skeleton className={`size-8 rounded-lg ${panelGhost}`} />
27
+ <Skeleton className={`size-8 rounded-lg ${panelGhost}`} />
28
+ </div>
29
29
  </div>
30
- <div className="shrink-0 border-b border-border p-2">
31
- <div className="mb-2 flex items-center justify-between">
32
- <Skeleton className="h-3 w-16 rounded" />
33
- <div className="flex gap-1">
34
- <Skeleton className="size-6 rounded-sm" />
35
- <Skeleton className="size-6 rounded-sm" />
30
+ <div className="flex w-[320px] min-w-0 flex-col bg-[var(--design-editor-panel-bg)]">
31
+ <div className="border-b border-[var(--design-editor-panel-divider-color)] p-3">
32
+ <Skeleton className={`h-5 w-28 rounded ${panelGhost}`} />
33
+ </div>
34
+ <div className="flex min-h-0 flex-1 flex-col gap-4 p-3">
35
+ <Skeleton className={`h-16 w-full rounded-lg ${panelGhost}`} />
36
+ <Skeleton className={`h-24 w-5/6 rounded-lg ${panelGhost}`} />
37
+ <div className="mt-auto space-y-2">
38
+ <Skeleton className={`h-9 w-full rounded-lg ${panelGhost}`} />
39
+ <Skeleton className={`h-9 w-3/4 rounded-lg ${panelGhost}`} />
36
40
  </div>
37
41
  </div>
38
- <Skeleton className="h-7 w-full rounded-sm" />
39
- </div>
40
- <div className="shrink-0 border-b border-border p-2">
41
- <Skeleton className="h-7 w-full rounded-sm" />
42
42
  </div>
43
- <div className="flex-1 space-y-1 p-2">
44
- <Skeleton className="h-6 w-full rounded-sm" />
45
- <Skeleton className="h-6 w-11/12 rounded-sm" />
46
- <Skeleton className="h-6 w-4/5 rounded-sm" />
47
- <Skeleton className="h-6 w-2/3 rounded-sm" />
43
+ </aside>
44
+ )}
45
+
46
+ <main className="relative min-w-0 flex-1 overflow-hidden bg-[var(--design-editor-skeleton-canvas-bg)]">
47
+ <div className="flex h-full min-h-0 items-center justify-center px-8 py-10">
48
+ <div className="flex w-full max-w-md flex-col items-center text-center">
49
+ <div className="mb-4 flex size-12 items-center justify-center rounded-xl border border-[var(--design-editor-panel-divider-color)] bg-[var(--design-editor-panel-bg)] shadow-[0_18px_50px_-34px_rgba(0,0,0,0.8)]">
50
+ <Spinner className="size-5 text-foreground/40" />
51
+ </div>
52
+ <Skeleton className={`h-4 w-32 rounded ${panelGhost}`} />
48
53
  </div>
49
54
  </div>
55
+ </main>
56
+ </div>
57
+ );
58
+ }
59
+
60
+ return (
61
+ <div className="flex h-full overflow-hidden bg-background">
62
+ {!embedded && (
63
+ <aside className="hidden w-80 shrink-0 bg-[var(--design-editor-panel-bg)] lg:flex">
64
+ <div className="flex w-[52px] shrink-0 flex-col items-center p-3">
65
+ <Skeleton className={`size-8 rounded-md ${panelGhost}`} />
66
+ <Skeleton className={`mt-8 h-40 w-full rounded-lg ${panelGhost}`} />
67
+ </div>
68
+ <div className="flex min-w-0 flex-1 flex-col gap-3 p-3">
69
+ <Skeleton className={`h-4 w-full rounded ${panelGhost}`} />
70
+ <Skeleton className={`h-24 w-full rounded-lg ${panelGhost}`} />
71
+ <Skeleton className={`h-36 w-4/5 rounded-lg ${panelGhost}`} />
72
+ </div>
50
73
  </aside>
51
74
  )}
52
75
 
53
76
  <main className="relative min-w-0 flex-1 overflow-hidden bg-[var(--design-editor-skeleton-canvas-bg)]">
54
- <div className="flex h-full items-center justify-center p-8">
55
- <div className="w-full max-w-4xl overflow-hidden rounded-xl border border-border bg-card shadow-2xl">
56
- {/* Faux browser bar */}
57
- <div className="flex items-center gap-2 border-b border-border px-4 py-3">
58
- <Skeleton className="h-2.5 w-2.5 rounded-full" />
59
- <Skeleton className="h-2.5 w-2.5 rounded-full" />
60
- <Skeleton className="h-2.5 w-2.5 rounded-full" />
61
- <Skeleton className="ml-3 h-4 w-48 rounded" />
62
- </div>
63
- {/* Faux content */}
64
- <div className="space-y-6 p-8">
65
- <div className="space-y-3">
66
- <Skeleton className="h-8 w-2/3 rounded-lg" />
67
- <Skeleton className="h-4 w-1/2 rounded" />
68
- </div>
69
- <div className="grid grid-cols-3 gap-4">
70
- <Skeleton className="h-28 rounded-xl" />
71
- <Skeleton className="h-28 rounded-xl" />
72
- <Skeleton className="h-28 rounded-xl" />
73
- </div>
74
- <Skeleton className="h-40 w-full rounded-xl" />
75
- </div>
76
- </div>
77
+ <div className="flex h-full items-center justify-center px-10 pb-28 pt-10">
78
+ <Skeleton
79
+ aria-hidden="true"
80
+ className={`h-72 w-full max-w-[520px] rounded-xl ${panelGhost}`}
81
+ />
77
82
  </div>
78
83
 
79
84
  {!embedded && (
80
- <div className="absolute bottom-4 left-1/2 z-[70] flex -translate-x-1/2 items-center gap-2 rounded-2xl border border-white/10 bg-[#2c2c2c]/95 p-2 shadow-[0_22px_55px_-24px_rgba(0,0,0,0.9)]">
81
- <div className="flex gap-1">
82
- {Array.from({ length: 6 }).map((_, index) => (
83
- <Skeleton key={index} className="h-11 w-16 rounded-md" />
84
- ))}
85
- </div>
86
- <Skeleton className="h-12 w-px rounded-none bg-white/15" />
87
- <div className="flex gap-1 rounded-lg bg-white/10 p-1">
88
- {Array.from({ length: 4 }).map((_, index) => (
89
- <Skeleton key={index} className="size-10 rounded-md" />
90
- ))}
91
- </div>
92
- </div>
85
+ <div
86
+ className={`absolute bottom-4 left-1/2 z-[70] h-11 w-64 -translate-x-1/2 rounded-xl ${panelGhost}`}
87
+ />
93
88
  )}
94
89
  </main>
95
90
 
96
91
  {!embedded && (
97
- <aside className="hidden w-64 shrink-0 flex-col border-l border-border bg-[var(--design-editor-panel-bg)] lg:flex">
98
- <div className="shrink-0 border-b border-border p-2">
99
- <div className="flex flex-wrap justify-end gap-1">
100
- <Skeleton className="h-7 w-12 rounded-md" />
101
- <Skeleton className="h-7 w-14 rounded-md" />
102
- <Skeleton className="h-7 w-16 rounded-md" />
103
- <Skeleton className="size-7 rounded-md" />
104
- </div>
105
- </div>
106
- <div className="flex h-11 shrink-0 items-center justify-between border-b border-border px-3">
107
- <div className="flex gap-1">
108
- <Skeleton className="h-7 w-16 rounded-md" />
109
- <Skeleton className="h-7 w-16 rounded-md" />
110
- </div>
111
- <Skeleton className="h-7 w-12 rounded-md" />
92
+ <aside className="hidden w-80 shrink-0 flex-col bg-[var(--design-editor-panel-bg)] lg:flex">
93
+ <div className="flex h-12 shrink-0 items-center justify-end px-3">
94
+ <Skeleton className={`h-6 w-40 rounded-md ${panelGhost}`} />
112
95
  </div>
113
- <div className="space-y-3 p-3">
114
- <Skeleton className="h-4 w-24 rounded" />
115
- <Skeleton className="h-7 w-full rounded-md" />
116
- <Skeleton className="h-7 w-full rounded-md" />
117
- <Skeleton className="h-4 w-20 rounded" />
118
- <Skeleton className="h-24 w-full rounded-md" />
96
+ <div className="space-y-4 p-3">
97
+ <Skeleton className={`h-6 w-24 rounded ${panelGhost}`} />
98
+ <Skeleton className={`h-36 w-full rounded-lg ${panelGhost}`} />
119
99
  </div>
120
100
  </aside>
121
101
  )}
@@ -1,7 +1,6 @@
1
1
  // i18n-raw-literal-disable-file — new Design Studio panel; UI strings are localized when this feature is finalized in the follow-up PR.
2
2
  import {
3
3
  agentNativePath,
4
- sendToAgentChat,
5
4
  useActionQuery,
6
5
  useActionMutation,
7
6
  useChangeVersions,
@@ -20,11 +19,12 @@ import {
20
19
  IconChevronDown,
21
20
  IconExternalLink,
22
21
  IconLock,
22
+ IconMessageCircle,
23
+ IconPalette,
23
24
  IconPhoto,
24
25
  IconPlayerPlay,
25
26
  IconPuzzle,
26
27
  IconSearch,
27
- IconSparkles,
28
28
  } from "@tabler/icons-react";
29
29
  import { useQuery, useQueryClient } from "@tanstack/react-query";
30
30
  import {
@@ -53,6 +53,7 @@ import {
53
53
  import { Skeleton } from "@/components/ui/skeleton";
54
54
  import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
55
55
  import { Textarea } from "@/components/ui/textarea";
56
+ import { sendToDesignAgentChat } from "@/lib/agent-chat";
56
57
  import { cn } from "@/lib/utils";
57
58
 
58
59
  import { ShaderFillsPanel } from "./inspector/ShaderFillsPanel";
@@ -320,8 +321,7 @@ function FirstPartyExtRow({
320
321
  <span className="block truncate text-sm font-medium leading-tight text-foreground">
321
322
  {label}
322
323
  </span>
323
- <span className="mt-0.5 flex items-center gap-1.5 truncate text-xs leading-none text-muted-foreground">
324
- <IconPuzzle className="size-3 shrink-0" />
324
+ <span className="mt-0.5 block truncate text-xs leading-none text-muted-foreground">
325
325
  <span className="truncate">Built-in</span>
326
326
  </span>
327
327
  </span>
@@ -581,15 +581,15 @@ export function AssetLibraryPanel({ context }: AssetLibraryPanelProps) {
581
581
  <Tabs defaultValue="native" className="flex min-h-0 flex-1 flex-col">
582
582
  <div className="border-b border-border/60 px-2 py-1.5">
583
583
  <TabsList className="grid h-7 w-full grid-cols-3 rounded-md p-0.5">
584
- <TabsTrigger value="native" className="h-6 gap-1 px-2 text-[11px]">
584
+ <TabsTrigger value="native" className="h-6 gap-1 px-2 !text-[11px]">
585
585
  <IconAssembly className="size-3" />
586
586
  Native
587
587
  </TabsTrigger>
588
- <TabsTrigger value="media" className="h-6 gap-1 px-2 text-[11px]">
588
+ <TabsTrigger value="media" className="h-6 gap-1 px-2 !text-[11px]">
589
589
  <IconPhoto className="size-3" />
590
590
  Media
591
591
  </TabsTrigger>
592
- <TabsTrigger value="figma" className="h-6 gap-1 px-2 text-[11px]">
592
+ <TabsTrigger value="figma" className="h-6 gap-1 px-2 !text-[11px]">
593
593
  <IconBrandFigma className="size-3" />
594
594
  Figma
595
595
  </TabsTrigger>
@@ -631,7 +631,7 @@ export function AssetLibraryPanel({ context }: AssetLibraryPanelProps) {
631
631
  </span>
632
632
  <span className="min-w-0 flex-1">
633
633
  <span className="flex items-center gap-1.5">
634
- <span className="truncate text-[11px] font-medium leading-tight text-foreground">
634
+ <span className="truncate !text-[11px] font-medium leading-tight text-foreground">
635
635
  {asset.title}
636
636
  </span>
637
637
  <span className="shrink-0 rounded border border-border/70 px-1 py-0.5 text-[9px] leading-none text-muted-foreground">
@@ -678,19 +678,19 @@ export function AssetLibraryPanel({ context }: AssetLibraryPanelProps) {
678
678
  value={figmaFileInput}
679
679
  onChange={(event) => setFigmaFileInput(event.target.value)}
680
680
  placeholder="Figma file URL or key"
681
- className="h-7 text-[11px]"
681
+ className="h-7 !text-[11px] md:!text-[11px]"
682
682
  />
683
683
  <div className="flex gap-1.5">
684
684
  <Input
685
685
  value={figmaQueryInput}
686
686
  onChange={(event) => setFigmaQueryInput(event.target.value)}
687
687
  placeholder="Search components"
688
- className="h-7 min-w-0 flex-1 text-[11px]"
688
+ className="h-7 min-w-0 flex-1 !text-[11px] md:!text-[11px]"
689
689
  />
690
690
  <Button
691
691
  type="submit"
692
692
  size="sm"
693
- className="h-7 cursor-pointer gap-1 px-2 text-[11px]"
693
+ className="h-7 cursor-pointer gap-1 px-2 !text-[11px]"
694
694
  disabled={!figmaFileInput.trim() || figmaAssets.isFetching}
695
695
  >
696
696
  <IconSearch className="size-3" />
@@ -949,10 +949,10 @@ function ShaderFillsExtPanel({ context }: ShaderFillsExtPanelProps) {
949
949
  <Button
950
950
  type="button"
951
951
  size="sm"
952
- className="h-6 cursor-pointer gap-1 px-2 text-[11px]"
952
+ className="h-6 cursor-pointer gap-1 px-2 !text-[11px]"
953
953
  onClick={() => setShowShaders(true)}
954
954
  >
955
- <IconSparkles className="size-3" />
955
+ <IconPalette className="size-3" />
956
956
  Browse Shaders
957
957
  </Button>
958
958
  </div>
@@ -991,7 +991,7 @@ function ShaderFillsExtPanel({ context }: ShaderFillsExtPanelProps) {
991
991
  <Button
992
992
  type="button"
993
993
  size="sm"
994
- className="h-6 cursor-pointer gap-1 px-2 text-[11px]"
994
+ className="h-6 cursor-pointer gap-1 px-2 !text-[11px]"
995
995
  disabled={!previewMatchesTarget || applyShaderFill.isPending}
996
996
  onClick={() => {
997
997
  if (previewMatchesTarget && previewed) {
@@ -999,7 +999,7 @@ function ShaderFillsExtPanel({ context }: ShaderFillsExtPanelProps) {
999
999
  }
1000
1000
  }}
1001
1001
  >
1002
- <IconSparkles className="size-3" />
1002
+ <IconPalette className="size-3" />
1003
1003
  {applyShaderFill.isPending
1004
1004
  ? "Applying…"
1005
1005
  : previewMatchesTarget
@@ -1027,7 +1027,7 @@ function TokenAuditorPanel({ context }: TokenAuditorPanelProps) {
1027
1027
  const t = useT();
1028
1028
 
1029
1029
  const handleAskAgent = () => {
1030
- sendToAgentChat({
1030
+ sendToDesignAgentChat({
1031
1031
  message:
1032
1032
  "Run a token audit on the active design: index CSS custom properties, surface any hard-coded colours that should be tokens, flag clashes, and suggest fixes.",
1033
1033
  context: [
@@ -1056,10 +1056,10 @@ function TokenAuditorPanel({ context }: TokenAuditorPanelProps) {
1056
1056
  <Button
1057
1057
  type="button"
1058
1058
  size="sm"
1059
- className="h-6 cursor-pointer gap-1 px-2 text-[11px]"
1059
+ className="h-6 cursor-pointer gap-1 px-2 !text-[11px]"
1060
1060
  onClick={handleAskAgent}
1061
1061
  >
1062
- <IconSparkles className="size-3" />
1062
+ <IconMessageCircle className="size-3" />
1063
1063
  {t("designEditor.askAgent") || "Ask agent"}
1064
1064
  </Button>
1065
1065
  </div>
@@ -1077,7 +1077,7 @@ function MotionPresetsPanel({ context }: MotionPresetsPanelProps) {
1077
1077
  const t = useT();
1078
1078
 
1079
1079
  const handleAskAgent = () => {
1080
- sendToAgentChat({
1080
+ sendToDesignAgentChat({
1081
1081
  message:
1082
1082
  "Apply a motion preset to the selected element. Suggest fade-in, slide-up, pulse, bounce, or spin, then call apply-motion-edit to write the keyframes atomically.",
1083
1083
  context: [
@@ -1111,10 +1111,10 @@ function MotionPresetsPanel({ context }: MotionPresetsPanelProps) {
1111
1111
  <Button
1112
1112
  type="button"
1113
1113
  size="sm"
1114
- className="h-6 cursor-pointer gap-1 px-2 text-[11px]"
1114
+ className="h-6 cursor-pointer gap-1 px-2 !text-[11px]"
1115
1115
  onClick={handleAskAgent}
1116
1116
  >
1117
- <IconSparkles className="size-3" />
1117
+ <IconMessageCircle className="size-3" />
1118
1118
  {t("designEditor.askAgent") || "Ask agent"}
1119
1119
  </Button>
1120
1120
  </div>
@@ -1159,7 +1159,7 @@ export function DesignExtensionsPanel({
1159
1159
  const submitCreatePrompt: CreateExtensionSubmitHandler = (text: string) => {
1160
1160
  const trimmed = text.trim();
1161
1161
  if (!trimmed) return;
1162
- sendToAgentChat({
1162
+ sendToDesignAgentChat({
1163
1163
  message: `Create a Design extension: ${trimmed}`,
1164
1164
  context: buildExtensionCreateContext(trimmed, context),
1165
1165
  submit: true,
@@ -1211,7 +1211,7 @@ export function DesignExtensionsPanel({
1211
1211
  label: "Shader Fills",
1212
1212
  description: "GPU shader fill presets — preview & apply",
1213
1213
  category: "shader",
1214
- icon: <IconSparkles className="size-3.5" />,
1214
+ icon: <IconPalette className="size-3.5" />,
1215
1215
  panel: <ShaderFillsExtPanel context={context} />,
1216
1216
  },
1217
1217
  {
@@ -1454,11 +1454,10 @@ function CreateExtensionPopover({
1454
1454
  type="button"
1455
1455
  variant="outline"
1456
1456
  size="sm"
1457
- className="h-8 cursor-pointer gap-1.5 rounded-md bg-transparent px-3 text-sm font-medium"
1457
+ className="h-8 cursor-pointer rounded-md bg-transparent px-3 text-sm font-medium"
1458
1458
  aria-label={t("designEditor.addExtension")}
1459
1459
  >
1460
1460
  Create
1461
- <IconChevronDown className="size-3.5 text-muted-foreground" />
1462
1461
  </Button>
1463
1462
  </PopoverTrigger>
1464
1463
  <PopoverContent align="end" sideOffset={8} className="w-80 p-3">
@@ -1486,10 +1485,9 @@ function CreateExtensionPopover({
1486
1485
  <Button
1487
1486
  type="submit"
1488
1487
  size="sm"
1489
- className="h-8 gap-1.5 px-3"
1488
+ className="h-8 px-3"
1490
1489
  disabled={!canSubmit}
1491
1490
  >
1492
- <IconSparkles className="size-3.5" />
1493
1491
  Create
1494
1492
  </Button>
1495
1493
  </div>
@@ -91,7 +91,7 @@ function MobileFrame({
91
91
  {/* Status bar with notch */}
92
92
  <div className="relative flex items-center justify-between px-6 h-10 bg-black">
93
93
  {/* Time */}
94
- <span className="text-[11px] font-semibold text-white">9:41</span>
94
+ <span className="!text-[11px] font-semibold text-white">9:41</span>
95
95
  {/* Dynamic Island / Notch */}
96
96
  <div className="absolute left-1/2 -translate-x-1/2 top-1.5 w-24 h-6 rounded-full bg-zinc-900" />
97
97
  {/* Status icons */}
@@ -386,7 +386,7 @@ export function DrawOverlay({ visible, onQueue, onSend }: DrawOverlayProps) {
386
386
  <Button
387
387
  variant="ghost"
388
388
  size="sm"
389
- className="h-6 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground"
389
+ className="h-6 gap-1 px-2 !text-[11px] text-muted-foreground hover:text-foreground"
390
390
  onClick={queueDrawing}
391
391
  disabled={strokes.length === 0}
392
392
  >
@@ -397,7 +397,7 @@ export function DrawOverlay({ visible, onQueue, onSend }: DrawOverlayProps) {
397
397
  {/* Send button */}
398
398
  <Button
399
399
  size="sm"
400
- className="h-6 gap-1 px-3 text-[11px]"
400
+ className="h-6 gap-1 px-3 !text-[11px]"
401
401
  onClick={sendAll}
402
402
  disabled={totalQueued === 0 && strokes.length === 0}
403
403
  >