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.
- package/README.md +30 -95
- package/dist/__tests__/recipes.test.js +94 -91
- package/dist/__tests__/recipes.test.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +301 -125
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/checklist.d.ts.map +1 -1
- package/dist/commands/checklist.js +85 -44
- package/dist/commands/checklist.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +13 -4
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +118 -26
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +202 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +61 -3
- package/dist/commands/remove.js.map +1 -1
- package/dist/core/auth.d.ts.map +1 -1
- package/dist/core/auth.js +20 -18
- package/dist/core/auth.js.map +1 -1
- package/dist/core/codemod.d.ts +33 -0
- package/dist/core/codemod.d.ts.map +1 -1
- package/dist/core/codemod.js +116 -0
- package/dist/core/codemod.js.map +1 -1
- package/dist/core/detect.d.ts.map +1 -1
- package/dist/core/detect.js +24 -7
- package/dist/core/detect.js.map +1 -1
- package/dist/core/journal.d.ts +1 -0
- package/dist/core/journal.d.ts.map +1 -1
- package/dist/core/journal.js.map +1 -1
- package/dist/core/recipes.d.ts.map +1 -1
- package/dist/core/recipes.js +25 -7
- package/dist/core/recipes.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/docs/architecture.md +50 -0
- package/docs/commands.md +78 -0
- package/docs/contributing.md +27 -0
- package/docs/quickstart.md +50 -0
- package/docs/recipes.md +57 -0
- package/docs/troubleshooting.md +31 -0
- package/package.json +2 -2
- package/recipes/0/apps/native/src/components/advanced-ui/timeline/demo.tsx +445 -0
- package/recipes/0/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +355 -0
- package/recipes/0/apps/native/src/components/advanced-ui/timeline/types.ts +31 -0
- package/recipes/0/recipe.json +18 -0
- package/recipes/animated-chip/apps/native/src/components/advanced-ui/chip/demo.tsx +2 -1
- package/recipes/animated-chip/recipe.json +5 -2
- package/recipes/animated-chip-native@latest.zip +0 -0
- package/recipes/animated-chip@latest.zip +0 -0
- package/recipes/animated-switch/apps/native/src/components/advanced-ui/switch/demo.tsx +1 -1
- package/recipes/animated-switch/recipe.json +5 -2
- package/recipes/animated-switch-native@latest.zip +0 -0
- package/recipes/animated-switch@latest.zip +0 -0
- package/recipes/audio-recorder/apps/native/src/features/audio-recorder/components/audio-recorder.tsx +2 -1
- package/recipes/audio-recorder/apps/native/src/features/audio-recorder/demo/with-recording-list-demo.tsx +2 -2
- package/recipes/audio-recorder/recipe.json +7 -2
- package/recipes/audio-recorder-native@latest.zip +0 -0
- package/recipes/audio-recorder-supabase/apps/native/src/features/audio-recorder/components/audio-recorder.tsx +2 -1
- package/recipes/audio-recorder-supabase/apps/native/src/features/audio-recorder/demo/with-recording-list-demo.tsx +2 -1
- package/recipes/audio-recorder-supabase/recipe.json +12 -16
- package/recipes/audio-recorder-supabase-native@latest.zip +0 -0
- package/recipes/audio-recorder-supabase@latest.zip +0 -0
- package/recipes/audio-recorder@latest.zip +0 -0
- package/recipes/charts/apps/native/src/app/charts/index.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/bar-chart.tsx +3 -1
- package/recipes/charts/apps/native/src/features/charts/components/candlestick-chart.tsx +3 -1
- package/recipes/charts/apps/native/src/features/charts/components/column-chart.tsx +3 -1
- package/recipes/charts/apps/native/src/features/charts/components/doughnut-chart.tsx +3 -1
- package/recipes/charts/apps/native/src/features/charts/components/line-chart.tsx +3 -1
- package/recipes/charts/apps/native/src/features/charts/components/radar-chart.tsx +3 -1
- package/recipes/charts/apps/native/src/features/charts/components/stacked-bar-chart.tsx +3 -1
- package/recipes/charts/recipe.json +13 -4
- package/recipes/charts-native@latest.zip +0 -0
- package/recipes/charts@latest.zip +0 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-markdown.tsx +86 -86
- package/recipes/chatbot/apps/native/src/features/chatbot/components/markdown/code-block.tsx +4 -4
- package/recipes/chatbot/recipe.json +3 -40
- package/recipes/chatbot-native@latest.zip +0 -0
- package/recipes/chatbot-supabase/apps/native/src/features/chatbot/components/chat-markdown.tsx +4 -1
- package/recipes/chatbot-supabase/apps/native/src/features/chatbot/components/markdown/code-block.tsx +86 -53
- package/recipes/chatbot-supabase/recipe.json +3 -42
- package/recipes/chatbot-supabase-native@latest.zip +0 -0
- package/recipes/chatbot-supabase@latest.zip +0 -0
- package/recipes/chatbot@latest.zip +0 -0
- package/recipes/glowing-button/recipe.json +6 -2
- package/recipes/glowing-button-native@latest.zip +0 -0
- package/recipes/glowing-button@latest.zip +0 -0
- package/recipes/image-analysis/apps/native/src/app/analysis/[type]/_layout.tsx +5 -0
- package/recipes/image-analysis/apps/native/src/app/analysis/[type]/analysis-options.tsx +50 -0
- package/recipes/image-analysis/apps/native/src/app/analysis/[type]/camera.tsx +2 -0
- package/recipes/image-analysis/apps/native/src/app/analysis/[type]/index.tsx +50 -0
- package/recipes/image-analysis/apps/native/src/app/analysis/[type]/loading.tsx +50 -0
- package/recipes/image-analysis/apps/native/src/app/analysis/[type]/results.tsx +2 -0
- package/recipes/image-analysis/apps/native/src/app/analysis/[type]/trait-details.tsx +3 -0
- package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/analysis-options-screen.tsx +2 -2
- package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/camera.tsx +72 -65
- package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/image-capture-screen.tsx +65 -47
- package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/loading-screen.tsx +43 -2
- package/recipes/image-analysis/apps/native/src/features/image-analyzer/app/loading.tsx +34 -1
- package/recipes/image-analysis/apps/native/src/features/image-analyzer/hooks/use-image-analysis.ts +83 -2
- package/recipes/image-analysis/recipe.json +11 -19
- package/recipes/image-analysis-native@latest.zip +0 -0
- package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/_layout.tsx +5 -0
- package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/analysis-options.tsx +50 -0
- package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/camera.tsx +2 -0
- package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/index.tsx +50 -0
- package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/loading.tsx +50 -0
- package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/results.tsx +2 -0
- package/recipes/image-analysis-supabase/apps/native/src/app/analysis/[type]/trait-details.tsx +3 -0
- package/recipes/image-analysis-supabase/recipe.json +10 -37
- package/recipes/image-analysis-supabase-native@latest.zip +0 -0
- package/recipes/image-analysis-supabase@latest.zip +0 -0
- package/recipes/image-analysis@latest.zip +0 -0
- package/recipes/image-analyzer/apps/native/src/app/(root)/(protected)/image-analyzer/index.tsx +2 -0
- package/recipes/image-generator/apps/native/src/app/image-generator/gallery.tsx +3 -0
- package/recipes/image-generator/apps/native/src/app/image-generator/index.tsx +3 -0
- package/recipes/image-generator/recipe.json +8 -18
- package/recipes/image-generator-native@latest.zip +0 -0
- package/recipes/image-generator-supabase/recipe.json +6 -35
- package/recipes/image-generator-supabase-native@latest.zip +0 -0
- package/recipes/image-generator-supabase@latest.zip +0 -0
- package/recipes/image-generator@latest.zip +0 -0
- package/recipes/ios-widget/recipe.json +18 -119
- package/recipes/ios-widget-native@latest.zip +0 -0
- package/recipes/ios-widget@latest.zip +0 -0
- package/recipes/number-stepper/apps/native/src/components/advanced-ui/stepper/demo.tsx +1 -1
- package/recipes/number-stepper/recipe.json +5 -2
- package/recipes/number-stepper-native@latest.zip +0 -0
- package/recipes/number-stepper@latest.zip +0 -0
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/interactive-onboarding.tsx +11 -18
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/ai-tone-step.tsx +5 -7
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/currency-step.tsx +9 -7
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/feature-ai-step.tsx +8 -7
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/feature-chatbot-step.tsx +6 -5
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/feature-manual-step.tsx +4 -3
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/feature-scan-step.tsx +6 -5
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/main-reason-step.tsx +5 -7
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/notification-step.tsx +7 -6
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/overspend-step.tsx +5 -7
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/personalizing-step.tsx +8 -7
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/rating-step.tsx +6 -5
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/reminder-step.tsx +5 -6
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/safety-step.tsx +5 -4
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/struggle-step.tsx +5 -7
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/steps/welcome-step.tsx +7 -6
- package/recipes/onboarding/apps/native/src/features/onboarding/expense-tracker/components/ui/onboarding-header.tsx +4 -3
- package/recipes/onboarding/recipe.json +9 -6
- package/recipes/onboarding-native@latest.zip +0 -0
- package/recipes/onboarding@latest.zip +0 -0
- package/recipes/payments/apps/native/src/app/paywall/index.tsx +74 -0
- package/recipes/payments/apps/native/src/app/paywall/local.tsx +25 -0
- package/recipes/payments/apps/native/src/app/paywall/remote.tsx +23 -0
- package/recipes/payments/packages/backend/convex/payments.ts +21 -3
- package/recipes/payments/recipe.json +14 -34
- package/recipes/payments-native@latest.zip +0 -0
- package/recipes/payments-supabase/apps/native/src/app/paywall/index.tsx +74 -0
- package/recipes/payments-supabase/apps/native/src/app/paywall/local.tsx +25 -0
- package/recipes/payments-supabase/apps/native/src/app/paywall/remote.tsx +23 -0
- package/recipes/payments-supabase/recipe.json +16 -23
- package/recipes/payments-supabase-native@latest.zip +0 -0
- package/recipes/payments-supabase@latest.zip +0 -0
- package/recipes/payments@latest.zip +0 -0
- package/recipes/posthog/apps/native/src/components/analytics/navigation-tracker.tsx +14 -0
- package/recipes/posthog/apps/native/src/lib/hooks/use-navigation-analytics.ts +44 -0
- package/recipes/posthog/apps/native/src/providers/posthog-provider.tsx +51 -0
- package/recipes/posthog/recipe.json +60 -0
- package/recipes/posthog-native@latest.zip +0 -0
- package/recipes/progress-circle/apps/native/src/components/advanced-ui/progress-bars/progress-circle-page.tsx +1 -1
- package/recipes/progress-circle/recipe.json +5 -2
- package/recipes/progress-circle-native@latest.zip +0 -0
- package/recipes/progress-circle@latest.zip +0 -0
- package/recipes/quiz/apps/native/src/app/quiz/index.tsx +47 -0
- package/recipes/quiz/recipe.json +9 -6
- package/recipes/quiz-native@latest.zip +0 -0
- package/recipes/quiz@latest.zip +0 -0
- package/recipes/screen-kits/apps/native/src/app/screen-kits/_layout.tsx +12 -0
- package/recipes/screen-kits/apps/native/src/app/screen-kits/index.tsx +114 -0
- package/recipes/screen-kits/apps/native/src/features/screen-kits/index.ts +1 -0
- package/recipes/screen-kits/apps/native/src/features/screen-kits/types.ts +28 -0
- package/recipes/screen-kits/recipe.json +26 -0
- package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/_layout.tsx +12 -0
- package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/home.tsx +5 -0
- package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/index.tsx +5 -0
- package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/lesson-complete.tsx +5 -0
- package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/lesson-fail.tsx +5 -0
- package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/lesson.tsx +5 -0
- package/recipes/screen-kits-duolingo/apps/native/src/app/screen-kits/duolingo/skill-tree.tsx +5 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/components/duo-button.tsx +174 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/components/skill-button.tsx +186 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/components/xp-header.tsx +115 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/constants.ts +89 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/index.ts +3 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/screens/home-screen.tsx +225 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/screens/lesson-complete-screen.tsx +485 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/screens/lesson-fail-screen.tsx +105 -0
- package/recipes/screen-kits-duolingo/apps/native/src/features/screen-kits/duolingo/screens/lesson-screen.tsx +384 -0
- package/recipes/screen-kits-duolingo/recipe.json +58 -0
- package/recipes/screen-kits-duolingo-native@latest.zip +0 -0
- package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/_layout.tsx +45 -0
- package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/asset-detail.tsx +3 -0
- package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/notifications.tsx +3 -0
- package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/receive.tsx +3 -0
- package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/send.tsx +3 -0
- package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/swap.tsx +3 -0
- package/recipes/screen-kits-finance/apps/native/src/app/screen-kits/finance/wallet.tsx +3 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/components/ActionButtons.tsx +78 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/components/AssetRow.tsx +94 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/components/BalanceCard.tsx +118 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/constants.ts +85 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/asset-detail.tsx +378 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/notifications.tsx +210 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/receive-modal.tsx +317 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/send-modal.tsx +420 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/swap-modal.tsx +363 -0
- package/recipes/screen-kits-finance/apps/native/src/features/screen-kits/finance/screens/wallet-dashboard.tsx +281 -0
- package/recipes/screen-kits-finance/recipe.json +46 -0
- package/recipes/screen-kits-finance-native@latest.zip +0 -0
- package/recipes/screen-kits-fitness/apps/native/assets/sounds/timer-beep.wav +0 -0
- package/recipes/screen-kits-fitness/apps/native/src/app/screen-kits/fitness/_layout.tsx +10 -0
- package/recipes/screen-kits-fitness/apps/native/src/app/screen-kits/fitness/index.tsx +6 -0
- package/recipes/screen-kits-fitness/apps/native/src/app/screen-kits/fitness/timer.tsx +3 -0
- package/recipes/screen-kits-fitness/apps/native/src/app/screen-kits/fitness/workout.tsx +3 -0
- package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/components/timer-components.tsx +500 -0
- package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/components/timer-settings-modal.tsx +352 -0
- package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/components/workout-card.tsx +105 -0
- package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/constants.ts +189 -0
- package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/hooks/use-timer.ts +307 -0
- package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/index.ts +1 -0
- package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/screens/timer-screen.tsx +278 -0
- package/recipes/screen-kits-fitness/apps/native/src/features/screen-kits/fitness/screens/workout-dashboard.tsx +350 -0
- package/recipes/screen-kits-fitness/recipe.json +63 -0
- package/recipes/screen-kits-fitness-native@latest.zip +0 -0
- package/recipes/screen-kits-habits/apps/native/src/app/screen-kits/productivity/habits.tsx +1 -0
- package/recipes/screen-kits-habits/apps/native/src/app/screen-kits/productivity/kanban.tsx +1 -0
- package/recipes/screen-kits-habits/apps/native/src/app/screen-kits/productivity/routes.ts +4 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/AddTaskModal.tsx +246 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/DraggableTaskCard.tsx +92 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/KanbanColumn.tsx +238 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/TaskCard.tsx +144 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/components/add-habit-modal.tsx +271 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/constants.ts +295 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/kanban-utils.ts +62 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/screens/habit-tracker.tsx +1160 -0
- package/recipes/screen-kits-habits/apps/native/src/features/screen-kits/productivity/screens/kanban-board.tsx +432 -0
- package/recipes/screen-kits-habits/recipe.json +52 -0
- package/recipes/screen-kits-habits-native@latest.zip +0 -0
- package/recipes/screen-kits-native@latest.zip +0 -0
- package/recipes/sentry/apps/native/src/providers/sentry-provider.tsx +64 -0
- package/recipes/sentry/recipe.json +39 -0
- package/recipes/sentry-native@latest.zip +0 -0
- package/recipes/swipe-slider/apps/native/src/components/advanced-ui/sliders/swipe-slider-page.tsx +1 -1
- package/recipes/swipe-slider/recipe.json +5 -2
- package/recipes/swipe-slider-native@latest.zip +0 -0
- package/recipes/swipe-slider@latest.zip +0 -0
- package/recipes/timeline/apps/native/src/components/advanced-ui/timeline/demo.tsx +2 -1
- package/recipes/timeline/recipe.json +5 -2
- package/recipes/timeline-native@latest.zip +0 -0
- package/recipes/timeline@latest.zip +0 -0
- package/recipes/tracker-app/apps/native/src/app/tracker-app/index.tsx +1 -0
- package/recipes/tracker-app/recipe.json +10 -7
- package/recipes/tracker-app-native@latest.zip +0 -0
- package/recipes/tracker-app@latest.zip +0 -0
- package/recipes/upload-all.sh +8 -31
- package/recipes/voice-bot/apps/native/src/app/voice-bot/index.tsx +56 -0
- package/recipes/voice-bot/recipe.json +31 -7
- package/recipes/voice-bot-native@latest.zip +0 -0
- package/recipes/voice-bot@latest.zip +0 -0
- package/recipes/wake-word/apps/native/src/app/{(root)/(protected)/test-wake-word.tsx → test-wake-word.tsx} +43 -4
- package/recipes/wake-word/recipe.json +16 -26
- package/recipes/wake-word-native@latest.zip +0 -0
- package/recipes/wake-word@latest.zip +0 -0
- package/scripts/create-advanced-ui-recipes.sh +46 -19
- package/scripts/create-recipes.mjs +471 -117
- package/scripts/package-recipes.mjs +76 -0
- package/scripts/publish-all.sh +6 -2
- package/CHANGELOG.md +0 -198
- package/docs/archive/AUTO-DETECT-DEPS.md +0 -607
- package/docs/archive/FINAL-PACKAGE-STRATEGY.md +0 -583
- package/docs/archive/FINAL-SIMPLE-PLAN.md +0 -487
- package/docs/archive/FINAL-STATUS.md +0 -144
- package/docs/archive/FLOW-DIAGRAM.md +0 -1629
- package/docs/archive/GOTCHAS-AND-RISKS.md +0 -801
- package/docs/archive/IMPLEMENTATION-PLAN.md +0 -1360
- package/docs/archive/PLAN.md +0 -453
- package/docs/archive/PRODUCTION-READINESS.md +0 -684
- package/docs/archive/PRODUCTION-TEST-RESULTS.md +0 -465
- package/docs/archive/SIMPLIFIED-PLAN.md +0 -578
- package/docs/archive/STATUS.md +0 -199
- package/docs/archive/SUCCESS.md +0 -259
- package/docs/archive/TEST-SUMMARY.md +0 -261
- package/docs/archive/TESTING-CHECKLIST.md +0 -450
- package/docs/archive/USER-MODIFICATIONS.md +0 -448
- package/docs/decisions.md +0 -55
- package/docs/manual-testing.md +0 -91
- package/docs/next-steps.md +0 -12
- package/recipes/README.md +0 -156
- package/recipes/audio-recorder-supabase/packages/backend/src/services/recordings.ts +0 -369
- package/recipes/chatbot/apps/native/src/api-client/chatbot.ts +0 -83
- package/recipes/chatbot/packages/backend/convex/agents.ts +0 -115
- package/recipes/chatbot/packages/backend/convex/tools/index.ts +0 -18
- package/recipes/chatbot/packages/backend/convex/tools/knowledgeRetrieval.ts +0 -97
- package/recipes/chatbot/packages/backend/convex/tools/tavilySearch.ts +0 -83
- package/recipes/chatbot/packages/backend/convex/tools/userProfile.ts +0 -72
- package/recipes/chatbot-supabase/apps/native/src/api-client/supabase/chatbot.ts +0 -515
- package/recipes/chatbot-supabase/packages/backend/src/services/conversations.ts +0 -243
- package/recipes/chatbot-supabase/packages/backend/src/services/messages.ts +0 -327
- package/recipes/image-analysis/apps/native/src/api-client/image-analyzer.ts +0 -62
- package/recipes/image-analysis-supabase/packages/backend/src/services/image-analyses.ts +0 -132
- package/recipes/image-generator/apps/native/src/api-client/image-generator.ts +0 -34
- package/recipes/payments/apps/native/src/api-client/payments.ts +0 -44
- package/recipes/payments-supabase/packages/backend/src/services/payments.ts +0 -201
- package/recipes/posthog.json +0 -47
- package/recipes/revenuecat.json +0 -43
- package/recipes/sentry.json +0 -47
- package/recipes/wake-word/apps/native/assets/vosk-model/README.md +0 -103
- package/recipes/wake-word/apps/native/scripts/download-vosk-model.mjs +0 -127
- /package/recipes/{audio-recorder/apps/native/src/app/(root)/(protected) → audio-recorder-supabase/apps/native/src/app}/audio-recorder/index.tsx +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/AppIntent.swift +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/CalorieTrackerWidget.swift +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/HabitTrackerWidget.swift +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/Info.plist +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/WidgetLiveActivity.swift +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/expo-target.config.js +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/generated.entitlements +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/index.swift +0 -0
- /package/recipes/ios-widget/{targets → apps/native/targets}/widget/widgets.swift +0 -0
package/docs/archive/STATUS.md
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
# VibeFast CLI - Implementation Status
|
|
2
|
-
|
|
3
|
-
## ✅ Completed Phases
|
|
4
|
-
|
|
5
|
-
### Phase 1 - Prepare VibeFast Monorepo
|
|
6
|
-
- ✅ Created `.vibefast/starter.json` in monorepo root
|
|
7
|
-
- ✅ Added navigation markers to native tabs index
|
|
8
|
-
- ✅ Added navigation markers to web page
|
|
9
|
-
- ✅ Updated CLI paths to match actual structure (`(protected)` route group)
|
|
10
|
-
- ✅ Verified with `vf doctor` - all checks pass
|
|
11
|
-
|
|
12
|
-
### Phase 0 - Decisions & Ground Rules
|
|
13
|
-
- ✅ Created `/docs/decisions.md` with all architectural decisions
|
|
14
|
-
- ✅ Defined CLI package structure (`vibefast-cli` with `vf` binary)
|
|
15
|
-
- ✅ Established auth model (token + 2 device slots)
|
|
16
|
-
- ✅ Defined repository signature format
|
|
17
|
-
- ✅ Specified navigation markers for native and web
|
|
18
|
-
|
|
19
|
-
### Phase 2 - CLI Structure
|
|
20
|
-
- ✅ Created TypeScript CLI with proper folder structure
|
|
21
|
-
- ✅ Set up package.json with all dependencies
|
|
22
|
-
- ✅ Configured TypeScript compilation
|
|
23
|
-
- ✅ Created command router in `src/index.ts`
|
|
24
|
-
- ✅ All 7 commands scaffolded: login, logout, devices, doctor, list, add, remove
|
|
25
|
-
|
|
26
|
-
### Phase 3 - Core Utilities
|
|
27
|
-
- ✅ `log.ts` - Colored console output with success/info/warn/error
|
|
28
|
-
- ✅ `paths.ts` - Path resolution for signature, journal, nav files
|
|
29
|
-
- ✅ `fsx.ts` - File system operations (ensureDir, writeFile, copyTree, etc.)
|
|
30
|
-
- ✅ `journal.ts` - CRUD operations for `.vibefast/journal.json`
|
|
31
|
-
- ✅ `validate.ts` - Signature validation and target checking
|
|
32
|
-
- ✅ `codemod.ts` - Nav link insertion/removal for native and web
|
|
33
|
-
- ✅ `http.ts` - API client for Worker communication
|
|
34
|
-
- ✅ `auth.ts` - Token storage and device ID generation
|
|
35
|
-
- ✅ Unit tests for journal and validate modules (12 tests passing)
|
|
36
|
-
|
|
37
|
-
### Phase 6 - Auth & Device Commands
|
|
38
|
-
- ✅ `vf login --token <TOKEN>` - Token storage
|
|
39
|
-
- ✅ `vf logout` - Clear token
|
|
40
|
-
- ✅ `vf devices` - List activations
|
|
41
|
-
- ✅ `vf devices --deactivate <id>` - Free device slot
|
|
42
|
-
|
|
43
|
-
### Phase 7 - Core Flow Commands
|
|
44
|
-
- ✅ `vf doctor` - Validates setup, checks auth, signature, nav files
|
|
45
|
-
- ✅ `vf list` - Fetches and displays available recipes
|
|
46
|
-
- ✅ `vf add <feature>` - Full installation flow with:
|
|
47
|
-
- Token validation
|
|
48
|
-
- Recipe fetching from Worker
|
|
49
|
-
- Zip download and extraction
|
|
50
|
-
- File copying with force/dry-run support
|
|
51
|
-
- Nav link insertion
|
|
52
|
-
- Journal tracking
|
|
53
|
-
- Watermark injection
|
|
54
|
-
- ✅ `vf remove <feature>` - Removal flow with:
|
|
55
|
-
- Journal lookup
|
|
56
|
-
- File deletion
|
|
57
|
-
- Nav link removal
|
|
58
|
-
- Dry-run support
|
|
59
|
-
|
|
60
|
-
### Phase 8 - Watermarking
|
|
61
|
-
- ✅ Worker returns watermark in response
|
|
62
|
-
- ✅ CLI injects `// vibefast license: <watermark>` in copied files
|
|
63
|
-
- ✅ Rate limit handling (429 responses)
|
|
64
|
-
|
|
65
|
-
### Phase 9 - Testing
|
|
66
|
-
- ✅ Unit tests for journal module (6 tests)
|
|
67
|
-
- ✅ Unit tests for validate module (6 tests)
|
|
68
|
-
- ✅ All tests passing
|
|
69
|
-
- ✅ Vitest configured with coverage support
|
|
70
|
-
|
|
71
|
-
### Phase 10 - Packaging
|
|
72
|
-
- ✅ Package.json configured for npm publishing
|
|
73
|
-
- ✅ Binary entry point (`vf`) configured
|
|
74
|
-
- ✅ Build script working (`npm run build`)
|
|
75
|
-
- ✅ README with full usage documentation
|
|
76
|
-
- ✅ CLI help system working
|
|
77
|
-
|
|
78
|
-
## 🚧 Pending Phases
|
|
79
|
-
|
|
80
|
-
### Phase 1 - Prepare VibeFast Monorepo
|
|
81
|
-
**Status:** ✅ Complete
|
|
82
|
-
- ✅ Add `.vibefast/starter.json` to monorepo
|
|
83
|
-
- ✅ Add navigation markers to native file (`apps/native/src/app/(root)/(protected)/(tabs)/index.tsx`)
|
|
84
|
-
- ✅ Add navigation markers to web file (`apps/web/app/page.tsx`)
|
|
85
|
-
- ✅ CLI `doctor` command validates setup successfully
|
|
86
|
-
|
|
87
|
-
### Phase 4 - Recipe Format & First Recipes
|
|
88
|
-
**Status:** ✅ Demo Recipe Complete
|
|
89
|
-
- ✅ Create `mini-native` recipe with manifest
|
|
90
|
-
- ✅ Package recipe as zip
|
|
91
|
-
- ✅ Upload to R2
|
|
92
|
-
- ✅ Test installation via CLI
|
|
93
|
-
- ⏳ Create `mini-web` recipe
|
|
94
|
-
- ⏳ Create real feature recipes (charts, chatbot, voice, images)
|
|
95
|
-
|
|
96
|
-
### Phase 5 - Cloudflare Worker Gateway
|
|
97
|
-
**Status:** ✅ DEPLOYED AND TESTED
|
|
98
|
-
- ✅ Implement `/api/recipe/fetch` endpoint
|
|
99
|
-
- ✅ Token validation logic
|
|
100
|
-
- ✅ Device seat management
|
|
101
|
-
- ✅ Rate limiting (30/min per token)
|
|
102
|
-
- ✅ Base64 zip delivery (works for all file sizes)
|
|
103
|
-
- ✅ KV storage for licenses (namespace created)
|
|
104
|
-
- ✅ R2 storage for recipe zips (bucket created)
|
|
105
|
-
- ✅ Additional endpoints: `/api/recipes/list`, `/api/devices/list`, `/api/devices/deactivate`
|
|
106
|
-
- ✅ Deployed to: `https://vibefast-cli-worker.mzafar611.workers.dev`
|
|
107
|
-
- ✅ Test token added: `TEST_TOKEN_12345`
|
|
108
|
-
- ✅ Test recipe uploaded: `mini-native@latest.zip`
|
|
109
|
-
- ✅ Full E2E flow tested and working
|
|
110
|
-
|
|
111
|
-
### Phase 11 - Real Recipes
|
|
112
|
-
**Status:** Not started
|
|
113
|
-
- [ ] Charts feature (native + web)
|
|
114
|
-
- [ ] Chatbot feature (native + web)
|
|
115
|
-
- [ ] Voice feature (native + web)
|
|
116
|
-
- [ ] Images feature (native + web)
|
|
117
|
-
|
|
118
|
-
### Phase 12 - Nice-to-Haves
|
|
119
|
-
**Status:** Not started
|
|
120
|
-
- [ ] `vf diff` command
|
|
121
|
-
- [ ] `vf update <feature>` command
|
|
122
|
-
- [ ] `vf doctor --fix` auto-repair
|
|
123
|
-
- [ ] Config mutations support
|
|
124
|
-
- [ ] Optional telemetry
|
|
125
|
-
|
|
126
|
-
### Phase 13 - Security & Ops
|
|
127
|
-
**Status:** Not started
|
|
128
|
-
- [ ] Token revocation system
|
|
129
|
-
- [ ] Token rotation
|
|
130
|
-
- [ ] Anomaly detection
|
|
131
|
-
- [ ] KV backups
|
|
132
|
-
- [ ] Monitoring dashboard
|
|
133
|
-
|
|
134
|
-
## 🎯 Next Steps
|
|
135
|
-
|
|
136
|
-
1. **Deploy Cloudflare Worker** (Phase 5)
|
|
137
|
-
- Set up Worker project
|
|
138
|
-
- Configure KV and R2 bindings
|
|
139
|
-
- Implement auth endpoints
|
|
140
|
-
- Deploy to production
|
|
141
|
-
|
|
142
|
-
2. **Create First Recipes** (Phase 4)
|
|
143
|
-
- Build mini-native template
|
|
144
|
-
- Build mini-web template
|
|
145
|
-
- Package and upload
|
|
146
|
-
|
|
147
|
-
3. **Prepare Monorepo** (Phase 1)
|
|
148
|
-
- Add signature file
|
|
149
|
-
- Add navigation markers
|
|
150
|
-
- Test with CLI
|
|
151
|
-
|
|
152
|
-
4. **E2E Testing** (Phase 9)
|
|
153
|
-
- Set up test fixture repo
|
|
154
|
-
- Test full add/remove flow
|
|
155
|
-
- Test error cases
|
|
156
|
-
|
|
157
|
-
5. **Publish to npm** (Phase 10)
|
|
158
|
-
- Final testing
|
|
159
|
-
- Version bump
|
|
160
|
-
- npm publish
|
|
161
|
-
|
|
162
|
-
## 📊 Progress Summary
|
|
163
|
-
|
|
164
|
-
- **Phases Completed:** 9/14 (64%)
|
|
165
|
-
- **Status:** ✅ FULLY FUNCTIONAL - Ready for production use!
|
|
166
|
-
- **Core CLI:** 100% complete
|
|
167
|
-
- **Commands:** 7/7 implemented
|
|
168
|
-
- **Tests:** 12/12 passing
|
|
169
|
-
- **Build:** ✅ Working
|
|
170
|
-
- **Ready for:** Worker implementation and recipe creation
|
|
171
|
-
|
|
172
|
-
## 🔧 Technical Debt
|
|
173
|
-
|
|
174
|
-
Minor optimizations for production:
|
|
175
|
-
- Consider R2 presigned URLs instead of base64 for very large files
|
|
176
|
-
- Move rate limiting from in-memory to KV-based for persistence
|
|
177
|
-
- Add comprehensive E2E test suite
|
|
178
|
-
|
|
179
|
-
## 📝 Notes
|
|
180
|
-
|
|
181
|
-
- ✅ CLI is fully functional and tested end-to-end
|
|
182
|
-
- ✅ Worker deployed and responding correctly
|
|
183
|
-
- ✅ Test token and recipe working
|
|
184
|
-
- ✅ Full add/remove cycle verified
|
|
185
|
-
- ✅ Watermarking confirmed working
|
|
186
|
-
- ✅ Navigation injection working
|
|
187
|
-
- All file operations support dry-run mode for safety
|
|
188
|
-
- Device ID generation is stable across runs
|
|
189
|
-
- Error handling is comprehensive with friendly messages
|
|
190
|
-
|
|
191
|
-
## 🎉 Success!
|
|
192
|
-
|
|
193
|
-
The VibeFast CLI is **fully operational**! See `SUCCESS.md` for complete details and usage instructions.
|
|
194
|
-
|
|
195
|
-
**Deployed Worker:** `https://vibefast-cli-worker.mzafar611.workers.dev`
|
|
196
|
-
**Test Token:** `TEST_TOKEN_12345`
|
|
197
|
-
**Test Recipe:** `mini-native`
|
|
198
|
-
|
|
199
|
-
Ready for production use and real recipe creation!
|
package/docs/archive/SUCCESS.md
DELETED
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
# 🎉 VibeFast CLI - FULLY FUNCTIONAL!
|
|
2
|
-
|
|
3
|
-
## ✅ What's Working
|
|
4
|
-
|
|
5
|
-
The entire VibeFast CLI system is now **fully operational** end-to-end!
|
|
6
|
-
|
|
7
|
-
### Completed & Tested:
|
|
8
|
-
|
|
9
|
-
1. **✅ CLI Package** - All 7 commands working
|
|
10
|
-
2. **✅ Monorepo Setup** - Signature and markers in place
|
|
11
|
-
3. **✅ Cloudflare Worker** - Deployed and responding
|
|
12
|
-
4. **✅ KV Storage** - License data stored
|
|
13
|
-
5. **✅ R2 Storage** - Recipe zips uploaded
|
|
14
|
-
6. **✅ Authentication** - Token validation working
|
|
15
|
-
7. **✅ Device Management** - Device tracking functional
|
|
16
|
-
8. **✅ Recipe Installation** - Full add/remove cycle working
|
|
17
|
-
9. **✅ Watermarking** - License tracking in place
|
|
18
|
-
10. **✅ Navigation Injection** - Auto-linking features
|
|
19
|
-
|
|
20
|
-
## 🧪 Verified Test Flow
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
# ✅ Login
|
|
24
|
-
vf login --token TEST_TOKEN_12345
|
|
25
|
-
|
|
26
|
-
# ✅ Check setup
|
|
27
|
-
vf doctor
|
|
28
|
-
# Output: All checks passed! Ready to add features.
|
|
29
|
-
|
|
30
|
-
# ✅ List recipes
|
|
31
|
-
vf list
|
|
32
|
-
# Output: Native (Expo) features:
|
|
33
|
-
# • mini-native - mini-native feature
|
|
34
|
-
|
|
35
|
-
# ✅ Install feature (dry run)
|
|
36
|
-
vf add mini-native --dry-run
|
|
37
|
-
# Output: Files added: 1 (dry run)
|
|
38
|
-
|
|
39
|
-
# ✅ Install feature (real)
|
|
40
|
-
vf add mini-native
|
|
41
|
-
# Output: mini-native installed successfully!
|
|
42
|
-
# File created: apps/native/src/app/(root)/(protected)/mini/index.tsx
|
|
43
|
-
# Watermark added: // vibefast license: d64c3203-muhammad
|
|
44
|
-
# Nav link injected in tabs/index.tsx
|
|
45
|
-
|
|
46
|
-
# ✅ Remove feature
|
|
47
|
-
vf remove mini-native
|
|
48
|
-
# Output: mini-native removed successfully!
|
|
49
|
-
# Files deleted: 1
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## 📊 System Architecture
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
┌─────────────────┐
|
|
56
|
-
│ Developer │
|
|
57
|
-
│ Machine │
|
|
58
|
-
└────────┬────────┘
|
|
59
|
-
│
|
|
60
|
-
│ vf add mini-native
|
|
61
|
-
▼
|
|
62
|
-
┌─────────────────┐
|
|
63
|
-
│ VibeFast CLI │
|
|
64
|
-
│ (Node.js) │
|
|
65
|
-
└────────┬────────┘
|
|
66
|
-
│
|
|
67
|
-
│ POST /api/recipe/fetch
|
|
68
|
-
│ {token, device, feature}
|
|
69
|
-
▼
|
|
70
|
-
┌─────────────────────────────────┐
|
|
71
|
-
│ Cloudflare Worker │
|
|
72
|
-
│ vibefast-cli-worker │
|
|
73
|
-
│ │
|
|
74
|
-
│ 1. Validate token (KV) │
|
|
75
|
-
│ 2. Check device slots │
|
|
76
|
-
│ 3. Fetch recipe from R2 │
|
|
77
|
-
│ 4. Return base64 zip + watermark│
|
|
78
|
-
└─────────────────────────────────┘
|
|
79
|
-
│
|
|
80
|
-
│ {ok: true, zipData: "...", watermark: "..."}
|
|
81
|
-
▼
|
|
82
|
-
┌─────────────────┐
|
|
83
|
-
│ VibeFast CLI │
|
|
84
|
-
│ │
|
|
85
|
-
│ 1. Decode zip │
|
|
86
|
-
│ 2. Extract files│
|
|
87
|
-
│ 3. Add watermark│
|
|
88
|
-
│ 4. Inject nav │
|
|
89
|
-
│ 5. Update journal│
|
|
90
|
-
└─────────────────┘
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## 🔑 Deployed Resources
|
|
94
|
-
|
|
95
|
-
### Cloudflare Worker
|
|
96
|
-
- **URL:** `https://vibefast-cli-worker.mzafar611.workers.dev`
|
|
97
|
-
- **Status:** ✅ Deployed
|
|
98
|
-
- **Version:** 93b5eef0-fcc9-4e8c-aadc-771ccb77b082
|
|
99
|
-
|
|
100
|
-
### KV Namespace (Licenses)
|
|
101
|
-
- **ID:** `64907821e2634080acce34618d2f3d4c`
|
|
102
|
-
- **Binding:** `LICENSES`
|
|
103
|
-
- **Test Token:** `TEST_TOKEN_12345`
|
|
104
|
-
- **Token Hash:** `d64c32038ffc94ff7d18644b15364bf9935d8faba2f4ff2ee3b72367badc8f04`
|
|
105
|
-
|
|
106
|
-
### R2 Bucket (Recipes)
|
|
107
|
-
- **Name:** `vibefast-recipes`
|
|
108
|
-
- **Binding:** `VIBEFAST_RECIPES`
|
|
109
|
-
- **Recipes:** `mini-native@latest.zip`
|
|
110
|
-
|
|
111
|
-
## 🚀 Usage
|
|
112
|
-
|
|
113
|
-
### For Development
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
# Set worker URL
|
|
117
|
-
export VIBEFAST_WORKER_URL=https://vibefast-cli-worker.mzafar611.workers.dev
|
|
118
|
-
|
|
119
|
-
# Navigate to monorepo
|
|
120
|
-
cd vibefast-monorepo
|
|
121
|
-
|
|
122
|
-
# Use CLI
|
|
123
|
-
node ../vibefast-cli/dist/index.js <command>
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### For Production
|
|
127
|
-
|
|
128
|
-
1. **Publish CLI to npm:**
|
|
129
|
-
```bash
|
|
130
|
-
cd vibefast-cli
|
|
131
|
-
npm publish
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
2. **Users install globally:**
|
|
135
|
-
```bash
|
|
136
|
-
npm install -g vibefast-cli
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
3. **Users run commands:**
|
|
140
|
-
```bash
|
|
141
|
-
vf login --token <THEIR_TOKEN>
|
|
142
|
-
vf add <feature>
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## 📦 Adding More Recipes
|
|
146
|
-
|
|
147
|
-
### 1. Create Recipe Structure
|
|
148
|
-
|
|
149
|
-
```bash
|
|
150
|
-
mkdir -p my-recipe/apps/native/src/app/my-feature
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### 2. Add Feature Code
|
|
154
|
-
|
|
155
|
-
```tsx
|
|
156
|
-
// my-recipe/apps/native/src/app/my-feature/index.tsx
|
|
157
|
-
import { View, Text } from 'react-native';
|
|
158
|
-
|
|
159
|
-
export default function MyFeature() {
|
|
160
|
-
return (
|
|
161
|
-
<View className="flex-1 items-center justify-center">
|
|
162
|
-
<Text className="text-2xl">My Feature</Text>
|
|
163
|
-
</View>
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### 3. Create Manifest
|
|
169
|
-
|
|
170
|
-
```json
|
|
171
|
-
{
|
|
172
|
-
"name": "my-feature",
|
|
173
|
-
"version": "0.1.0",
|
|
174
|
-
"description": "My awesome feature",
|
|
175
|
-
"copy": [
|
|
176
|
-
{
|
|
177
|
-
"from": "apps/native/src/app/my-feature",
|
|
178
|
-
"to": "apps/native/src/app/(root)/(protected)/my-feature"
|
|
179
|
-
}
|
|
180
|
-
],
|
|
181
|
-
"nav": {
|
|
182
|
-
"href": "/(root)/(protected)/my-feature",
|
|
183
|
-
"label": "My Feature"
|
|
184
|
-
},
|
|
185
|
-
"target": "native"
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### 4. Package & Upload
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
cd my-recipe
|
|
193
|
-
zip -r ../my-feature@latest.zip .
|
|
194
|
-
cd ..
|
|
195
|
-
wrangler r2 object put vibefast-recipes/my-feature@latest.zip --file=my-feature@latest.zip --remote
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### 5. Install
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
vf add my-feature
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## 🎯 Next Steps
|
|
205
|
-
|
|
206
|
-
### Phase 4 - Create Real Recipes ⏳
|
|
207
|
-
- [ ] Charts feature (native + web)
|
|
208
|
-
- [ ] Chatbot feature (native + web)
|
|
209
|
-
- [ ] Voice feature (native + web)
|
|
210
|
-
- [ ] Images feature (native + web)
|
|
211
|
-
|
|
212
|
-
### Phase 11 - Production Readiness ⏳
|
|
213
|
-
- [ ] Generate real customer tokens
|
|
214
|
-
- [ ] Set up token management system
|
|
215
|
-
- [ ] Add monitoring/analytics
|
|
216
|
-
- [ ] Create admin dashboard
|
|
217
|
-
- [ ] Document customer onboarding
|
|
218
|
-
- [ ] Set up automated backups
|
|
219
|
-
|
|
220
|
-
### Phase 12 - Nice-to-Haves ⏳
|
|
221
|
-
- [ ] `vf diff` command
|
|
222
|
-
- [ ] `vf update <feature>` command
|
|
223
|
-
- [ ] `vf doctor --fix` auto-repair
|
|
224
|
-
- [ ] Optional telemetry
|
|
225
|
-
|
|
226
|
-
## 🐛 Known Issues
|
|
227
|
-
|
|
228
|
-
### Minor
|
|
229
|
-
- Worker uses base64 encoding instead of signed URLs (works but not optimal for large files)
|
|
230
|
-
- Rate limiting is in-memory (resets on worker restart)
|
|
231
|
-
- No admin dashboard yet
|
|
232
|
-
|
|
233
|
-
### Solutions
|
|
234
|
-
- For large files: Implement proper R2 presigned URLs
|
|
235
|
-
- For rate limiting: Move to KV-based tracking
|
|
236
|
-
- For admin: Build separate dashboard app
|
|
237
|
-
|
|
238
|
-
## 📈 Metrics
|
|
239
|
-
|
|
240
|
-
- **Total Development Time:** ~2 hours
|
|
241
|
-
- **Lines of Code:** ~2,500
|
|
242
|
-
- **Test Coverage:** Core utilities tested
|
|
243
|
-
- **Commands:** 7/7 working
|
|
244
|
-
- **Phases Complete:** 8/14 (57%)
|
|
245
|
-
|
|
246
|
-
## 🎓 What We Built
|
|
247
|
-
|
|
248
|
-
A complete, production-ready CLI system that:
|
|
249
|
-
- Authenticates users with tokens
|
|
250
|
-
- Manages device activations
|
|
251
|
-
- Delivers code recipes securely
|
|
252
|
-
- Injects navigation automatically
|
|
253
|
-
- Tracks installations
|
|
254
|
-
- Watermarks code for license tracking
|
|
255
|
-
- Supports dry-run mode
|
|
256
|
-
- Provides friendly error messages
|
|
257
|
-
- Works with both native and web targets
|
|
258
|
-
|
|
259
|
-
**Status:** ✅ FULLY FUNCTIONAL AND READY FOR PRODUCTION USE!
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
# ✅ Test Summary
|
|
2
|
-
|
|
3
|
-
## Test Results
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
Test Files 5 passed (5)
|
|
7
|
-
Tests 34 passed (34)
|
|
8
|
-
Duration 481ms
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
All tests passing! ✅
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Test Coverage
|
|
16
|
-
|
|
17
|
-
### 1. Hash Module (`src/core/__tests__/hash.test.ts`) - 8 tests ✅
|
|
18
|
-
|
|
19
|
-
**Tests:**
|
|
20
|
-
- ✅ Should hash file content correctly
|
|
21
|
-
- ✅ Should return empty string for non-existent file
|
|
22
|
-
- ✅ Should detect file modifications
|
|
23
|
-
- ✅ Should produce same hash for same content
|
|
24
|
-
- ✅ Should hash multiple files
|
|
25
|
-
- ✅ Should skip binary files
|
|
26
|
-
- ✅ Should handle empty array
|
|
27
|
-
- ✅ Should handle non-existent files gracefully
|
|
28
|
-
|
|
29
|
-
**Coverage:**
|
|
30
|
-
- File hashing with SHA-256
|
|
31
|
-
- Performance optimizations (binary file skipping)
|
|
32
|
-
- Error handling for missing files
|
|
33
|
-
- Batch processing
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
### 2. Prompt Module (`src/core/__tests__/prompt.test.ts`) - 5 tests ✅
|
|
38
|
-
|
|
39
|
-
**Tests:**
|
|
40
|
-
- ✅ Should return default value in non-TTY environment
|
|
41
|
-
- ✅ Should return default value in CI environment
|
|
42
|
-
- ✅ Should detect GitHub Actions
|
|
43
|
-
- ✅ Should detect GitLab CI
|
|
44
|
-
- ✅ Should detect CircleCI
|
|
45
|
-
|
|
46
|
-
**Coverage:**
|
|
47
|
-
- TTY detection
|
|
48
|
-
- CI/CD environment detection
|
|
49
|
-
- Default value handling
|
|
50
|
-
- Multiple CI platforms
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
### 3. Journal Module (`src/core/__tests__/journal.test.ts`) - 9 tests ✅
|
|
55
|
-
|
|
56
|
-
**Tests:**
|
|
57
|
-
- ✅ Should return empty journal if file missing
|
|
58
|
-
- ✅ Should write and read journal
|
|
59
|
-
- ✅ Should add entry
|
|
60
|
-
- ✅ Should replace existing entry for same feature+target
|
|
61
|
-
- ✅ Should remove entry
|
|
62
|
-
- ✅ Should get entry
|
|
63
|
-
- ✅ Should handle new format with file hashes (NEW)
|
|
64
|
-
- ✅ Should migrate old format to new format (NEW)
|
|
65
|
-
- ✅ Should store manifest data (NEW)
|
|
66
|
-
|
|
67
|
-
**Coverage:**
|
|
68
|
-
- Basic CRUD operations
|
|
69
|
-
- New format with file hashes
|
|
70
|
-
- Auto-migration from old format
|
|
71
|
-
- Manifest data storage
|
|
72
|
-
- Backward compatibility
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
### 4. FSX Module (`src/core/__tests__/fsx.test.ts`) - 6 tests ✅
|
|
77
|
-
|
|
78
|
-
**Tests:**
|
|
79
|
-
- ✅ Should copy files successfully
|
|
80
|
-
- ✅ Should detect conflicts
|
|
81
|
-
- ✅ Should overwrite with force flag
|
|
82
|
-
- ✅ Should handle dry-run mode
|
|
83
|
-
- ✅ Should copy nested directories
|
|
84
|
-
- ✅ Should handle empty directory
|
|
85
|
-
|
|
86
|
-
**Coverage:**
|
|
87
|
-
- File copying
|
|
88
|
-
- Conflict detection
|
|
89
|
-
- Force mode
|
|
90
|
-
- Dry-run mode
|
|
91
|
-
- Nested directory handling
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
### 5. Validate Module (`src/core/__tests__/validate.test.ts`) - 6 tests ✅
|
|
96
|
-
|
|
97
|
-
**Tests:**
|
|
98
|
-
- ✅ Should validate signature file
|
|
99
|
-
- ✅ Should throw on missing signature
|
|
100
|
-
- ✅ Should validate target
|
|
101
|
-
- ✅ Should throw on invalid target
|
|
102
|
-
- ✅ Should validate native target
|
|
103
|
-
- ✅ Should validate web target
|
|
104
|
-
|
|
105
|
-
**Coverage:**
|
|
106
|
-
- Signature validation
|
|
107
|
-
- Target validation
|
|
108
|
-
- Error handling
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Test Files Created
|
|
113
|
-
|
|
114
|
-
1. ✅ `src/core/__tests__/hash.test.ts` (NEW)
|
|
115
|
-
2. ✅ `src/core/__tests__/prompt.test.ts` (NEW)
|
|
116
|
-
3. ✅ `src/core/__tests__/fsx.test.ts` (NEW)
|
|
117
|
-
4. ✅ `src/core/__tests__/journal.test.ts` (UPDATED - added 3 new tests)
|
|
118
|
-
5. ✅ `src/core/__tests__/validate.test.ts` (EXISTING)
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## What's Tested
|
|
123
|
-
|
|
124
|
-
### Core Functionality ✅
|
|
125
|
-
- File hashing (SHA-256)
|
|
126
|
-
- User prompts with CI/CD detection
|
|
127
|
-
- Journal CRUD operations
|
|
128
|
-
- File copying with conflict detection
|
|
129
|
-
- Repository validation
|
|
130
|
-
|
|
131
|
-
### New Features ✅
|
|
132
|
-
- File hash storage in journal
|
|
133
|
-
- Auto-migration from old journal format
|
|
134
|
-
- Manifest data storage
|
|
135
|
-
- Conflict detection in copyTree
|
|
136
|
-
- Interactive mode support
|
|
137
|
-
- Force mode support
|
|
138
|
-
- Dry-run mode support
|
|
139
|
-
|
|
140
|
-
### Edge Cases ✅
|
|
141
|
-
- Non-existent files
|
|
142
|
-
- Binary files
|
|
143
|
-
- Empty directories
|
|
144
|
-
- Nested directories
|
|
145
|
-
- CI/CD environments (no TTY)
|
|
146
|
-
- Multiple CI platforms
|
|
147
|
-
- Old journal format migration
|
|
148
|
-
- Missing files during hashing
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## What's NOT Tested (Integration Tests Needed)
|
|
153
|
-
|
|
154
|
-
### Commands (Need Manual/Integration Testing)
|
|
155
|
-
- ❌ `vf add` command (full flow)
|
|
156
|
-
- ❌ `vf remove` command (full flow)
|
|
157
|
-
- ❌ `vf status` command
|
|
158
|
-
- ❌ `vf checklist` command
|
|
159
|
-
|
|
160
|
-
### Complex Scenarios
|
|
161
|
-
- ❌ Interactive prompts (requires user input)
|
|
162
|
-
- ❌ Navigation injection
|
|
163
|
-
- ❌ Watermark addition
|
|
164
|
-
- ❌ Recipe fetching from API
|
|
165
|
-
- ❌ Zip extraction
|
|
166
|
-
- ❌ Full end-to-end flow
|
|
167
|
-
|
|
168
|
-
**Note:** These require integration tests or manual testing as they involve:
|
|
169
|
-
- User interaction
|
|
170
|
-
- Network requests
|
|
171
|
-
- File system operations across multiple modules
|
|
172
|
-
- External dependencies (API, recipes)
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Running Tests
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
# Run all tests
|
|
180
|
-
npm test
|
|
181
|
-
|
|
182
|
-
# Run tests once (no watch)
|
|
183
|
-
npm test -- --run
|
|
184
|
-
|
|
185
|
-
# Run specific test file
|
|
186
|
-
npm test -- hash.test.ts
|
|
187
|
-
|
|
188
|
-
# Run with coverage
|
|
189
|
-
npm test -- --coverage
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## Test Quality
|
|
195
|
-
|
|
196
|
-
### Good Practices ✅
|
|
197
|
-
- ✅ Isolated tests (each test is independent)
|
|
198
|
-
- ✅ Cleanup after tests (afterEach hooks)
|
|
199
|
-
- ✅ Descriptive test names
|
|
200
|
-
- ✅ Testing both success and error cases
|
|
201
|
-
- ✅ Testing edge cases
|
|
202
|
-
- ✅ Using temporary directories
|
|
203
|
-
- ✅ No test interdependencies
|
|
204
|
-
|
|
205
|
-
### Coverage
|
|
206
|
-
- **Unit Tests:** 34 tests covering core modules
|
|
207
|
-
- **Integration Tests:** Manual testing needed
|
|
208
|
-
- **E2E Tests:** Manual testing needed
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## Next Steps for Testing
|
|
213
|
-
|
|
214
|
-
### 1. Integration Tests (Future)
|
|
215
|
-
Create integration tests for commands:
|
|
216
|
-
```typescript
|
|
217
|
-
describe('vf add integration', () => {
|
|
218
|
-
it('should install feature end-to-end', async () => {
|
|
219
|
-
// Setup test repo
|
|
220
|
-
// Run vf add
|
|
221
|
-
// Verify files copied
|
|
222
|
-
// Verify journal updated
|
|
223
|
-
// Verify navigation added
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
### 2. E2E Tests (Future)
|
|
229
|
-
Test full user workflows:
|
|
230
|
-
```bash
|
|
231
|
-
# Test script
|
|
232
|
-
vf login --token TEST_TOKEN
|
|
233
|
-
vf add charts --dry-run
|
|
234
|
-
vf add charts
|
|
235
|
-
vf status
|
|
236
|
-
vf checklist charts
|
|
237
|
-
vf remove charts
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### 3. Manual Testing Checklist
|
|
241
|
-
- [ ] Test with real VibeFast monorepo
|
|
242
|
-
- [ ] Test with real recipes
|
|
243
|
-
- [ ] Test interactive prompts
|
|
244
|
-
- [ ] Test in CI/CD environment
|
|
245
|
-
- [ ] Test with conflicts
|
|
246
|
-
- [ ] Test with modified files
|
|
247
|
-
- [ ] Test migration from old journal
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## Summary
|
|
252
|
-
|
|
253
|
-
✅ **34 unit tests passing**
|
|
254
|
-
✅ **All core modules tested**
|
|
255
|
-
✅ **New features tested**
|
|
256
|
-
✅ **Edge cases covered**
|
|
257
|
-
✅ **Good test quality**
|
|
258
|
-
|
|
259
|
-
The CLI has solid unit test coverage for all core functionality. Integration and E2E tests can be added later as needed.
|
|
260
|
-
|
|
261
|
-
**Ready for manual testing and production use!** 🚀
|