Skip to content

refactor(frontend): remove redundant builder promotion modal#2371

Merged
WcaleNieWolny merged 1 commit into
mainfrom
wolny/great-mestorf-9fdb5f
May 30, 2026
Merged

refactor(frontend): remove redundant builder promotion modal#2371
WcaleNieWolny merged 1 commit into
mainfrom
wolny/great-mestorf-9fdb5f

Conversation

@WcaleNieWolny
Copy link
Copy Markdown
Contributor

@WcaleNieWolny WcaleNieWolny commented May 30, 2026

Summary (AI generated)

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:

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: resolveBuilderTargetPath runs apps.select('app_id').limit(1) with no ORDER BY, so a multi-app user clicking "Set up Builder" lands on an arbitrary app's /builds page. The per-app banner has none of these problems and supersedes the modal.

Business Impact (AI generated)

  • Users see a single, app-contextual Builder CTA instead of two overlapping promotions — clearer funnel, less nag.
  • Eliminates the arbitrary-app routing for multi-app accounts.
  • Pure removal: ~415 lines net deleted, surviving banner/deck unchanged.

Test Plan (AI generated)

  • bun run typecheck:frontend passes (exit 0)
  • bun lint passes (exit 0)
  • messages/en.json valid JSON; only the 14 modal-only keys removed (builder-promo-banner-* and builder-promo-s1..s5-* retained)
  • No remaining references to BuilderPromotionModal anywhere in the repo
  • Manual: visit /apps and /dashboard as a no-build user — no auto-popup modal appears
  • Manual: open an app with no builds — the per-app BuilderPromoBanner still renders and opens the presentation deck

Summary by CodeRabbit

  • Chores
    • Removed Builder Promotion modal and associated promotional messaging from the application interface.

Review Change Stack

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.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 30, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 501cbf40-07d3-415a-9588-0b956c2b203a

📥 Commits

Reviewing files that changed from the base of the PR and between 318801c and 24f159a.

⛔ Files ignored due to path filters (1)
  • docs/pr/builder-promotion-modal.png is excluded by !**/*.png
📒 Files selected for processing (4)
  • messages/en.json
  • src/App.vue
  • src/components.d.ts
  • src/components/BuilderPromotionModal.vue
💤 Files with no reviewable changes (4)
  • src/components.d.ts
  • src/components/BuilderPromotionModal.vue
  • src/App.vue
  • messages/en.json

📝 Walkthrough

Walkthrough

This 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.

Changes

BuilderPromotionModal Feature Removal

Layer / File(s) Summary
Component removal and app-shell registration
src/App.vue, src/components.d.ts
BuilderPromotionModal is unregistered from the async component setup and removed from the template, replaced by DialogV2. Its global component type declaration is also removed from the Vue module augmentation.
Translation message cleanup
messages/en.json
All builder-promo-* translation keys are deleted, removing promotional message strings previously used by the modal.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • Cap-go/capgo#2352: Reverses functionality by removing BuilderPromotionModal entirely, including component deletion, un-registration in App.vue/components.d.ts, and removal of builder-promo-* strings.
  • Cap-go/capgo#2363: Both PRs modify the builder promo UI namespace; the retrieved PR adds a new BuilderPromoBanner/BuilderPresentationModal flow and builder-promo-banner-* i18n keys alongside this removal.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: removing a redundant builder promotion modal component.
Description check ✅ Passed The description provides comprehensive summary, motivation, business impact, and a detailed test plan; all required template sections are filled with substantive content.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands and usage tips.

@codspeed-hq
Copy link
Copy Markdown
Contributor

codspeed-hq Bot commented May 30, 2026

Merging this PR will not alter performance

✅ 43 untouched benchmarks
⏩ 2 skipped benchmarks1


Comparing wolny/great-mestorf-9fdb5f (24f159a) with main (318801c)

Open in CodSpeed

Footnotes

  1. 2 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@sonarqubecloud
Copy link
Copy Markdown

@WcaleNieWolny WcaleNieWolny merged commit 1f38e46 into main May 30, 2026
42 checks passed
@WcaleNieWolny WcaleNieWolny deleted the wolny/great-mestorf-9fdb5f branch May 30, 2026 11:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant