diff --git a/AGENTS.md b/AGENTS.md index c214c6e..4736d42 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -79,12 +79,12 @@ session with **no other memory of this project**. So: - **Lazy routes**: every route uses `lazyWithRetry` (`src/lib/lazyWithRetry.ts`) — retries, then one full reload per session, so a chunk-load failure self-heals instead of showing the error boundary. -- **Baselines** (verified 2026-09-26): `npm test` → 0 errors, **7 warnings** - (all `react-refresh/only-export-components`), **101 tests**, build ok. - `package.json` version **1.4.5**. - - ✅ `no-explicit-any` = 0 · ✅ `react-hooks/exhaustive-deps` = 0 · - ✅ `no-unused-vars` = 0. Remaining: `react-refresh` (dev-only DX — files - exporting non-components next to components; fix by moving the export out). +- **Baselines** (verified 2026-09-26): `npm test` → **0 errors, 0 warnings**, + **101 tests**, build ok. `package.json` version **1.4.5**. + - ✅ Lint is **clean**: `no-explicit-any` = 0 · `react-hooks/exhaustive-deps` = 0 + · `no-unused-vars` = 0 · `react-refresh` = 0 (the last were intentional + component+hook/helper colocations carrying a justified file-level disable). + Keep it at zero — don't reintroduce any. - ⚠️ Do **not** mass-fix `no-unused-vars` by name or blanket rename — shadowed names and typed shorthand destructuring make it unsafe. Fix position-precise. Renaming a component to `_Name` also trips `rules-of-hooks` — delete it or diff --git a/src/components/EventCountdown.tsx b/src/components/EventCountdown.tsx index b829b88..625b71c 100644 --- a/src/components/EventCountdown.tsx +++ b/src/components/EventCountdown.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react-refresh/only-export-components -- EventCountdown component + useEventStatus hook are colocated by design (dev-only HMR rule). */ import { useEffect, useMemo, useState } from 'react'; import { cn } from '@/lib/utils'; diff --git a/src/components/SortDropdown.tsx b/src/components/SortDropdown.tsx index 1778888..8463860 100644 --- a/src/components/SortDropdown.tsx +++ b/src/components/SortDropdown.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react-refresh/only-export-components -- SortDropdown component + its sort option constants/helpers are intentionally colocated (dev-only HMR rule). */ import { ArrowUpDown, Clock, TrendingUp, MapPin, Zap, Shield } from 'lucide-react'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { cn } from '@/lib/utils'; diff --git a/src/components/TrustFilter.tsx b/src/components/TrustFilter.tsx index a024996..604a63b 100644 --- a/src/components/TrustFilter.tsx +++ b/src/components/TrustFilter.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react-refresh/only-export-components -- TrustFilter component + its level constants/helpers are intentionally colocated (dev-only HMR rule). */ import { Shield, CheckCircle2, Users } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; diff --git a/src/contexts/LanguageContext.tsx b/src/contexts/LanguageContext.tsx index f6a3bb6..f979ebe 100644 --- a/src/contexts/LanguageContext.tsx +++ b/src/contexts/LanguageContext.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react-refresh/only-export-components -- LanguageProvider + useTranslation hook + context are colocated by design (idiomatic context module; dev-only HMR rule). */ import { createContext, useContext, useState, useCallback, ReactNode, useEffect } from 'react'; import { useLocalStorage } from '@/hooks/useLocalStorage'; diff --git a/src/pages/NewsletterPage.tsx b/src/pages/NewsletterPage.tsx index 4f83bcf..66c46f7 100644 --- a/src/pages/NewsletterPage.tsx +++ b/src/pages/NewsletterPage.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react-refresh/only-export-components -- NewsletterPage component + its newsletter data exports are intentionally colocated (dev-only HMR rule). */ import { useEffect, useState } from 'react'; import { useSeoMeta } from '@unhead/react'; import { nip19 } from 'nostr-tools';