Skip to content

refactor: move billing frontend to billing repo#3577

Open
dkrizan wants to merge 21 commits into
mainfrom
dkrizan/split-billing-frontend
Open

refactor: move billing frontend to billing repo#3577
dkrizan wants to merge 21 commits into
mainfrom
dkrizan/split-billing-frontend

Conversation

@dkrizan
Copy link
Copy Markdown
Member

@dkrizan dkrizan commented Mar 30, 2026

Summary

  • Move all billing frontend code (~120+ components) from webapp/src/ee/billing/ to the billing repo's frontend/ directory
  • Platform references billing code via Vite path aliases, mirroring how the billing backend is already included
  • Introduce billingModule.tsx entry point so new billing features don't require platform changes
  • Split tsconfig into tsconfig.vite.json (for Vite, no npm package paths) and tsconfig.extend.json (for tsc)
  • Everything is conditional — platform works without the billing repo (OSS mode)

Depends on

Test plan

  • npm run tsc passes
  • npm run eslint passes
  • npm run build produces valid bundle
  • Vite dev server loads UI correctly
  • Billing routes work (subscriptions, invoices, admin plans)
  • OSS build works without billing repo

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 30, 2026

Important

Review skipped

Too many files!

This PR contains 177 files, which is 27 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7f33d757-d81b-481a-b585-e70b0cc3cc92

📥 Commits

Reviewing files that changed from the base of the PR and between 443a357 and c922874.

📒 Files selected for processing (177)
  • e2e/cypress/support/dataCyType.d.ts
  • webapp/dataCy.core.mjs
  • webapp/dataCy.plugin.ts
  • webapp/package.json
  • webapp/scripts/generate-schemas.js
  • webapp/src/ee/billing/BillingSection.tsx
  • webapp/src/ee/billing/CustomerPortal/CustomerPortal.tsx
  • webapp/src/ee/billing/Invoices/DownloadButton.tsx
  • webapp/src/ee/billing/Invoices/InvoiceUsage.tsx
  • webapp/src/ee/billing/Invoices/Invoices.tsx
  • webapp/src/ee/billing/Invoices/OrganizationInvoicesView.tsx
  • webapp/src/ee/billing/Invoices/PdfDownloadButton.tsx
  • webapp/src/ee/billing/Invoices/useInvoicePdfDownload.ts
  • webapp/src/ee/billing/OrganizationBillingTestClockHelperView.tsx
  • webapp/src/ee/billing/OrganizationBillingView.tsx
  • webapp/src/ee/billing/PrepareUpgradeDialog.tsx
  • webapp/src/ee/billing/Subscriptions/OrganizationSubscriptionsView.tsx
  • webapp/src/ee/billing/Subscriptions/cloud/CloudPlanAction.tsx
  • webapp/src/ee/billing/Subscriptions/cloud/CloudPlanItem.tsx
  • webapp/src/ee/billing/Subscriptions/cloud/CloudSubscriptions.tsx
  • webapp/src/ee/billing/Subscriptions/cloud/PlansCloudList.tsx
  • webapp/src/ee/billing/Subscriptions/cloud/useCancelCloudSubscription.tsx
  • webapp/src/ee/billing/Subscriptions/cloud/useCloudPlans.tsx
  • webapp/src/ee/billing/Subscriptions/cloud/useGoToStripeCustomerPortal.ts
  • webapp/src/ee/billing/Subscriptions/cloud/useRestoreCloudSubscription.tsx
  • webapp/src/ee/billing/Subscriptions/selfHosted/PlansSelfHosted.tsx
  • webapp/src/ee/billing/Subscriptions/selfHosted/PlansSelfHostedList.tsx
  • webapp/src/ee/billing/Subscriptions/selfHosted/SelfHostedEeActiveSubscription.tsx
  • webapp/src/ee/billing/Subscriptions/selfHosted/SelfHostedEeSubscriptionActions.tsx
  • webapp/src/ee/billing/Subscriptions/selfHosted/SelfHostedEeSubscriptionMetrics.tsx
  • webapp/src/ee/billing/Subscriptions/selfHosted/SelfHostedPlanAction.tsx
  • webapp/src/ee/billing/administration/invoices/AdminDownloadButton.tsx
  • webapp/src/ee/billing/administration/invoices/AdminInvoiceUsage.tsx
  • webapp/src/ee/billing/administration/invoices/AdministrationInvoicesView.tsx
  • webapp/src/ee/billing/administration/invoices/AmountItem.tsx
  • webapp/src/ee/billing/administration/invoices/CarryOverList.tsx
  • webapp/src/ee/billing/administration/invoices/CarryOverRow.tsx
  • webapp/src/ee/billing/administration/invoices/CarryOversSection.tsx
  • webapp/src/ee/billing/administration/invoices/OrgInvoicesSection.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/CloudPlanCreateForm.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/CloudPlanEditForm.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/CloudPlanForm.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/fields/CloudPlanFields.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/fields/CloudPlanMetricTypeSelectField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/fields/CloudPlanPricesAndLimits.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/fields/CloudPlanSelector.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/fields/CloudPlanTemplateSelectorField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/fields/CloudPlanTypeSelectField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/getCloudPlanInitialValues.ts
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/types.ts
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/cloud/usePlanFormValues.ts
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/CreatingPlanForOrganizationAlert.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/GenericPlanSelector.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanArchivedSwitch.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanEnabledFeaturesField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanFreePlanSwitch.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanIncludedUsageFields.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanNameField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanNewStripeProductSwitch.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanNonCommercialSwitch.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanPricesAndLimits.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanPricesFields.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanPublicSwitchField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanSaveButton.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanStripeProductNameField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanStripeProductSelectField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/PlanTypeSelect.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/genericFields/useCreatingForOrganization.ts
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/selfHostedEe/SelfHostedEePlanCreateForm.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/selfHostedEe/SelfHostedEePlanEditForm.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/selfHostedEe/SelfHostedEePlanForm.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/selfHostedEe/fields/SelfHostedEePlanPricesAndLimits.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/selfHostedEe/fields/SelfHostedEePlanSelector.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/selfHostedEe/fields/SelfHostedEePlanTemplateSelectorField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/selfHostedEe/fields/SelfHostedEePlanTypeSelectField.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/components/planForm/selfHostedEe/getSelfHostedPlanInitialValues.ts
  • webapp/src/ee/billing/administration/subscriptionPlans/viewsCloud/AdministrationCloudPlanCreateView.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/viewsCloud/AdministrationCloudPlanEditView.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/viewsCloud/AdministrationCloudPlansView.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/viewsSelfHostedEe/AdministrationEePlanCreateView.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/viewsSelfHostedEe/AdministrationEePlanEditView.tsx
  • webapp/src/ee/billing/administration/subscriptionPlans/viewsSelfHostedEe/AdministrationEePlansView.tsx
  • webapp/src/ee/billing/administration/subscriptions/AdministrationSubscriptionsView.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/AdministrationSubscriptionsListItem.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/AdministrationSubscriptionsCloudPlan.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/SubscriptionCloudCancelPlanButton.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/SubscriptionCloudPlanPopover.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/SubscriptionPerodInfo.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/SubscriptionsCloudCustomPlanItem.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/SubscriptionsCloudEditPlanButton.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/SubscriptionsCustomPlanItem.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/SubscriptionsPopoverCloudCustomPlans.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/assignPlan/AssignCloudPlanDialog.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/assignPlan/AssignCloudPlanFormFields.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/assignPlan/fields/AssignCloudPlanSelectorField.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/assignPlan/fields/AssignCloudPlanTrialSwitchField.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/cloudPlan/assignPlan/fields/AssignTrialDatePickerField.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/SubscriptionCurrentPlanInfo.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/SubscriptionRowPlanInfo.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/SubscriptionsDetailPopover.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/SubscriptionsEditPlanButton.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/SubscriptionsPopoverCreateCustomPlanButton.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/SubscriptionsPopoverCustomPlans.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/assignPlan/AssignCloudPlanDialogForm.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/assignPlan/AssignPlanDialogSaveButton.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/assignPlan/SubscriptionsPopoverAssignPlanButton.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/generic/useSetZeroPricesWhenFree.ts
  • webapp/src/ee/billing/administration/subscriptions/components/selfHosted/AdministrationSubscriptionsSelfHostedEe.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/selfHosted/AssignSelfHostedPlanDialog.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/selfHosted/SelfHostedPlanSelectorField.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/selfHosted/SubscriptionSelfHostedCancelPlanButton.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/selfHosted/SubscriptionsPopoverSelfHostedCustomPlans.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/selfHosted/SubscriptionsSelfHostedCustomPlanItem.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/selfHosted/SubscriptionsSelfHostedEditPlanButton.tsx
  • webapp/src/ee/billing/administration/subscriptions/components/selfHosted/SubscriptionsSelfHostedPopover.tsx
  • webapp/src/ee/billing/administration/translationAgencies/AdministrationEeTACreateView.tsx
  • webapp/src/ee/billing/administration/translationAgencies/AdministrationEeTAEditView.tsx
  • webapp/src/ee/billing/administration/translationAgencies/AdministrationEeTAView.tsx
  • webapp/src/ee/billing/administration/translationAgencies/TAEditForm.tsx
  • webapp/src/ee/billing/administration/translationAgencies/TAProfileAvatar.tsx
  • webapp/src/ee/billing/billingModule.tsx
  • webapp/src/ee/billing/common/usage/AppliedStripeCreditsRow.tsx
  • webapp/src/ee/billing/common/usage/CarryOverRow.tsx
  • webapp/src/ee/billing/common/usage/ExpectedUsage.tsx
  • webapp/src/ee/billing/common/usage/ExpectedUsageDialogButton.tsx
  • webapp/src/ee/billing/common/usage/ItemRow.tsx
  • webapp/src/ee/billing/common/usage/PlanUsageEstimatedCosts.tsx
  • webapp/src/ee/billing/common/usage/ProportionalUsageItemRow.tsx
  • webapp/src/ee/billing/common/usage/SubscriptionRow.tsx
  • webapp/src/ee/billing/common/usage/SumUsageItemRow.tsx
  • webapp/src/ee/billing/common/usage/TotalRow.tsx
  • webapp/src/ee/billing/common/usage/TotalTable.tsx
  • webapp/src/ee/billing/common/usage/UsageTable.tsx
  • webapp/src/ee/billing/common/usage/UsageTableHead.tsx
  • webapp/src/ee/billing/component/ActiveSubscription/CollapsedFeatures.tsx
  • webapp/src/ee/billing/component/ActiveSubscription/SelfHostedEeEstimatedCosts.tsx
  • webapp/src/ee/billing/component/Hints.tsx
  • webapp/src/ee/billing/component/Plan/AllFromPlanFeature.tsx
  • webapp/src/ee/billing/component/Plan/ContactUsButton.tsx
  • webapp/src/ee/billing/component/Plan/Plan.tsx
  • webapp/src/ee/billing/component/Plan/PlanActiveBanner.tsx
  • webapp/src/ee/billing/component/Plan/PlanArchivedChip.tsx
  • webapp/src/ee/billing/component/Plan/PlanListPriceInfo.tsx
  • webapp/src/ee/billing/component/Plan/PlanPublicChip.tsx
  • webapp/src/ee/billing/component/Plan/PlanSubscriptionCount.tsx
  • webapp/src/ee/billing/component/Plan/ShowAllFeatures.tsx
  • webapp/src/ee/billing/component/Plan/freePlan/FreePlan.tsx
  • webapp/src/ee/billing/component/Plan/freePlan/FreePlanLimits.tsx
  • webapp/src/ee/billing/component/Plan/planUtils.ts
  • webapp/src/ee/billing/component/Plan/plansTools.ts
  • webapp/src/ee/billing/component/Plan/usePlan.tsx
  • webapp/src/ee/billing/component/Plan/useUpgradePlan.tsx
  • webapp/src/ee/billing/component/Price/PayAsYouGoPrices.tsx
  • webapp/src/ee/billing/component/Price/PayAsYouGoRow.tsx
  • webapp/src/ee/billing/component/Price/PeriodSwitch.tsx
  • webapp/src/ee/billing/component/Price/PlanPrice.tsx
  • webapp/src/ee/billing/component/Price/PricePrimary.tsx
  • webapp/src/ee/billing/component/UserMenu/BillingMenuItem.tsx
  • webapp/src/ee/billing/component/topBar/TrialChipTooltip.tsx
  • webapp/src/ee/billing/currentCloudSubscription/BillingPeriodInfo.tsx
  • webapp/src/ee/billing/currentCloudSubscription/CloudEstimatedCosts.tsx
  • webapp/src/ee/billing/currentCloudSubscription/CurrentCloudSubscriptionInfo.tsx
  • webapp/src/ee/billing/currentCloudSubscription/PlanMetric.tsx
  • webapp/src/ee/billing/currentCloudSubscription/SubscriptionMetrics.tsx
  • webapp/src/ee/billing/currentCloudSubscription/TrialInfo.tsx
  • webapp/src/ee/billing/currentCloudSubscription/subscriptionsTrialAlert/ReachingTheLimitMessage.tsx
  • webapp/src/ee/billing/currentCloudSubscription/subscriptionsTrialAlert/SubscriptionsTrialAlert.tsx
  • webapp/src/ee/billing/currentCloudSubscription/subscriptionsTrialAlert/TrialAlertContent.tsx
  • webapp/src/ee/billing/currentCloudSubscription/subscriptionsTrialAlert/TrialAlertFreePlanContent.tsx
  • webapp/src/ee/billing/useOrganizationCreditBalance.tsx
  • webapp/src/ee/eeLicense/ActiveEeLicense.tsx
  • webapp/src/eeSetup/eeModule.ee.tsx
  • webapp/src/service/billingApiSchema.generated.ts
  • webapp/src/service/http/useQueryApi.ts
  • webapp/tsconfig.extend.json
  • webapp/tsconfig.vite.json
  • webapp/vite.config.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dkrizan/split-billing-frontend

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@dkrizan dkrizan force-pushed the dkrizan/split-billing-frontend branch 4 times, most recently from a160cbd to f888cea Compare April 2, 2026 18:23
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

This PR is stale because it has been open for 30 days with no activity.

@github-actions github-actions Bot added the stale label May 3, 2026
@dkrizan dkrizan removed the stale label May 14, 2026
@dkrizan dkrizan force-pushed the dkrizan/split-billing-frontend branch 2 times, most recently from 501a47a to 1872883 Compare May 22, 2026 14:34
dkrizan and others added 19 commits May 27, 2026 14:19
Move all billing frontend code from webapp/src/ee/billing/ to the
billing repo's frontend/ directory. Platform now references billing
code via path aliases and Vite config, mirroring the backend pattern.

Key changes:
- Add tsconfig.vite.json for Vite-only path resolution (no npm paths)
- Update vite.config.ts with conditional billing aliases and fs.allow
- Refactor eeModule.ee.tsx to use billingModule entry point
- Move billingApiSchema.generated.ts to billing repo
- Update dataCy.plugin to generate separate billing dataCyType.d.ts
- Update eslint script to cover billing frontend code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This test uses billing-specific data-cy values and belongs in billing
e2e. Also updates billingApiSchema stub with permissive types and
commits dataCyType.d.ts without billing values (CI-compatible).
Move translation of billing admin menu labels from eeModule to
billingModule.useAdministrationMenuItems() hook so translation keys
are extractable from the billing repo.
The committed version must match what CI generates (without billing).
Billing e2e regenerates it before typecheck.
Platform's generate-data-cy.mjs and Vite plugin only scan src/ —
no billing dependency. Billing e2e has its own generate script that
combines platform + billing values before typechecking.
Switch can't see through Fragment children in React Router v5.
Since routes.Administration is rendered outside a Switch by its
consumer, Fragment works correctly.
Restores shared billing UI components (Plan, ActiveSubscription),
billingApiSchema stub, tsconfig fallback paths, and tg.billing alias
that were lost during rebase on main. Also updates dataCyType.d.ts.
Billing code from outside webapp/ gets duplicate package instances
in production builds. Adding react-router-dom, formik, react-query,
yup, clsx to resolve.dedupe ensures single instances. Also uses
separate Switch blocks for platform and billing admin routes.
Change dataCyType.d.ts format from union type to interface-based
pattern (DataCy.Values). TypeScript merges interface declarations
across files, so each repo generates only its own values and they
combine automatically. No more regeneration conflicts.
…s test

Move limitPopover/, CriticalUsageCircle, TrialChip, TrialAnnouncement,
BillingProgress, and other UI components that are only consumed by
platform back to ee/billing/. Extract getHighlightColor to shared
planUtils.ts. Move selfHostedLimits.cy.ts back to platform e2e.
GlobalLimitPopover, CriticalUsageCircle, TrialAnnouncement, TrialChip
are platform components — import them directly instead of routing
through billingModule.
PR #3525 added carry-over billing frontend files to the platform after the split-billing-frontend branch was created, so they were carried through the rebase. Billing frontend lives in the billing repo now — remove them and regenerate the e2e dataCyType.d.ts accordingly.
Point the tg.billing / tg.ee.module/billing path aliases and the Vite billing alias at billing/frontend/src/ after the billing frontend source directory was renamed from billing/ to src/.
extractDataCy() now also scans billing/frontend/src and writes the billing repo's e2e dataCyType.d.ts when the billing frontend is present, so running or building the webapp keeps both the platform and billing e2e dataCy types in sync — the same way the platform one already works.
Regenerate dataCyType.d.ts to pick up data-cy attributes added/removed on main since the last rebase (TM management work added one, ICU import toggle UI removal dropped one).
@dkrizan dkrizan force-pushed the dkrizan/split-billing-frontend branch from 1872883 to a260de5 Compare May 27, 2026 14:40
dkrizan added 2 commits May 28, 2026 17:09
Added by the move-billing-frontend commit but never referenced — no npm script, vite config, or CI step uses it. The main tsc covers webapp/src (excluding eeSetup), and tsc:prod covers everything including eeSetup. The file was also incomplete as a standalone tsconfig (missing custom.d.ts / figmaTheme.ts includes, so running it directly floods unrelated Palette augmentation errors).
Mirror the pattern used by the eslint script: when the billing repo is present alongside the platform, also run tsc on its frontend so a single 'npm run tsc' from webapp/ type-checks both. Without this, billing-only type errors were silently missed (tsconfig.json excludes src/eeSetup, so the import chain into tg.billing/* was never followed).
@dkrizan dkrizan marked this pull request as ready for review May 29, 2026 12:07
@dkrizan dkrizan requested review from Anty0 and JanCizmar May 29, 2026 12:14
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.

2 participants