vibefast-cli 1.3.0 → 1.3.1

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 (348) hide show
  1. package/README.md +30 -95
  2. package/dist/__tests__/recipes.test.js +8 -9
  3. package/dist/__tests__/recipes.test.js.map +1 -1
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +271 -125
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/checklist.d.ts.map +1 -1
  8. package/dist/commands/checklist.js +85 -44
  9. package/dist/commands/checklist.js.map +1 -1
  10. package/dist/commands/health.d.ts.map +1 -1
  11. package/dist/commands/health.js +13 -4
  12. package/dist/commands/health.js.map +1 -1
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +118 -26
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/migrate.d.ts +3 -0
  17. package/dist/commands/migrate.d.ts.map +1 -0
  18. package/dist/commands/migrate.js +202 -0
  19. package/dist/commands/migrate.js.map +1 -0
  20. package/dist/commands/remove.d.ts.map +1 -1
  21. package/dist/commands/remove.js +61 -3
  22. package/dist/commands/remove.js.map +1 -1
  23. package/dist/core/auth.d.ts.map +1 -1
  24. package/dist/core/auth.js +20 -18
  25. package/dist/core/auth.js.map +1 -1
  26. package/dist/core/codemod.d.ts +33 -0
  27. package/dist/core/codemod.d.ts.map +1 -1
  28. package/dist/core/codemod.js +116 -0
  29. package/dist/core/codemod.js.map +1 -1
  30. package/dist/core/detect.d.ts.map +1 -1
  31. package/dist/core/detect.js +24 -7
  32. package/dist/core/detect.js.map +1 -1
  33. package/dist/core/journal.d.ts +1 -0
  34. package/dist/core/journal.d.ts.map +1 -1
  35. package/dist/core/journal.js.map +1 -1
  36. package/dist/core/recipes.d.ts.map +1 -1
  37. package/dist/core/recipes.js +25 -7
  38. package/dist/core/recipes.js.map +1 -1
  39. package/dist/index.js +2 -2
  40. package/dist/index.js.map +1 -1
  41. package/docs/architecture.md +50 -0
  42. package/docs/commands.md +78 -0
  43. package/docs/contributing.md +27 -0
  44. package/docs/quickstart.md +50 -0
  45. package/docs/recipes.md +57 -0
  46. package/docs/troubleshooting.md +31 -0
  47. package/package.json +2 -2
  48. package/recipes/0/apps/native/src/components/advanced-ui/timeline/demo.tsx +445 -0
  49. package/recipes/0/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +355 -0
  50. package/recipes/0/apps/native/src/components/advanced-ui/timeline/types.ts +31 -0
  51. package/recipes/0/recipe.json +18 -0
  52. package/recipes/animated-chip/apps/native/src/components/advanced-ui/chip/demo.tsx +2 -1
  53. package/recipes/animated-chip/recipe.json +5 -2
  54. package/recipes/animated-chip-native@latest.zip +0 -0
  55. package/recipes/animated-chip@latest.zip +0 -0
  56. package/recipes/animated-switch/apps/native/src/components/advanced-ui/switch/demo.tsx +1 -1
  57. package/recipes/animated-switch/recipe.json +5 -2
  58. package/recipes/animated-switch-native@latest.zip +0 -0
  59. package/recipes/animated-switch@latest.zip +0 -0
  60. package/recipes/audio-recorder/apps/native/src/features/audio-recorder/components/audio-recorder.tsx +2 -1
  61. package/recipes/audio-recorder/apps/native/src/features/audio-recorder/demo/with-recording-list-demo.tsx +2 -2
  62. package/recipes/audio-recorder/recipe.json +7 -2
  63. package/recipes/audio-recorder-native@latest.zip +0 -0
  64. package/recipes/audio-recorder-supabase/apps/native/src/features/audio-recorder/components/audio-recorder.tsx +2 -1
  65. package/recipes/audio-recorder-supabase/apps/native/src/features/audio-recorder/demo/with-recording-list-demo.tsx +2 -1
  66. package/recipes/audio-recorder-supabase/recipe.json +12 -33
  67. package/recipes/audio-recorder-supabase-native@latest.zip +0 -0
  68. package/recipes/audio-recorder-supabase@latest.zip +0 -0
  69. package/recipes/audio-recorder@latest.zip +0 -0
  70. package/recipes/charts/apps/native/src/app/charts/index.tsx +3 -0
  71. package/recipes/charts/apps/native/src/features/charts/components/bar-chart.tsx +3 -1
  72. package/recipes/charts/apps/native/src/features/charts/components/candlestick-chart.tsx +3 -1
  73. package/recipes/charts/apps/native/src/features/charts/components/column-chart.tsx +3 -1
  74. package/recipes/charts/apps/native/src/features/charts/components/doughnut-chart.tsx +3 -1
  75. package/recipes/charts/apps/native/src/features/charts/components/line-chart.tsx +3 -1
  76. package/recipes/charts/apps/native/src/features/charts/components/radar-chart.tsx +3 -1
  77. package/recipes/charts/apps/native/src/features/charts/components/stacked-bar-chart.tsx +3 -1
  78. package/recipes/charts/recipe.json +13 -4
  79. package/recipes/charts-native@latest.zip +0 -0
  80. package/recipes/charts@latest.zip +0 -0
  81. package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-markdown.tsx +86 -86
  82. package/recipes/chatbot/apps/native/src/features/chatbot/components/markdown/code-block.tsx +4 -4
  83. package/recipes/chatbot/recipe.json +3 -40
  84. package/recipes/chatbot-native@latest.zip +0 -0
  85. package/recipes/chatbot-supabase/apps/native/src/features/chatbot/components/chat-markdown.tsx +4 -1
  86. package/recipes/chatbot-supabase/apps/native/src/features/chatbot/components/markdown/code-block.tsx +86 -53
  87. package/recipes/chatbot-supabase/recipe.json +3 -69
  88. package/recipes/chatbot-supabase-native@latest.zip +0 -0
  89. package/recipes/chatbot-supabase@latest.zip +0 -0
  90. package/recipes/chatbot@latest.zip +0 -0
  91. package/recipes/glowing-button/recipe.json +6 -2
  92. package/recipes/glowing-button-native@latest.zip +0 -0
  93. package/recipes/glowing-button@latest.zip +0 -0
  94. package/recipes/image-analysis/apps/native/src/app/analysis/[type]/_layout.tsx +5 -0
  95. package/recipes/image-analysis/apps/native/src/app/analysis/[type]/analysis-options.tsx +50 -0
  96. package/recipes/image-analysis/apps/native/src/app/analysis/[type]/camera.tsx +2 -0
  97. package/recipes/image-analysis/apps/native/src/app/analysis/[type]/index.tsx +50 -0
  98. package/recipes/image-analysis/apps/native/src/app/analysis/[type]/loading.tsx +50 -0
  99. package/recipes/image-analysis/apps/native/src/app/analysis/[type]/results.tsx +2 -0
  100. package/recipes/image-analysis/apps/native/src/app/analysis/[type]/trait-details.tsx +3 -0
  101. package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/analysis-options-screen.tsx +2 -2
  102. package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/camera.tsx +72 -65
  103. package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/image-capture-screen.tsx +65 -47
  104. package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/loading-screen.tsx +43 -2
  105. package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/loading.tsx +34 -1
  106. package/recipes/image-analysis/apps/native/src/features/image-analyzer/hooks/use-image-analysis.ts +83 -2
  107. package/recipes/image-analysis/recipe.json +11 -19
  108. package/recipes/image-analysis-native@latest.zip +0 -0
  109. package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/_layout.tsx +5 -0
  110. package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/analysis-options.tsx +50 -0
  111. package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/camera.tsx +2 -0
  112. package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/index.tsx +50 -0
  113. package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/loading.tsx +50 -0
  114. package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/results.tsx +2 -0
  115. package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/trait-details.tsx +3 -0
  116. package/recipes/image-analysis-supabase/recipe.json +10 -70
  117. package/recipes/image-analysis-supabase-native@latest.zip +0 -0
  118. package/recipes/image-analysis-supabase@latest.zip +0 -0
  119. package/recipes/image-analysis@latest.zip +0 -0
  120. package/recipes/image-analyzer/apps/native/src/app/(root)/(protected)/image-analyzer/index.tsx +2 -0
  121. package/recipes/image-generator/apps/native/src/app/image-generator/gallery.tsx +3 -0
  122. package/recipes/image-generator/apps/native/src/app/image-generator/index.tsx +3 -0
  123. package/recipes/image-generator/recipe.json +8 -18
  124. package/recipes/image-generator-native@latest.zip +0 -0
  125. package/recipes/image-generator-supabase/recipe.json +6 -62
  126. package/recipes/image-generator-supabase-native@latest.zip +0 -0
  127. package/recipes/image-generator-supabase@latest.zip +0 -0
  128. package/recipes/image-generator@latest.zip +0 -0
  129. package/recipes/ios-widget/recipe.json +18 -119
  130. package/recipes/ios-widget-native@latest.zip +0 -0
  131. package/recipes/ios-widget@latest.zip +0 -0
  132. package/recipes/number-stepper/apps/native/src/components/advanced-ui/stepper/demo.tsx +1 -1
  133. package/recipes/number-stepper/recipe.json +5 -2
  134. package/recipes/number-stepper-native@latest.zip +0 -0
  135. package/recipes/number-stepper@latest.zip +0 -0
  136. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/interactive-onboarding.tsx +11 -18
  137. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/ai-tone-step.tsx +5 -7
  138. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/currency-step.tsx +9 -7
  139. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/feature-ai-step.tsx +8 -7
  140. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/feature-chatbot-step.tsx +6 -5
  141. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/feature-manual-step.tsx +4 -3
  142. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/feature-scan-step.tsx +6 -5
  143. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/main-reason-step.tsx +5 -7
  144. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/notification-step.tsx +7 -6
  145. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/overspend-step.tsx +5 -7
  146. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/personalizing-step.tsx +8 -7
  147. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/rating-step.tsx +6 -5
  148. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/reminder-step.tsx +5 -6
  149. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/safety-step.tsx +5 -4
  150. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/struggle-step.tsx +5 -7
  151. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/welcome-step.tsx +7 -6
  152. package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/ui/onboarding-header.tsx +4 -3
  153. package/recipes/onboarding/recipe.json +9 -6
  154. package/recipes/onboarding-native@latest.zip +0 -0
  155. package/recipes/onboarding@latest.zip +0 -0
  156. package/recipes/payments/apps/native/src/app/paywall/index.tsx +74 -0
  157. package/recipes/payments/apps/native/src/app/paywall/local.tsx +25 -0
  158. package/recipes/payments/apps/native/src/app/paywall/remote.tsx +23 -0
  159. package/recipes/payments/packages/backend/convex/payments.ts +21 -3
  160. package/recipes/payments/recipe.json +14 -34
  161. package/recipes/payments-native@latest.zip +0 -0
  162. package/recipes/payments-supabase/apps/native/src/app/paywall/index.tsx +74 -0
  163. package/recipes/payments-supabase/apps/native/src/app/paywall/local.tsx +25 -0
  164. package/recipes/payments-supabase/apps/native/src/app/paywall/remote.tsx +23 -0
  165. package/recipes/payments-supabase/recipe.json +16 -44
  166. package/recipes/payments-supabase-native@latest.zip +0 -0
  167. package/recipes/payments-supabase@latest.zip +0 -0
  168. package/recipes/payments@latest.zip +0 -0
  169. package/recipes/posthog/apps/native/src/components/analytics/navigation-tracker.tsx +14 -0
  170. package/recipes/posthog/apps/native/src/lib/hooks/use-navigation-analytics.ts +44 -0
  171. package/recipes/posthog/apps/native/src/providers/posthog-provider.tsx +51 -0
  172. package/recipes/posthog/recipe.json +60 -0
  173. package/recipes/posthog-native@latest.zip +0 -0
  174. package/recipes/progress-circle/apps/native/src/components/advanced-ui/progress-bars/progress-circle-page.tsx +1 -1
  175. package/recipes/progress-circle/recipe.json +5 -2
  176. package/recipes/progress-circle-native@latest.zip +0 -0
  177. package/recipes/progress-circle@latest.zip +0 -0
  178. package/recipes/quiz/apps/native/src/app/quiz/index.tsx +47 -0
  179. package/recipes/quiz/recipe.json +9 -6
  180. package/recipes/quiz-native@latest.zip +0 -0
  181. package/recipes/quiz@latest.zip +0 -0
  182. package/recipes/screen-kits/apps/native/src/app/screen-kits/_layout.tsx +12 -0
  183. package/recipes/screen-kits/apps/native/src/app/screen-kits/index.tsx +114 -0
  184. package/recipes/screen-kits/apps/native/src/features/screen-kits/index.ts +1 -0
  185. package/recipes/screen-kits/apps/native/src/features/screen-kits/types.ts +28 -0
  186. package/recipes/screen-kits/recipe.json +26 -0
  187. package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/_layout.tsx +12 -0
  188. package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/home.tsx +5 -0
  189. package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/index.tsx +5 -0
  190. package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/lesson-complete.tsx +5 -0
  191. package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/lesson-fail.tsx +5 -0
  192. package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/lesson.tsx +5 -0
  193. package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/skill-tree.tsx +5 -0
  194. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/components/duo-button.tsx +174 -0
  195. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/components/skill-button.tsx +186 -0
  196. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/components/xp-header.tsx +115 -0
  197. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/constants.ts +89 -0
  198. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/index.ts +3 -0
  199. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/screens/home-screen.tsx +225 -0
  200. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/screens/lesson-complete-screen.tsx +485 -0
  201. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/screens/lesson-fail-screen.tsx +105 -0
  202. package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/screens/lesson-screen.tsx +384 -0
  203. package/recipes/screen-kits-duolingo/recipe.json +58 -0
  204. package/recipes/screen-kits-duolingo-native@latest.zip +0 -0
  205. package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/_layout.tsx +45 -0
  206. package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/asset-detail.tsx +3 -0
  207. package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/notifications.tsx +3 -0
  208. package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/receive.tsx +3 -0
  209. package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/send.tsx +3 -0
  210. package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/swap.tsx +3 -0
  211. package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/wallet.tsx +3 -0
  212. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/components/ActionButtons.tsx +78 -0
  213. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/components/AssetRow.tsx +94 -0
  214. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/components/BalanceCard.tsx +118 -0
  215. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/constants.ts +85 -0
  216. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/asset-detail.tsx +378 -0
  217. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/notifications.tsx +210 -0
  218. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/receive-modal.tsx +317 -0
  219. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/send-modal.tsx +420 -0
  220. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/swap-modal.tsx +363 -0
  221. package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/wallet-dashboard.tsx +281 -0
  222. package/recipes/screen-kits-finance/recipe.json +46 -0
  223. package/recipes/screen-kits-finance-native@latest.zip +0 -0
  224. package/recipes/screen-kits-fitness/apps/native/assets/sounds/timer-beep.wav +0 -0
  225. package/recipes/screen-kits-fitness/apps/native/src/app/screen-kits/fitness/_layout.tsx +10 -0
  226. package/recipes/screen-kits-fitness/apps/native/src/app/screen-kits/fitness/index.tsx +6 -0
  227. package/recipes/screen-kits-fitness/apps/native/src/app/screen-kits/fitness/timer.tsx +3 -0
  228. package/recipes/screen-kits-fitness/apps/native/src/app/screen-kits/fitness/workout.tsx +3 -0
  229. package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/components/timer-components.tsx +500 -0
  230. package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/components/timer-settings-modal.tsx +352 -0
  231. package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/components/workout-card.tsx +105 -0
  232. package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/constants.ts +189 -0
  233. package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/hooks/use-timer.ts +307 -0
  234. package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/index.ts +1 -0
  235. package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/screens/timer-screen.tsx +278 -0
  236. package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/screens/workout-dashboard.tsx +350 -0
  237. package/recipes/screen-kits-fitness/recipe.json +63 -0
  238. package/recipes/screen-kits-fitness-native@latest.zip +0 -0
  239. package/recipes/screen-kits-habits/apps/native/src/app/screen-kits/productivity/habits.tsx +1 -0
  240. package/recipes/screen-kits-habits/apps/native/src/app/screen-kits/productivity/kanban.tsx +1 -0
  241. package/recipes/screen-kits-habits/apps/native/src/app/screen-kits/productivity/routes.ts +4 -0
  242. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/AddTaskModal.tsx +246 -0
  243. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/DraggableTaskCard.tsx +92 -0
  244. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/KanbanColumn.tsx +238 -0
  245. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/TaskCard.tsx +144 -0
  246. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/add-habit-modal.tsx +271 -0
  247. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/constants.ts +295 -0
  248. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/kanban-utils.ts +62 -0
  249. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/screens/habit-tracker.tsx +1160 -0
  250. package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/screens/kanban-board.tsx +432 -0
  251. package/recipes/screen-kits-habits/recipe.json +52 -0
  252. package/recipes/screen-kits-habits-native@latest.zip +0 -0
  253. package/recipes/screen-kits-native@latest.zip +0 -0
  254. package/recipes/sentry/apps/native/src/providers/sentry-provider.tsx +64 -0
  255. package/recipes/sentry/recipe.json +39 -0
  256. package/recipes/sentry-native@latest.zip +0 -0
  257. package/recipes/swipe-slider/apps/native/src/components/advanced-ui/sliders/swipe-slider-page.tsx +1 -1
  258. package/recipes/swipe-slider/recipe.json +5 -2
  259. package/recipes/swipe-slider-native@latest.zip +0 -0
  260. package/recipes/swipe-slider@latest.zip +0 -0
  261. package/recipes/timeline/apps/native/src/components/advanced-ui/timeline/demo.tsx +2 -1
  262. package/recipes/timeline/recipe.json +5 -2
  263. package/recipes/timeline-native@latest.zip +0 -0
  264. package/recipes/timeline@latest.zip +0 -0
  265. package/recipes/tracker-app/apps/native/src/app/tracker-app/index.tsx +1 -0
  266. package/recipes/tracker-app/recipe.json +10 -7
  267. package/recipes/tracker-app-native@latest.zip +0 -0
  268. package/recipes/tracker-app@latest.zip +0 -0
  269. package/recipes/upload-all.sh +8 -31
  270. package/recipes/voice-bot/apps/native/src/app/voice-bot/index.tsx +56 -0
  271. package/recipes/voice-bot/recipe.json +31 -7
  272. package/recipes/voice-bot-native@latest.zip +0 -0
  273. package/recipes/voice-bot@latest.zip +0 -0
  274. package/recipes/wake-word/apps/native/src/app/{(root)/(protected)/test-wake-word.tsx → test-wake-word.tsx} +43 -4
  275. package/recipes/wake-word/recipe.json +16 -26
  276. package/recipes/wake-word-native@latest.zip +0 -0
  277. package/recipes/wake-word@latest.zip +0 -0
  278. package/scripts/create-advanced-ui-recipes.sh +46 -19
  279. package/scripts/create-recipes.mjs +471 -117
  280. package/scripts/package-recipes.mjs +76 -0
  281. package/scripts/publish-all.sh +6 -2
  282. package/CHANGELOG.md +0 -198
  283. package/docs/archive/AUTO-DETECT-DEPS.md +0 -607
  284. package/docs/archive/FINAL-PACKAGE-STRATEGY.md +0 -583
  285. package/docs/archive/FINAL-SIMPLE-PLAN.md +0 -487
  286. package/docs/archive/FINAL-STATUS.md +0 -144
  287. package/docs/archive/FLOW-DIAGRAM.md +0 -1629
  288. package/docs/archive/GOTCHAS-AND-RISKS.md +0 -801
  289. package/docs/archive/IMPLEMENTATION-PLAN.md +0 -1360
  290. package/docs/archive/PLAN.md +0 -453
  291. package/docs/archive/PRODUCTION-READINESS.md +0 -684
  292. package/docs/archive/PRODUCTION-TEST-RESULTS.md +0 -465
  293. package/docs/archive/SIMPLIFIED-PLAN.md +0 -578
  294. package/docs/archive/STATUS.md +0 -199
  295. package/docs/archive/SUCCESS.md +0 -259
  296. package/docs/archive/TEST-SUMMARY.md +0 -261
  297. package/docs/archive/TESTING-CHECKLIST.md +0 -450
  298. package/docs/archive/USER-MODIFICATIONS.md +0 -448
  299. package/docs/decisions.md +0 -55
  300. package/docs/manual-testing.md +0 -91
  301. package/docs/next-steps.md +0 -12
  302. package/recipes/README.md +0 -156
  303. package/recipes/audio-recorder-supabase/packages/backend/src/services/recordings.ts +0 -369
  304. package/recipes/chatbot/apps/native/src/api-client/chatbot.ts +0 -83
  305. package/recipes/chatbot/packages/backend/convex/agents.ts +0 -115
  306. package/recipes/chatbot/packages/backend/convex/tools/index.ts +0 -18
  307. package/recipes/chatbot/packages/backend/convex/tools/knowledgeRetrieval.ts +0 -97
  308. package/recipes/chatbot/packages/backend/convex/tools/tavilySearch.ts +0 -83
  309. package/recipes/chatbot/packages/backend/convex/tools/userProfile.ts +0 -72
  310. package/recipes/chatbot-supabase/apps/native/src/api-client/supabase/chatbot.ts +0 -515
  311. package/recipes/chatbot-supabase/packages/backend/src/services/conversations.ts +0 -243
  312. package/recipes/chatbot-supabase/packages/backend/src/services/messages.ts +0 -327
  313. package/recipes/image-analysis/apps/native/src/api-client/image-analyzer.ts +0 -62
  314. package/recipes/image-analysis-supabase/packages/backend/src/services/image-analyses.ts +0 -132
  315. package/recipes/image-generator/apps/native/src/api-client/image-generator.ts +0 -34
  316. package/recipes/payments/apps/native/src/api-client/payments.ts +0 -44
  317. package/recipes/payments-supabase/packages/backend/src/services/payments.ts +0 -201
  318. package/recipes/posthog.json +0 -47
  319. package/recipes/revenuecat.json +0 -43
  320. package/recipes/sentry.json +0 -47
  321. package/recipes/wake-word/apps/native/assets/vosk-model/README.md +0 -103
  322. package/recipes/wake-word/apps/native/scripts/download-vosk-model.mjs +0 -127
  323. /package/recipes/{audio-recorder/apps/native/src/app/(root)/(protected) → audio-recorder-supabase/apps/native/src/app}/audio-recorder/index.tsx +0 -0
  324. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/AppIntent.swift +0 -0
  325. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png +0 -0
  326. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png +0 -0
  327. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png +0 -0
  328. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png +0 -0
  329. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png +0 -0
  330. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png +0 -0
  331. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png +0 -0
  332. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png +0 -0
  333. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png +0 -0
  334. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png +0 -0
  335. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png +0 -0
  336. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png +0 -0
  337. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png +0 -0
  338. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png +0 -0
  339. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
  340. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png +0 -0
  341. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/CalorieTrackerWidget.swift +0 -0
  342. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/HabitTrackerWidget.swift +0 -0
  343. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Info.plist +0 -0
  344. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/WidgetLiveActivity.swift +0 -0
  345. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/expo-target.config.js +0 -0
  346. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/generated.entitlements +0 -0
  347. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/index.swift +0 -0
  348. /package/recipes/ios-widget/{targets → apps/native/targets}/widget/widgets.swift +0 -0
@@ -1,583 +0,0 @@
1
- # 📦 Final Package Management Strategy
2
-
3
- ## The Brilliant Solution: Let Expo Handle Versions!
4
-
5
- ### The Problem We Were Overcomplicating
6
-
7
- **What we were thinking:**
8
- ```bash
9
- # Manually specify versions in recipe.json
10
- "dependencies": {
11
- "react-native-chart-kit": "^6.12.0", // ← We manage versions
12
- "react-native-svg": "^13.9.0" // ← Version conflicts!
13
- }
14
-
15
- # Then worry about:
16
- # - Version conflicts
17
- # - Peer dependencies
18
- # - React Native compatibility
19
- # - Expo SDK compatibility
20
- ```
21
-
22
- ### The Simple Solution: Use Expo Install
23
-
24
- **What we should do:**
25
- ```bash
26
- # Just list package NAMES (no versions!)
27
- "dependencies": {
28
- "npm": [
29
- "react-native-chart-kit",
30
- "react-native-svg"
31
- ]
32
- }
33
-
34
- # Then run:
35
- npx expo install react-native-chart-kit react-native-svg
36
-
37
- # Expo automatically:
38
- # ✅ Picks compatible versions
39
- # ✅ Handles peer dependencies
40
- # ✅ Resolves conflicts
41
- # ✅ Works with current Expo SDK
42
- ```
43
-
44
- ---
45
-
46
- ## Updated Recipe Format
47
-
48
- ### For Native Apps (Expo)
49
-
50
- ```json
51
- {
52
- "name": "charts",
53
- "version": "1.0.0",
54
- "description": "Beautiful data visualization",
55
- "target": "native",
56
-
57
- "copy": [...],
58
- "nav": {...},
59
-
60
- "dependencies": {
61
- "expo": [
62
- "react-native-chart-kit",
63
- "react-native-svg",
64
- "react-native-gesture-handler"
65
- ]
66
- },
67
-
68
- "postInstall": {
69
- "message": "Charts installed! Run your dev server to see it."
70
- }
71
- }
72
- ```
73
-
74
- ### For Web Apps (Next.js)
75
-
76
- ```json
77
- {
78
- "name": "charts-web",
79
- "version": "1.0.0",
80
- "description": "Charts for web",
81
- "target": "web",
82
-
83
- "copy": [...],
84
-
85
- "dependencies": {
86
- "npm": [
87
- "recharts",
88
- "d3"
89
- ]
90
- },
91
-
92
- "postInstall": {
93
- "message": "Charts installed!"
94
- }
95
- }
96
- ```
97
-
98
- ---
99
-
100
- ## Implementation
101
-
102
- ### Step 1: Update Recipe Schema
103
-
104
- **File:** `src/commands/add.ts`
105
-
106
- ```typescript
107
- interface RecipeManifest {
108
- name: string;
109
- version: string;
110
- description: string;
111
- copy: Array<{ from: string; to: string }>;
112
- nav: { href: string; label: string };
113
- target: 'native' | 'web';
114
-
115
- // SIMPLIFIED: Just array of package names
116
- dependencies?: {
117
- expo?: string[]; // For native (use expo install)
118
- npm?: string[]; // For web (use npm/pnpm/yarn)
119
- };
120
-
121
- postInstall?: {
122
- message?: string;
123
- commands?: string[];
124
- };
125
- }
126
- ```
127
-
128
- ### Step 2: Show Install Command
129
-
130
- **File:** `src/commands/add.ts`
131
-
132
- ```typescript
133
- // After copying files
134
-
135
- if (manifest.dependencies) {
136
- log.plain('');
137
- log.warn('⚠ This feature requires additional packages');
138
- log.plain('');
139
-
140
- if (manifest.target === 'native' && manifest.dependencies.expo) {
141
- // Native app - use expo install
142
- const packages = manifest.dependencies.expo;
143
-
144
- log.info('📦 Required packages:');
145
- packages.forEach(pkg => {
146
- log.plain(` • ${pkg}`);
147
- });
148
- log.plain('');
149
-
150
- log.info('Install with:');
151
- log.plain(` npx expo install ${packages.join(' ')}`);
152
- log.plain('');
153
-
154
- log.info('💡 Expo will automatically pick compatible versions');
155
-
156
- } else if (manifest.target === 'web' && manifest.dependencies.npm) {
157
- // Web app - use package manager
158
- const packages = manifest.dependencies.npm;
159
- const pm = await detectPackageManager(paths.cwd);
160
-
161
- log.info('📦 Required packages:');
162
- packages.forEach(pkg => {
163
- log.plain(` • ${pkg}`);
164
- });
165
- log.plain('');
166
-
167
- log.info('Install with:');
168
- if (pm === 'pnpm') {
169
- log.plain(` pnpm add ${packages.join(' ')}`);
170
- } else if (pm === 'yarn') {
171
- log.plain(` yarn add ${packages.join(' ')}`);
172
- } else {
173
- log.plain(` npm install ${packages.join(' ')}`);
174
- }
175
- }
176
-
177
- log.plain('');
178
- }
179
- ```
180
-
181
- ---
182
-
183
- ## User Experience
184
-
185
- ### Installing a Native Feature
186
-
187
- ```bash
188
- $ vf add charts
189
-
190
- ℹ Fetching charts for native...
191
- ℹ Downloading recipe...
192
- ℹ Installing charts v1.0.0...
193
- ℹ Copying files...
194
- ✓ Navigation link added
195
- ✓ charts installed successfully!
196
- ℹ Files added: 17
197
-
198
- ⚠ This feature requires additional packages
199
-
200
- 📦 Required packages:
201
- • react-native-chart-kit
202
- • react-native-svg
203
-
204
- Install with:
205
- npx expo install react-native-chart-kit react-native-svg
206
-
207
- 💡 Expo will automatically pick compatible versions
208
-
209
- ✓ Installation complete!
210
- ```
211
-
212
- ### Installing a Web Feature
213
-
214
- ```bash
215
- $ vf add charts-web --target web
216
-
217
- ✓ charts-web installed successfully!
218
- ℹ Files added: 12
219
-
220
- ⚠ This feature requires additional packages
221
-
222
- 📦 Required packages:
223
- • recharts
224
- • d3
225
-
226
- Install with:
227
- pnpm add recharts d3
228
-
229
- ✓ Installation complete!
230
- ```
231
-
232
- ---
233
-
234
- ## Advantages of This Approach
235
-
236
- ### 1. No Version Management ✅
237
- ```json
238
- // Before (complex):
239
- {
240
- "dependencies": {
241
- "react-native-svg": "^13.9.0" // ← What if user has Expo SDK 48?
242
- }
243
- }
244
-
245
- // After (simple):
246
- {
247
- "dependencies": {
248
- "expo": ["react-native-svg"] // ← Expo figures it out!
249
- }
250
- }
251
- ```
252
-
253
- ### 2. No Conflicts ✅
254
- ```bash
255
- # Expo handles everything:
256
- $ npx expo install react-native-svg
257
-
258
- # If user has Expo SDK 49:
259
- # → Installs react-native-svg@13.9.0
260
-
261
- # If user has Expo SDK 50:
262
- # → Installs react-native-svg@14.1.0
263
-
264
- # Always compatible!
265
- ```
266
-
267
- ### 3. No Peer Dependency Hell ✅
268
- ```bash
269
- # Package needs react-native-gesture-handler
270
- # Expo installs it automatically with compatible version
271
- $ npx expo install react-native-reanimated
272
- # → Also installs react-native-gesture-handler@2.x
273
- ```
274
-
275
- ### 4. Simpler Recipe Creation ✅
276
- ```json
277
- // Recipe creator just lists packages:
278
- {
279
- "dependencies": {
280
- "expo": [
281
- "react-native-chart-kit",
282
- "react-native-svg"
283
- ]
284
- }
285
- }
286
-
287
- // No need to:
288
- // ❌ Check versions
289
- // ❌ Test compatibility
290
- // ❌ Update when Expo SDK changes
291
- ```
292
-
293
- ---
294
-
295
- ## For Services with Manual Steps
296
-
297
- ### Sentry Example
298
-
299
- ```json
300
- {
301
- "name": "sentry",
302
- "version": "1.0.0",
303
- "target": "native",
304
-
305
- "copy": [...],
306
-
307
- "dependencies": {
308
- "expo": [
309
- "@sentry/react-native"
310
- ]
311
- },
312
-
313
- "env": {
314
- "required": [
315
- {
316
- "key": "SENTRY_DSN",
317
- "description": "Your Sentry DSN from sentry.io",
318
- "example": "https://xxx@xxx.ingest.sentry.io/xxx",
319
- "link": "https://sentry.io/settings/projects/"
320
- }
321
- ]
322
- },
323
-
324
- "manualSteps": [
325
- {
326
- "step": 1,
327
- "title": "Create Sentry Project",
328
- "description": "Go to sentry.io and create a new React Native project",
329
- "link": "https://sentry.io/signup/"
330
- },
331
- {
332
- "step": 2,
333
- "title": "Add DSN to .env",
334
- "description": "Copy your DSN and add it to your .env file",
335
- "file": ".env",
336
- "content": "SENTRY_DSN=your-dsn-here"
337
- }
338
- ],
339
-
340
- "postInstall": {
341
- "message": "Sentry installed! Complete the manual steps above.",
342
- "commands": [
343
- "npx expo install @sentry/react-native"
344
- ]
345
- }
346
- }
347
- ```
348
-
349
- **User sees:**
350
-
351
- ```bash
352
- $ vf add sentry
353
-
354
- ✓ sentry installed successfully!
355
- ℹ Files added: 5
356
-
357
- 📦 Required packages:
358
- • @sentry/react-native
359
-
360
- Install with:
361
- npx expo install @sentry/react-native
362
-
363
- ⚠ MANUAL STEPS REQUIRED:
364
-
365
- ┌─────────────────────────────────────────────────────────────┐
366
- │ Step 1: Create Sentry Project │
367
- │ │
368
- │ Go to sentry.io and create a new React Native project │
369
- │ 🔗 https://sentry.io/signup/ │
370
- └─────────────────────────────────────────────────────────────┘
371
-
372
- ┌─────────────────────────────────────────────────────────────┐
373
- │ Step 2: Add DSN to .env │
374
- │ │
375
- │ Copy your DSN and add it to your .env file: │
376
- │ SENTRY_DSN=your-dsn-here │
377
- │ │
378
- │ 📝 File: .env │
379
- └─────────────────────────────────────────────────────────────┘
380
-
381
- 💡 Run 'vf checklist sentry' to see these steps again
382
- ```
383
-
384
- ---
385
-
386
- ## Edge Cases Handled
387
-
388
- ### 1. Monorepo Workspaces
389
- ```bash
390
- # User is in: apps/native/
391
- $ vf add charts
392
-
393
- # Shows:
394
- Install with:
395
- npx expo install react-native-chart-kit react-native-svg
396
-
397
- # User runs it from apps/native/
398
- # Expo handles workspace detection automatically!
399
- ```
400
-
401
- ### 2. Different Package Managers
402
- ```bash
403
- # For native (always use expo install):
404
- npx expo install package-name
405
-
406
- # For web (detect package manager):
407
- pnpm add package-name # or yarn add, or npm install
408
- ```
409
-
410
- ### 3. No Expo CLI Installed
411
- ```bash
412
- # npx downloads it automatically!
413
- $ npx expo install package-name
414
- # → Downloads expo-cli if needed
415
- # → Runs install
416
- ```
417
-
418
- ---
419
-
420
- ## Type Checking Integration
421
-
422
- ### Optional: Verify Packages Were Installed
423
-
424
- ```typescript
425
- // After showing install command
426
-
427
- if (!options.skipVerify) {
428
- log.plain('');
429
- const shouldVerify = promptYesNo(
430
- 'Verify packages after installation? (Y/n): ',
431
- true
432
- );
433
-
434
- if (shouldVerify) {
435
- log.info('Waiting for you to install packages...');
436
- log.plain('Press Enter when done: ');
437
- readlineSync.question('');
438
-
439
- // Run type check to verify
440
- log.info('Verifying installation...');
441
- const typeCheck = await runTypeCheck(paths.cwd);
442
-
443
- if (typeCheck.missingPackages.length > 0) {
444
- log.warn('⚠ Some packages are still missing:');
445
- typeCheck.missingPackages.forEach(pkg => {
446
- log.plain(` • ${pkg}`);
447
- });
448
- log.info('Make sure you ran the install command');
449
- } else {
450
- log.success('✓ All packages installed correctly!');
451
- }
452
- }
453
- }
454
- ```
455
-
456
- ---
457
-
458
- ## Complete Flow
459
-
460
- ```
461
- ┌─────────────────────────────────────────────────────────────────┐
462
- │ SIMPLIFIED PACKAGE FLOW │
463
- └─────────────────────────────────────────────────────────────────┘
464
-
465
- Step 1: User Installs Feature
466
- ┌──────────────────────────────────────────────────────────────┐
467
- │ $ vf add charts │
468
- └──────────────────────────────────────────────────────────────┘
469
-
470
-
471
- Step 2: CLI Copies Files
472
- ┌──────────────────────────────────────────────────────────────┐
473
- │ ✓ 17 files copied │
474
- │ ✓ Navigation added │
475
- └──────────────────────────────────────────────────────────────┘
476
-
477
-
478
- Step 3: CLI Shows Package Command
479
- ┌──────────────────────────────────────────────────────────────┐
480
- │ 📦 Required packages: │
481
- │ • react-native-chart-kit │
482
- │ • react-native-svg │
483
- │ │
484
- │ Install with: │
485
- │ npx expo install react-native-chart-kit react-native-svg │
486
- │ │
487
- │ 💡 Expo will pick compatible versions │
488
- └──────────────────────────────────────────────────────────────┘
489
-
490
-
491
- Step 4: User Runs Command
492
- ┌──────────────────────────────────────────────────────────────┐
493
- │ $ npx expo install react-native-chart-kit react-native-svg │
494
- │ │
495
- │ Expo automatically: │
496
- │ ✓ Detects Expo SDK version │
497
- │ ✓ Picks compatible package versions │
498
- │ ✓ Installs peer dependencies │
499
- │ ✓ Updates package.json │
500
- └──────────────────────────────────────────────────────────────┘
501
-
502
-
503
- Step 5: Done!
504
- ┌──────────────────────────────────────────────────────────────┐
505
- │ ✓ Feature installed │
506
- │ ✓ Packages installed │
507
- │ ✓ Ready to use! │
508
- └──────────────────────────────────────────────────────────────┘
509
- ```
510
-
511
- ---
512
-
513
- ## Summary
514
-
515
- ### What Changed
516
-
517
- **Before (Complex):**
518
- - ❌ Specify versions in recipe.json
519
- - ❌ Worry about conflicts
520
- - ❌ Update recipes when Expo SDK changes
521
- - ❌ Handle peer dependencies
522
- - ❌ Test compatibility
523
-
524
- **After (Simple):**
525
- - ✅ Just list package names
526
- - ✅ Let `expo install` handle versions
527
- - ✅ No conflicts ever
528
- - ✅ Always compatible
529
- - ✅ No maintenance
530
-
531
- ### Recipe Format
532
-
533
- ```json
534
- {
535
- "dependencies": {
536
- "expo": [
537
- "package-name-1",
538
- "package-name-2"
539
- ]
540
- }
541
- }
542
- ```
543
-
544
- ### CLI Output
545
-
546
- ```bash
547
- Install with:
548
- npx expo install package-name-1 package-name-2
549
-
550
- 💡 Expo will automatically pick compatible versions
551
- ```
552
-
553
- ### For Web Apps
554
-
555
- ```json
556
- {
557
- "dependencies": {
558
- "npm": [
559
- "package-name-1",
560
- "package-name-2"
561
- ]
562
- }
563
- }
564
- ```
565
-
566
- ```bash
567
- Install with:
568
- pnpm add package-name-1 package-name-2
569
- ```
570
-
571
- ---
572
-
573
- ## This Solves EVERYTHING
574
-
575
- 1. ✅ No version management
576
- 2. ✅ No conflicts
577
- 3. ✅ No peer dependency issues
578
- 4. ✅ No Expo SDK compatibility issues
579
- 5. ✅ No monorepo complexity
580
- 6. ✅ Simple recipe creation
581
- 7. ✅ Always works
582
-
583
- **This is the way!** 🎉