ajaysi
aaf94049da
feat: validate podcast cost estimation accuracy, document per-token costs, and fix subscription/plan enforcement
Issue #543 — Validate Estimated Cost Accuracy (UI vs Backend)
Backend:
- cost_estimator.py uses pricing catalog (APIProviderPricing) as single source of truth
- All 7 cost components: analysis, research (search+LLM), script, TTS, voice clone, avatar, video
- initialize_default_pricing() runs on every app startup for auto-sync
Frontend cost estimation fixes:
- Added missing analysisCost, scriptCost, voiceCloneCost to PodcastEstimate type
- toPodcastEstimate() now extracts all 7 backend fields (was dropping 3)
- headerCostEst maps analysisCost->Analyze, scriptCost->Write, voiceCloneCost->Produce
- EstimateCard shows 5 chips: Analysis, Research, Script, Voice(TTS+clone), Visuals(avatar+video)
- Chip sum now equals backend total for all configurations
Subscription & plan fixes:
- Removed Stripe re-verification from checkSubscription() (downgrade regression fix #539)
- Added verifyCheckoutRef pattern for reliable mount-time checkout polling
- One-time Stripe sync effect with pending_subscription_change flag for Customer Portal returns
- Free plan limits: stability_calls 3->10, audio_calls 5->10 (supports 2 podcasts)
- Image enforcement uses actual provider (GPT_PROVIDER), not hardcoded Stability
- Billing/pricing pages bypass onboarding check in ProtectedRoute
- Gradient buttons + loading spinner on plan chip in UserBadge
- Added metadata-based Stripe lookup fallback (Issue #538)
Documentation:
- TESTING_GUIDE.md: comprehensive testing instructions for non-technical testers
- Free plan limits, usage tracking, cost estimation formulas
- 10 test cases for UI verification
- Troubleshooting guide
- Quick-reference cost formulas with all default rates
Cleanup: removed legacy ToBeMigrated directory (70+ files, ~22K LOC)
GSC Brainstorm: service, hook, modal, and UI components for blog topic brainstorming
2026-05-27 08:46:38 +05:30
..
2026-03-22 11:36:38 +05:30
2026-05-23 13:09:41 +05:30
2026-02-08 13:56:57 +05:30
2026-02-08 13:56:57 +05:30
2026-02-08 13:56:57 +05:30
2025-09-03 09:40:05 +05:30
2026-02-28 20:08:00 +05:30
2026-02-08 13:56:57 +05:30
2026-03-24 15:45:51 +05:30
2026-03-29 10:16:40 +05:30
2026-05-14 09:11:51 +05:30
2026-05-25 17:07:35 +05:30
2026-05-14 09:11:51 +05:30
2026-03-30 08:13:48 +05:30
2026-05-27 08:46:38 +05:30
2026-03-09 16:20:06 +05:30
2026-03-01 20:15:31 +05:30
2026-05-23 13:37:44 +05:30
2026-05-14 09:11:51 +05:30
2025-09-03 09:40:05 +05:30
2026-05-25 17:07:35 +05:30
2026-03-11 19:09:27 +05:30
2026-03-08 23:09:02 +05:30
2026-02-08 13:56:57 +05:30
2026-05-26 15:25:05 +05:30
2026-04-06 14:37:50 +05:30
2026-05-27 08:46:38 +05:30
2026-03-24 15:45:51 +05:30
2026-05-25 17:24:15 +05:30
2026-04-22 16:10:27 +05:30
2026-02-28 20:08:00 +05:30
2026-03-24 15:45:51 +05:30
2025-11-01 18:01:14 +05:30
2026-03-02 22:02:53 +05:30
2026-03-03 18:25:05 +05:30
2026-03-03 17:22:50 +05:30
2025-08-06 12:48:02 +05:30
2026-02-08 13:56:57 +05:30
2025-08-19 21:48:33 +05:30
2025-08-28 11:11:55 +05:30
2026-02-08 13:56:57 +05:30
2025-10-18 10:28:15 +05:30
2026-02-08 13:56:57 +05:30
2026-05-25 17:07:35 +05:30
2026-05-25 17:07:35 +05:30
2026-05-23 17:07:33 +05:30
2026-05-25 17:07:35 +05:30
2026-05-25 17:07:35 +05:30
2026-05-25 17:07:35 +05:30
2026-05-25 17:07:35 +05:30
2026-02-08 13:56:57 +05:30
2026-02-28 20:08:00 +05:30
2026-02-08 13:56:57 +05:30
2025-10-18 10:28:15 +05:30
2026-05-20 22:44:15 +05:30
2025-10-24 17:22:06 +05:30
2026-01-05 15:49:51 +05:30
2025-08-06 12:48:02 +05:30
2025-08-19 21:48:33 +05:30
2026-02-08 13:56:57 +05:30
2026-05-23 13:13:18 +05:30
2026-02-08 13:56:57 +05:30
2026-05-27 08:46:38 +05:30
2026-05-26 15:25:05 +05:30
2026-05-23 13:09:41 +05:30
2026-05-20 22:44:15 +05:30
2025-09-24 15:22:00 +05:30
2026-03-30 08:13:48 +05:30
2025-08-19 21:48:33 +05:30
2026-02-08 13:56:57 +05:30
2026-05-14 09:11:51 +05:30
2026-02-08 13:56:57 +05:30
2025-08-31 08:26:51 +00:00
2025-11-11 15:57:45 +05:30
2026-04-19 13:16:59 +05:30
2026-05-06 15:29:12 +05:30
2026-04-21 19:38:50 +05:30
2025-10-29 17:10:48 +05:30
2025-10-19 17:56:09 +05:30
2026-01-10 19:32:50 +05:30
2026-03-11 19:09:27 +05:30
2026-03-02 11:42:52 +05:30
2025-11-23 09:21:11 +05:30
2026-05-14 09:11:51 +05:30
2026-03-30 08:13:48 +05:30
2026-02-08 13:56:57 +05:30
2026-03-07 12:00:04 +05:30
2026-03-10 17:01:36 +05:30
2026-02-08 13:56:57 +05:30
2026-03-30 08:09:28 +05:30
2026-05-06 15:29:12 +05:30
2026-03-09 13:36:34 +05:30
2026-05-23 13:11:34 +05:30
2025-10-08 10:13:14 +05:30
2026-02-08 13:56:57 +05:30
2026-02-08 13:56:57 +05:30
2026-05-20 22:38:36 +05:30
2026-03-12 15:00:59 +05:30
2026-05-18 14:35:37 +05:30
2026-05-23 13:09:41 +05:30