@agent-native/core 0.86.1 → 0.88.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 (1282) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +18 -0
  3. package/corpus/core/docs/content/agent-native-toolkit.mdx +162 -0
  4. package/corpus/core/docs/content/components.mdx +13 -0
  5. package/corpus/core/docs/content/creating-templates.mdx +7 -0
  6. package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +73 -0
  7. package/corpus/core/docs/content/locales/ar-SA/components.mdx +9 -0
  8. package/corpus/core/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
  9. package/corpus/core/docs/content/locales/ar-SA/sharing.mdx +15 -7
  10. package/corpus/core/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
  11. package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +7 -0
  12. package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +6 -0
  13. package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +77 -0
  14. package/corpus/core/docs/content/locales/de-DE/components.mdx +9 -0
  15. package/corpus/core/docs/content/locales/de-DE/creating-templates.mdx +2 -0
  16. package/corpus/core/docs/content/locales/de-DE/sharing.mdx +15 -7
  17. package/corpus/core/docs/content/locales/de-DE/template-analytics.mdx +6 -0
  18. package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +7 -0
  19. package/corpus/core/docs/content/locales/de-DE/tracking.mdx +6 -0
  20. package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +77 -0
  21. package/corpus/core/docs/content/locales/es-ES/components.mdx +9 -0
  22. package/corpus/core/docs/content/locales/es-ES/creating-templates.mdx +2 -0
  23. package/corpus/core/docs/content/locales/es-ES/sharing.mdx +15 -7
  24. package/corpus/core/docs/content/locales/es-ES/template-analytics.mdx +6 -0
  25. package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +7 -0
  26. package/corpus/core/docs/content/locales/es-ES/tracking.mdx +6 -0
  27. package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +79 -0
  28. package/corpus/core/docs/content/locales/fr-FR/components.mdx +9 -0
  29. package/corpus/core/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
  30. package/corpus/core/docs/content/locales/fr-FR/sharing.mdx +15 -7
  31. package/corpus/core/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
  32. package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +7 -0
  33. package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +6 -0
  34. package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +74 -0
  35. package/corpus/core/docs/content/locales/hi-IN/components.mdx +9 -0
  36. package/corpus/core/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
  37. package/corpus/core/docs/content/locales/hi-IN/sharing.mdx +15 -7
  38. package/corpus/core/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
  39. package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +7 -0
  40. package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +6 -0
  41. package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +67 -0
  42. package/corpus/core/docs/content/locales/ja-JP/components.mdx +9 -0
  43. package/corpus/core/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
  44. package/corpus/core/docs/content/locales/ja-JP/sharing.mdx +15 -7
  45. package/corpus/core/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
  46. package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +7 -0
  47. package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +6 -0
  48. package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +63 -0
  49. package/corpus/core/docs/content/locales/ko-KR/components.mdx +9 -0
  50. package/corpus/core/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
  51. package/corpus/core/docs/content/locales/ko-KR/sharing.mdx +15 -7
  52. package/corpus/core/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
  53. package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +7 -0
  54. package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +6 -0
  55. package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +77 -0
  56. package/corpus/core/docs/content/locales/pt-BR/components.mdx +9 -0
  57. package/corpus/core/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
  58. package/corpus/core/docs/content/locales/pt-BR/sharing.mdx +15 -7
  59. package/corpus/core/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
  60. package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +7 -0
  61. package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +6 -0
  62. package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +61 -0
  63. package/corpus/core/docs/content/locales/zh-CN/components.mdx +9 -0
  64. package/corpus/core/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
  65. package/corpus/core/docs/content/locales/zh-CN/sharing.mdx +15 -7
  66. package/corpus/core/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
  67. package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +7 -0
  68. package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +6 -0
  69. package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +61 -0
  70. package/corpus/core/docs/content/locales/zh-TW/components.mdx +9 -0
  71. package/corpus/core/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
  72. package/corpus/core/docs/content/locales/zh-TW/sharing.mdx +15 -7
  73. package/corpus/core/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
  74. package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +7 -0
  75. package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +6 -0
  76. package/corpus/core/docs/content/sharing.mdx +39 -7
  77. package/corpus/core/docs/content/template-analytics.mdx +6 -0
  78. package/corpus/core/docs/content/template-clips.mdx +7 -0
  79. package/corpus/core/docs/content/tracking.mdx +6 -0
  80. package/corpus/core/package.json +9 -1
  81. package/corpus/core/src/application-state/emitter.ts +37 -5
  82. package/corpus/core/src/cli/create.ts +55 -3
  83. package/corpus/core/src/cli/workspacify.ts +10 -4
  84. package/corpus/core/src/client/components/ui/dialog.tsx +1 -91
  85. package/corpus/core/src/client/components/ui/dropdown-menu.tsx +1 -191
  86. package/corpus/core/src/client/components/ui/hover-card.tsx +1 -29
  87. package/corpus/core/src/client/components/ui/popover.tsx +1 -31
  88. package/corpus/core/src/client/components/ui/sheet.tsx +1 -96
  89. package/corpus/core/src/client/components/ui/tooltip.tsx +1 -53
  90. package/corpus/core/src/secrets/crypto.ts +47 -9
  91. package/corpus/core/src/server/action-discovery.ts +4 -0
  92. package/corpus/core/src/server/action-routes.ts +8 -1
  93. package/corpus/core/src/server/agent-access.ts +72 -0
  94. package/corpus/core/src/server/h3-helpers.ts +14 -2
  95. package/corpus/core/src/server/index.ts +28 -0
  96. package/corpus/core/src/server/request-context.ts +64 -7
  97. package/corpus/core/src/shared/agent-access.ts +112 -0
  98. package/corpus/core/src/shared/agent-readable-resource.ts +111 -0
  99. package/corpus/core/src/shared/index.ts +23 -0
  100. package/corpus/core/src/sharing/actions/create-agent-resource-link.ts +91 -0
  101. package/corpus/core/src/sharing/registry.ts +19 -0
  102. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  103. package/corpus/core/src/vite/client.ts +1 -0
  104. package/corpus/templates/analytics/AGENTS.md +4 -0
  105. package/corpus/templates/analytics/actions/get-sql-dashboard.ts +9 -113
  106. package/corpus/templates/analytics/app/components/InlineMetric.tsx +2 -2
  107. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +7 -2
  108. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +16 -11
  109. package/corpus/templates/analytics/app/components/dashboard/DateRangePicker.tsx +2 -1
  110. package/corpus/templates/analytics/app/components/dashboard/MetricCard.tsx +7 -2
  111. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +6 -3
  112. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +6 -1
  113. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +7 -2
  114. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +15 -11
  115. package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +7 -1
  116. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +7 -2
  117. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +16 -16
  118. package/corpus/templates/analytics/app/components/layout/HeaderActions.tsx +1 -2
  119. package/corpus/templates/analytics/app/components/layout/MobileNav.tsx +5 -2
  120. package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +6 -6
  121. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +3 -4
  122. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +12 -9
  123. package/corpus/templates/analytics/app/components/ui/calendar.tsx +1 -1
  124. package/corpus/templates/analytics/app/pages/Agents.tsx +19 -19
  125. package/corpus/templates/analytics/app/pages/DataDictionary.tsx +21 -21
  126. package/corpus/templates/analytics/app/pages/DataSources.tsx +28 -28
  127. package/corpus/templates/analytics/app/pages/NotFound.tsx +1 -2
  128. package/corpus/templates/analytics/app/pages/Placeholder.tsx +1 -2
  129. package/corpus/templates/analytics/app/pages/Settings.tsx +16 -16
  130. package/corpus/templates/analytics/app/pages/adhoc/DashboardSkeleton.tsx +2 -3
  131. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +13 -8
  132. package/corpus/templates/analytics/app/pages/adhoc/_shared/components/DateRangeInput.tsx +2 -1
  133. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ChartTypePicker.tsx +4 -2
  134. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/DateRangePicker.tsx +2 -1
  135. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventCombobox.tsx +7 -7
  136. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventPanel.tsx +1 -2
  137. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventRow.tsx +1 -2
  138. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ExplorerChart.tsx +8 -3
  139. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/FilterBuilder.tsx +4 -5
  140. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/GroupByPicker.tsx +1 -2
  141. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyCombobox.tsx +7 -7
  142. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyValueCombobox.tsx +7 -7
  143. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +1 -1
  144. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +16 -16
  145. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +21 -16
  146. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +32 -32
  147. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +14 -14
  148. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +13 -14
  149. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +21 -13
  150. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +28 -23
  151. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewSqlPopover.tsx +12 -12
  152. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +15 -15
  153. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +33 -29
  154. package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +7 -8
  155. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +19 -19
  156. package/corpus/templates/analytics/app/pages/analyses/LegacyFusionAnalysis.tsx +15 -11
  157. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +42 -23
  158. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +12 -7
  159. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +12 -12
  160. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +25 -25
  161. package/corpus/templates/analytics/app/root.tsx +2 -2
  162. package/corpus/templates/analytics/app/routes/catalog.tsx +8 -8
  163. package/corpus/templates/analytics/package.json +1 -0
  164. package/corpus/templates/analytics/server/db/index.ts +14 -0
  165. package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +156 -0
  166. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +59 -59
  167. package/corpus/templates/analytics/server/routes/[...page].get.ts +92 -25
  168. package/corpus/templates/analytics/server/routes/api/analysis-agent-context.json.get.ts +94 -0
  169. package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +109 -0
  170. package/corpus/templates/analytics/shared/resource-agent-access.ts +6 -0
  171. package/corpus/templates/analytics/shared/session-replay-agent-access.ts +14 -3
  172. package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +2 -3
  173. package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +9 -9
  174. package/corpus/templates/assets/app/components/layout/Header.tsx +4 -2
  175. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
  176. package/corpus/templates/assets/app/components/layout/PageShell.tsx +5 -6
  177. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +12 -12
  178. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +8 -8
  179. package/corpus/templates/assets/app/components/library/EditLibraryDialog.tsx +7 -7
  180. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +8 -8
  181. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +2 -3
  182. package/corpus/templates/assets/app/root.tsx +1 -1
  183. package/corpus/templates/assets/app/routes/asset.$id.tsx +19 -19
  184. package/corpus/templates/assets/app/routes/audit.tsx +14 -15
  185. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +54 -49
  186. package/corpus/templates/assets/app/routes/library.tsx +31 -31
  187. package/corpus/templates/assets/app/routes/settings.tsx +18 -18
  188. package/corpus/templates/assets/package.json +1 -0
  189. package/corpus/templates/brain/app/components/brain/CanonicalPreviewSheet.tsx +5 -6
  190. package/corpus/templates/brain/app/components/brain/Surface.tsx +8 -3
  191. package/corpus/templates/brain/app/components/layout/Layout.tsx +7 -7
  192. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +6 -6
  193. package/corpus/templates/brain/app/routes/knowledge.tsx +19 -19
  194. package/corpus/templates/brain/app/routes/ops.tsx +18 -18
  195. package/corpus/templates/brain/app/routes/review.tsx +27 -22
  196. package/corpus/templates/brain/app/routes/search.tsx +20 -20
  197. package/corpus/templates/brain/app/routes/settings.tsx +22 -22
  198. package/corpus/templates/brain/app/routes/sources.tsx +23 -23
  199. package/corpus/templates/brain/package.json +1 -0
  200. package/corpus/templates/calendar/app/components/ThemeToggle.tsx +5 -5
  201. package/corpus/templates/calendar/app/components/TimezoneCombobox.tsx +6 -6
  202. package/corpus/templates/calendar/app/components/booking/BookingConfirmation.tsx +1 -2
  203. package/corpus/templates/calendar/app/components/booking/BookingForm.tsx +8 -9
  204. package/corpus/templates/calendar/app/components/booking/DatePicker.tsx +2 -2
  205. package/corpus/templates/calendar/app/components/booking/TimeSlotPicker.tsx +2 -3
  206. package/corpus/templates/calendar/app/components/calendar/AddCalendarDialog.tsx +15 -10
  207. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +6 -6
  208. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +27 -27
  209. package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +12 -9
  210. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +13 -10
  211. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +7 -7
  212. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -21
  213. package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +11 -11
  214. package/corpus/templates/calendar/app/components/calendar/EventOptionControls.tsx +9 -9
  215. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +9 -9
  216. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +6 -6
  217. package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +3 -3
  218. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +1 -1
  219. package/corpus/templates/calendar/app/components/calendar/GuestNotificationDialog.tsx +10 -8
  220. package/corpus/templates/calendar/app/components/calendar/IntegrationsSidebar.tsx +12 -12
  221. package/corpus/templates/calendar/app/components/calendar/KeyboardShortcutsHelp.tsx +2 -2
  222. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +1 -1
  223. package/corpus/templates/calendar/app/components/calendar/PeopleSearchDialog.tsx +6 -6
  224. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +6 -6
  225. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +2 -2
  226. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +16 -16
  227. package/corpus/templates/calendar/app/pages/AvailabilitySettings.tsx +11 -11
  228. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +50 -45
  229. package/corpus/templates/calendar/app/pages/BookingPage.tsx +2 -2
  230. package/corpus/templates/calendar/app/pages/BookingsList.tsx +12 -12
  231. package/corpus/templates/calendar/app/pages/CalendarView.tsx +17 -17
  232. package/corpus/templates/calendar/app/pages/ManageBookingPage.tsx +13 -13
  233. package/corpus/templates/calendar/app/pages/Settings.tsx +12 -12
  234. package/corpus/templates/calendar/app/routes/event.tsx +2 -2
  235. package/corpus/templates/calendar/package.json +1 -0
  236. package/corpus/templates/chat/app/components/layout/Header.tsx +4 -2
  237. package/corpus/templates/chat/app/components/layout/Layout.tsx +7 -7
  238. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +12 -12
  239. package/corpus/templates/chat/app/routes/database.tsx +1 -2
  240. package/corpus/templates/chat/app/routes/observability.tsx +1 -1
  241. package/corpus/templates/chat/app/routes/settings.tsx +5 -5
  242. package/corpus/templates/chat/package.json +1 -0
  243. package/corpus/templates/clips/AGENTS.md +5 -0
  244. package/corpus/templates/clips/actions/create-recording-agent-link.ts +15 -20
  245. package/corpus/templates/clips/actions/delete-recording-permanent.ts +74 -34
  246. package/corpus/templates/clips/app/components/capture-install-options.tsx +6 -6
  247. package/corpus/templates/clips/app/components/editable-recording-title.tsx +2 -2
  248. package/corpus/templates/clips/app/components/editor/chapters-editor.tsx +7 -7
  249. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +165 -3
  250. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +101 -57
  251. package/corpus/templates/clips/app/components/editor/split-button.tsx +4 -5
  252. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +9 -9
  253. package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +16 -11
  254. package/corpus/templates/clips/app/components/editor/timeline.tsx +4 -6
  255. package/corpus/templates/clips/app/components/editor/transcript-editor.tsx +5 -5
  256. package/corpus/templates/clips/app/components/editor/trim-handles.tsx +4 -7
  257. package/corpus/templates/clips/app/components/editor/waveform.tsx +13 -4
  258. package/corpus/templates/clips/app/components/layout/Header.tsx +4 -2
  259. package/corpus/templates/clips/app/components/layout/Layout.tsx +2 -3
  260. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +4 -4
  261. package/corpus/templates/clips/app/components/library/create-space-dialog.tsx +8 -8
  262. package/corpus/templates/clips/app/components/library/empty-state.tsx +1 -2
  263. package/corpus/templates/clips/app/components/library/folder-tree.tsx +14 -14
  264. package/corpus/templates/clips/app/components/library/library-grid.tsx +7 -7
  265. package/corpus/templates/clips/app/components/library/library-layout.tsx +16 -16
  266. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +11 -11
  267. package/corpus/templates/clips/app/components/library/recording-card.tsx +16 -12
  268. package/corpus/templates/clips/app/components/library/search-bar.tsx +5 -5
  269. package/corpus/templates/clips/app/components/library/sort-menu.tsx +3 -4
  270. package/corpus/templates/clips/app/components/library/tag-input.tsx +4 -4
  271. package/corpus/templates/clips/app/components/meetings/attendee-stack.tsx +6 -2
  272. package/corpus/templates/clips/app/components/meetings/auto-record-prompt.tsx +1 -1
  273. package/corpus/templates/clips/app/components/meetings/bullet-link.tsx +4 -4
  274. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +5 -5
  275. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +3 -3
  276. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +9 -9
  277. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +11 -6
  278. package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +4 -4
  279. package/corpus/templates/clips/app/components/player/access-password-prompt.tsx +2 -3
  280. package/corpus/templates/clips/app/components/player/comments-panel.tsx +14 -14
  281. package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +6 -7
  282. package/corpus/templates/clips/app/components/player/insights-panel.tsx +1 -2
  283. package/corpus/templates/clips/app/components/player/player-controls.tsx +15 -15
  284. package/corpus/templates/clips/app/components/player/reactions-tray.tsx +3 -3
  285. package/corpus/templates/clips/app/components/player/settings-panel.tsx +12 -13
  286. package/corpus/templates/clips/app/components/player/share-dialog.tsx +20 -11
  287. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +2 -3
  288. package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +2 -2
  289. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +7 -7
  290. package/corpus/templates/clips/app/components/player/video-player.tsx +9 -9
  291. package/corpus/templates/clips/app/components/recorder/camera-visualizer.tsx +1 -1
  292. package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +1 -1
  293. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +21 -21
  294. package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +5 -6
  295. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +6 -7
  296. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +10 -10
  297. package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +9 -5
  298. package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +19 -9
  299. package/corpus/templates/clips/app/components/workspace/invite-dialog.tsx +9 -10
  300. package/corpus/templates/clips/app/components/workspace/members-list.tsx +10 -11
  301. package/corpus/templates/clips/app/components/workspace/notifications-list.tsx +1 -2
  302. package/corpus/templates/clips/app/components/workspace/top-creators-table.tsx +2 -3
  303. package/corpus/templates/clips/app/components/workspace/top-videos-table.tsx +2 -3
  304. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +1 -2
  305. package/corpus/templates/clips/app/root.tsx +10 -10
  306. package/corpus/templates/clips/app/routes/_app.dictate.tsx +13 -13
  307. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +35 -26
  308. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +20 -20
  309. package/corpus/templates/clips/app/routes/_app.notifications.tsx +3 -3
  310. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +31 -31
  311. package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +13 -8
  312. package/corpus/templates/clips/app/routes/_app.spaces._index.tsx +1 -1
  313. package/corpus/templates/clips/app/routes/_app.trash.tsx +10 -10
  314. package/corpus/templates/clips/app/routes/bug-report.done.tsx +1 -1
  315. package/corpus/templates/clips/app/routes/bug-report.tsx +11 -11
  316. package/corpus/templates/clips/app/routes/download.tsx +2 -2
  317. package/corpus/templates/clips/app/routes/embed.$shareId.tsx +1 -1
  318. package/corpus/templates/clips/app/routes/invite.$token.tsx +13 -8
  319. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +28 -23
  320. package/corpus/templates/clips/app/routes/record.tsx +3 -3
  321. package/corpus/templates/clips/app/routes/share.$shareId.tsx +41 -20
  322. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +2 -2
  323. package/corpus/templates/clips/changelog/2026-07-05-desktop-full-screen-recordings-with-system-audio-now-finaliz.md +6 -0
  324. package/corpus/templates/clips/changelog/2026-07-05-desktop-recording-shortcut-start-stop.md +6 -0
  325. package/corpus/templates/clips/changelog/2026-07-05-desktop-recordings-no-longer-fail-when-saved-capture-constra.md +6 -0
  326. package/corpus/templates/clips/changelog/2026-07-05-permanently-deleted-clips-now-clean-up-s3-media-objects.md +6 -0
  327. package/corpus/templates/clips/changelog/2026-07-05-timeline-zoom-controls-are-now-visible-in-the-clip-editor-an.md +6 -0
  328. package/corpus/templates/clips/desktop/src/app.tsx +98 -1
  329. package/corpus/templates/clips/desktop/src/components/MediaDeviceRow.tsx +3 -2
  330. package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +121 -0
  331. package/corpus/templates/clips/desktop/src/lib/recorder.ts +55 -84
  332. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +77 -39
  333. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +60 -8
  334. package/corpus/templates/clips/package.json +1 -0
  335. package/corpus/templates/clips/server/lib/public-agent-context.ts +17 -12
  336. package/corpus/templates/clips/server/lib/recording-media-cleanup.ts +110 -0
  337. package/corpus/templates/clips/server/lib/s3-upload-provider.ts +126 -0
  338. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +47 -11
  339. package/corpus/templates/clips/shared/agent-context.ts +23 -21
  340. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +4 -4
  341. package/corpus/templates/content/app/components/EmptyState.tsx +1 -1
  342. package/corpus/templates/content/app/components/ThemeToggle.tsx +6 -6
  343. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  344. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +5 -5
  345. package/corpus/templates/content/app/components/editor/ContentReferencePreview.tsx +1 -1
  346. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +36 -36
  347. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +3 -3
  348. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +29 -29
  349. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +23 -23
  350. package/corpus/templates/content/app/components/editor/EmojiPicker.tsx +4 -5
  351. package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +4 -5
  352. package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
  353. package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +2 -2
  354. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +5 -5
  355. package/corpus/templates/content/app/components/editor/TableHoverControls.tsx +13 -13
  356. package/corpus/templates/content/app/components/editor/VersionHistoryPanel.tsx +10 -10
  357. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
  358. package/corpus/templates/content/app/components/editor/database/shared.tsx +19 -19
  359. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +8 -9
  360. package/corpus/templates/content/app/components/editor/extensions/AudioBlock.tsx +18 -19
  361. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +20 -21
  362. package/corpus/templates/content/app/components/editor/extensions/LocalMdxComponentNode.tsx +8 -8
  363. package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +18 -19
  364. package/corpus/templates/content/app/components/layout/Header.tsx +4 -2
  365. package/corpus/templates/content/app/components/layout/Layout.tsx +3 -3
  366. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +22 -22
  367. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +22 -22
  368. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +11 -11
  369. package/corpus/templates/content/app/root.tsx +4 -5
  370. package/corpus/templates/content/app/routes/_app._index.tsx +1 -1
  371. package/corpus/templates/content/app/routes/_app.local-files.tsx +11 -11
  372. package/corpus/templates/content/app/routes/_app.settings.tsx +3 -3
  373. package/corpus/templates/content/app/routes/p.$id.tsx +114 -9
  374. package/corpus/templates/content/package.json +1 -0
  375. package/corpus/templates/content/server/db/index.ts +9 -0
  376. package/corpus/templates/content/server/routes/api/document-agent-context.json.get.ts +90 -0
  377. package/corpus/templates/content/shared/agent-readable.ts +56 -0
  378. package/corpus/templates/design/app/components/ThemeToggle.tsx +6 -6
  379. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +11 -11
  380. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +2 -2
  381. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +21 -16
  382. package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +3 -3
  383. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +7 -7
  384. package/corpus/templates/design/app/components/design/EditPanel.tsx +30 -30
  385. package/corpus/templates/design/app/components/design/FusionAppBanner.tsx +8 -9
  386. package/corpus/templates/design/app/components/design/LayersPanel.tsx +14 -14
  387. package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +5 -6
  388. package/corpus/templates/design/app/components/design/MotionDock.tsx +15 -15
  389. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +3 -3
  390. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +3 -3
  391. package/corpus/templates/design/app/components/design/StatesPanel.tsx +13 -13
  392. package/corpus/templates/design/app/components/design/TokensPanel.tsx +14 -14
  393. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -6
  394. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +3 -3
  395. package/corpus/templates/design/app/components/design/code-workbench/SideBar.tsx +3 -3
  396. package/corpus/templates/design/app/components/design/code-workbench/editor/EditorTabs.tsx +6 -6
  397. package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +1 -2
  398. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +17 -17
  399. package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +6 -6
  400. package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +3 -3
  401. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +7 -7
  402. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +3 -3
  403. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +18 -18
  404. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +6 -6
  405. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +6 -6
  406. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +7 -7
  407. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -7
  408. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -14
  409. package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +9 -9
  410. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +6 -6
  411. package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +2 -3
  412. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +18 -15
  413. package/corpus/templates/design/app/components/layout/Header.tsx +4 -2
  414. package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
  415. package/corpus/templates/design/app/components/layout/Sidebar.tsx +5 -5
  416. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +7 -7
  417. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +7 -7
  418. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +3 -3
  419. package/corpus/templates/design/app/pages/DesignEditor.tsx +51 -47
  420. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +8 -8
  421. package/corpus/templates/design/app/pages/DesignSystems.tsx +32 -32
  422. package/corpus/templates/design/app/pages/Index.tsx +28 -28
  423. package/corpus/templates/design/app/pages/NotFound.tsx +1 -2
  424. package/corpus/templates/design/app/pages/Present.tsx +1 -2
  425. package/corpus/templates/design/app/pages/VisualEdit.tsx +1 -2
  426. package/corpus/templates/design/app/root.tsx +1 -1
  427. package/corpus/templates/design/app/routes/settings.tsx +3 -3
  428. package/corpus/templates/design/package.json +1 -0
  429. package/corpus/templates/design/server/db/index.ts +8 -0
  430. package/corpus/templates/design/server/routes/[...page].get.ts +94 -1
  431. package/corpus/templates/design/server/routes/api/design-agent-context.json.get.ts +84 -0
  432. package/corpus/templates/design/shared/agent-readable.ts +2 -0
  433. package/corpus/templates/forms/app/components/CloudUpgrade.tsx +10 -10
  434. package/corpus/templates/forms/app/components/ThemeToggle.tsx +5 -5
  435. package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +10 -11
  436. package/corpus/templates/forms/app/components/builder/FieldRenderer.tsx +13 -10
  437. package/corpus/templates/forms/app/components/layout/Header.tsx +4 -2
  438. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
  439. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +15 -15
  440. package/corpus/templates/forms/app/components/ui/calendar.tsx +1 -1
  441. package/corpus/templates/forms/app/components/ui/command.tsx +1 -1
  442. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +24 -24
  443. package/corpus/templates/forms/app/pages/FormFillPage.tsx +2 -2
  444. package/corpus/templates/forms/app/pages/FormsListPage.tsx +25 -25
  445. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +11 -11
  446. package/corpus/templates/forms/app/pages/ResponsesPage.tsx +4 -4
  447. package/corpus/templates/forms/app/routes/_app.settings.tsx +5 -5
  448. package/corpus/templates/forms/app/routes/form-preview.tsx +3 -3
  449. package/corpus/templates/forms/package.json +1 -0
  450. package/corpus/templates/macros/app/components/AddExerciseDialog.tsx +1 -1
  451. package/corpus/templates/macros/app/components/AddMealDialog.tsx +1 -1
  452. package/corpus/templates/macros/app/components/AddWeightDialog.tsx +1 -1
  453. package/corpus/templates/macros/app/components/DailyProgress.tsx +7 -7
  454. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -2
  455. package/corpus/templates/macros/app/components/WeightCard.tsx +10 -10
  456. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  457. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +11 -7
  458. package/corpus/templates/macros/app/components/layout/Header.tsx +4 -2
  459. package/corpus/templates/macros/app/root.tsx +1 -1
  460. package/corpus/templates/macros/app/routes/_index.tsx +1 -1
  461. package/corpus/templates/macros/app/routes/analytics.tsx +9 -9
  462. package/corpus/templates/macros/app/routes/settings.tsx +2 -2
  463. package/corpus/templates/macros/package.json +1 -0
  464. package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +1 -1
  465. package/corpus/templates/mail/app/components/ThemeToggle.tsx +6 -6
  466. package/corpus/templates/mail/app/components/agent-engine-picker.tsx +10 -10
  467. package/corpus/templates/mail/app/components/email/CodeBlockLangPicker.tsx +3 -4
  468. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +5 -5
  469. package/corpus/templates/mail/app/components/email/ComposeEditor.tsx +9 -9
  470. package/corpus/templates/mail/app/components/email/ComposeModal.tsx +18 -18
  471. package/corpus/templates/mail/app/components/email/EmailList.tsx +17 -17
  472. package/corpus/templates/mail/app/components/email/EmailListItem.tsx +5 -5
  473. package/corpus/templates/mail/app/components/email/EmailThread.tsx +6 -6
  474. package/corpus/templates/mail/app/components/email/InlineReplyComposer.tsx +11 -11
  475. package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +13 -13
  476. package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +13 -13
  477. package/corpus/templates/mail/app/components/email/RecipientInput.tsx +13 -13
  478. package/corpus/templates/mail/app/components/email/SendLaterButton.tsx +4 -5
  479. package/corpus/templates/mail/app/components/email/SnoozeModal.tsx +1 -1
  480. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +6 -6
  481. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +12 -12
  482. package/corpus/templates/mail/app/components/layout/SearchBar.tsx +5 -5
  483. package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +23 -23
  484. package/corpus/templates/mail/app/components/ui/calendar.tsx +1 -1
  485. package/corpus/templates/mail/app/components/ui/command.tsx +1 -1
  486. package/corpus/templates/mail/app/pages/DraftQueuePage.tsx +14 -14
  487. package/corpus/templates/mail/app/pages/NotFound.tsx +1 -2
  488. package/corpus/templates/mail/app/pages/SettingsPage.tsx +25 -25
  489. package/corpus/templates/mail/app/root.tsx +1 -1
  490. package/corpus/templates/mail/app/routes/_index.tsx +1 -2
  491. package/corpus/templates/mail/app/routes/email.tsx +2 -2
  492. package/corpus/templates/mail/package.json +1 -0
  493. package/corpus/templates/plan/app/components/layout/Header.tsx +4 -2
  494. package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -6
  495. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +20 -20
  496. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +2 -3
  497. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +2 -2
  498. package/corpus/templates/plan/app/components/plan/GuestModeBanner.tsx +1 -2
  499. package/corpus/templates/plan/app/components/plan/LocalCodebasePicker.tsx +8 -8
  500. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
  501. package/corpus/templates/plan/app/components/plan/PlanImageViewer.tsx +83 -82
  502. package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +3 -3
  503. package/corpus/templates/plan/app/components/plan/planBlocks.tsx +4 -4
  504. package/corpus/templates/plan/app/pages/PlansPage.tsx +84 -77
  505. package/corpus/templates/plan/app/root.tsx +1 -1
  506. package/corpus/templates/plan/app/routes/_index.tsx +2 -1
  507. package/corpus/templates/plan/app/routes/local-plans.$slug.tsx +1 -1
  508. package/corpus/templates/plan/app/routes/plans.$id.tsx +2 -1
  509. package/corpus/templates/plan/app/routes/plans.tsx +2 -1
  510. package/corpus/templates/plan/app/routes/recaps.$id.tsx +2 -1
  511. package/corpus/templates/plan/app/routes/recaps.tsx +2 -1
  512. package/corpus/templates/plan/app/routes/settings.tsx +5 -5
  513. package/corpus/templates/plan/changelog/2026-07-05-images-in-plan-documents-open-reliably-in-the-full-size-prev.md +6 -0
  514. package/corpus/templates/plan/package.json +1 -0
  515. package/corpus/templates/plan/server/db/index.ts +12 -0
  516. package/corpus/templates/plan/server/plans.ts +25 -1
  517. package/corpus/templates/plan/server/routes/[...page].get.ts +107 -1
  518. package/corpus/templates/plan/server/routes/api/plan-agent-context.json.get.ts +65 -0
  519. package/corpus/templates/plan/shared/agent-readable.ts +2 -0
  520. package/corpus/templates/slides/app/components/ThemeToggle.tsx +6 -6
  521. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +5 -5
  522. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +7 -7
  523. package/corpus/templates/slides/app/components/deck/ExcalidrawSlide.tsx +1 -2
  524. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +1 -1
  525. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -3
  526. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +13 -14
  527. package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +7 -7
  528. package/corpus/templates/slides/app/components/editor/BlockBubbleMenu.tsx +5 -5
  529. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +6 -6
  530. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +13 -13
  531. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +9 -10
  532. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +5 -6
  533. package/corpus/templates/slides/app/components/editor/HistoryPanel.tsx +12 -12
  534. package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +3 -4
  535. package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +4 -5
  536. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +3 -4
  537. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +1 -2
  538. package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +10 -10
  539. package/corpus/templates/slides/app/components/editor/SlideBubbleMenu.tsx +10 -10
  540. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +6 -6
  541. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +1 -2
  542. package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +1 -1
  543. package/corpus/templates/slides/app/components/layout/Header.tsx +4 -2
  544. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
  545. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
  546. package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +6 -6
  547. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +7 -7
  548. package/corpus/templates/slides/app/pages/DeckEditor.tsx +3 -3
  549. package/corpus/templates/slides/app/pages/DesignSystems.tsx +5 -5
  550. package/corpus/templates/slides/app/pages/Index.tsx +18 -15
  551. package/corpus/templates/slides/app/root.tsx +3 -3
  552. package/corpus/templates/slides/app/routes/p.$id.tsx +126 -12
  553. package/corpus/templates/slides/app/routes/settings.tsx +5 -5
  554. package/corpus/templates/slides/app/routes/share.$token.tsx +55 -8
  555. package/corpus/templates/slides/package.json +1 -0
  556. package/corpus/templates/slides/server/db/index.ts +9 -0
  557. package/corpus/templates/slides/server/routes/api/deck-agent-context.json.get.ts +97 -0
  558. package/corpus/templates/slides/shared/agent-readable.ts +2 -0
  559. package/dist/application-state/emitter.d.ts +9 -2
  560. package/dist/application-state/emitter.d.ts.map +1 -1
  561. package/dist/application-state/emitter.js +25 -3
  562. package/dist/application-state/emitter.js.map +1 -1
  563. package/dist/cli/create.d.ts +2 -1
  564. package/dist/cli/create.d.ts.map +1 -1
  565. package/dist/cli/create.js +52 -4
  566. package/dist/cli/create.js.map +1 -1
  567. package/dist/cli/workspacify.d.ts +2 -0
  568. package/dist/cli/workspacify.d.ts.map +1 -1
  569. package/dist/cli/workspacify.js +8 -4
  570. package/dist/cli/workspacify.js.map +1 -1
  571. package/dist/client/components/ui/dialog.d.ts +1 -13
  572. package/dist/client/components/ui/dialog.d.ts.map +1 -1
  573. package/dist/client/components/ui/dialog.js +1 -20
  574. package/dist/client/components/ui/dialog.js.map +1 -1
  575. package/dist/client/components/ui/dropdown-menu.d.ts +1 -27
  576. package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -1
  577. package/dist/client/components/ui/dropdown-menu.js +1 -33
  578. package/dist/client/components/ui/dropdown-menu.js.map +1 -1
  579. package/dist/client/components/ui/hover-card.d.ts +1 -6
  580. package/dist/client/components/ui/hover-card.d.ts.map +1 -1
  581. package/dist/client/components/ui/hover-card.js +1 -9
  582. package/dist/client/components/ui/hover-card.js.map +1 -1
  583. package/dist/client/components/ui/popover.d.ts +1 -7
  584. package/dist/client/components/ui/popover.d.ts.map +1 -1
  585. package/dist/client/components/ui/popover.js +1 -10
  586. package/dist/client/components/ui/popover.js.map +1 -1
  587. package/dist/client/components/ui/sheet.d.ts +1 -15
  588. package/dist/client/components/ui/sheet.d.ts.map +1 -1
  589. package/dist/client/components/ui/sheet.js +1 -22
  590. package/dist/client/components/ui/sheet.js.map +1 -1
  591. package/dist/client/components/ui/tooltip.d.ts +1 -8
  592. package/dist/client/components/ui/tooltip.d.ts.map +1 -1
  593. package/dist/client/components/ui/tooltip.js +1 -17
  594. package/dist/client/components/ui/tooltip.js.map +1 -1
  595. package/dist/collab/routes.d.ts +1 -1
  596. package/dist/collab/struct-routes.d.ts +1 -1
  597. package/dist/observability/routes.d.ts +5 -5
  598. package/dist/progress/routes.d.ts +1 -1
  599. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  600. package/dist/secrets/crypto.d.ts.map +1 -1
  601. package/dist/secrets/crypto.js +37 -4
  602. package/dist/secrets/crypto.js.map +1 -1
  603. package/dist/secrets/routes.d.ts +9 -9
  604. package/dist/server/action-discovery.d.ts.map +1 -1
  605. package/dist/server/action-discovery.js +4 -0
  606. package/dist/server/action-discovery.js.map +1 -1
  607. package/dist/server/action-routes.d.ts.map +1 -1
  608. package/dist/server/action-routes.js +8 -2
  609. package/dist/server/action-routes.js.map +1 -1
  610. package/dist/server/agent-access.d.ts +16 -0
  611. package/dist/server/agent-access.d.ts.map +1 -0
  612. package/dist/server/agent-access.js +25 -0
  613. package/dist/server/agent-access.js.map +1 -0
  614. package/dist/server/h3-helpers.d.ts.map +1 -1
  615. package/dist/server/h3-helpers.js +12 -2
  616. package/dist/server/h3-helpers.js.map +1 -1
  617. package/dist/server/index.d.ts +2 -0
  618. package/dist/server/index.d.ts.map +1 -1
  619. package/dist/server/index.js +2 -0
  620. package/dist/server/index.js.map +1 -1
  621. package/dist/server/request-context.d.ts +17 -0
  622. package/dist/server/request-context.d.ts.map +1 -1
  623. package/dist/server/request-context.js +46 -6
  624. package/dist/server/request-context.js.map +1 -1
  625. package/dist/server/transcribe-voice.d.ts +1 -1
  626. package/dist/shared/agent-access.d.ts +29 -0
  627. package/dist/shared/agent-access.d.ts.map +1 -0
  628. package/dist/shared/agent-access.js +57 -0
  629. package/dist/shared/agent-access.js.map +1 -0
  630. package/dist/shared/agent-readable-resource.d.ts +29 -0
  631. package/dist/shared/agent-readable-resource.d.ts.map +1 -0
  632. package/dist/shared/agent-readable-resource.js +60 -0
  633. package/dist/shared/agent-readable-resource.js.map +1 -0
  634. package/dist/shared/index.d.ts +2 -0
  635. package/dist/shared/index.d.ts.map +1 -1
  636. package/dist/shared/index.js +2 -0
  637. package/dist/shared/index.js.map +1 -1
  638. package/dist/sharing/actions/create-agent-resource-link.d.ts +13 -0
  639. package/dist/sharing/actions/create-agent-resource-link.d.ts.map +1 -0
  640. package/dist/sharing/actions/create-agent-resource-link.js +72 -0
  641. package/dist/sharing/actions/create-agent-resource-link.js.map +1 -0
  642. package/dist/sharing/registry.d.ts +17 -0
  643. package/dist/sharing/registry.d.ts.map +1 -1
  644. package/dist/sharing/registry.js.map +1 -1
  645. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  646. package/dist/vite/client.d.ts.map +1 -1
  647. package/dist/vite/client.js +1 -0
  648. package/dist/vite/client.js.map +1 -1
  649. package/docs/content/agent-native-toolkit.mdx +162 -0
  650. package/docs/content/components.mdx +13 -0
  651. package/docs/content/creating-templates.mdx +7 -0
  652. package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +73 -0
  653. package/docs/content/locales/ar-SA/components.mdx +9 -0
  654. package/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
  655. package/docs/content/locales/ar-SA/sharing.mdx +15 -7
  656. package/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
  657. package/docs/content/locales/ar-SA/template-clips.mdx +7 -0
  658. package/docs/content/locales/ar-SA/tracking.mdx +6 -0
  659. package/docs/content/locales/de-DE/agent-native-toolkit.mdx +77 -0
  660. package/docs/content/locales/de-DE/components.mdx +9 -0
  661. package/docs/content/locales/de-DE/creating-templates.mdx +2 -0
  662. package/docs/content/locales/de-DE/sharing.mdx +15 -7
  663. package/docs/content/locales/de-DE/template-analytics.mdx +6 -0
  664. package/docs/content/locales/de-DE/template-clips.mdx +7 -0
  665. package/docs/content/locales/de-DE/tracking.mdx +6 -0
  666. package/docs/content/locales/es-ES/agent-native-toolkit.mdx +77 -0
  667. package/docs/content/locales/es-ES/components.mdx +9 -0
  668. package/docs/content/locales/es-ES/creating-templates.mdx +2 -0
  669. package/docs/content/locales/es-ES/sharing.mdx +15 -7
  670. package/docs/content/locales/es-ES/template-analytics.mdx +6 -0
  671. package/docs/content/locales/es-ES/template-clips.mdx +7 -0
  672. package/docs/content/locales/es-ES/tracking.mdx +6 -0
  673. package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +79 -0
  674. package/docs/content/locales/fr-FR/components.mdx +9 -0
  675. package/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
  676. package/docs/content/locales/fr-FR/sharing.mdx +15 -7
  677. package/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
  678. package/docs/content/locales/fr-FR/template-clips.mdx +7 -0
  679. package/docs/content/locales/fr-FR/tracking.mdx +6 -0
  680. package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +74 -0
  681. package/docs/content/locales/hi-IN/components.mdx +9 -0
  682. package/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
  683. package/docs/content/locales/hi-IN/sharing.mdx +15 -7
  684. package/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
  685. package/docs/content/locales/hi-IN/template-clips.mdx +7 -0
  686. package/docs/content/locales/hi-IN/tracking.mdx +6 -0
  687. package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +67 -0
  688. package/docs/content/locales/ja-JP/components.mdx +9 -0
  689. package/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
  690. package/docs/content/locales/ja-JP/sharing.mdx +15 -7
  691. package/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
  692. package/docs/content/locales/ja-JP/template-clips.mdx +7 -0
  693. package/docs/content/locales/ja-JP/tracking.mdx +6 -0
  694. package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +63 -0
  695. package/docs/content/locales/ko-KR/components.mdx +9 -0
  696. package/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
  697. package/docs/content/locales/ko-KR/sharing.mdx +15 -7
  698. package/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
  699. package/docs/content/locales/ko-KR/template-clips.mdx +7 -0
  700. package/docs/content/locales/ko-KR/tracking.mdx +6 -0
  701. package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +77 -0
  702. package/docs/content/locales/pt-BR/components.mdx +9 -0
  703. package/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
  704. package/docs/content/locales/pt-BR/sharing.mdx +15 -7
  705. package/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
  706. package/docs/content/locales/pt-BR/template-clips.mdx +7 -0
  707. package/docs/content/locales/pt-BR/tracking.mdx +6 -0
  708. package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +61 -0
  709. package/docs/content/locales/zh-CN/components.mdx +9 -0
  710. package/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
  711. package/docs/content/locales/zh-CN/sharing.mdx +15 -7
  712. package/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
  713. package/docs/content/locales/zh-CN/template-clips.mdx +7 -0
  714. package/docs/content/locales/zh-CN/tracking.mdx +6 -0
  715. package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +61 -0
  716. package/docs/content/locales/zh-TW/components.mdx +9 -0
  717. package/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
  718. package/docs/content/locales/zh-TW/sharing.mdx +15 -7
  719. package/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
  720. package/docs/content/locales/zh-TW/template-clips.mdx +7 -0
  721. package/docs/content/locales/zh-TW/tracking.mdx +6 -0
  722. package/docs/content/sharing.mdx +39 -7
  723. package/docs/content/template-analytics.mdx +6 -0
  724. package/docs/content/template-clips.mdx +7 -0
  725. package/docs/content/tracking.mdx +6 -0
  726. package/package.json +10 -2
  727. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  728. package/corpus/templates/analytics/app/components/ui/accordion.tsx +0 -56
  729. package/corpus/templates/analytics/app/components/ui/alert-dialog.tsx +0 -139
  730. package/corpus/templates/analytics/app/components/ui/alert.tsx +0 -59
  731. package/corpus/templates/analytics/app/components/ui/aspect-ratio.tsx +0 -5
  732. package/corpus/templates/analytics/app/components/ui/avatar.tsx +0 -48
  733. package/corpus/templates/analytics/app/components/ui/badge.tsx +0 -37
  734. package/corpus/templates/analytics/app/components/ui/breadcrumb.tsx +0 -115
  735. package/corpus/templates/analytics/app/components/ui/button.tsx +0 -57
  736. package/corpus/templates/analytics/app/components/ui/card.tsx +0 -86
  737. package/corpus/templates/analytics/app/components/ui/carousel.tsx +0 -260
  738. package/corpus/templates/analytics/app/components/ui/checkbox.tsx +0 -28
  739. package/corpus/templates/analytics/app/components/ui/collapsible.tsx +0 -9
  740. package/corpus/templates/analytics/app/components/ui/command.tsx +0 -154
  741. package/corpus/templates/analytics/app/components/ui/context-menu.tsx +0 -202
  742. package/corpus/templates/analytics/app/components/ui/date-picker.tsx +0 -68
  743. package/corpus/templates/analytics/app/components/ui/dialog.tsx +0 -130
  744. package/corpus/templates/analytics/app/components/ui/drawer.tsx +0 -116
  745. package/corpus/templates/analytics/app/components/ui/dropdown-menu.tsx +0 -212
  746. package/corpus/templates/analytics/app/components/ui/form.tsx +0 -177
  747. package/corpus/templates/analytics/app/components/ui/hover-card.tsx +0 -27
  748. package/corpus/templates/analytics/app/components/ui/input-otp.tsx +0 -69
  749. package/corpus/templates/analytics/app/components/ui/input.tsx +0 -22
  750. package/corpus/templates/analytics/app/components/ui/label.tsx +0 -24
  751. package/corpus/templates/analytics/app/components/ui/menubar.tsx +0 -234
  752. package/corpus/templates/analytics/app/components/ui/navigation-menu.tsx +0 -128
  753. package/corpus/templates/analytics/app/components/ui/pagination.tsx +0 -121
  754. package/corpus/templates/analytics/app/components/ui/popover.tsx +0 -44
  755. package/corpus/templates/analytics/app/components/ui/progress.tsx +0 -26
  756. package/corpus/templates/analytics/app/components/ui/radio-group.tsx +0 -42
  757. package/corpus/templates/analytics/app/components/ui/resizable.tsx +0 -43
  758. package/corpus/templates/analytics/app/components/ui/scroll-area.tsx +0 -46
  759. package/corpus/templates/analytics/app/components/ui/select.tsx +0 -158
  760. package/corpus/templates/analytics/app/components/ui/separator.tsx +0 -29
  761. package/corpus/templates/analytics/app/components/ui/sheet.tsx +0 -160
  762. package/corpus/templates/analytics/app/components/ui/sidebar.tsx +0 -782
  763. package/corpus/templates/analytics/app/components/ui/skeleton.tsx +0 -15
  764. package/corpus/templates/analytics/app/components/ui/slider.tsx +0 -26
  765. package/corpus/templates/analytics/app/components/ui/sonner.tsx +0 -58
  766. package/corpus/templates/analytics/app/components/ui/spinner.tsx +0 -17
  767. package/corpus/templates/analytics/app/components/ui/switch.tsx +0 -27
  768. package/corpus/templates/analytics/app/components/ui/table.tsx +0 -117
  769. package/corpus/templates/analytics/app/components/ui/tabs.tsx +0 -53
  770. package/corpus/templates/analytics/app/components/ui/textarea.tsx +0 -23
  771. package/corpus/templates/analytics/app/components/ui/toast.tsx +0 -127
  772. package/corpus/templates/analytics/app/components/ui/toaster.tsx +0 -33
  773. package/corpus/templates/analytics/app/components/ui/toggle-group.tsx +0 -59
  774. package/corpus/templates/analytics/app/components/ui/toggle.tsx +0 -43
  775. package/corpus/templates/analytics/app/components/ui/tooltip.tsx +0 -30
  776. package/corpus/templates/analytics/app/components/ui/use-toast.ts +0 -3
  777. package/corpus/templates/analytics/app/hooks/use-mobile.tsx +0 -21
  778. package/corpus/templates/analytics/app/hooks/use-toast.ts +0 -188
  779. package/corpus/templates/assets/app/components/layout/HeaderActions.tsx +0 -84
  780. package/corpus/templates/assets/app/components/ui/alert-dialog.tsx +0 -139
  781. package/corpus/templates/assets/app/components/ui/alert.tsx +0 -59
  782. package/corpus/templates/assets/app/components/ui/avatar.tsx +0 -48
  783. package/corpus/templates/assets/app/components/ui/badge.tsx +0 -37
  784. package/corpus/templates/assets/app/components/ui/breadcrumb.tsx +0 -115
  785. package/corpus/templates/assets/app/components/ui/button.tsx +0 -57
  786. package/corpus/templates/assets/app/components/ui/card.tsx +0 -86
  787. package/corpus/templates/assets/app/components/ui/checkbox.tsx +0 -28
  788. package/corpus/templates/assets/app/components/ui/dialog.tsx +0 -130
  789. package/corpus/templates/assets/app/components/ui/dropdown-menu.tsx +0 -212
  790. package/corpus/templates/assets/app/components/ui/hover-card.tsx +0 -27
  791. package/corpus/templates/assets/app/components/ui/input.tsx +0 -22
  792. package/corpus/templates/assets/app/components/ui/label.tsx +0 -24
  793. package/corpus/templates/assets/app/components/ui/pagination.tsx +0 -121
  794. package/corpus/templates/assets/app/components/ui/popover.tsx +0 -44
  795. package/corpus/templates/assets/app/components/ui/progress.tsx +0 -26
  796. package/corpus/templates/assets/app/components/ui/scroll-area.tsx +0 -46
  797. package/corpus/templates/assets/app/components/ui/select.tsx +0 -158
  798. package/corpus/templates/assets/app/components/ui/separator.tsx +0 -29
  799. package/corpus/templates/assets/app/components/ui/sheet.tsx +0 -160
  800. package/corpus/templates/assets/app/components/ui/skeleton.tsx +0 -15
  801. package/corpus/templates/assets/app/components/ui/slider.tsx +0 -26
  802. package/corpus/templates/assets/app/components/ui/sonner.tsx +0 -58
  803. package/corpus/templates/assets/app/components/ui/spinner.tsx +0 -17
  804. package/corpus/templates/assets/app/components/ui/table.tsx +0 -117
  805. package/corpus/templates/assets/app/components/ui/tabs.tsx +0 -53
  806. package/corpus/templates/assets/app/components/ui/tooltip.tsx +0 -30
  807. package/corpus/templates/brain/app/components/ui/badge.tsx +0 -37
  808. package/corpus/templates/brain/app/components/ui/button.tsx +0 -57
  809. package/corpus/templates/brain/app/components/ui/card.tsx +0 -86
  810. package/corpus/templates/brain/app/components/ui/input.tsx +0 -22
  811. package/corpus/templates/brain/app/components/ui/label.tsx +0 -24
  812. package/corpus/templates/brain/app/components/ui/progress.tsx +0 -26
  813. package/corpus/templates/brain/app/components/ui/select.tsx +0 -158
  814. package/corpus/templates/brain/app/components/ui/separator.tsx +0 -29
  815. package/corpus/templates/brain/app/components/ui/sheet.tsx +0 -160
  816. package/corpus/templates/brain/app/components/ui/skeleton.tsx +0 -15
  817. package/corpus/templates/brain/app/components/ui/sonner.tsx +0 -58
  818. package/corpus/templates/brain/app/components/ui/switch.tsx +0 -27
  819. package/corpus/templates/brain/app/components/ui/table.tsx +0 -117
  820. package/corpus/templates/brain/app/components/ui/textarea.tsx +0 -23
  821. package/corpus/templates/brain/app/components/ui/tooltip.tsx +0 -30
  822. package/corpus/templates/calendar/app/components/ui/accordion.tsx +0 -56
  823. package/corpus/templates/calendar/app/components/ui/alert-dialog.tsx +0 -139
  824. package/corpus/templates/calendar/app/components/ui/alert.tsx +0 -59
  825. package/corpus/templates/calendar/app/components/ui/aspect-ratio.tsx +0 -5
  826. package/corpus/templates/calendar/app/components/ui/avatar.tsx +0 -48
  827. package/corpus/templates/calendar/app/components/ui/badge.tsx +0 -37
  828. package/corpus/templates/calendar/app/components/ui/breadcrumb.tsx +0 -115
  829. package/corpus/templates/calendar/app/components/ui/button.tsx +0 -57
  830. package/corpus/templates/calendar/app/components/ui/calendar.tsx +0 -68
  831. package/corpus/templates/calendar/app/components/ui/card.tsx +0 -86
  832. package/corpus/templates/calendar/app/components/ui/carousel.tsx +0 -260
  833. package/corpus/templates/calendar/app/components/ui/chart.tsx +0 -375
  834. package/corpus/templates/calendar/app/components/ui/checkbox.tsx +0 -28
  835. package/corpus/templates/calendar/app/components/ui/collapsible.tsx +0 -9
  836. package/corpus/templates/calendar/app/components/ui/command.tsx +0 -154
  837. package/corpus/templates/calendar/app/components/ui/context-menu.tsx +0 -202
  838. package/corpus/templates/calendar/app/components/ui/dialog.tsx +0 -130
  839. package/corpus/templates/calendar/app/components/ui/drawer.tsx +0 -116
  840. package/corpus/templates/calendar/app/components/ui/dropdown-menu.tsx +0 -212
  841. package/corpus/templates/calendar/app/components/ui/form.tsx +0 -177
  842. package/corpus/templates/calendar/app/components/ui/hover-card.tsx +0 -27
  843. package/corpus/templates/calendar/app/components/ui/input-otp.tsx +0 -69
  844. package/corpus/templates/calendar/app/components/ui/input.tsx +0 -22
  845. package/corpus/templates/calendar/app/components/ui/label.tsx +0 -24
  846. package/corpus/templates/calendar/app/components/ui/menubar.tsx +0 -234
  847. package/corpus/templates/calendar/app/components/ui/navigation-menu.tsx +0 -128
  848. package/corpus/templates/calendar/app/components/ui/pagination.tsx +0 -121
  849. package/corpus/templates/calendar/app/components/ui/popover.tsx +0 -44
  850. package/corpus/templates/calendar/app/components/ui/progress.tsx +0 -26
  851. package/corpus/templates/calendar/app/components/ui/radio-group.tsx +0 -42
  852. package/corpus/templates/calendar/app/components/ui/resizable.tsx +0 -43
  853. package/corpus/templates/calendar/app/components/ui/scroll-area.tsx +0 -46
  854. package/corpus/templates/calendar/app/components/ui/select.tsx +0 -158
  855. package/corpus/templates/calendar/app/components/ui/separator.tsx +0 -29
  856. package/corpus/templates/calendar/app/components/ui/sheet.tsx +0 -160
  857. package/corpus/templates/calendar/app/components/ui/sidebar.tsx +0 -782
  858. package/corpus/templates/calendar/app/components/ui/skeleton.tsx +0 -15
  859. package/corpus/templates/calendar/app/components/ui/slider.tsx +0 -26
  860. package/corpus/templates/calendar/app/components/ui/spinner.tsx +0 -17
  861. package/corpus/templates/calendar/app/components/ui/switch.tsx +0 -27
  862. package/corpus/templates/calendar/app/components/ui/table.tsx +0 -117
  863. package/corpus/templates/calendar/app/components/ui/tabs.tsx +0 -53
  864. package/corpus/templates/calendar/app/components/ui/textarea.tsx +0 -23
  865. package/corpus/templates/calendar/app/components/ui/toast.tsx +0 -127
  866. package/corpus/templates/calendar/app/components/ui/toaster.tsx +0 -33
  867. package/corpus/templates/calendar/app/components/ui/toggle-group.tsx +0 -59
  868. package/corpus/templates/calendar/app/components/ui/toggle.tsx +0 -43
  869. package/corpus/templates/calendar/app/components/ui/tooltip.tsx +0 -30
  870. package/corpus/templates/calendar/app/components/ui/use-toast.ts +0 -3
  871. package/corpus/templates/calendar/app/hooks/use-mobile.tsx +0 -21
  872. package/corpus/templates/calendar/app/hooks/use-toast.ts +0 -188
  873. package/corpus/templates/chat/app/components/layout/HeaderActions.tsx +0 -84
  874. package/corpus/templates/chat/app/components/ui/accordion.tsx +0 -56
  875. package/corpus/templates/chat/app/components/ui/alert-dialog.tsx +0 -139
  876. package/corpus/templates/chat/app/components/ui/alert.tsx +0 -59
  877. package/corpus/templates/chat/app/components/ui/aspect-ratio.tsx +0 -5
  878. package/corpus/templates/chat/app/components/ui/avatar.tsx +0 -48
  879. package/corpus/templates/chat/app/components/ui/badge.tsx +0 -37
  880. package/corpus/templates/chat/app/components/ui/breadcrumb.tsx +0 -115
  881. package/corpus/templates/chat/app/components/ui/button.tsx +0 -57
  882. package/corpus/templates/chat/app/components/ui/calendar.tsx +0 -68
  883. package/corpus/templates/chat/app/components/ui/card.tsx +0 -86
  884. package/corpus/templates/chat/app/components/ui/carousel.tsx +0 -260
  885. package/corpus/templates/chat/app/components/ui/chart.tsx +0 -375
  886. package/corpus/templates/chat/app/components/ui/checkbox.tsx +0 -28
  887. package/corpus/templates/chat/app/components/ui/collapsible.tsx +0 -9
  888. package/corpus/templates/chat/app/components/ui/command.tsx +0 -154
  889. package/corpus/templates/chat/app/components/ui/context-menu.tsx +0 -202
  890. package/corpus/templates/chat/app/components/ui/dialog.tsx +0 -130
  891. package/corpus/templates/chat/app/components/ui/drawer.tsx +0 -116
  892. package/corpus/templates/chat/app/components/ui/dropdown-menu.tsx +0 -212
  893. package/corpus/templates/chat/app/components/ui/form.tsx +0 -177
  894. package/corpus/templates/chat/app/components/ui/hover-card.tsx +0 -27
  895. package/corpus/templates/chat/app/components/ui/input-otp.tsx +0 -69
  896. package/corpus/templates/chat/app/components/ui/input.tsx +0 -22
  897. package/corpus/templates/chat/app/components/ui/label.tsx +0 -24
  898. package/corpus/templates/chat/app/components/ui/menubar.tsx +0 -234
  899. package/corpus/templates/chat/app/components/ui/navigation-menu.tsx +0 -128
  900. package/corpus/templates/chat/app/components/ui/pagination.tsx +0 -121
  901. package/corpus/templates/chat/app/components/ui/popover.tsx +0 -44
  902. package/corpus/templates/chat/app/components/ui/progress.tsx +0 -26
  903. package/corpus/templates/chat/app/components/ui/radio-group.tsx +0 -42
  904. package/corpus/templates/chat/app/components/ui/resizable.tsx +0 -43
  905. package/corpus/templates/chat/app/components/ui/scroll-area.tsx +0 -46
  906. package/corpus/templates/chat/app/components/ui/select.tsx +0 -158
  907. package/corpus/templates/chat/app/components/ui/separator.tsx +0 -29
  908. package/corpus/templates/chat/app/components/ui/sheet.tsx +0 -160
  909. package/corpus/templates/chat/app/components/ui/sidebar.tsx +0 -782
  910. package/corpus/templates/chat/app/components/ui/skeleton.tsx +0 -15
  911. package/corpus/templates/chat/app/components/ui/slider.tsx +0 -26
  912. package/corpus/templates/chat/app/components/ui/sonner.tsx +0 -58
  913. package/corpus/templates/chat/app/components/ui/spinner.tsx +0 -17
  914. package/corpus/templates/chat/app/components/ui/switch.tsx +0 -27
  915. package/corpus/templates/chat/app/components/ui/table.tsx +0 -117
  916. package/corpus/templates/chat/app/components/ui/tabs.tsx +0 -53
  917. package/corpus/templates/chat/app/components/ui/textarea.tsx +0 -23
  918. package/corpus/templates/chat/app/components/ui/toast.tsx +0 -127
  919. package/corpus/templates/chat/app/components/ui/toaster.tsx +0 -33
  920. package/corpus/templates/chat/app/components/ui/toggle-group.tsx +0 -59
  921. package/corpus/templates/chat/app/components/ui/toggle.tsx +0 -43
  922. package/corpus/templates/chat/app/components/ui/tooltip.tsx +0 -30
  923. package/corpus/templates/chat/app/components/ui/use-toast.ts +0 -3
  924. package/corpus/templates/chat/app/hooks/use-mobile.tsx +0 -21
  925. package/corpus/templates/chat/app/hooks/use-toast.ts +0 -188
  926. package/corpus/templates/clips/app/components/layout/HeaderActions.tsx +0 -84
  927. package/corpus/templates/clips/app/components/ui/accordion.tsx +0 -56
  928. package/corpus/templates/clips/app/components/ui/alert-dialog.tsx +0 -139
  929. package/corpus/templates/clips/app/components/ui/alert.tsx +0 -59
  930. package/corpus/templates/clips/app/components/ui/aspect-ratio.tsx +0 -5
  931. package/corpus/templates/clips/app/components/ui/avatar.tsx +0 -48
  932. package/corpus/templates/clips/app/components/ui/badge.tsx +0 -37
  933. package/corpus/templates/clips/app/components/ui/breadcrumb.tsx +0 -115
  934. package/corpus/templates/clips/app/components/ui/button.tsx +0 -57
  935. package/corpus/templates/clips/app/components/ui/calendar.tsx +0 -68
  936. package/corpus/templates/clips/app/components/ui/card.tsx +0 -86
  937. package/corpus/templates/clips/app/components/ui/carousel.tsx +0 -260
  938. package/corpus/templates/clips/app/components/ui/chart.tsx +0 -375
  939. package/corpus/templates/clips/app/components/ui/checkbox.tsx +0 -28
  940. package/corpus/templates/clips/app/components/ui/collapsible.tsx +0 -9
  941. package/corpus/templates/clips/app/components/ui/command.tsx +0 -154
  942. package/corpus/templates/clips/app/components/ui/context-menu.tsx +0 -202
  943. package/corpus/templates/clips/app/components/ui/dialog.tsx +0 -130
  944. package/corpus/templates/clips/app/components/ui/drawer.tsx +0 -116
  945. package/corpus/templates/clips/app/components/ui/dropdown-menu.tsx +0 -212
  946. package/corpus/templates/clips/app/components/ui/form.tsx +0 -177
  947. package/corpus/templates/clips/app/components/ui/hover-card.tsx +0 -27
  948. package/corpus/templates/clips/app/components/ui/input-otp.tsx +0 -69
  949. package/corpus/templates/clips/app/components/ui/input.tsx +0 -22
  950. package/corpus/templates/clips/app/components/ui/label.tsx +0 -24
  951. package/corpus/templates/clips/app/components/ui/menubar.tsx +0 -234
  952. package/corpus/templates/clips/app/components/ui/navigation-menu.tsx +0 -128
  953. package/corpus/templates/clips/app/components/ui/pagination.tsx +0 -121
  954. package/corpus/templates/clips/app/components/ui/popover.tsx +0 -44
  955. package/corpus/templates/clips/app/components/ui/progress.tsx +0 -26
  956. package/corpus/templates/clips/app/components/ui/radio-group.tsx +0 -42
  957. package/corpus/templates/clips/app/components/ui/resizable.tsx +0 -43
  958. package/corpus/templates/clips/app/components/ui/scroll-area.tsx +0 -46
  959. package/corpus/templates/clips/app/components/ui/select.tsx +0 -158
  960. package/corpus/templates/clips/app/components/ui/separator.tsx +0 -29
  961. package/corpus/templates/clips/app/components/ui/sheet.tsx +0 -160
  962. package/corpus/templates/clips/app/components/ui/sidebar.tsx +0 -782
  963. package/corpus/templates/clips/app/components/ui/skeleton.tsx +0 -15
  964. package/corpus/templates/clips/app/components/ui/slider.tsx +0 -26
  965. package/corpus/templates/clips/app/components/ui/sonner.tsx +0 -58
  966. package/corpus/templates/clips/app/components/ui/spinner.tsx +0 -17
  967. package/corpus/templates/clips/app/components/ui/switch.tsx +0 -27
  968. package/corpus/templates/clips/app/components/ui/table.tsx +0 -117
  969. package/corpus/templates/clips/app/components/ui/tabs.tsx +0 -53
  970. package/corpus/templates/clips/app/components/ui/textarea.tsx +0 -23
  971. package/corpus/templates/clips/app/components/ui/toast.tsx +0 -127
  972. package/corpus/templates/clips/app/components/ui/toaster.tsx +0 -33
  973. package/corpus/templates/clips/app/components/ui/toggle-group.tsx +0 -59
  974. package/corpus/templates/clips/app/components/ui/toggle.tsx +0 -43
  975. package/corpus/templates/clips/app/components/ui/tooltip.tsx +0 -30
  976. package/corpus/templates/clips/app/components/ui/use-toast.ts +0 -3
  977. package/corpus/templates/clips/app/hooks/use-mobile.tsx +0 -21
  978. package/corpus/templates/clips/app/hooks/use-toast.ts +0 -188
  979. package/corpus/templates/content/app/components/layout/HeaderActions.tsx +0 -84
  980. package/corpus/templates/content/app/components/ui/alert-dialog.tsx +0 -139
  981. package/corpus/templates/content/app/components/ui/button.tsx +0 -57
  982. package/corpus/templates/content/app/components/ui/dialog.tsx +0 -130
  983. package/corpus/templates/content/app/components/ui/dropdown-menu.tsx +0 -212
  984. package/corpus/templates/content/app/components/ui/input.tsx +0 -22
  985. package/corpus/templates/content/app/components/ui/label.tsx +0 -24
  986. package/corpus/templates/content/app/components/ui/popover.tsx +0 -44
  987. package/corpus/templates/content/app/components/ui/separator.tsx +0 -29
  988. package/corpus/templates/content/app/components/ui/sheet.tsx +0 -160
  989. package/corpus/templates/content/app/components/ui/skeleton.tsx +0 -15
  990. package/corpus/templates/content/app/components/ui/sonner.tsx +0 -58
  991. package/corpus/templates/content/app/components/ui/spinner.tsx +0 -17
  992. package/corpus/templates/content/app/components/ui/table.tsx +0 -117
  993. package/corpus/templates/content/app/components/ui/toast.tsx +0 -127
  994. package/corpus/templates/content/app/components/ui/toaster.tsx +0 -33
  995. package/corpus/templates/content/app/components/ui/toggle.tsx +0 -43
  996. package/corpus/templates/content/app/components/ui/tooltip.tsx +0 -30
  997. package/corpus/templates/content/app/components/ui/use-toast.ts +0 -3
  998. package/corpus/templates/content/app/hooks/use-mobile.tsx +0 -21
  999. package/corpus/templates/content/app/hooks/use-toast.ts +0 -188
  1000. package/corpus/templates/design/app/components/layout/HeaderActions.tsx +0 -84
  1001. package/corpus/templates/design/app/components/ui/accordion.tsx +0 -56
  1002. package/corpus/templates/design/app/components/ui/alert-dialog.tsx +0 -139
  1003. package/corpus/templates/design/app/components/ui/alert.tsx +0 -59
  1004. package/corpus/templates/design/app/components/ui/aspect-ratio.tsx +0 -5
  1005. package/corpus/templates/design/app/components/ui/avatar.tsx +0 -48
  1006. package/corpus/templates/design/app/components/ui/badge.tsx +0 -37
  1007. package/corpus/templates/design/app/components/ui/breadcrumb.tsx +0 -115
  1008. package/corpus/templates/design/app/components/ui/button.tsx +0 -57
  1009. package/corpus/templates/design/app/components/ui/calendar.tsx +0 -68
  1010. package/corpus/templates/design/app/components/ui/card.tsx +0 -86
  1011. package/corpus/templates/design/app/components/ui/carousel.tsx +0 -260
  1012. package/corpus/templates/design/app/components/ui/chart.tsx +0 -375
  1013. package/corpus/templates/design/app/components/ui/checkbox.tsx +0 -28
  1014. package/corpus/templates/design/app/components/ui/collapsible.tsx +0 -9
  1015. package/corpus/templates/design/app/components/ui/command.tsx +0 -154
  1016. package/corpus/templates/design/app/components/ui/context-menu.tsx +0 -202
  1017. package/corpus/templates/design/app/components/ui/dialog.tsx +0 -130
  1018. package/corpus/templates/design/app/components/ui/drawer.tsx +0 -116
  1019. package/corpus/templates/design/app/components/ui/dropdown-menu.tsx +0 -212
  1020. package/corpus/templates/design/app/components/ui/form.tsx +0 -177
  1021. package/corpus/templates/design/app/components/ui/hover-card.tsx +0 -27
  1022. package/corpus/templates/design/app/components/ui/input-otp.tsx +0 -69
  1023. package/corpus/templates/design/app/components/ui/input.tsx +0 -22
  1024. package/corpus/templates/design/app/components/ui/label.tsx +0 -24
  1025. package/corpus/templates/design/app/components/ui/menubar.tsx +0 -234
  1026. package/corpus/templates/design/app/components/ui/navigation-menu.tsx +0 -128
  1027. package/corpus/templates/design/app/components/ui/pagination.tsx +0 -121
  1028. package/corpus/templates/design/app/components/ui/popover.tsx +0 -44
  1029. package/corpus/templates/design/app/components/ui/progress.tsx +0 -26
  1030. package/corpus/templates/design/app/components/ui/radio-group.tsx +0 -42
  1031. package/corpus/templates/design/app/components/ui/resizable.tsx +0 -43
  1032. package/corpus/templates/design/app/components/ui/scroll-area.tsx +0 -46
  1033. package/corpus/templates/design/app/components/ui/select.tsx +0 -158
  1034. package/corpus/templates/design/app/components/ui/separator.tsx +0 -29
  1035. package/corpus/templates/design/app/components/ui/sheet.tsx +0 -160
  1036. package/corpus/templates/design/app/components/ui/sidebar.tsx +0 -782
  1037. package/corpus/templates/design/app/components/ui/skeleton.tsx +0 -15
  1038. package/corpus/templates/design/app/components/ui/slider.tsx +0 -26
  1039. package/corpus/templates/design/app/components/ui/sonner.tsx +0 -58
  1040. package/corpus/templates/design/app/components/ui/spinner.tsx +0 -17
  1041. package/corpus/templates/design/app/components/ui/switch.tsx +0 -27
  1042. package/corpus/templates/design/app/components/ui/table.tsx +0 -117
  1043. package/corpus/templates/design/app/components/ui/tabs.tsx +0 -53
  1044. package/corpus/templates/design/app/components/ui/textarea.tsx +0 -23
  1045. package/corpus/templates/design/app/components/ui/toast.tsx +0 -127
  1046. package/corpus/templates/design/app/components/ui/toaster.tsx +0 -33
  1047. package/corpus/templates/design/app/components/ui/toggle-group.tsx +0 -59
  1048. package/corpus/templates/design/app/components/ui/toggle.tsx +0 -43
  1049. package/corpus/templates/design/app/components/ui/tooltip.tsx +0 -30
  1050. package/corpus/templates/design/app/components/ui/use-toast.ts +0 -3
  1051. package/corpus/templates/design/app/hooks/use-mobile.tsx +0 -21
  1052. package/corpus/templates/design/app/hooks/use-toast.ts +0 -188
  1053. package/corpus/templates/forms/app/components/layout/HeaderActions.tsx +0 -84
  1054. package/corpus/templates/forms/app/components/ui/accordion.tsx +0 -56
  1055. package/corpus/templates/forms/app/components/ui/alert-dialog.tsx +0 -139
  1056. package/corpus/templates/forms/app/components/ui/alert.tsx +0 -59
  1057. package/corpus/templates/forms/app/components/ui/aspect-ratio.tsx +0 -5
  1058. package/corpus/templates/forms/app/components/ui/avatar.tsx +0 -48
  1059. package/corpus/templates/forms/app/components/ui/badge.tsx +0 -37
  1060. package/corpus/templates/forms/app/components/ui/breadcrumb.tsx +0 -115
  1061. package/corpus/templates/forms/app/components/ui/button.tsx +0 -57
  1062. package/corpus/templates/forms/app/components/ui/card.tsx +0 -86
  1063. package/corpus/templates/forms/app/components/ui/carousel.tsx +0 -260
  1064. package/corpus/templates/forms/app/components/ui/checkbox.tsx +0 -28
  1065. package/corpus/templates/forms/app/components/ui/collapsible.tsx +0 -9
  1066. package/corpus/templates/forms/app/components/ui/dialog.tsx +0 -130
  1067. package/corpus/templates/forms/app/components/ui/drawer.tsx +0 -116
  1068. package/corpus/templates/forms/app/components/ui/dropdown-menu.tsx +0 -212
  1069. package/corpus/templates/forms/app/components/ui/form.tsx +0 -177
  1070. package/corpus/templates/forms/app/components/ui/hover-card.tsx +0 -27
  1071. package/corpus/templates/forms/app/components/ui/input-otp.tsx +0 -69
  1072. package/corpus/templates/forms/app/components/ui/input.tsx +0 -22
  1073. package/corpus/templates/forms/app/components/ui/label.tsx +0 -24
  1074. package/corpus/templates/forms/app/components/ui/navigation-menu.tsx +0 -128
  1075. package/corpus/templates/forms/app/components/ui/pagination.tsx +0 -121
  1076. package/corpus/templates/forms/app/components/ui/popover.tsx +0 -44
  1077. package/corpus/templates/forms/app/components/ui/progress.tsx +0 -26
  1078. package/corpus/templates/forms/app/components/ui/radio-group.tsx +0 -42
  1079. package/corpus/templates/forms/app/components/ui/resizable.tsx +0 -43
  1080. package/corpus/templates/forms/app/components/ui/scroll-area.tsx +0 -46
  1081. package/corpus/templates/forms/app/components/ui/select.tsx +0 -158
  1082. package/corpus/templates/forms/app/components/ui/separator.tsx +0 -29
  1083. package/corpus/templates/forms/app/components/ui/sheet.tsx +0 -160
  1084. package/corpus/templates/forms/app/components/ui/sidebar.tsx +0 -782
  1085. package/corpus/templates/forms/app/components/ui/skeleton.tsx +0 -15
  1086. package/corpus/templates/forms/app/components/ui/slider.tsx +0 -26
  1087. package/corpus/templates/forms/app/components/ui/sonner.tsx +0 -58
  1088. package/corpus/templates/forms/app/components/ui/spinner.tsx +0 -17
  1089. package/corpus/templates/forms/app/components/ui/switch.tsx +0 -27
  1090. package/corpus/templates/forms/app/components/ui/table.tsx +0 -117
  1091. package/corpus/templates/forms/app/components/ui/tabs.tsx +0 -53
  1092. package/corpus/templates/forms/app/components/ui/textarea.tsx +0 -23
  1093. package/corpus/templates/forms/app/components/ui/toast.tsx +0 -127
  1094. package/corpus/templates/forms/app/components/ui/toaster.tsx +0 -33
  1095. package/corpus/templates/forms/app/components/ui/toggle-group.tsx +0 -59
  1096. package/corpus/templates/forms/app/components/ui/toggle.tsx +0 -43
  1097. package/corpus/templates/forms/app/components/ui/tooltip.tsx +0 -30
  1098. package/corpus/templates/forms/app/hooks/use-mobile.tsx +0 -21
  1099. package/corpus/templates/forms/app/hooks/use-toast.ts +0 -188
  1100. package/corpus/templates/macros/app/components/layout/HeaderActions.tsx +0 -84
  1101. package/corpus/templates/macros/app/components/ui/accordion.tsx +0 -56
  1102. package/corpus/templates/macros/app/components/ui/alert-dialog.tsx +0 -139
  1103. package/corpus/templates/macros/app/components/ui/alert.tsx +0 -59
  1104. package/corpus/templates/macros/app/components/ui/aspect-ratio.tsx +0 -5
  1105. package/corpus/templates/macros/app/components/ui/avatar.tsx +0 -48
  1106. package/corpus/templates/macros/app/components/ui/badge.tsx +0 -37
  1107. package/corpus/templates/macros/app/components/ui/breadcrumb.tsx +0 -115
  1108. package/corpus/templates/macros/app/components/ui/chart.tsx +0 -375
  1109. package/corpus/templates/macros/app/components/ui/checkbox.tsx +0 -28
  1110. package/corpus/templates/macros/app/components/ui/collapsible.tsx +0 -9
  1111. package/corpus/templates/macros/app/components/ui/command.tsx +0 -154
  1112. package/corpus/templates/macros/app/components/ui/context-menu.tsx +0 -202
  1113. package/corpus/templates/macros/app/components/ui/drawer.tsx +0 -116
  1114. package/corpus/templates/macros/app/components/ui/dropdown-menu.tsx +0 -212
  1115. package/corpus/templates/macros/app/components/ui/form.tsx +0 -177
  1116. package/corpus/templates/macros/app/components/ui/hover-card.tsx +0 -27
  1117. package/corpus/templates/macros/app/components/ui/label.tsx +0 -24
  1118. package/corpus/templates/macros/app/components/ui/logo.tsx +0 -36
  1119. package/corpus/templates/macros/app/components/ui/navigation-menu.tsx +0 -128
  1120. package/corpus/templates/macros/app/components/ui/pagination.tsx +0 -121
  1121. package/corpus/templates/macros/app/components/ui/popover.tsx +0 -44
  1122. package/corpus/templates/macros/app/components/ui/radio-group.tsx +0 -42
  1123. package/corpus/templates/macros/app/components/ui/scroll-area.tsx +0 -46
  1124. package/corpus/templates/macros/app/components/ui/select.tsx +0 -158
  1125. package/corpus/templates/macros/app/components/ui/separator.tsx +0 -29
  1126. package/corpus/templates/macros/app/components/ui/sheet.tsx +0 -160
  1127. package/corpus/templates/macros/app/components/ui/skeleton.tsx +0 -15
  1128. package/corpus/templates/macros/app/components/ui/slider.tsx +0 -26
  1129. package/corpus/templates/macros/app/components/ui/sonner.tsx +0 -58
  1130. package/corpus/templates/macros/app/components/ui/switch.tsx +0 -27
  1131. package/corpus/templates/macros/app/components/ui/table.tsx +0 -117
  1132. package/corpus/templates/macros/app/components/ui/toast.tsx +0 -127
  1133. package/corpus/templates/macros/app/components/ui/toggle-group.tsx +0 -59
  1134. package/corpus/templates/macros/app/components/ui/toggle.tsx +0 -43
  1135. package/corpus/templates/macros/app/components/ui/tooltip.tsx +0 -30
  1136. package/corpus/templates/mail/app/components/ui/accordion.tsx +0 -56
  1137. package/corpus/templates/mail/app/components/ui/alert-dialog.tsx +0 -139
  1138. package/corpus/templates/mail/app/components/ui/alert.tsx +0 -59
  1139. package/corpus/templates/mail/app/components/ui/aspect-ratio.tsx +0 -5
  1140. package/corpus/templates/mail/app/components/ui/avatar.tsx +0 -48
  1141. package/corpus/templates/mail/app/components/ui/badge.tsx +0 -37
  1142. package/corpus/templates/mail/app/components/ui/breadcrumb.tsx +0 -115
  1143. package/corpus/templates/mail/app/components/ui/button.tsx +0 -57
  1144. package/corpus/templates/mail/app/components/ui/card.tsx +0 -86
  1145. package/corpus/templates/mail/app/components/ui/carousel.tsx +0 -260
  1146. package/corpus/templates/mail/app/components/ui/checkbox.tsx +0 -28
  1147. package/corpus/templates/mail/app/components/ui/collapsible.tsx +0 -9
  1148. package/corpus/templates/mail/app/components/ui/dialog.tsx +0 -130
  1149. package/corpus/templates/mail/app/components/ui/drawer.tsx +0 -116
  1150. package/corpus/templates/mail/app/components/ui/dropdown-menu.tsx +0 -212
  1151. package/corpus/templates/mail/app/components/ui/form.tsx +0 -177
  1152. package/corpus/templates/mail/app/components/ui/hover-card.tsx +0 -27
  1153. package/corpus/templates/mail/app/components/ui/input-otp.tsx +0 -69
  1154. package/corpus/templates/mail/app/components/ui/label.tsx +0 -24
  1155. package/corpus/templates/mail/app/components/ui/navigation-menu.tsx +0 -128
  1156. package/corpus/templates/mail/app/components/ui/pagination.tsx +0 -121
  1157. package/corpus/templates/mail/app/components/ui/popover.tsx +0 -44
  1158. package/corpus/templates/mail/app/components/ui/progress.tsx +0 -26
  1159. package/corpus/templates/mail/app/components/ui/radio-group.tsx +0 -42
  1160. package/corpus/templates/mail/app/components/ui/resizable.tsx +0 -43
  1161. package/corpus/templates/mail/app/components/ui/scroll-area.tsx +0 -46
  1162. package/corpus/templates/mail/app/components/ui/select.tsx +0 -158
  1163. package/corpus/templates/mail/app/components/ui/separator.tsx +0 -29
  1164. package/corpus/templates/mail/app/components/ui/sheet.tsx +0 -160
  1165. package/corpus/templates/mail/app/components/ui/sidebar.tsx +0 -782
  1166. package/corpus/templates/mail/app/components/ui/skeleton.tsx +0 -15
  1167. package/corpus/templates/mail/app/components/ui/slider.tsx +0 -26
  1168. package/corpus/templates/mail/app/components/ui/spinner.tsx +0 -17
  1169. package/corpus/templates/mail/app/components/ui/switch.tsx +0 -27
  1170. package/corpus/templates/mail/app/components/ui/table.tsx +0 -117
  1171. package/corpus/templates/mail/app/components/ui/tabs.tsx +0 -53
  1172. package/corpus/templates/mail/app/components/ui/toast.tsx +0 -127
  1173. package/corpus/templates/mail/app/components/ui/toaster.tsx +0 -33
  1174. package/corpus/templates/mail/app/components/ui/toggle-group.tsx +0 -59
  1175. package/corpus/templates/mail/app/components/ui/toggle.tsx +0 -43
  1176. package/corpus/templates/mail/app/components/ui/tooltip.tsx +0 -30
  1177. package/corpus/templates/mail/app/hooks/use-toast.ts +0 -188
  1178. package/corpus/templates/plan/app/components/layout/HeaderActions.tsx +0 -84
  1179. package/corpus/templates/plan/app/components/ui/accordion.tsx +0 -56
  1180. package/corpus/templates/plan/app/components/ui/alert-dialog.tsx +0 -139
  1181. package/corpus/templates/plan/app/components/ui/alert.tsx +0 -59
  1182. package/corpus/templates/plan/app/components/ui/aspect-ratio.tsx +0 -5
  1183. package/corpus/templates/plan/app/components/ui/avatar.tsx +0 -48
  1184. package/corpus/templates/plan/app/components/ui/badge.tsx +0 -37
  1185. package/corpus/templates/plan/app/components/ui/breadcrumb.tsx +0 -115
  1186. package/corpus/templates/plan/app/components/ui/button.tsx +0 -57
  1187. package/corpus/templates/plan/app/components/ui/calendar.tsx +0 -68
  1188. package/corpus/templates/plan/app/components/ui/card.tsx +0 -86
  1189. package/corpus/templates/plan/app/components/ui/carousel.tsx +0 -260
  1190. package/corpus/templates/plan/app/components/ui/chart.tsx +0 -375
  1191. package/corpus/templates/plan/app/components/ui/checkbox.tsx +0 -28
  1192. package/corpus/templates/plan/app/components/ui/collapsible.tsx +0 -9
  1193. package/corpus/templates/plan/app/components/ui/command.tsx +0 -154
  1194. package/corpus/templates/plan/app/components/ui/context-menu.tsx +0 -202
  1195. package/corpus/templates/plan/app/components/ui/dialog.tsx +0 -130
  1196. package/corpus/templates/plan/app/components/ui/drawer.tsx +0 -116
  1197. package/corpus/templates/plan/app/components/ui/dropdown-menu.tsx +0 -212
  1198. package/corpus/templates/plan/app/components/ui/form.tsx +0 -177
  1199. package/corpus/templates/plan/app/components/ui/hover-card.tsx +0 -27
  1200. package/corpus/templates/plan/app/components/ui/input-otp.tsx +0 -69
  1201. package/corpus/templates/plan/app/components/ui/input.tsx +0 -22
  1202. package/corpus/templates/plan/app/components/ui/label.tsx +0 -24
  1203. package/corpus/templates/plan/app/components/ui/menubar.tsx +0 -234
  1204. package/corpus/templates/plan/app/components/ui/navigation-menu.tsx +0 -128
  1205. package/corpus/templates/plan/app/components/ui/pagination.tsx +0 -121
  1206. package/corpus/templates/plan/app/components/ui/popover.tsx +0 -44
  1207. package/corpus/templates/plan/app/components/ui/progress.tsx +0 -26
  1208. package/corpus/templates/plan/app/components/ui/radio-group.tsx +0 -42
  1209. package/corpus/templates/plan/app/components/ui/resizable.tsx +0 -43
  1210. package/corpus/templates/plan/app/components/ui/scroll-area.tsx +0 -46
  1211. package/corpus/templates/plan/app/components/ui/select.tsx +0 -158
  1212. package/corpus/templates/plan/app/components/ui/separator.tsx +0 -29
  1213. package/corpus/templates/plan/app/components/ui/sheet.tsx +0 -160
  1214. package/corpus/templates/plan/app/components/ui/sidebar.tsx +0 -782
  1215. package/corpus/templates/plan/app/components/ui/skeleton.tsx +0 -15
  1216. package/corpus/templates/plan/app/components/ui/slider.tsx +0 -26
  1217. package/corpus/templates/plan/app/components/ui/sonner.tsx +0 -58
  1218. package/corpus/templates/plan/app/components/ui/spinner.tsx +0 -17
  1219. package/corpus/templates/plan/app/components/ui/switch.tsx +0 -27
  1220. package/corpus/templates/plan/app/components/ui/table.tsx +0 -117
  1221. package/corpus/templates/plan/app/components/ui/textarea.tsx +0 -23
  1222. package/corpus/templates/plan/app/components/ui/toast.tsx +0 -127
  1223. package/corpus/templates/plan/app/components/ui/toaster.tsx +0 -33
  1224. package/corpus/templates/plan/app/components/ui/toggle-group.tsx +0 -59
  1225. package/corpus/templates/plan/app/components/ui/toggle.tsx +0 -43
  1226. package/corpus/templates/plan/app/components/ui/tooltip.tsx +0 -30
  1227. package/corpus/templates/plan/app/components/ui/use-toast.ts +0 -3
  1228. package/corpus/templates/plan/app/hooks/use-mobile.tsx +0 -21
  1229. package/corpus/templates/plan/app/hooks/use-toast.ts +0 -188
  1230. package/corpus/templates/slides/app/components/layout/HeaderActions.tsx +0 -84
  1231. package/corpus/templates/slides/app/components/ui/accordion.tsx +0 -56
  1232. package/corpus/templates/slides/app/components/ui/alert-dialog.tsx +0 -139
  1233. package/corpus/templates/slides/app/components/ui/alert.tsx +0 -59
  1234. package/corpus/templates/slides/app/components/ui/aspect-ratio.tsx +0 -5
  1235. package/corpus/templates/slides/app/components/ui/avatar.tsx +0 -48
  1236. package/corpus/templates/slides/app/components/ui/badge.tsx +0 -37
  1237. package/corpus/templates/slides/app/components/ui/breadcrumb.tsx +0 -115
  1238. package/corpus/templates/slides/app/components/ui/button.tsx +0 -57
  1239. package/corpus/templates/slides/app/components/ui/calendar.tsx +0 -68
  1240. package/corpus/templates/slides/app/components/ui/card.tsx +0 -86
  1241. package/corpus/templates/slides/app/components/ui/carousel.tsx +0 -260
  1242. package/corpus/templates/slides/app/components/ui/chart.tsx +0 -375
  1243. package/corpus/templates/slides/app/components/ui/checkbox.tsx +0 -28
  1244. package/corpus/templates/slides/app/components/ui/collapsible.tsx +0 -9
  1245. package/corpus/templates/slides/app/components/ui/command.tsx +0 -154
  1246. package/corpus/templates/slides/app/components/ui/context-menu.tsx +0 -202
  1247. package/corpus/templates/slides/app/components/ui/dialog.tsx +0 -130
  1248. package/corpus/templates/slides/app/components/ui/drawer.tsx +0 -116
  1249. package/corpus/templates/slides/app/components/ui/dropdown-menu.tsx +0 -212
  1250. package/corpus/templates/slides/app/components/ui/form.tsx +0 -177
  1251. package/corpus/templates/slides/app/components/ui/hover-card.tsx +0 -27
  1252. package/corpus/templates/slides/app/components/ui/input-otp.tsx +0 -69
  1253. package/corpus/templates/slides/app/components/ui/input.tsx +0 -22
  1254. package/corpus/templates/slides/app/components/ui/label.tsx +0 -24
  1255. package/corpus/templates/slides/app/components/ui/menubar.tsx +0 -234
  1256. package/corpus/templates/slides/app/components/ui/navigation-menu.tsx +0 -128
  1257. package/corpus/templates/slides/app/components/ui/pagination.tsx +0 -121
  1258. package/corpus/templates/slides/app/components/ui/popover.tsx +0 -44
  1259. package/corpus/templates/slides/app/components/ui/progress.tsx +0 -26
  1260. package/corpus/templates/slides/app/components/ui/radio-group.tsx +0 -42
  1261. package/corpus/templates/slides/app/components/ui/resizable.tsx +0 -43
  1262. package/corpus/templates/slides/app/components/ui/scroll-area.tsx +0 -46
  1263. package/corpus/templates/slides/app/components/ui/select.tsx +0 -158
  1264. package/corpus/templates/slides/app/components/ui/separator.tsx +0 -29
  1265. package/corpus/templates/slides/app/components/ui/sheet.tsx +0 -160
  1266. package/corpus/templates/slides/app/components/ui/sidebar.tsx +0 -782
  1267. package/corpus/templates/slides/app/components/ui/skeleton.tsx +0 -15
  1268. package/corpus/templates/slides/app/components/ui/slider.tsx +0 -26
  1269. package/corpus/templates/slides/app/components/ui/sonner.tsx +0 -58
  1270. package/corpus/templates/slides/app/components/ui/spinner.tsx +0 -17
  1271. package/corpus/templates/slides/app/components/ui/switch.tsx +0 -27
  1272. package/corpus/templates/slides/app/components/ui/table.tsx +0 -117
  1273. package/corpus/templates/slides/app/components/ui/tabs.tsx +0 -53
  1274. package/corpus/templates/slides/app/components/ui/textarea.tsx +0 -23
  1275. package/corpus/templates/slides/app/components/ui/toast.tsx +0 -127
  1276. package/corpus/templates/slides/app/components/ui/toaster.tsx +0 -33
  1277. package/corpus/templates/slides/app/components/ui/toggle-group.tsx +0 -59
  1278. package/corpus/templates/slides/app/components/ui/toggle.tsx +0 -43
  1279. package/corpus/templates/slides/app/components/ui/tooltip.tsx +0 -30
  1280. package/corpus/templates/slides/app/components/ui/use-toast.ts +0 -3
  1281. package/corpus/templates/slides/app/hooks/use-mobile.tsx +0 -21
  1282. package/corpus/templates/slides/app/hooks/use-toast.ts +0 -188
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: added
3
+ date: 2026-07-05
4
+ ---
5
+
6
+ Desktop Clips can now use a custom global shortcut to start or stop recording.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-05
4
+ ---
5
+
6
+ Desktop recordings no longer fail when saved capture constraints are stale after an app update.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-05
4
+ ---
5
+
6
+ Permanently deleted clips now clean up matching video and thumbnail objects from configured S3-compatible storage.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-05
4
+ ---
5
+
6
+ Timeline zoom controls are now visible in the clip editor, support trackpad pinch gestures, and stay anchored while selecting ranges.
@@ -156,6 +156,7 @@ const VOICE_SHORTCUT_KEY = "clips:voice-shortcut";
156
156
  const VOICE_SHORTCUT_CONFIGURED_KEY = "clips:voice-shortcut-configured";
157
157
  const VOICE_CUSTOM_SHORTCUT_KEY = "clips:voice-custom-shortcut";
158
158
  const POPOVER_CUSTOM_SHORTCUT_KEY = "clips:popover-custom-shortcut";
159
+ const RECORD_CUSTOM_SHORTCUT_KEY = "clips:record-custom-shortcut";
159
160
  const VOICE_MODE_KEY = "clips:voice-mode";
160
161
  const VOICE_PROVIDER_KEY = "clips:voice-provider";
161
162
  const VOICE_INSTRUCTIONS_KEY = "clips:voice-instructions";
@@ -596,6 +597,9 @@ export function App() {
596
597
  const [popoverCustomShortcut, setPopoverCustomShortcut] = useState<string>(
597
598
  () => loadStringAllowEmpty(POPOVER_CUSTOM_SHORTCUT_KEY, ""),
598
599
  );
600
+ const [recordCustomShortcut, setRecordCustomShortcut] = useState<string>(() =>
601
+ loadStringAllowEmpty(RECORD_CUSTOM_SHORTCUT_KEY, ""),
602
+ );
599
603
  const [voiceMode, setVoiceMode] = useState<VoiceMode>(() => {
600
604
  const saved = loadString(VOICE_MODE_KEY, "push-to-talk");
601
605
  return saved === "toggle" ? "toggle" : "push-to-talk";
@@ -656,6 +660,7 @@ export function App() {
656
660
  const isRecording = recorder !== null;
657
661
  // Whether the popover window is shown; driven by the visibility effect below.
658
662
  const [popoverVisible, setPopoverVisible] = useState(false);
663
+ const recordShortcutHandlerRef = useRef<() => void>(() => {});
659
664
  // Mirrors `bubbleActive` (assigned below once it is computed) so device
660
665
  // probes can synchronously tell whether the camera bubble owns the grant.
661
666
  const bubbleActiveRef = useRef(false);
@@ -779,6 +784,7 @@ export function App() {
779
784
  invoke("set_custom_shortcuts", {
780
785
  voice: voiceShortcut === "custom" ? voiceCustomShortcut : null,
781
786
  popover: popoverCustomShortcut.trim() ? popoverCustomShortcut : null,
787
+ record: recordCustomShortcut.trim() ? recordCustomShortcut : null,
782
788
  })
783
789
  .then(() => {
784
790
  if (!cancelled) setShortcutRegistrationError(null);
@@ -794,7 +800,12 @@ export function App() {
794
800
  return () => {
795
801
  cancelled = true;
796
802
  };
797
- }, [popoverCustomShortcut, voiceCustomShortcut, voiceShortcut]);
803
+ }, [
804
+ popoverCustomShortcut,
805
+ recordCustomShortcut,
806
+ voiceCustomShortcut,
807
+ voiceShortcut,
808
+ ]);
798
809
 
799
810
  // ---- auth status --------------------------------------------------------
800
811
  // The Tauri WebView has its own cookie jar (separate from the user's
@@ -1571,6 +1582,10 @@ export function App() {
1571
1582
  () => saveString(POPOVER_CUSTOM_SHORTCUT_KEY, popoverCustomShortcut),
1572
1583
  [popoverCustomShortcut],
1573
1584
  );
1585
+ useEffect(
1586
+ () => saveString(RECORD_CUSTOM_SHORTCUT_KEY, recordCustomShortcut),
1587
+ [recordCustomShortcut],
1588
+ );
1574
1589
  useEffect(() => saveString(VOICE_MODE_KEY, voiceMode), [voiceMode]);
1575
1590
  useEffect(
1576
1591
  () => saveString(VOICE_PROVIDER_KEY, voiceProvider),
@@ -1952,6 +1967,66 @@ export function App() {
1952
1967
  setRecError(message);
1953
1968
  }
1954
1969
 
1970
+ recordShortcutHandlerRef.current = () => {
1971
+ if (recorder) {
1972
+ emit("clips:recorder-stop").catch(() => {});
1973
+ return;
1974
+ }
1975
+ if (recordingFlowGateRef.current || recordingFlowActive) {
1976
+ emit("clips:countdown-cancel").catch(() => {});
1977
+ return;
1978
+ }
1979
+
1980
+ setShowSettings(false);
1981
+ if (authStatus === "anon" && localRecordingMode === "off") {
1982
+ setRecError("Sign in to Clips before using the recording shortcut.");
1983
+ invoke("show_popover").catch(() => {});
1984
+ return;
1985
+ }
1986
+
1987
+ const canStartFromGlobalShortcut =
1988
+ mode === "camera" || nativeFullscreenRecordingActive;
1989
+ if (!canStartFromGlobalShortcut) {
1990
+ setRecError(
1991
+ "Open Clips and click Start recording to use the selected source.",
1992
+ );
1993
+ invoke("show_popover").catch(() => {});
1994
+ return;
1995
+ }
1996
+
1997
+ void handleStartRecording({ ignoreActiveRecorder: true });
1998
+ };
1999
+
2000
+ useEffect(() => {
2001
+ let cancelled = false;
2002
+ let unlisten: (() => void) | null = null;
2003
+ listen("clips:record-shortcut", () => {
2004
+ recordShortcutHandlerRef.current();
2005
+ })
2006
+ .then((u) => {
2007
+ if (cancelled) {
2008
+ try {
2009
+ u();
2010
+ } catch {
2011
+ // ignore
2012
+ }
2013
+ return;
2014
+ }
2015
+ unlisten = u;
2016
+ })
2017
+ .catch(() => {});
2018
+ return () => {
2019
+ cancelled = true;
2020
+ if (unlisten) {
2021
+ try {
2022
+ unlisten();
2023
+ } catch {
2024
+ // ignore
2025
+ }
2026
+ }
2027
+ };
2028
+ }, []);
2029
+
1955
2030
  function updateReadinessOpen(next: boolean) {
1956
2031
  setReadinessOpen(next);
1957
2032
  if (!next) saveBool(READINESS_REVIEWED_KEY, true);
@@ -2128,6 +2203,7 @@ export function App() {
2128
2203
  voiceShortcut={voiceShortcut}
2129
2204
  voiceCustomShortcut={voiceCustomShortcut}
2130
2205
  popoverCustomShortcut={popoverCustomShortcut}
2206
+ recordCustomShortcut={recordCustomShortcut}
2131
2207
  voiceMode={voiceMode}
2132
2208
  voiceProvider={voiceProvider}
2133
2209
  voiceInstructions={voiceInstructions}
@@ -2135,6 +2211,7 @@ export function App() {
2135
2211
  onVoiceShortcutChange={updateVoiceShortcut}
2136
2212
  onVoiceCustomShortcutChange={setVoiceCustomShortcut}
2137
2213
  onPopoverCustomShortcutChange={setPopoverCustomShortcut}
2214
+ onRecordCustomShortcutChange={setRecordCustomShortcut}
2138
2215
  onVoiceModeChange={setVoiceMode}
2139
2216
  onVoiceProviderChange={setVoiceProvider}
2140
2217
  onVoiceInstructionsChange={setVoiceInstructions}
@@ -3059,6 +3136,7 @@ function Setup({
3059
3136
  voiceShortcut,
3060
3137
  voiceCustomShortcut,
3061
3138
  popoverCustomShortcut,
3139
+ recordCustomShortcut,
3062
3140
  voiceMode,
3063
3141
  voiceProvider,
3064
3142
  voiceInstructions,
@@ -3066,6 +3144,7 @@ function Setup({
3066
3144
  onVoiceShortcutChange,
3067
3145
  onVoiceCustomShortcutChange,
3068
3146
  onPopoverCustomShortcutChange,
3147
+ onRecordCustomShortcutChange,
3069
3148
  onVoiceModeChange,
3070
3149
  onVoiceProviderChange,
3071
3150
  onVoiceInstructionsChange,
@@ -3079,6 +3158,7 @@ function Setup({
3079
3158
  voiceShortcut: VoiceShortcutPreference;
3080
3159
  voiceCustomShortcut: string;
3081
3160
  popoverCustomShortcut: string;
3161
+ recordCustomShortcut: string;
3082
3162
  voiceMode: VoiceMode;
3083
3163
  voiceProvider: VoiceProvider;
3084
3164
  voiceInstructions: string;
@@ -3086,6 +3166,7 @@ function Setup({
3086
3166
  onVoiceShortcutChange: (value: VoiceShortcutPreference) => void;
3087
3167
  onVoiceCustomShortcutChange: (value: string) => void;
3088
3168
  onPopoverCustomShortcutChange: (value: string) => void;
3169
+ onRecordCustomShortcutChange: (value: string) => void;
3089
3170
  onVoiceModeChange: (value: VoiceMode) => void;
3090
3171
  onVoiceProviderChange: (value: VoiceProvider) => void;
3091
3172
  onVoiceInstructionsChange: (value: string) => void;
@@ -3967,6 +4048,22 @@ function Setup({
3967
4048
  </div>
3968
4049
  </details>
3969
4050
 
4051
+ <div className="setup-section">
4052
+ <SettingLabel
4053
+ label="Start/stop recording shortcut"
4054
+ hint="Optional global shortcut for starting full-screen, region, or camera recordings and stopping the active recording."
4055
+ />
4056
+ <ShortcutRecorder
4057
+ value={recordCustomShortcut}
4058
+ placeholder="Record shortcut"
4059
+ onChange={onRecordCustomShortcutChange}
4060
+ />
4061
+ <p className="setup-hint">
4062
+ Window and browser-tab sources still open Clips first so the picker
4063
+ can use a click.
4064
+ </p>
4065
+ </div>
4066
+
3970
4067
  <div className="setup-section">
3971
4068
  <SettingLabel
3972
4069
  label="Open Clips shortcut"
@@ -104,6 +104,7 @@ export function MediaDeviceRow({
104
104
  const { open, setOpen, rowRef } = useRowMenu();
105
105
 
106
106
  const disabled = !on;
107
+ const canOpenMenu = !disabled || (kind === "mic" && !!onSystemAudioToggle);
107
108
  const defaultLabel = kind === "camera" ? "Default camera" : "Default mic";
108
109
  const accessLabel =
109
110
  kind === "camera" ? "Allow camera access" : "Allow microphone access";
@@ -119,9 +120,9 @@ export function MediaDeviceRow({
119
120
  type="button"
120
121
  className="row-button"
121
122
  onClick={() => {
122
- if (!disabled) setOpen((v) => !v);
123
+ if (canOpenMenu) setOpen((v) => !v);
123
124
  }}
124
- disabled={disabled}
125
+ disabled={!canOpenMenu}
125
126
  title={label}
126
127
  >
127
128
  <span className="row-label">{label}</span>
@@ -0,0 +1,121 @@
1
+ export const VOICE_FOCUSED_AUDIO_CONSTRAINTS: MediaTrackConstraints = {
2
+ echoCancellation: { ideal: true },
3
+ noiseSuppression: { ideal: true },
4
+ autoGainControl: { ideal: true },
5
+ channelCount: { ideal: 1 },
6
+ };
7
+
8
+ export function voiceFocusedAudioConstraints(
9
+ deviceId?: string | null,
10
+ ): MediaTrackConstraints {
11
+ const id = deviceId?.trim();
12
+ return {
13
+ ...VOICE_FOCUSED_AUDIO_CONSTRAINTS,
14
+ ...(id ? { deviceId: { exact: id } } : {}),
15
+ };
16
+ }
17
+
18
+ export function buildDesktopDisplayMediaOptions({
19
+ audio,
20
+ frameRate,
21
+ maxWidth,
22
+ maxHeight,
23
+ }: {
24
+ audio: boolean;
25
+ frameRate: number;
26
+ maxWidth: number;
27
+ maxHeight: number;
28
+ }): DisplayMediaStreamOptions {
29
+ return {
30
+ video: {
31
+ frameRate: {
32
+ ideal: frameRate,
33
+ max: frameRate,
34
+ },
35
+ width: { ideal: maxWidth },
36
+ height: { ideal: maxHeight },
37
+ },
38
+ audio,
39
+ };
40
+ }
41
+
42
+ export function isMediaConstraintFailure(err: unknown): boolean {
43
+ const name =
44
+ err instanceof DOMException || err instanceof Error ? err.name : "";
45
+ const message = err instanceof Error ? err.message : String(err);
46
+ return (
47
+ name === "OverconstrainedError" ||
48
+ name === "ConstraintNotSatisfiedError" ||
49
+ name === "NotFoundError" ||
50
+ /invalid constraint|overconstrained|could not satisfy constraint|device not found|requested device not found/i.test(
51
+ message,
52
+ )
53
+ );
54
+ }
55
+
56
+ export async function getCameraStreamWithFallback(
57
+ deviceId?: string | null,
58
+ ): Promise<MediaStream> {
59
+ const id = deviceId?.trim();
60
+ const exactConstraints: MediaStreamConstraints = {
61
+ video: id ? { deviceId: { exact: id } } : true,
62
+ audio: false,
63
+ };
64
+
65
+ try {
66
+ return await navigator.mediaDevices.getUserMedia(exactConstraints);
67
+ } catch (err) {
68
+ if (!id || !isMediaConstraintFailure(err)) throw err;
69
+ console.warn(
70
+ "[clips-recorder] selected camera constraint failed; retrying default camera",
71
+ err,
72
+ );
73
+ return navigator.mediaDevices.getUserMedia({ video: true, audio: false });
74
+ }
75
+ }
76
+
77
+ export async function getAudioStreamWithFallback(
78
+ deviceId?: string | null,
79
+ ): Promise<MediaStream> {
80
+ const id = deviceId?.trim();
81
+
82
+ try {
83
+ return await navigator.mediaDevices.getUserMedia({
84
+ audio: voiceFocusedAudioConstraints(id),
85
+ video: false,
86
+ });
87
+ } catch (err) {
88
+ if (!isMediaConstraintFailure(err)) throw err;
89
+ if (id) {
90
+ console.warn(
91
+ "[clips-recorder] selected mic constraint failed; retrying default mic",
92
+ err,
93
+ );
94
+ try {
95
+ return await navigator.mediaDevices.getUserMedia({
96
+ audio: VOICE_FOCUSED_AUDIO_CONSTRAINTS,
97
+ video: false,
98
+ });
99
+ } catch (fallbackErr) {
100
+ if (!isMediaConstraintFailure(fallbackErr)) throw fallbackErr;
101
+ console.warn(
102
+ "[clips-recorder] voice-focused mic constraints failed; retrying basic audio",
103
+ fallbackErr,
104
+ );
105
+ return navigator.mediaDevices.getUserMedia({
106
+ audio: true,
107
+ video: false,
108
+ });
109
+ }
110
+ }
111
+
112
+ console.warn(
113
+ "[clips-recorder] voice-focused mic constraints failed; retrying basic audio",
114
+ err,
115
+ );
116
+ return navigator.mediaDevices.getUserMedia({
117
+ audio: true,
118
+ video: false,
119
+ });
120
+ }
121
+ }
@@ -64,6 +64,11 @@ import {
64
64
  type LocalExportedFile,
65
65
  type LocalRecordingTarget,
66
66
  } from "./local-export";
67
+ import {
68
+ buildDesktopDisplayMediaOptions,
69
+ getAudioStreamWithFallback,
70
+ getCameraStreamWithFallback,
71
+ } from "./media-capture-constraints";
67
72
  import { buildCaptureTitle, type CaptureTitleResult } from "./recording-title";
68
73
  import {
69
74
  startTranscriptionCapture,
@@ -384,22 +389,6 @@ function createCloudMediaRecorder(
384
389
  throw lastError instanceof Error ? lastError : new Error(String(lastError));
385
390
  }
386
391
 
387
- const VOICE_FOCUSED_AUDIO_CONSTRAINTS: MediaTrackConstraints = {
388
- echoCancellation: { ideal: true },
389
- noiseSuppression: { ideal: true },
390
- autoGainControl: { ideal: true },
391
- channelCount: { ideal: 1 },
392
- };
393
-
394
- function voiceFocusedAudioConstraints(
395
- deviceId?: string | null,
396
- ): MediaTrackConstraints {
397
- return {
398
- ...VOICE_FOCUSED_AUDIO_CONSTRAINTS,
399
- ...(deviceId ? { deviceId: { exact: deviceId } } : {}),
400
- };
401
- }
402
-
403
392
  interface RecordingAudio {
404
393
  tracks: MediaStreamTrack[];
405
394
  cleanup: () => void;
@@ -444,13 +433,13 @@ function localRecordingTargetsForMode({
444
433
  localRecordingMode,
445
434
  displayStream,
446
435
  bubbleCameraStream,
447
- audioStream,
436
+ recordingAudio,
448
437
  combined,
449
438
  }: {
450
439
  localRecordingMode: Exclude<LocalRecordingMode, "off">;
451
440
  displayStream: MediaStream | null;
452
441
  bubbleCameraStream: MediaStream | null;
453
- audioStream: MediaStream | null;
442
+ recordingAudio: RecordingAudio;
454
443
  combined: MediaStream;
455
444
  }): LocalRecordingTarget[] {
456
445
  if (localRecordingMode === "composed") {
@@ -461,7 +450,7 @@ function localRecordingTargetsForMode({
461
450
  if (displayStream) {
462
451
  const desktopTracks = [
463
452
  ...displayStream.getVideoTracks(),
464
- ...(audioStream?.getAudioTracks() ?? displayStream.getAudioTracks()),
453
+ ...recordingAudio.tracks,
465
454
  ];
466
455
  targets.push({
467
456
  role: "desktop",
@@ -1698,8 +1687,10 @@ async function startNativeFullscreenRecording(
1698
1687
  // clock and the toolbar-enable behind the real recording start.
1699
1688
  let startedAt = 0;
1700
1689
  let nativeTranscriptFailureSaved = false;
1690
+ const wantsSystemAudio = params.systemAudioOn !== false;
1691
+ const wantsRecordedAudio = wantsAudio || wantsSystemAudio;
1701
1692
  const saveTranscriptFailure = async (failureReason: string) => {
1702
- if (!wantsAudio || nativeTranscriptFailureSaved || !id) return;
1693
+ if (!wantsRecordedAudio || nativeTranscriptFailureSaved || !id) return;
1703
1694
  nativeTranscriptFailureSaved = true;
1704
1695
  await saveRecordingTranscriptFailure(
1705
1696
  params.serverUrl,
@@ -1724,12 +1715,7 @@ async function startNativeFullscreenRecording(
1724
1715
  if (localOnly && localRecordingMode === "separate" && wantsCamera) {
1725
1716
  localCameraStream =
1726
1717
  params.preAcquiredCameraStream ??
1727
- (await navigator.mediaDevices.getUserMedia({
1728
- video: params.cameraId
1729
- ? { deviceId: { exact: params.cameraId } }
1730
- : true,
1731
- audio: false,
1732
- }));
1718
+ (await getCameraStreamWithFallback(params.cameraId));
1733
1719
  localOwnsCameraStream =
1734
1720
  localCameraStream !== params.preAcquiredCameraStream;
1735
1721
  localCameraExport = await prepareLocalRecordingExport(
@@ -1757,16 +1743,12 @@ async function startNativeFullscreenRecording(
1757
1743
  ? "[clips-recorder] invoking show_countdown for native local recording"
1758
1744
  : "[clips-recorder] invoking show_countdown + createServerRecording",
1759
1745
  );
1760
- const wantsSystemAudio = wantsAudio && params.systemAudioOn !== false;
1761
- // Resolve the mic's REAL device name for the native recorder. WebKit's
1762
- // deviceId is a salted hash that never equals ScreenCaptureKit's CoreAudio
1763
- // device UID, so the Rust side can only pin the input by NAME. The stored
1764
- // label can be stale or empty (device list locked when picked, or a rotated
1765
- // deviceId salt after an app update) — that's what makes "only Default
1766
- // works": the hash matches nothing and there's no name to fall back to.
1767
- // A one-shot getUserMedia gives the exact current device name, the same
1768
- // string ScreenCaptureKit exposes, so name resolution succeeds. Done before
1769
- // warming so both phases pin the same input.
1746
+ // Resolve the mic's REAL device name before native setup. WebKit's deviceId
1747
+ // is a salted hash that never equals CoreAudio's device UID, so any native
1748
+ // path that needs a mic can only pin the input by NAME. The stored label can
1749
+ // be stale or empty (device list locked when picked, or a rotated deviceId
1750
+ // salt after an app update), so a one-shot getUserMedia gives the exact
1751
+ // current device name.
1770
1752
  let micDeviceLabel = params.micLabel || null;
1771
1753
  if (wantsAudio && params.micId) {
1772
1754
  try {
@@ -1797,11 +1779,10 @@ async function startNativeFullscreenRecording(
1797
1779
  micDeviceLabel,
1798
1780
  captureRegion,
1799
1781
  };
1800
- // Warm the mic DURING the countdown. ScreenCaptureKit delivers its first
1801
- // mic sample ~1s after capture starts; warming now lets `begin` attach the
1802
- // recording output to an already-live mic, so the clip no longer starts
1803
- // with a silent second. No-op when there's nothing to pre-warm (mic off /
1804
- // SCK unavailable) — `begin` then does a normal immediate start.
1782
+ // Warm ScreenCaptureKit DURING the countdown without recording frames yet.
1783
+ // This keeps the capture start off the critical path while letting `begin`
1784
+ // attach the recording output at the exact start moment. No-op when SCK is
1785
+ // unavailable `begin` then does a normal immediate start.
1805
1786
  const warmMic = (recordingId: string) =>
1806
1787
  invoke("native_fullscreen_recording_warm", {
1807
1788
  recordingId,
@@ -1822,13 +1803,13 @@ async function startNativeFullscreenRecording(
1822
1803
  const recordingPromise = createServerRecording(
1823
1804
  params.serverUrl,
1824
1805
  wantsCamera,
1825
- wantsAudio,
1806
+ wantsRecordedAudio,
1826
1807
  captureTitle,
1827
1808
  ).finally(() => {
1828
1809
  console.timeEnd("[clips-recorder] createServerRecording duration");
1829
1810
  });
1830
1811
  // The recording id usually lands well before the countdown ends — warm
1831
- // the mic as soon as it does so the warm-up overlaps the 3-2-1.
1812
+ // native capture as soon as it does so setup overlaps the 3-2-1.
1832
1813
  const warmAndId = (async () => {
1833
1814
  const createRes = await recordingPromise;
1834
1815
  await warmMic(createRes.id);
@@ -2049,7 +2030,7 @@ async function startNativeFullscreenRecording(
2049
2030
  recordingId: id,
2050
2031
  authToken: params.authToken ?? "",
2051
2032
  cookie: params.cookie ?? "",
2052
- hasAudio: wantsAudio,
2033
+ hasAudio: wantsRecordedAudio,
2053
2034
  hasCamera: wantsCamera,
2054
2035
  },
2055
2036
  );
@@ -2074,9 +2055,9 @@ async function startNativeFullscreenRecording(
2074
2055
  capturedTranscript,
2075
2056
  params.authToken,
2076
2057
  );
2077
- } else if (wantsAudio) {
2058
+ } else if (wantsRecordedAudio) {
2078
2059
  await saveTranscriptFailure(
2079
- "No speech was captured during this recording. If you spoke, check Microphone input, Speech Recognition permission, and the selected mic, then retry transcription.",
2060
+ "No speech was captured during this recording. If you spoke or played system audio, check System Audio, Microphone input, Speech Recognition permission, and the selected mic, then retry transcription.",
2080
2061
  );
2081
2062
  }
2082
2063
 
@@ -2265,8 +2246,7 @@ async function startNativeFullscreenRecording(
2265
2246
 
2266
2247
  if (!localOnly) {
2267
2248
  await showRegionGuidesForRecording(true);
2268
- const wantsSystemAudio = wantsAudio && params.systemAudioOn !== false;
2269
- transcriptionCapture = wantsAudio
2249
+ transcriptionCapture = wantsRecordedAudio
2270
2250
  ? await startTranscriptionCapture(
2271
2251
  {
2272
2252
  deviceId: params.micId,
@@ -2288,12 +2268,12 @@ async function startNativeFullscreenRecording(
2288
2268
  );
2289
2269
  void transcriptionCapture.pause().catch(() => {});
2290
2270
  } else if (
2291
- wantsAudio &&
2271
+ wantsRecordedAudio &&
2292
2272
  !transcriptionCapture &&
2293
2273
  shouldSaveLocalTranscriptionStartupFailure()
2294
2274
  ) {
2295
2275
  void saveTranscriptFailure(
2296
- "macOS Speech recognition could not start for this recording. Check Speech Recognition and Microphone permissions, then retry transcription.",
2276
+ "macOS Speech recognition could not start for this recording. Check Speech Recognition, System Audio, and Microphone permissions, then retry transcription.",
2297
2277
  );
2298
2278
  }
2299
2279
  }
@@ -2409,7 +2389,8 @@ async function startRecordingInner(
2409
2389
  const wantsScreen = params.mode !== "camera";
2410
2390
  const wantsCamera = params.mode !== "screen" && params.cameraOn;
2411
2391
  const wantsAudio = params.micOn;
2412
- const wantsSystemAudio = wantsAudio && params.systemAudioOn !== false;
2392
+ const wantsSystemAudio = wantsScreen && params.systemAudioOn !== false;
2393
+ const wantsRecordedAudio = wantsAudio || wantsSystemAudio;
2413
2394
  const audioCue = createAudioCue();
2414
2395
  const captureSource = params.source ?? "window";
2415
2396
  const localRecordingMode = params.localRecordingMode ?? "off";
@@ -2421,6 +2402,7 @@ async function startRecordingInner(
2421
2402
  wantsScreen,
2422
2403
  wantsCamera,
2423
2404
  wantsAudio,
2405
+ wantsSystemAudio,
2424
2406
  });
2425
2407
 
2426
2408
  if (wantsScreen && shouldUseNativeFullscreenRecording(captureSource)) {
@@ -2466,21 +2448,18 @@ async function startRecordingInner(
2466
2448
  const displayStreamPromise: Promise<MediaStream> | null = wantsScreen
2467
2449
  ? (() => {
2468
2450
  if (!devSyntheticCapture) {
2469
- const displaySurface =
2470
- captureSource === "window" ? "window" : "monitor";
2471
- return navigator.mediaDevices.getDisplayMedia({
2472
- video: {
2473
- frameRate: {
2474
- ideal: CLOUD_CAPTURE_FRAME_RATE,
2475
- max: CLOUD_CAPTURE_FRAME_RATE,
2476
- },
2477
- width: { ideal: CLOUD_CAPTURE_MAX_WIDTH },
2478
- height: { ideal: CLOUD_CAPTURE_MAX_HEIGHT },
2479
- displaySurface,
2480
- },
2481
- // System/desktop audio is gated by the system-audio toggle, not mic.
2482
- audio: wantsSystemAudio,
2483
- });
2451
+ // Do not pass displaySurface as an input constraint. Modern runtimes
2452
+ // can reject it with "Invalid constraint", and it cannot reliably
2453
+ // pre-filter the OS picker anyway; the selected track reports its
2454
+ // actual surface through getSettings() after capture starts.
2455
+ return navigator.mediaDevices.getDisplayMedia(
2456
+ buildDesktopDisplayMediaOptions({
2457
+ audio: wantsSystemAudio,
2458
+ frameRate: CLOUD_CAPTURE_FRAME_RATE,
2459
+ maxWidth: CLOUD_CAPTURE_MAX_WIDTH,
2460
+ maxHeight: CLOUD_CAPTURE_MAX_HEIGHT,
2461
+ }),
2462
+ );
2484
2463
  }
2485
2464
  console.warn(
2486
2465
  "[clips-recorder] using opt-in dev synthetic screen capture; remove localStorage clips:dev-synthetic-capture to use the native picker",
@@ -2506,18 +2485,10 @@ async function startRecordingInner(
2506
2485
  }
2507
2486
  const bubbleCameraStreamPromise: Promise<MediaStream> | null =
2508
2487
  wantsCamera && !reusedCameraStream
2509
- ? navigator.mediaDevices.getUserMedia({
2510
- video: params.cameraId
2511
- ? { deviceId: { exact: params.cameraId } }
2512
- : true,
2513
- audio: false,
2514
- })
2488
+ ? getCameraStreamWithFallback(params.cameraId)
2515
2489
  : null;
2516
2490
  const audioStreamPromise: Promise<MediaStream> | null = wantsAudio
2517
- ? navigator.mediaDevices.getUserMedia({
2518
- audio: voiceFocusedAudioConstraints(params.micId),
2519
- video: false,
2520
- })
2491
+ ? getAudioStreamWithFallback(params.micId)
2521
2492
  : null;
2522
2493
 
2523
2494
  // Use allSettled so a single rejection (e.g. user cancels the macOS screen
@@ -2700,7 +2671,7 @@ async function startRecordingInner(
2700
2671
  localRecordingMode,
2701
2672
  displayStream,
2702
2673
  bubbleCameraStream,
2703
- audioStream,
2674
+ recordingAudio,
2704
2675
  combined,
2705
2676
  });
2706
2677
 
@@ -2896,7 +2867,7 @@ async function startRecordingInner(
2896
2867
  const recordingPromise = createServerRecording(
2897
2868
  params.serverUrl,
2898
2869
  wantsCamera,
2899
- wantsAudio,
2870
+ recordingAudio.tracks.length > 0,
2900
2871
  captureTitle,
2901
2872
  { mimeType: mimeType || "video/webm", requestStreaming: true },
2902
2873
  ).finally(() => {
@@ -2922,7 +2893,7 @@ async function startRecordingInner(
2922
2893
  console.log("[clips-recorder] recording row created", { id, uploadMode });
2923
2894
  let nativeTranscriptFailureSaved = false;
2924
2895
  const saveTranscriptFailure = async (failureReason: string) => {
2925
- if (!wantsAudio || nativeTranscriptFailureSaved) return;
2896
+ if (!wantsRecordedAudio || nativeTranscriptFailureSaved) return;
2926
2897
  nativeTranscriptFailureSaved = true;
2927
2898
  await saveRecordingTranscriptFailure(
2928
2899
  params.serverUrl,
@@ -3182,7 +3153,7 @@ async function startRecordingInner(
3182
3153
  // delaying capture, so the first ~1s the user expected to record was lost
3183
3154
  // (and the recording felt cut at the end). It's a separate capture from the
3184
3155
  // recorded audio tracks, so starting it slightly late is safe.
3185
- transcriptionCapture = wantsAudio
3156
+ transcriptionCapture = wantsRecordedAudio
3186
3157
  ? await startTranscriptionCapture(
3187
3158
  {
3188
3159
  deviceId: params.micId,
@@ -3204,12 +3175,12 @@ async function startRecordingInner(
3204
3175
  );
3205
3176
  void transcriptionCapture.pause().catch(() => {});
3206
3177
  } else if (
3207
- wantsAudio &&
3178
+ wantsRecordedAudio &&
3208
3179
  !transcriptionCapture &&
3209
3180
  shouldSaveLocalTranscriptionStartupFailure()
3210
3181
  ) {
3211
3182
  void saveTranscriptFailure(
3212
- "macOS Speech recognition could not start for this recording. Check Speech Recognition and Microphone permissions, then retry transcription.",
3183
+ "macOS Speech recognition could not start for this recording. Check Speech Recognition, System Audio, and Microphone permissions, then retry transcription.",
3213
3184
  );
3214
3185
  }
3215
3186
 
@@ -3289,9 +3260,9 @@ async function startRecordingInner(
3289
3260
  capturedTranscript,
3290
3261
  params.authToken,
3291
3262
  );
3292
- } else if (wantsAudio) {
3263
+ } else if (wantsRecordedAudio) {
3293
3264
  await saveTranscriptFailure(
3294
- "No speech was captured during this recording. If you spoke, check Microphone input, Speech Recognition permission, and the selected mic, then retry transcription.",
3265
+ "No speech was captured during this recording. If you spoke or played system audio, check System Audio, Microphone input, Speech Recognition permission, and the selected mic, then retry transcription.",
3295
3266
  );
3296
3267
  }
3297
3268
  await thumbnailUploadPromise;