[PULSE-60] Frontend hardening, UX polish, and security #35

Merged
uz1mani merged 41 commits from staging into main 2026-02-22 21:43:06 +00:00
72 changed files with 1824 additions and 408 deletions
Showing only changes of commit 19be64c43a - Show all commits

View File

@@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
- **Faster favicon loading.** Site icons in the dashboard, referrers, and campaigns now use Next.js image optimization for better caching and lazy loading. - **Faster favicon loading.** Site icons in the dashboard, referrers, and campaigns now use Next.js image optimization for better caching and lazy loading.
- **Tighter name limits.** Site, funnel, and monitor names are now capped at 100 characters instead of 255 — long enough for any real name, short enough to not break the UI. - **Tighter name limits.** Site, funnel, and monitor names are now capped at 100 characters instead of 255 — long enough for any real name, short enough to not break the UI.
- **Stricter type safety.** Eliminated all `any` types and `@ts-ignore` suppressions across the codebase, so the TypeScript compiler catches more bugs at build time. - **Stricter type safety.** Eliminated all `any` types and `@ts-ignore` suppressions across the codebase, so the TypeScript compiler catches more bugs at build time.
- **Smaller page downloads.** Icon imports are now tree-shaken so only the icons actually used are included in the bundle.
### Fixed ### Fixed

View File

@@ -12,6 +12,9 @@ const nextConfig: NextConfig = {
output: 'standalone', output: 'standalone',
// * Privacy-first: Disable analytics and telemetry // * Privacy-first: Disable analytics and telemetry
productionBrowserSourceMaps: false, productionBrowserSourceMaps: false,
experimental: {
optimizePackageImports: ['react-icons'],
},
images: { images: {
remotePatterns: [ remotePatterns: [
{ {