vibefast-cli 1.2.1 → 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 +94 -91
  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 +301 -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 -16
  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 -42
  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 -37
  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 -35
  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 -23
  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,448 +0,0 @@
1
- # 🔧 User Modifications & File Management
2
-
3
- ## What is mini-native?
4
-
5
- **mini-native** is a **demo/test feature** used for testing the VibeFast CLI. It's not a real production feature, but rather a minimal example to validate the entire installation flow.
6
-
7
- ### Purpose
8
- - Test the CLI installation process
9
- - Validate the worker API
10
- - Demonstrate the recipe format
11
- - Used in E2E tests and documentation examples
12
-
13
- ### What it contains
14
- ```json
15
- {
16
- "name": "mini-native",
17
- "version": "0.1.0",
18
- "description": "Demo feature (Expo)",
19
- "copy": [
20
- {
21
- "from": "apps/native/src/app/mini",
22
- "to": "apps/native/src/app/(root)/(protected)/mini"
23
- }
24
- ],
25
- "nav": {
26
- "href": "/(root)/(protected)/mini",
27
- "label": "Mini"
28
- },
29
- "target": "native"
30
- }
31
- ```
32
-
33
- It's essentially a single screen/page that gets installed to demonstrate that the CLI works correctly.
34
-
35
- ---
36
-
37
- ## What Happens When Users Modify Files?
38
-
39
- This is a **critical question** about the CLI's behavior. Here's the complete breakdown:
40
-
41
- ### Scenario 1: User Modifies Files After Installation
42
-
43
- ```
44
- Day 1: Install charts
45
- $ vf add charts
46
- ✓ 17 files installed
47
-
48
- Day 5: User edits files
49
- User modifies: apps/native/src/app/(root)/(protected)/charts/index.tsx
50
- - Adds custom styling
51
- - Removes some components
52
- - Adds new features
53
-
54
- Day 10: User removes charts
55
- $ vf remove charts
56
- ```
57
-
58
- **What happens?**
59
-
60
- ### ⚠️ The CLI Will Delete ALL Files - Including User Modifications!
61
-
62
- The CLI **does NOT track file modifications**. Here's why:
63
-
64
- ```typescript
65
- // From src/core/fsx.ts
66
- export async function deleteFile(path: string): Promise<void> {
67
- try {
68
- await rm(path, { recursive: true, force: true });
69
- } catch (err: any) {
70
- if (err.code !== 'ENOENT') throw err;
71
- }
72
- }
73
- ```
74
-
75
- ```typescript
76
- // From src/commands/remove.ts
77
- // Delete files
78
- for (const file of entry.files) {
79
- log.info(`Deleting ${file}`);
80
- if (!options.dryRun) {
81
- await deleteFile(file);
82
- }
83
- }
84
- ```
85
-
86
- ### How It Works
87
-
88
- ```
89
- ┌─────────────────────────────────────────────────────────────────┐
90
- │ FILE DELETION PROCESS │
91
- └─────────────────────────────────────────────────────────────────┘
92
-
93
- Step 1: Read Journal
94
- ┌──────────────────────────────────────────────────────────────┐
95
- │ .vibefast/journal.json contains: │
96
- │ { │
97
- │ "feature": "charts", │
98
- │ "files": [ │
99
- │ "/path/to/apps/native/src/app/charts/index.tsx", │
100
- │ "/path/to/apps/native/src/app/charts/chart-card.tsx", │
101
- │ ... (15 more files) │
102
- │ ] │
103
- │ } │
104
- └──────────────────────────────────────────────────────────────┘
105
-
106
- Step 2: Delete Each File
107
- ┌──────────────────────────────────────────────────────────────┐
108
- │ For each file in the list: │
109
- │ • No check if file was modified │
110
- │ • No backup created │
111
- │ • No diff comparison │
112
- │ • Just: rm -rf <file> │
113
- │ │
114
- │ Result: ALL files deleted, regardless of modifications │
115
- └──────────────────────────────────────────────────────────────┘
116
- ```
117
-
118
- ---
119
-
120
- ## Scenario 2: Reinstalling After Modifications
121
-
122
- ```
123
- Day 1: Install charts
124
- $ vf add charts
125
- ✓ 17 files installed
126
-
127
- Day 5: User modifies files
128
- User edits multiple chart files
129
-
130
- Day 10: User tries to reinstall
131
- $ vf add charts
132
- ⚠ charts is already installed for native
133
- ℹ Use --force to reinstall
134
- ```
135
-
136
- ### Using --force Flag
137
-
138
- ```bash
139
- $ vf add charts --force
140
- ```
141
-
142
- **What happens?**
143
-
144
- ```
145
- ┌─────────────────────────────────────────────────────────────────┐
146
- │ FORCE REINSTALL PROCESS │
147
- └─────────────────────────────────────────────────────────────────┘
148
-
149
- Step 1: Check Existing Installation
150
- ┌──────────────────────────────────────────────────────────────┐
151
- │ Journal shows charts is installed │
152
- │ BUT --force flag is present │
153
- │ → Skip the "already installed" warning │
154
- │ → Proceed with installation │
155
- └──────────────────────────────────────────────────────────────┘
156
-
157
- Step 2: Copy Files (with force)
158
- ┌──────────────────────────────────────────────────────────────┐
159
- │ From src/core/fsx.ts: │
160
- │ │
161
- │ if (destExists && !options?.force) { │
162
- │ throw new Error(`File exists: ${destPath}`); │
163
- │ } │
164
- │ │
165
- │ With --force: │
166
- │ • Existing files are OVERWRITTEN │
167
- │ • User modifications are LOST │
168
- │ • No backup is created │
169
- │ • Fresh files from recipe replace everything │
170
- └──────────────────────────────────────────────────────────────┘
171
-
172
- Step 3: Update Journal
173
- ┌──────────────────────────────────────────────────────────────┐
174
- │ Journal is updated with new file list │
175
- │ (Usually the same files, but fresh timestamps) │
176
- └──────────────────────────────────────────────────────────────┘
177
- ```
178
-
179
- ---
180
-
181
- ## Scenario 3: User Deletes Some Files Manually
182
-
183
- ```
184
- Day 1: Install charts (17 files)
185
- $ vf add charts
186
-
187
- Day 5: User manually deletes 3 files
188
- User removes:
189
- - chart-card.tsx
190
- - chart-utils.ts
191
- - chart-types.ts
192
-
193
- Day 10: User removes charts
194
- $ vf remove charts
195
- ```
196
-
197
- **What happens?**
198
-
199
- ```
200
- ┌─────────────────────────────────────────────────────────────────┐
201
- │ PARTIAL FILE DELETION │
202
- └─────────────────────────────────────────────────────────────────┘
203
-
204
- The CLI tries to delete ALL 17 files from journal:
205
- ┌──────────────────────────────────────────────────────────────┐
206
- │ File 1: index.tsx → Deleted ✓ │
207
- │ File 2: chart-card.tsx → Already gone (OK) │
208
- │ File 3: chart-utils.ts → Already gone (OK) │
209
- │ File 4: chart-types.ts → Already gone (OK) │
210
- │ File 5: chart-preview.tsx → Deleted ✓ │
211
- │ ... (continue for remaining files) │
212
- │ │
213
- │ From src/core/fsx.ts: │
214
- │ catch (err: any) { │
215
- │ if (err.code !== 'ENOENT') throw err; │
216
- │ } │
217
- │ │
218
- │ ENOENT = "File not found" → Silently ignored │
219
- │ Result: No error, removal completes successfully │
220
- └──────────────────────────────────────────────────────────────┘
221
- ```
222
-
223
- ---
224
-
225
- ## Scenario 4: User Adds New Files to Feature Directory
226
-
227
- ```
228
- Day 1: Install charts (17 files)
229
- $ vf add charts
230
-
231
- Day 5: User adds custom files
232
- User creates:
233
- - apps/native/src/app/charts/my-custom-chart.tsx
234
- - apps/native/src/app/charts/my-utils.ts
235
- - apps/native/src/features/charts/my-hook.ts
236
-
237
- Day 10: User removes charts
238
- $ vf remove charts
239
- ```
240
-
241
- **What happens?**
242
-
243
- ```
244
- ┌─────────────────────────────────────────────────────────────────┐
245
- │ ORPHANED FILES PROBLEM │
246
- └─────────────────────────────────────────────────────────────────┘
247
-
248
- The CLI only deletes tracked files:
249
- ┌──────────────────────────────────────────────────────────────┐
250
- │ Journal contains 17 original files │
251
- │ CLI deletes those 17 files │
252
- │ │
253
- │ User's custom files are NOT in journal: │
254
- │ • my-custom-chart.tsx → NOT DELETED (orphaned) │
255
- │ • my-utils.ts → NOT DELETED (orphaned) │
256
- │ • my-hook.ts → NOT DELETED (orphaned) │
257
- │ │
258
- │ Result: │
259
- │ ✓ Original 17 files deleted │
260
- │ ⚠ User's 3 custom files remain in the directory │
261
- │ ⚠ Empty directories may remain │
262
- └──────────────────────────────────────────────────────────────┘
263
- ```
264
-
265
- ---
266
-
267
- ## The Problem: No Modification Tracking
268
-
269
- ### What the CLI Does NOT Do
270
-
271
- ```
272
- ❌ Does NOT check if files were modified
273
- ❌ Does NOT create backups before deletion
274
- ❌ Does NOT warn about modified files
275
- ❌ Does NOT track user-added files
276
- ❌ Does NOT show diffs
277
- ❌ Does NOT ask for confirmation (except dry-run)
278
- ❌ Does NOT preserve user changes
279
- ```
280
-
281
- ### What the CLI DOES Do
282
-
283
- ```
284
- ✓ Tracks original file paths in journal
285
- ✓ Deletes files by path (regardless of content)
286
- ✓ Ignores missing files (ENOENT)
287
- ✓ Supports --dry-run to preview
288
- ✓ Supports --force to overwrite
289
- ```
290
-
291
- ---
292
-
293
- ## Best Practices for Users
294
-
295
- ### 1. Use Version Control (Git)
296
-
297
- ```bash
298
- # Before installing any feature
299
- $ git status
300
- $ git commit -am "Before installing charts"
301
-
302
- # Install feature
303
- $ vf add charts
304
-
305
- # Review changes
306
- $ git diff
307
- $ git add .
308
- $ git commit -m "Add charts feature"
309
-
310
- # If you modify files
311
- $ git commit -am "Customize charts"
312
-
313
- # If you want to remove
314
- $ vf remove charts
315
- $ git diff # See what was deleted
316
- $ git checkout -- . # Restore if needed
317
- ```
318
-
319
- ### 2. Use --dry-run Before Operations
320
-
321
- ```bash
322
- # Preview installation
323
- $ vf add charts --dry-run
324
- [DRY RUN] No changes will be made
325
- ℹ Files that would be added: 17
326
-
327
- # Preview removal
328
- $ vf remove charts --dry-run
329
- [DRY RUN] No changes will be made
330
- ℹ Files that would be deleted: 17
331
- ```
332
-
333
- ### 3. Don't Modify Feature Files Directly
334
-
335
- **Instead of modifying feature files:**
336
- ```
337
- ❌ apps/native/src/features/charts/chart-card.tsx
338
- ```
339
-
340
- **Create wrapper components:**
341
- ```
342
- ✓ apps/native/src/components/custom-chart-card.tsx
343
- ```
344
-
345
- This way:
346
- - Feature files remain untouched
347
- - Your customizations are separate
348
- - Removal doesn't affect your code
349
- - Updates are easier
350
-
351
- ### 4. Fork Features Into Your Own Code
352
-
353
- If you need heavy customization:
354
-
355
- ```bash
356
- # Install feature
357
- $ vf add charts
358
-
359
- # Copy to your own directory
360
- $ cp -r apps/native/src/features/charts apps/native/src/features/my-charts
361
-
362
- # Remove original
363
- $ vf remove charts
364
-
365
- # Now you own the code completely
366
- ```
367
-
368
- ---
369
-
370
- ## Potential Improvements (Not Currently Implemented)
371
-
372
- ### Idea 1: Modification Detection
373
-
374
- ```typescript
375
- // Hypothetical future feature
376
- interface JournalEntry {
377
- feature: string;
378
- files: Array<{
379
- path: string;
380
- hash: string; // SHA-256 of original content
381
- }>;
382
- }
383
-
384
- // Before removal, check:
385
- for (const file of entry.files) {
386
- const currentHash = await hashFile(file.path);
387
- if (currentHash !== file.hash) {
388
- log.warn(`${file.path} was modified by user`);
389
- // Ask for confirmation or create backup
390
- }
391
- }
392
- ```
393
-
394
- ### Idea 2: Backup Before Deletion
395
-
396
- ```typescript
397
- // Hypothetical future feature
398
- $ vf remove charts --backup
399
-
400
- // Creates:
401
- .vibefast/backups/charts-2024-11-13/
402
- ├── index.tsx
403
- ├── chart-card.tsx
404
- └── ...
405
- ```
406
-
407
- ### Idea 3: Smart Merge on Reinstall
408
-
409
- ```typescript
410
- // Hypothetical future feature
411
- $ vf add charts --force --merge
412
-
413
- // Would:
414
- // 1. Detect modifications
415
- // 2. Create .orig files
416
- // 3. Install new version
417
- // 4. Show merge conflicts
418
- ```
419
-
420
- ---
421
-
422
- ## Summary
423
-
424
- ### mini-native
425
- - Demo/test feature for CLI validation
426
- - Contains minimal code (single screen)
427
- - Used in examples and tests
428
- - Not a production feature
429
-
430
- ### User Modifications
431
- - **CLI does NOT track modifications**
432
- - `vf remove` deletes ALL tracked files (modified or not)
433
- - `vf add --force` overwrites ALL files (losing modifications)
434
- - User-added files are orphaned (not deleted)
435
- - **Best practice: Use Git for safety**
436
- - **Best practice: Don't modify feature files directly**
437
-
438
- ### Key Takeaway
439
-
440
- The VibeFast CLI treats features as **atomic units**:
441
- - Install = Copy all files
442
- - Remove = Delete all files
443
- - No middle ground, no modification tracking
444
-
445
- This is simple and predictable, but requires users to:
446
- 1. Use version control
447
- 2. Keep customizations separate
448
- 3. Understand that modifications will be lost on remove/reinstall
package/docs/decisions.md DELETED
@@ -1,55 +0,0 @@
1
- # VibeFast CLI — Decisions & Ground Rules
2
-
3
- ## Package Details
4
- - **Package name:** `vibefast-cli`
5
- - **Binary alias:** `vf`
6
- - **Default target:** `native` (override with `--target web`)
7
-
8
- ## Authentication
9
- - **Method:** Fixed opaque token per customer
10
- - **Device slots:** 2 by default
11
- - **Storage:** Cloudflare Worker validates token/seat → issues short-lived signed URL to recipe zip in R2/KV
12
-
13
- ## Repository Signature
14
- Requires `.vibefast/starter.json`:
15
- ```json
16
- {
17
- "name": "vibefast",
18
- "version": "1.0.0",
19
- "targets": ["native", "web"]
20
- }
21
- ```
22
-
23
- ## Code Markers
24
-
25
- ### Native Target
26
- File: `apps/native/src/app/(root)/(protected)/(tabs)/index.tsx`
27
- ```tsx
28
- // --- @vibefast:navigation:start ---
29
- {/* CLI will inject feature links here */}
30
- // --- @vibefast:navigation:end ---
31
- ```
32
-
33
- ### Web Target
34
- File: `apps/web/app/page.tsx`
35
- ```tsx
36
- {/* @vibefast:nav:start */}
37
- {/* CLI will inject feature cards here */}
38
- {/* @vibefast:nav:end */}
39
- ```
40
-
41
- ## Journal
42
- - **Location:** `.vibefast/journal.json`
43
- - **Purpose:** Tracks installed files and nav inserts
44
-
45
- ## Rate Limits
46
- - **Daily:** 500 requests per token
47
- - **Per minute:** 30 requests per token
48
- - Subject to tuning based on usage patterns
49
-
50
- ## Delivery Architecture
51
- 1. CLI sends token + device info to Cloudflare Worker
52
- 2. Worker validates token and checks device slots
53
- 3. Worker issues short-lived signed URL to recipe zip in R2/KV
54
- 4. CLI downloads and extracts recipe
55
- 5. CLI applies codemod and updates journal
@@ -1,91 +0,0 @@
1
- # Manual Testing Guide
2
-
3
- This guide explains how to manually test the `vibefast-cli` during development without affecting your globally installed version (if any).
4
-
5
- ## Prerequisites
6
-
7
- - You are in the `vibefast-cli` directory.
8
- - You have run `npm install`.
9
-
10
- ## Method 1: The "Alias" Method (Recommended)
11
-
12
- This method allows you to run your local build as `vf-dev` without overwriting your global `vf` command.
13
-
14
- 1. **Build the CLI**:
15
-
16
- ```bash
17
- npm run build
18
- ```
19
-
20
- 2. **Create an Alias** (run this in your terminal):
21
-
22
- ```bash
23
- # Run this inside the vibefast-cli directory
24
- alias vf-dev="node $(pwd)/dist/index.js"
25
- ```
26
-
27
- 3. **Test in a Sandbox**:
28
-
29
- ```bash
30
- # Go to a temporary directory
31
- mkdir ~/Desktop/vf-playground
32
- cd ~/Desktop/vf-playground
33
-
34
- # Run your local CLI
35
- vf-dev init
36
- vf-dev add chatbot
37
- ```
38
-
39
- ## Method 2: The "Link" Method
40
-
41
- Use this if you want to replace your global `vf` command with your local version.
42
-
43
- 1. **Build**:
44
-
45
- ```bash
46
- npm run build
47
- ```
48
-
49
- 2. **Link**:
50
-
51
- ```bash
52
- npm link
53
- ```
54
-
55
- 3. **Test**:
56
- Now `vf` runs your local code anywhere.
57
-
58
- 4. **Unlink (Revert)**:
59
- ```bash
60
- npm unlink -g vibefast-cli
61
- # Then reinstall the production version if needed
62
- npm i -g vibefast-cli
63
- ```
64
-
65
- ## What to Test?
66
-
67
- ### 1. Initialization
68
-
69
- - Run `vf init`.
70
- - Check if `.vibefast/starter.json` is created.
71
- - Check if it asks for a license key (if not already saved).
72
-
73
- ### 2. Adding Features
74
-
75
- - Run `vf add <feature>`.
76
- - **Verify**:
77
- - Files are copied to `apps/native` or `apps/web`.
78
- - `app.config.ts` (Native) has the plugin added (if applicable).
79
- - `package.json` dependencies are updated (or prompted).
80
-
81
- ### 3. Removing Features
82
-
83
- - Run `vf remove <feature>`.
84
- - **Verify**:
85
- - Files are deleted.
86
- - `app.config.ts` plugin is removed (if implemented) or you are warned.
87
-
88
- ### 4. Edge Cases
89
-
90
- - Run in a folder that is _not_ a VibeFast project (should fail gracefully).
91
- - Run with invalid arguments.
@@ -1,12 +0,0 @@
1
- # CLI Next Steps Backlog
2
-
3
- Work on these items is tracked here so contributors can see what remains after the initial implementation. Update the status column when a task is started or complete.
4
-
5
- | Status | Task | Details | Owner |
6
- | --- | --- | --- | --- |
7
- | 🟡 Open | Test with real features | Create example recipes (charts, Sentry, PostHog, etc.) and run the full install/remove flow against them to validate the experience end-to-end. | TBD |
8
- | 🟡 Open | Update documentation | Expand `README.md` (and related docs) with the latest commands, flags, and troubleshooting notes captured in version `0.2.2`. | TBD |
9
- | 🟡 Open | Create example recipes | Publish representative zips that can be shared internally and used in automated tests. | TBD |
10
- | 🟡 Open | Publish to npm | Bump the package version, run the build pipeline, and push a new release to the npm registry. | TBD |
11
- | 🟡 Open | Get user feedback | Share the CLI with pilot customers, collect their notes, and iterate on UX/edge cases. | TBD |
12
-