refactor(observability): lower trace sample rate, add DSN comment, improve status visibility
- Lower tracesSampleRate from 1.0 to 0.1 in both hooks (errors still captured at 100%; trace volume reduced for self-hosted GlitchTip on shared VPS) - Add comment explaining VITE_SENTRY_DSN is a write-only ingest key, safe in client bundle — prevents accidental rotation as if it were a password - Restore HTTP status code prominence: text-4xl font-bold (was text-xs text-ink-3) - Add min-w-[44px] to copy button for WCAG 2.2 minimum touch target Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
import * as Sentry from '@sentry/sveltekit';
|
import * as Sentry from '@sentry/sveltekit';
|
||||||
|
|
||||||
|
// VITE_SENTRY_DSN is a write-only ingest key — it can POST events to GlitchTip
|
||||||
|
// but cannot read them. Safe to include in the client bundle per Sentry security model.
|
||||||
Sentry.init({
|
Sentry.init({
|
||||||
dsn: import.meta.env.VITE_SENTRY_DSN,
|
dsn: import.meta.env.VITE_SENTRY_DSN,
|
||||||
environment: import.meta.env.MODE,
|
environment: import.meta.env.MODE,
|
||||||
tracesSampleRate: 1.0,
|
tracesSampleRate: 0.1,
|
||||||
sendDefaultPii: false,
|
sendDefaultPii: false,
|
||||||
enabled: !!import.meta.env.VITE_SENTRY_DSN
|
enabled: !!import.meta.env.VITE_SENTRY_DSN
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ import { env } from 'process';
|
|||||||
import { cookieName, cookieMaxAge } from '$lib/paraglide/runtime';
|
import { cookieName, cookieMaxAge } from '$lib/paraglide/runtime';
|
||||||
import { detectLocale } from '$lib/shared/server/locale';
|
import { detectLocale } from '$lib/shared/server/locale';
|
||||||
|
|
||||||
|
// VITE_SENTRY_DSN is a write-only ingest key — it can POST events to GlitchTip
|
||||||
|
// but cannot read them. Safe to include in the client bundle per Sentry security model.
|
||||||
Sentry.init({
|
Sentry.init({
|
||||||
dsn: import.meta.env.VITE_SENTRY_DSN,
|
dsn: import.meta.env.VITE_SENTRY_DSN,
|
||||||
environment: import.meta.env.MODE,
|
environment: import.meta.env.MODE,
|
||||||
tracesSampleRate: 1.0,
|
tracesSampleRate: 0.1,
|
||||||
sendDefaultPii: false,
|
sendDefaultPii: false,
|
||||||
enabled: !!import.meta.env.VITE_SENTRY_DSN
|
enabled: !!import.meta.env.VITE_SENTRY_DSN
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ function copyId() {
|
|||||||
<p class="mb-8 font-sans text-sm text-ink-2">
|
<p class="mb-8 font-sans text-sm text-ink-2">
|
||||||
{page.error?.message ?? m.error_internal_error()}
|
{page.error?.message ?? m.error_internal_error()}
|
||||||
</p>
|
</p>
|
||||||
<p class="font-sans text-xs tracking-widest text-ink-3 uppercase">{page.status}</p>
|
<p class="mb-4 font-mono text-4xl font-bold text-ink">{page.status}</p>
|
||||||
|
|
||||||
{#if page.error?.errorId}
|
{#if page.error?.errorId}
|
||||||
<div class="mt-6 flex flex-col items-center gap-3">
|
<div class="mt-6 flex flex-col items-center gap-3">
|
||||||
@@ -42,7 +42,7 @@ function copyId() {
|
|||||||
{page.error.errorId}
|
{page.error.errorId}
|
||||||
</code>
|
</code>
|
||||||
<button
|
<button
|
||||||
class="min-h-[44px] rounded-sm bg-brand-navy px-5 py-2 font-sans text-sm text-white transition-colors hover:opacity-90 focus-visible:ring-2 focus-visible:ring-brand-navy focus-visible:ring-offset-2"
|
class="min-h-[44px] min-w-[44px] rounded-sm bg-brand-navy px-5 py-2 font-sans text-sm text-white transition-colors hover:opacity-90 focus-visible:ring-2 focus-visible:ring-brand-navy focus-visible:ring-offset-2"
|
||||||
onclick={copyId}
|
onclick={copyId}
|
||||||
aria-label={m.error_copy_id_label()}
|
aria-label={m.error_copy_id_label()}
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user