refactor(frontend): remove redundant builder promotion modal#2371
Conversation
The global BuilderPromotionModal (#2352) duplicates the per-app BuilderPromoBanner (#2363): both promote Capgo Builder to users with no native builds, on different surfaces, so a no-build user gets two pitches per session. The per-app banner supersedes the modal — it has the current app in context, whereas the modal guessed a target app via an unordered apps.limit(1), routing multi-app users to an arbitrary app's /builds. Removes the component, its App.vue mount, the generated type entry, the 14 modal-only i18n keys, and the orphaned PR screenshot. The per-app banner and presentation deck are untouched.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (4)
💤 Files with no reviewable changes (4)
📝 WalkthroughWalkthroughThis PR removes the BuilderPromotionModal feature entirely from the codebase, including its Vue component, app-shell registration, type declarations, and translation strings. The modal is replaced with DialogV2 as the app-shell dialog component. ChangesBuilderPromotionModal Feature Removal
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
Comment |
Merging this PR will not alter performance
Comparing Footnotes
|
|



Summary (AI generated)
BuilderPromotionModal(auto-popup) added in [codex] Add builder promotion modal #2352.App.vuemount, the generatedcomponents.d.tsentry, the 14 modal-onlybuilder-promo-*i18n keys, and the orphaned PR screenshot (docs/pr/builder-promotion-modal.png).BuilderPromoBanner+ presentation deck (feat: Capgo Builder promo banner + animated presentation deck #2363) fully intact.capgo_builder_promotionuser metadata becomes inert (nothing reads it) — harmless, no migration needed.Motivation (AI generated)
The modal and the per-app banner are two independent Capgo Builder promotions targeting the same audience — users with zero native builds:
/app/:id, scoped to that app, always has the current app in context./appsand/dashboard, gated to once a week.A no-build user therefore gets two Builder pitches in one session (modal on the list pages, banner on each app page). The modal also has to guess which app to route its CTA to:
resolveBuilderTargetPathrunsapps.select('app_id').limit(1)with noORDER BY, so a multi-app user clicking "Set up Builder" lands on an arbitrary app's/buildspage. The per-app banner has none of these problems and supersedes the modal.Business Impact (AI generated)
Test Plan (AI generated)
bun run typecheck:frontendpasses (exit 0)bun lintpasses (exit 0)messages/en.jsonvalid JSON; only the 14 modal-only keys removed (builder-promo-banner-*andbuilder-promo-s1..s5-*retained)BuilderPromotionModalanywhere in the repo/appsand/dashboardas a no-build user — no auto-popup modal appearsBuilderPromoBannerstill renders and opens the presentation deckSummary by CodeRabbit