@agent-native/core 0.80.8 → 0.80.9

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 (281) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +12 -0
  3. package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +6 -0
  4. package/corpus/core/docs/content/locales/de-DE/template-design.mdx +8 -0
  5. package/corpus/core/docs/content/locales/es-ES/template-design.mdx +10 -2
  6. package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +10 -2
  7. package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +7 -0
  8. package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +7 -0
  9. package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +7 -0
  10. package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +9 -2
  11. package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +6 -0
  12. package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +6 -0
  13. package/corpus/core/docs/content/template-design.mdx +9 -2
  14. package/corpus/core/package.json +1 -1
  15. package/corpus/core/src/cli/mcp.ts +10 -0
  16. package/corpus/core/src/cli/skills.ts +58 -12
  17. package/corpus/core/src/client/error-format.ts +25 -0
  18. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +13 -11
  19. package/corpus/core/src/client/guided-questions.tsx +32 -4
  20. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +33 -1
  21. package/corpus/core/src/client/resources/BuiltinCapabilityDetail.tsx +8 -0
  22. package/corpus/core/src/client/resources/use-builtin-capabilities.ts +4 -2
  23. package/corpus/core/src/client/session-replay.ts +34 -0
  24. package/corpus/core/src/client/sharing/ShareButton.tsx +106 -21
  25. package/corpus/core/src/coding-tools/index.ts +1 -1
  26. package/corpus/core/src/mcp/index.ts +2 -0
  27. package/corpus/core/src/mcp/screen-memory-stdio.ts +290 -0
  28. package/corpus/core/src/mcp-client/builtin-capabilities.ts +13 -1
  29. package/corpus/core/src/mcp-client/index.ts +9 -0
  30. package/corpus/core/src/mcp-client/screen-memory-local.ts +461 -0
  31. package/corpus/core/src/onboarding/types.ts +7 -0
  32. package/corpus/core/src/server/agent-chat-plugin.ts +25 -0
  33. package/corpus/core/src/server/agents-bundle.ts +35 -7
  34. package/corpus/core/src/styles/agent-native.css +5 -0
  35. package/corpus/core/src/templates/default/app/global.css +35 -35
  36. package/corpus/templates/analytics/AGENTS.md +6 -0
  37. package/corpus/templates/analytics/actions/github-repo-files.ts +9 -0
  38. package/corpus/templates/analytics/app/components/layout/Layout.tsx +4 -4
  39. package/corpus/templates/analytics/app/global.css +144 -40
  40. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +1 -1
  41. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +1 -1
  42. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +1 -1
  43. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +4 -4
  44. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -9
  45. package/corpus/templates/analytics/changelog/2026-06-29-agents-can-search-and-read-connected-github-repositories-whe.md +6 -0
  46. package/corpus/templates/analytics/changelog/2026-06-29-sessions-and-explorer-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
  47. package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -1
  48. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +1 -1
  49. package/corpus/templates/assets/app/global.css +99 -35
  50. package/corpus/templates/assets/app/routes/asset.$id.tsx +2 -2
  51. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +4 -4
  52. package/corpus/templates/assets/app/routes/library.tsx +4 -4
  53. package/corpus/templates/assets/changelog/2026-06-29-asset-library-and-detail-layouts-adapt-when-the-agent-sidebar.md +6 -0
  54. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
  55. package/corpus/templates/brain/app/global.css +63 -35
  56. package/corpus/templates/brain/app/routes/search.tsx +1 -1
  57. package/corpus/templates/brain/app/routes/settings.tsx +1 -1
  58. package/corpus/templates/brain/app/routes/sources.tsx +2 -2
  59. package/corpus/templates/brain/changelog/2026-06-29-search-settings-and-source-layouts-adapt-when-the-agent-sidebar.md +6 -0
  60. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +4 -4
  61. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +3 -2
  62. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +4 -2
  63. package/corpus/templates/calendar/app/global.css +69 -35
  64. package/corpus/templates/calendar/changelog/2026-06-29-event-and-find-time-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
  65. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -1
  66. package/corpus/templates/chat/app/global.css +35 -35
  67. package/corpus/templates/chat/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  68. package/corpus/templates/clips/AGENTS.md +13 -0
  69. package/corpus/templates/clips/actions/get-screen-memory-status.ts +12 -0
  70. package/corpus/templates/clips/actions/query-screen-memory-context.ts +29 -0
  71. package/corpus/templates/clips/actions/view-screen.ts +2 -2
  72. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
  73. package/corpus/templates/clips/app/global.css +47 -35
  74. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +3 -3
  75. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +45 -18
  76. package/corpus/templates/clips/changelog/2026-06-29-meeting-detail-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  77. package/corpus/templates/clips/changelog/2026-06-29-screen-memory-keeps-a-local-rolling-screen-buffer-for-agent-context.md +5 -0
  78. package/corpus/templates/clips/changelog/2026-06-29-video-chat-is-easier-to-find-on-recording-pages-and-s3-setup.md +6 -0
  79. package/corpus/templates/clips/chrome-extension/src/styles.css +39 -39
  80. package/corpus/templates/clips/desktop/src/app.tsx +290 -1
  81. package/corpus/templates/clips/desktop/src/shared/config.ts +83 -0
  82. package/corpus/templates/clips/desktop/src/styles.css +67 -52
  83. package/corpus/templates/clips/desktop/src-tauri/src/config.rs +50 -0
  84. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +17 -0
  85. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +13 -13
  86. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory.rs +990 -0
  87. package/corpus/templates/clips/server/plugins/onboarding.ts +2 -0
  88. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +3 -3
  89. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
  90. package/corpus/templates/content/app/global.css +29 -15
  91. package/corpus/templates/content/changelog/2026-06-29-database-gallery-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  92. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +25 -20
  93. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -0
  94. package/corpus/templates/design/.agents/skills/export-handoff/SKILL.md +8 -0
  95. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +13 -0
  96. package/corpus/templates/design/AGENTS.md +20 -12
  97. package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +1054 -0
  98. package/corpus/templates/design/actions/apply-visual-edit.ts +24 -4
  99. package/corpus/templates/design/actions/export-coding-handoff.ts +12 -4
  100. package/corpus/templates/design/actions/generate-design.ts +6 -21
  101. package/corpus/templates/design/actions/generate-screens.ts +43 -2
  102. package/corpus/templates/design/actions/get-design.ts +1 -0
  103. package/corpus/templates/design/actions/present-design-variants.ts +355 -30
  104. package/corpus/templates/design/actions/view-screen.ts +75 -31
  105. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +329 -69
  106. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +1 -1
  107. package/corpus/templates/design/app/components/design/EditPanel.tsx +479 -77
  108. package/corpus/templates/design/app/components/design/LayersPanel.tsx +380 -216
  109. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1050 -196
  110. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +83 -206
  111. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +1 -1
  112. package/corpus/templates/design/app/components/design/index.ts +0 -1
  113. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +225 -133
  114. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +122 -11
  115. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +24 -5
  116. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -1
  117. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +37 -12
  118. package/corpus/templates/design/app/components/design/inspector/index.ts +1 -0
  119. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +12 -5
  120. package/corpus/templates/design/app/components/design/types.ts +9 -0
  121. package/corpus/templates/design/app/components/layout/Layout.tsx +23 -5
  122. package/corpus/templates/design/app/global.css +77 -49
  123. package/corpus/templates/design/app/hooks/use-question-flow.ts +2 -2
  124. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +8 -1
  125. package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
  126. package/corpus/templates/design/app/i18n-data.ts +45 -3
  127. package/corpus/templates/design/app/pages/DesignEditor.tsx +2602 -657
  128. package/corpus/templates/design/app/root.tsx +1 -1
  129. package/corpus/templates/design/changelog/2026-06-29-containers-no-longer-block-selecting-nested-elements-and-nor.md +6 -0
  130. package/corpus/templates/design/changelog/2026-06-29-design-agents-now-generate-and-refine-variants-from-stronger.md +6 -0
  131. package/corpus/templates/design/changelog/2026-06-29-design-inspector-controls-now-match-figmas-softer-dark-chrome.md +6 -0
  132. package/corpus/templates/design/changelog/2026-06-29-design-questions-now-appear-as-a-cleaner-canvas-intake-with-.md +6 -0
  133. package/corpus/templates/design/changelog/2026-06-29-design-variant-directions-now-appear-as-board-screens-with-chat-buttons.md +5 -0
  134. package/corpus/templates/design/changelog/2026-06-29-element-selection-no-longer-snaps-back-to-the-previous-layer.md +6 -0
  135. package/corpus/templates/design/changelog/2026-06-29-frame-resize-measurements-now-stay-beside-the-cursor-while-d.md +6 -0
  136. package/corpus/templates/design/changelog/2026-06-29-inspector-number-fields-have-cleaner-tooltips-and-draggable-.md +6 -0
  137. package/corpus/templates/design/changelog/2026-06-29-layer-locking-layer-nesting-generated-question-intake-and-im.md +6 -0
  138. package/corpus/templates/design/changelog/2026-06-29-layer-names-in-the-sidebar-can-scroll-horizontally-instead-o.md +6 -0
  139. package/corpus/templates/design/changelog/2026-06-29-layer-nesting-in-the-sidebar-now-uses-tighter-spacing-so-nam.md +6 -0
  140. package/corpus/templates/design/changelog/2026-06-29-layers-no-longer-repeat-document-wrapper-rows-when-a-screen-.md +6 -0
  141. package/corpus/templates/design/changelog/2026-06-29-overview-previews-now-keep-element-hover-and-selection-tied-.md +6 -0
  142. package/corpus/templates/design/changelog/2026-06-29-pressing-escape-now-cancels-a-stuck-screen-drag-in-the-overv.md +6 -0
  143. package/corpus/templates/design/changelog/2026-06-29-screen-overview-is-easier-to-find-and-named-screens-open-dir.md +6 -0
  144. package/corpus/templates/design/changelog/2026-06-29-screen-overview-only-highlights-screens-when-the-frame-or-ti.md +6 -0
  145. package/corpus/templates/design/changelog/2026-06-29-screen-overview-previews-now-resize-to-match-the-selected-de.md +6 -0
  146. package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-now-uses-a-pointer-cursor-instead-.md +6 -0
  147. package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-outlines-now-stay-locked-to-the-se.md +6 -0
  148. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zoom-now-reports-real-screen-scale-separatel.md +6 -0
  149. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-feels-smoother-and-selection-outline.md +6 -0
  150. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-now-stays-on-the-overview-canvas-ins.md +6 -0
  151. package/corpus/templates/design/changelog/2026-06-29-selecting-a-nested-layer-from-all-screens-now-keeps-you-in-a.md +6 -0
  152. package/corpus/templates/design/changelog/2026-06-29-share-now-groups-link-sharing-exports-and-agent-handoff.md +6 -0
  153. package/corpus/templates/design/changelog/2026-06-29-the-design-editor-loading-skeleton-now-uses-a-softer-charcoa.md +6 -0
  154. package/corpus/templates/design/changelog/2026-06-29-the-device-preview-menu-now-sits-next-to-the-preview-button-.md +6 -0
  155. package/corpus/templates/design/changelog/2026-06-29-the-inspector-stays-read-only-while-an-empty-design-is-still.md +6 -0
  156. package/corpus/templates/design/changelog/2026-06-29-the-missing-design-view-now-matches-the-rest-of-the-editor-c.md +6 -0
  157. package/corpus/templates/design/changelog/2026-06-29-the-pen-tool-icon-and-tool-option-menus-better-match-the-edi.md +6 -0
  158. package/corpus/templates/design/changelog/2026-06-29-typography-controls-now-keep-the-font-name-visible-and-move-.md +6 -0
  159. package/corpus/templates/design/e2e/README.md +3 -3
  160. package/corpus/templates/design/e2e/global-setup.ts +11 -22
  161. package/corpus/templates/design/e2e/helpers.ts +122 -11
  162. package/corpus/templates/design/playwright.config.ts +9 -3
  163. package/corpus/templates/design/server/lib/coding-handoff.ts +126 -2
  164. package/corpus/templates/design/server/plugins/core-routes.ts +1 -2
  165. package/corpus/templates/design/server/routes/api/design-handoff/[id].zip.get.ts +86 -0
  166. package/corpus/templates/design/shared/code-layer.ts +125 -22
  167. package/corpus/templates/design/shared/generation-session.ts +41 -0
  168. package/corpus/templates/dispatch/app/global.css +79 -35
  169. package/corpus/templates/dispatch/app/routes/integrations.tsx +8 -7
  170. package/corpus/templates/dispatch/changelog/2026-06-29-integration-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  171. package/corpus/templates/forms/app/components/layout/Layout.tsx +6 -2
  172. package/corpus/templates/forms/app/global.css +64 -35
  173. package/corpus/templates/forms/app/pages/FormsListPage.tsx +2 -2
  174. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +3 -3
  175. package/corpus/templates/forms/changelog/2026-06-29-form-list-and-insight-layouts-adapt-when-the-agent-sidebar.md +6 -0
  176. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -1
  177. package/corpus/templates/macros/app/global.css +25 -9
  178. package/corpus/templates/macros/changelog/2026-06-29-macro-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  179. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +6 -2
  180. package/corpus/templates/mail/app/global.css +42 -36
  181. package/corpus/templates/mail/app/pages/InboxPage.tsx +1 -1
  182. package/corpus/templates/mail/changelog/2026-06-29-the-contact-panel-now-adapts-to-the-available-mail-pane-width.md +6 -0
  183. package/corpus/templates/plan/app/components/layout/Layout.tsx +3 -1
  184. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +6 -7
  185. package/corpus/templates/plan/app/global.css +74 -42
  186. package/corpus/templates/plan/changelog/2026-06-29-plan-document-blocks-adapt-to-the-available-document-width.md +6 -0
  187. package/corpus/templates/plan/changelog/2026-06-29-plan-titles-and-summaries-can-be-edited-inline-without-focus.md +6 -0
  188. package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -1
  189. package/corpus/templates/slides/app/global.css +49 -33
  190. package/corpus/templates/slides/changelog/2026-06-29-slide-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  191. package/corpus/templates/videos/app/components/layout/Layout.tsx +3 -1
  192. package/corpus/templates/videos/app/global.css +35 -35
  193. package/corpus/templates/videos/changelog/2026-06-29-video-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  194. package/dist/cli/mcp.d.ts.map +1 -1
  195. package/dist/cli/mcp.js +10 -0
  196. package/dist/cli/mcp.js.map +1 -1
  197. package/dist/cli/skills.d.ts.map +1 -1
  198. package/dist/cli/skills.js +58 -12
  199. package/dist/cli/skills.js.map +1 -1
  200. package/dist/client/error-format.d.ts.map +1 -1
  201. package/dist/client/error-format.js +17 -0
  202. package/dist/client/error-format.js.map +1 -1
  203. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  204. package/dist/client/extensions/ExtensionViewer.js +3 -4
  205. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  206. package/dist/client/guided-questions.d.ts +4 -0
  207. package/dist/client/guided-questions.d.ts.map +1 -1
  208. package/dist/client/guided-questions.js +16 -7
  209. package/dist/client/guided-questions.js.map +1 -1
  210. package/dist/client/onboarding/OnboardingPanel.js +26 -1
  211. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  212. package/dist/client/resources/BuiltinCapabilityDetail.d.ts.map +1 -1
  213. package/dist/client/resources/BuiltinCapabilityDetail.js +1 -1
  214. package/dist/client/resources/BuiltinCapabilityDetail.js.map +1 -1
  215. package/dist/client/resources/use-builtin-capabilities.d.ts +1 -1
  216. package/dist/client/resources/use-builtin-capabilities.d.ts.map +1 -1
  217. package/dist/client/resources/use-builtin-capabilities.js +2 -1
  218. package/dist/client/resources/use-builtin-capabilities.js.map +1 -1
  219. package/dist/client/session-replay.d.ts.map +1 -1
  220. package/dist/client/session-replay.js +31 -0
  221. package/dist/client/session-replay.js.map +1 -1
  222. package/dist/client/sharing/ShareButton.d.ts +14 -0
  223. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  224. package/dist/client/sharing/ShareButton.js +36 -7
  225. package/dist/client/sharing/ShareButton.js.map +1 -1
  226. package/dist/coding-tools/index.js +1 -1
  227. package/dist/coding-tools/index.js.map +1 -1
  228. package/dist/collab/routes.d.ts +1 -1
  229. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  230. package/dist/mcp/index.d.ts +2 -0
  231. package/dist/mcp/index.d.ts.map +1 -1
  232. package/dist/mcp/index.js +1 -0
  233. package/dist/mcp/index.js.map +1 -1
  234. package/dist/mcp/screen-memory-stdio.d.ts +6 -0
  235. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -0
  236. package/dist/mcp/screen-memory-stdio.js +213 -0
  237. package/dist/mcp/screen-memory-stdio.js.map +1 -0
  238. package/dist/mcp-client/builtin-capabilities.d.ts +1 -1
  239. package/dist/mcp-client/builtin-capabilities.d.ts.map +1 -1
  240. package/dist/mcp-client/builtin-capabilities.js +10 -0
  241. package/dist/mcp-client/builtin-capabilities.js.map +1 -1
  242. package/dist/mcp-client/index.d.ts +1 -0
  243. package/dist/mcp-client/index.d.ts.map +1 -1
  244. package/dist/mcp-client/index.js +1 -0
  245. package/dist/mcp-client/index.js.map +1 -1
  246. package/dist/mcp-client/screen-memory-local.d.ts +61 -0
  247. package/dist/mcp-client/screen-memory-local.d.ts.map +1 -0
  248. package/dist/mcp-client/screen-memory-local.js +336 -0
  249. package/dist/mcp-client/screen-memory-local.js.map +1 -0
  250. package/dist/notifications/routes.d.ts +2 -2
  251. package/dist/observability/routes.d.ts +8 -8
  252. package/dist/onboarding/types.d.ts +7 -0
  253. package/dist/onboarding/types.d.ts.map +1 -1
  254. package/dist/onboarding/types.js.map +1 -1
  255. package/dist/resources/handlers.d.ts +2 -2
  256. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  257. package/dist/server/agent-chat-plugin.js +26 -0
  258. package/dist/server/agent-chat-plugin.js.map +1 -1
  259. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  260. package/dist/server/agents-bundle.d.ts.map +1 -1
  261. package/dist/server/agents-bundle.js +22 -7
  262. package/dist/server/agents-bundle.js.map +1 -1
  263. package/dist/server/transcribe-voice.d.ts +1 -1
  264. package/dist/styles/agent-native.css +5 -0
  265. package/dist/templates/default/app/global.css +35 -35
  266. package/docs/content/locales/ar-SA/template-design.mdx +6 -0
  267. package/docs/content/locales/de-DE/template-design.mdx +8 -0
  268. package/docs/content/locales/es-ES/template-design.mdx +10 -2
  269. package/docs/content/locales/fr-FR/template-design.mdx +10 -2
  270. package/docs/content/locales/hi-IN/template-design.mdx +7 -0
  271. package/docs/content/locales/ja-JP/template-design.mdx +7 -0
  272. package/docs/content/locales/ko-KR/template-design.mdx +7 -0
  273. package/docs/content/locales/pt-BR/template-design.mdx +9 -2
  274. package/docs/content/locales/zh-CN/template-design.mdx +6 -0
  275. package/docs/content/locales/zh-TW/template-design.mdx +6 -0
  276. package/docs/content/template-design.mdx +9 -2
  277. package/package.json +1 -1
  278. package/src/templates/default/app/global.css +35 -35
  279. package/corpus/templates/design/app/components/design/VariantGrid.tsx +0 -189
  280. package/corpus/templates/design/app/components/design/VariantHandoffCard.tsx +0 -115
  281. package/corpus/templates/design/app/hooks/use-variant-flow.ts +0 -342
@@ -0,0 +1,29 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { queryScreenMemoryContext } from "@agent-native/core/mcp-client";
3
+ import { z } from "zod";
4
+
5
+ export default defineAction({
6
+ description:
7
+ "Search recent local Clips Screen Memory context from this machine. Returns bounded OCR/context snippets only; use get-screen-memory-status first if availability is unclear.",
8
+ schema: z.object({
9
+ query: z
10
+ .string()
11
+ .optional()
12
+ .describe("Optional case-insensitive search text"),
13
+ sinceMinutes: z.coerce
14
+ .number()
15
+ .min(0)
16
+ .optional()
17
+ .describe("Only include captures newer than this many minutes"),
18
+ limit: z.coerce
19
+ .number()
20
+ .int()
21
+ .min(1)
22
+ .max(50)
23
+ .default(10)
24
+ .describe("Maximum number of context snippets to return"),
25
+ }),
26
+ http: { method: "GET" },
27
+ readOnly: true,
28
+ run: async (args) => queryScreenMemoryContext(args),
29
+ });
@@ -455,12 +455,12 @@ export default defineAction({
455
455
  schema: z.object({}),
456
456
  http: false,
457
457
  run: async () => {
458
- // Scoped to the requesting browser tab so each tab exposes the clip IT is
458
+ // Scoped to the requesting browser tab so each tab exposes the clip it is
459
459
  // showing, falling back to the global key for CLI/external agents.
460
460
  const navigation = (await readAppStateForCurrentTab(
461
461
  "navigation",
462
462
  )) as NavigationState | null;
463
- const playerState = await readAppState("player-state");
463
+ const playerState = await readAppStateForCurrentTab("player-state");
464
464
  const editorDraft = await readAppState("editor-draft");
465
465
  const selection = await readAppStateForCurrentTab("selection");
466
466
  const organizationId = await getActiveOrganizationId();
@@ -584,7 +584,7 @@ export function LibraryLayout({ children }: LibraryLayoutProps) {
584
584
  </Tooltip>
585
585
  </div>
586
586
  )}
587
- <main className="flex min-h-0 flex-1 flex-col overflow-y-auto">
587
+ <main className="agent-native-app-main flex min-h-0 flex-1 flex-col overflow-y-auto">
588
588
  <PageHeaderSlotProvider slot={headerSlot}>
589
589
  {children}
590
590
  </PageHeaderSlotProvider>
@@ -8,63 +8,63 @@
8
8
 
9
9
  :root {
10
10
  --background: 0 0% 100%;
11
- --foreground: 220 10% 10%;
11
+ --foreground: 0 0% 10%;
12
12
  --card: 0 0% 100%;
13
- --card-foreground: 220 10% 10%;
13
+ --card-foreground: 0 0% 10%;
14
14
  --popover: 0 0% 100%;
15
- --popover-foreground: 220 10% 10%;
16
- --primary: 220 10% 15%;
15
+ --popover-foreground: 0 0% 10%;
16
+ --primary: 0 0% 15%;
17
17
  --primary-foreground: 0 0% 100%;
18
- --secondary: 220 10% 95%;
19
- --secondary-foreground: 220 10% 15%;
20
- --muted: 220 10% 95%;
21
- --muted-foreground: 220 5% 45%;
22
- --accent: 220 10% 95%;
23
- --accent-foreground: 220 10% 15%;
18
+ --secondary: 0 0% 95%;
19
+ --secondary-foreground: 0 0% 15%;
20
+ --muted: 0 0% 95%;
21
+ --muted-foreground: 0 0% 45%;
22
+ --accent: 0 0% 95%;
23
+ --accent-foreground: 0 0% 15%;
24
24
  --destructive: 0 84% 60%;
25
25
  --destructive-foreground: 0 0% 98%;
26
- --border: 220 10% 90%;
27
- --input: 220 10% 90%;
28
- --ring: 220 10% 40%;
26
+ --border: 0 0% 90%;
27
+ --input: 0 0% 90%;
28
+ --ring: 0 0% 40%;
29
29
  --radius: 0.5rem;
30
- --sidebar-background: 220 10% 97%;
31
- --sidebar-foreground: 220 5% 45%;
32
- --sidebar-primary: 220 10% 15%;
30
+ --sidebar-background: 0 0% 97%;
31
+ --sidebar-foreground: 0 0% 45%;
32
+ --sidebar-primary: 0 0% 15%;
33
33
  --sidebar-primary-foreground: 0 0% 100%;
34
- --sidebar-accent: 220 10% 95%;
35
- --sidebar-accent-foreground: 220 10% 15%;
36
- --sidebar-border: 220 10% 90%;
37
- --sidebar-ring: 220 10% 40%;
34
+ --sidebar-accent: 0 0% 95%;
35
+ --sidebar-accent-foreground: 0 0% 15%;
36
+ --sidebar-border: 0 0% 90%;
37
+ --sidebar-ring: 0 0% 40%;
38
38
  }
39
39
 
40
40
  .dark {
41
- --background: 220 6% 6%;
41
+ --background: 0 0% 13%;
42
42
  --foreground: 0 0% 90%;
43
- --card: 220 5% 6%;
43
+ --card: 0 0% 15%;
44
44
  --card-foreground: 0 0% 90%;
45
- --popover: 220 5% 6%;
45
+ --popover: 0 0% 15%;
46
46
  --popover-foreground: 0 0% 90%;
47
47
  --primary: 0 0% 75%;
48
- --primary-foreground: 220 6% 6%;
49
- --secondary: 220 4% 12%;
48
+ --primary-foreground: 0 0% 10%;
49
+ --secondary: 0 0% 18%;
50
50
  --secondary-foreground: 0 0% 90%;
51
- --muted: 220 4% 10%;
52
- --muted-foreground: 220 4% 60%;
53
- --accent: 220 4% 13%;
51
+ --muted: 0 0% 16%;
52
+ --muted-foreground: 0 0% 60%;
53
+ --accent: 0 0% 18%;
54
54
  --accent-foreground: 0 0% 90%;
55
55
  --destructive: 0 63% 51%;
56
56
  --destructive-foreground: 0 0% 98%;
57
- --border: 220 4% 14%;
58
- --input: 220 4% 14%;
57
+ --border: 0 0% 24%;
58
+ --input: 0 0% 24%;
59
59
  --ring: 0 0% 60%;
60
60
  --radius: 0.5rem;
61
- --sidebar-background: 220 6% 4%;
62
- --sidebar-foreground: 220 4% 60%;
61
+ --sidebar-background: 0 0% 10%;
62
+ --sidebar-foreground: 0 0% 60%;
63
63
  --sidebar-primary: 0 0% 75%;
64
- --sidebar-primary-foreground: 220 6% 6%;
65
- --sidebar-accent: 220 4% 10%;
64
+ --sidebar-primary-foreground: 0 0% 10%;
65
+ --sidebar-accent: 0 0% 16%;
66
66
  --sidebar-accent-foreground: 0 0% 90%;
67
- --sidebar-border: 220 4% 10%;
67
+ --sidebar-border: 0 0% 20%;
68
68
  --sidebar-ring: 0 0% 60%;
69
69
  }
70
70
 
@@ -76,6 +76,18 @@
76
76
  }
77
77
  }
78
78
 
79
+ @container agent-native-main (min-width: 980px) {
80
+ .clips-meeting-detail-skeleton-grid,
81
+ .clips-meeting-detail-grid {
82
+ grid-template-columns: minmax(0, 1fr) 380px;
83
+ grid-template-rows: minmax(0, 1fr);
84
+ }
85
+
86
+ .clips-meeting-notes-panel {
87
+ min-height: 0;
88
+ }
89
+ }
90
+
79
91
  ::-webkit-scrollbar {
80
92
  width: 5px;
81
93
  height: 5px;
@@ -550,7 +550,7 @@ export default function MeetingDetailRoute() {
550
550
  <Skeleton className="h-6 w-32 mb-4" />
551
551
  <Skeleton className="h-9 w-96 mb-2" />
552
552
  <Skeleton className="h-4 w-64 mb-6" />
553
- <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
553
+ <div className="clips-meeting-detail-skeleton-grid grid grid-cols-1 gap-6">
554
554
  <Skeleton className="h-[480px] w-full" />
555
555
  <Skeleton className="h-[480px] w-full" />
556
556
  </div>
@@ -765,11 +765,11 @@ export default function MeetingDetailRoute() {
765
765
  )}
766
766
  </div>
767
767
 
768
- <div className="grid grid-cols-1 lg:grid-cols-[1fr_380px] lg:grid-rows-[minmax(0,1fr)] gap-6 flex-1 min-h-0">
768
+ <div className="clips-meeting-detail-grid grid grid-cols-1 gap-6 flex-1 min-h-0">
769
769
  {/* Two-tone canvas: user notes (black) + AI summary/bullets (gray) */}
770
770
  <div
771
771
  className={cn(
772
- "rounded-lg border border-border bg-background min-h-[480px] lg:min-h-0 overflow-hidden flex flex-col",
772
+ "clips-meeting-notes-panel rounded-lg border border-border bg-background min-h-[480px] overflow-hidden flex flex-col",
773
773
  notesJustArrived && "animate-in fade-in duration-500",
774
774
  )}
775
775
  >
@@ -6,6 +6,7 @@ import {
6
6
  agentNativePath,
7
7
  getBrowserTabId,
8
8
  readClientAppState,
9
+ writeClientAppState,
9
10
  useChangeVersions,
10
11
  useT,
11
12
  } from "@agent-native/core/client";
@@ -29,10 +30,10 @@ import {
29
30
  IconFileText,
30
31
  IconSparkles,
31
32
  IconExternalLink,
32
- IconLayoutSidebarRightExpand,
33
+ IconMessageDots,
33
34
  } from "@tabler/icons-react";
34
35
  import { useQuery } from "@tanstack/react-query";
35
- import { useCallback, useEffect, useRef, useState } from "react";
36
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
36
37
  import { useParams, useNavigate, NavLink, useSearchParams } from "react-router";
37
38
  import { toast } from "sonner";
38
39
 
@@ -240,6 +241,13 @@ export default function RecordingPage() {
240
241
  const [processingTimeout, setProcessingTimeout] = useState(false);
241
242
  const [retryingFinalize, setRetryingFinalize] = useState(false);
242
243
  const [downloading, setDownloading] = useState(false);
244
+ const browserTabId = useMemo(() => getBrowserTabId(), []);
245
+ const recordingScope = useMemo(
246
+ () =>
247
+ recordingId ? { type: "recording" as const, id: recordingId } : null,
248
+ [recordingId],
249
+ );
250
+ const lastPlayerStateWriteRef = useRef(0);
243
251
 
244
252
  useEffect(() => {
245
253
  if (
@@ -250,8 +258,9 @@ export default function RecordingPage() {
250
258
  panelParam === "settings"
251
259
  ) {
252
260
  setPanel(panelParam);
261
+ if (isCompactLayout) setSidePanelOpen(true);
253
262
  }
254
- }, [panelParam]);
263
+ }, [isCompactLayout, panelParam]);
255
264
 
256
265
  const playerDataQ = useActionQuery<any>(
257
266
  "get-recording-player-data",
@@ -315,6 +324,24 @@ export default function RecordingPage() {
315
324
  const visibleTitle = recording
316
325
  ? displayRecordingTitle(recording.title)
317
326
  : "Untitled Clip";
327
+ useEffect(() => {
328
+ if (!recording?.id) return;
329
+ const now = Date.now();
330
+ if (now - lastPlayerStateWriteRef.current < 1000) return;
331
+ lastPlayerStateWriteRef.current = now;
332
+ void writeClientAppState(
333
+ `player-state:${browserTabId}`,
334
+ {
335
+ view: "recording",
336
+ recordingId: recording.id,
337
+ currentMs: Math.max(0, Math.round(currentMs)),
338
+ durationMs: recording.durationMs,
339
+ panel,
340
+ updatedAt: new Date(now).toISOString(),
341
+ },
342
+ { requestSource: browserTabId },
343
+ ).catch(() => {});
344
+ }, [browserTabId, currentMs, panel, recording?.durationMs, recording?.id]);
318
345
  const appStateVersion = useChangeVersions(["app-state", "action"]);
319
346
  const generatedWorkflowQ = useQuery<GeneratedWorkflowState | null>({
320
347
  queryKey: [
@@ -777,7 +804,8 @@ export default function RecordingPage() {
777
804
  className="mt-0 flex flex-1 min-h-0 flex-col data-[state=inactive]:hidden"
778
805
  >
779
806
  <AgentPanel
780
- browserTabId={getBrowserTabId()}
807
+ browserTabId={browserTabId}
808
+ scope={recordingScope}
781
809
  emptyStateText={t("recordingPage.askAboutClip")}
782
810
  dynamicSuggestions={false}
783
811
  chatNotice={
@@ -1047,20 +1075,19 @@ export default function RecordingPage() {
1047
1075
  ) : null}
1048
1076
 
1049
1077
  {!editing ? (
1050
- <Tooltip>
1051
- <TooltipTrigger asChild>
1052
- <Button
1053
- variant="outline"
1054
- size="icon"
1055
- className="xl:hidden"
1056
- onClick={() => setSidePanelOpen(true)}
1057
- aria-label={t("recordingPage.details")}
1058
- >
1059
- <IconLayoutSidebarRightExpand className="h-4 w-4" />
1060
- </Button>
1061
- </TooltipTrigger>
1062
- <TooltipContent>{t("recordingPage.details")}</TooltipContent>
1063
- </Tooltip>
1078
+ <Button
1079
+ variant="outline"
1080
+ size="sm"
1081
+ className="gap-1.5 xl:hidden"
1082
+ onClick={() => {
1083
+ setPanel("agent");
1084
+ setSidePanelOpen(true);
1085
+ }}
1086
+ aria-label={t("recordingPage.askAboutClip")}
1087
+ >
1088
+ <IconMessageDots className="h-4 w-4" />
1089
+ <span>{t("recordingPage.agent")}</span>
1090
+ </Button>
1064
1091
  ) : null}
1065
1092
 
1066
1093
  <ShareRecordingPopover
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-06-29
4
+ ---
5
+
6
+ Meeting detail layouts now adapt cleanly when the agent sidebar narrows the app.
@@ -0,0 +1,5 @@
1
+ ---
2
+ type: added
3
+ ---
4
+
5
+ Screen Memory keeps a local rolling screen buffer and recent app/window context for local agent context.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-06-29
4
+ ---
5
+
6
+ Video chat is easier to find on recording pages and S3 setup saves from onboarding.
@@ -1,34 +1,34 @@
1
1
  :root {
2
2
  color-scheme: light dark;
3
3
  --background: #ffffff;
4
- --foreground: hsl(220 10% 10%);
4
+ --foreground: hsl(0 0% 10%);
5
5
  --card: #ffffff;
6
- --primary: hsl(220 10% 15%);
6
+ --primary: hsl(0 0% 15%);
7
7
  --primary-foreground: #ffffff;
8
- --muted: hsl(220 10% 95%);
9
- --muted-foreground: hsl(220 5% 45%);
10
- --border: hsl(220 10% 90%);
11
- --ring: hsl(220 10% 40%);
8
+ --muted: hsl(0 0% 95%);
9
+ --muted-foreground: hsl(0 0% 45%);
10
+ --border: hsl(0 0% 90%);
11
+ --ring: hsl(0 0% 40%);
12
12
  --danger: #b42318;
13
13
  --bg: #ffffff;
14
- --surface: #f5f6f9;
15
- --surface-hover: #eef0f5;
16
- --surface-strong: #e8ebf2;
17
- --fg: #0f172a;
18
- --fg-muted: #64748b;
19
- --fg-subtle: #94a3b8;
20
- --border-strong: #d4d9e4;
14
+ --surface: #f7f7f7;
15
+ --surface-hover: #f0f0f0;
16
+ --surface-strong: #ebebeb;
17
+ --fg: #171717;
18
+ --fg-muted: #737373;
19
+ --fg-subtle: #a3a3a3;
20
+ --border-strong: #d9d9d9;
21
21
  --status-ok: #22c55e;
22
22
  --status-warn: #f97316;
23
- --brand: #18181b;
24
- --brand-hover: #27272a;
25
- --brand-ring: rgba(24, 24, 27, 0.28);
23
+ --brand: #1a1a1a;
24
+ --brand-hover: #2e2e2e;
25
+ --brand-ring: rgba(26, 26, 26, 0.28);
26
26
  --radius: 12px;
27
27
  --radius-sm: 8px;
28
28
  --radius-pill: 999px;
29
- --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06);
29
+ --shadow-sm: 0 1px 2px rgba(23, 23, 23, 0.06);
30
30
  --shadow-md:
31
- 0 4px 16px rgba(15, 23, 42, 0.08), 0 2px 4px rgba(15, 23, 42, 0.04);
31
+ 0 4px 16px rgba(23, 23, 23, 0.08), 0 2px 4px rgba(23, 23, 23, 0.04);
32
32
  font-family:
33
33
  -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto,
34
34
  ui-sans-serif, system-ui, sans-serif;
@@ -41,28 +41,28 @@
41
41
 
42
42
  @media (prefers-color-scheme: dark) {
43
43
  :root {
44
- --background: hsl(222 18% 8%);
45
- --foreground: hsl(210 20% 96%);
46
- --card: hsl(222 18% 9%);
47
- --primary: hsl(210 20% 96%);
48
- --primary-foreground: hsl(222 18% 8%);
49
- --muted: hsl(222 14% 16%);
50
- --muted-foreground: hsl(216 10% 68%);
51
- --border: hsl(222 12% 22%);
52
- --ring: hsl(216 10% 72%);
44
+ --background: hsl(0 0% 13%);
45
+ --foreground: hsl(0 0% 96%);
46
+ --card: hsl(0 0% 15%);
47
+ --primary: hsl(0 0% 96%);
48
+ --primary-foreground: hsl(0 0% 10%);
49
+ --muted: hsl(0 0% 16%);
50
+ --muted-foreground: hsl(0 0% 68%);
51
+ --border: hsl(0 0% 24%);
52
+ --ring: hsl(0 0% 72%);
53
53
  --danger: hsl(6 88% 70%);
54
- --bg: #0f1115;
55
- --surface: #181b23;
56
- --surface-hover: #1e2230;
57
- --surface-strong: #252938;
58
- --fg: #f1f5f9;
59
- --fg-muted: #94a3b8;
60
- --fg-subtle: #64748b;
61
- --border: #252938;
62
- --border-strong: #323747;
63
- --brand: #f4f4f5;
64
- --brand-hover: #e4e4e7;
65
- --brand-ring: rgba(244, 244, 245, 0.28);
54
+ --bg: #212121;
55
+ --surface: #262626;
56
+ --surface-hover: #2e2e2e;
57
+ --surface-strong: #3d3d3d;
58
+ --fg: #f5f5f5;
59
+ --fg-muted: #a3a3a3;
60
+ --fg-subtle: #737373;
61
+ --border: #3d3d3d;
62
+ --border-strong: #4d4d4d;
63
+ --brand: #f5f5f5;
64
+ --brand-hover: #e5e5e5;
65
+ --brand-ring: rgba(245, 245, 245, 0.28);
66
66
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
67
67
  --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.5), 0 2px 6px rgba(0, 0, 0, 0.3);
68
68
  }