Skip to content

Epic 46 — Beta Mode (Beta flag → Beta badge + "beta" UI marker)

New. Builds on Epic 45 (badges) + Epic 30 (feature flags). Decision (user, 2026-06-16): A Beta feature flag — when on, every newly registered user is given the Beta User badge, and the UI shows a "beta" marker.

✅ SHIPPED 2026-06-19. New FEATURE_FLAGS.BETA (in DEFAULT_ON + seeded enabled: true — recommended on for beta). register (auth.ts) reads the flag before user.create and, when on, seeds badges: [BETA_USER] (from the Epic 45 registry) on the new user — existing users untouched. Frontend: DS AppHeader gained a logoBadge slot; app BetaBadge component (renders a warning-variant DS Badge "Beta" via useFeatureFlag('BETA'), null when off/resolving) wired into AppShell's default header next to the logo; beta.label i18n in en/pt/es. Tests: BE register grant on/off (auth.test.ts, 1416 green) + FE BetaBadge toggle (app 570 / DS 44 green); typecheck + i18n-key lint clean. Deploy: seedFeatureFlags inserts the BETA row (on) on next deploy.

Why: During beta the team wants new sign-ups auto-tagged and a visible "beta" signal across the app. This is a flag + a register-time badge grant + a UI marker.

Architecture: New BETA flag (FEATURE_FLAGS + FLAG_DEFAULTS). The register mutation (already hooks welcome-CasTars) appends BETA_USER to User.badges when BETA is on. A DS "BETA" pill renders in the app header/branding when useFeatureFlag('BETA') is true.

BE-BETA-001 — Beta flag + register-time badge grant

Files:

  • Edit: castyou-backend/src/services/featureFlags/index.ts (FEATURE_FLAGS.BETA) + seed.ts (FLAG_DEFAULTS, default per stakeholder — recommend on for beta).
  • Edit: castyou-backend/src/graphql/resolvers/auth.ts — in register, if BETA is enabled, append BETA_USER to the new user's badges.

Acceptance criteria: With BETA on, a newly registered user has the BETA_USER badge; with it off, they don't; existing users are unaffected.

FE-BETA-001 — "beta" UI marker

Files:

  • Create/Edit: a DS "BETA" pill near the app logo/header, shown when useFeatureFlag('BETA') is true; i18n en/pt/es.

Acceptance criteria: The "beta" marker appears app-wide when the flag is on and disappears when off.

TEST-BETA-001 — Beta coverage

Acceptance criteria: Flag-on register grants the badge; the marker toggles with the flag.