/**
 * Next.js client-side instrumentation. Runs in the browser bundle
 * before the app renders. Captures unhandled exceptions, promise
 * rejections, and router navigation errors. Also enables Sentry
 * Session Replay (free tier) so we can rewatch what the user was
 * doing when an error fired — invaluable for solo-dev beta debugging.
 */

import * as Sentry from '@sentry/nextjs';

Sentry.init({
  dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
  enabled: Boolean(process.env.NEXT_PUBLIC_SENTRY_DSN),
  environment: process.env.NEXT_PUBLIC_SENTRY_ENVIRONMENT || process.env.NODE_ENV,

  tracesSampleRate: 1.0,

  // Session Replay: record a video-like reconstruction of the user's
  // tab on every error, plus 10% of healthy sessions for context.
  // Free tier covers this comfortably.
  replaysSessionSampleRate: 0.1,
  replaysOnErrorSampleRate: 1.0,

  integrations: [
    Sentry.replayIntegration({
      // Mask all text/inputs by default — beta users may type
      // anything into chat. Selectively unmask later if needed.
      maskAllText: true,
      blockAllMedia: true,
    }),
  ],
});

// Required for client-side router transition errors to reach Sentry.
export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;
