- Fix Tailwind v4 modal stacking bug by adding relative z-10 to modal content divs (CancellationFlow, ChangePlanModal, TopUpModal, SimActions) - Add test mode for immediate plan changes (SIM_BILLING_TEST_MODE) instead of scheduling for 1st of next month - Bypass rate limiter spacing/cancellation checks in test mode - Hide voice feature toggles for data-only SIMs using hasVoice flag - Guard BFF voice feature updates to reject early for data-only SIMs - Fix Freebit retry logic to not retry business errors (e.g. resultCode 260) - Add user-friendly error message for resultCode 260 (voice not active) - Update plan change page text to reflect test mode behavior Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Portal Structure Overview
This app follows a feature-first architecture with a consolidated lib for shared utilities.
Structure:
src/
app/ # Next.js App Router
components/ # Design system (ui, layout, common)
features/ # Feature modules (auth, billing, subscriptions, ...)
lib/ # Core utils and services (api, query, env, utils, types)
providers/ # App-wide providers (e.g., QueryProvider)
styles/ # Global styles
Key changes:
- Merged former
core/andshared/intolib/. - Moved
components/providers/query-provider.tsxtoproviders/query-provider.tsx. - Introduced path aliases:
@/lib/*,@/providers/*.
Migration tips:
- Prefer importing from
@/lib/...going forward. - All
@/shared/*or@/core/*imports have been removed; use@/lib/*.