You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: TypeScript strict mode, security hardening, and bug fixes (#545)
* fix: project health cleanup — strict TypeScript, lint fixes, and dead code removal
- Enable strict: true in tsconfig.json and ignoreBuildErrors: false in next.config.mjs
- Fix all implicit-any errors; install @types/validator and @types/js-yaml
- Add type declarations for @glidejs/glide; fix nullable searchParams in CategoryFilter
- Remove stale tsconfig includes (pages/, utils/)
- Merge duplicate style.css into app/global.css; remove dead font-mono on h1
- Add rate limiting and strict email validation to subscribe/unsubscribe routes
- Extract shared Supabase client (cached singleton) to lib/supabase.ts
- Extract shared rate limiter with bounded eviction to lib/rate-limit.ts
- getClientIp: multi-header detection with 'unknown' fallback (never skips limiting)
- Replace import cn from 'clsx' with import { cn } from '@/lib/utils' in 3 components
- Fix all ESLint errors in e2e tests; add ESLint config section for e2e/ files
- Fix hardcoded paths in e2e tests to relative paths; fix /tmp/ → test-results/
- Fix behavior: 'instant' to 'auto' in scroll calls (invalid ScrollBehavior type)
- Fix boundingBox null checks and clamp negative clip coordinates
- Mark debug-only e2e tests as test.skip; add assertions to dark mode tests
- Move ad-hoc check-redirect.js to scripts/check-redirect.cjs
- Fix lint-staged: remove broken ESLINT_USE_FLAT_CONFIG=false
- Rename scripts/clean-cache.ts to .cjs (uses require(), not ESM)
- Remove dead Companies import from components/home/index.tsx
- Update generate_embeddings workflow to actions v4, Node 20, pnpm/action-setup@v4
- Move hardcoded Supabase URL to ${{ secrets.SUPABASE_URL }}
- Delete bun.lockb, 8 orphaned root PNGs; clean up .gitignore
- Disable X-Powered-By header (poweredByHeader: false)
* fix: open in GitHub button links to correct repo and source file
The dropdown 'Open in GitHub' button was hardcoded to danny-avila/LibreChat
(the app repo, repo root). Now points to LibreChat-AI/librechat.ai and links
directly to the source MDX file for the current page.
* fix(security): validate feedback server action and sanitize Scarf pixel
- Feedback action: validate opinion ('good'|'bad' only), enforce relative URL
(no open redirects), cap message at 2000 chars
- Use shared createRateLimiter from lib/rate-limit.ts (3/URL/60s)
- Scarf pixel: sanitize NEXT_PUBLIC_SCARF_PIXEL_ID with /^[\w-]+$/ before
interpolating into dangerouslySetInnerHTML to prevent XSS
0 commit comments