# TODO — reste à faire (refonte Modern Editorial)

_Mis à jour : 2026-08-25 — après la revue globale de `fix/home-bp-final` (Home + tooling)._

## 🔴 Contenu à fournir (client)

- [ ] **Gallery — remplacer les 27 images placeholder** : les visuels des 9 collections
      (`public/gallery/collections/<slug>-1..3.webp`) sont générés par IA et ne font que
      **512×512** (corrects en colonne, un peu doux sur le bandeau 21:9 de Sapphire Serenity).
      À remplacer collection par collection par de vraies photos produit HD (~1600px+),
      mêmes noms de fichiers = zéro changement de code.
      Slugs : ethereal-gold, midnight-diamond, verdant-emerald, celestial-pearl,
      crimson-ruby, sapphire-serenity, rose-quartz, solar-citrine, lunar-amethyst.
- [ ] **Newsletter — brancher un provider** (Resend, Brevo, Mailchimp…) : le formulaire
      footer est durci — validation Zod côté serveur, honeypot `website`, consentement
      obligatoire, rate-limit 5 envois / 10 min par client — mais **n'envoie rien** :
      tant que `NEWSLETTER_PROVIDER` n'est pas branché, l'action renvoie l'état honnête
      `unavailable` (elle ne remercie plus le visiteur pour une inscription inexistante).
      Reste à faire : câbler l'ESP dans `src/app/actions/newsletter.ts` (`TODO(provider)`)
      et renvoyer un vrai succès. Prérequis RGPD : la page Privacy ci-dessous, à lier
      sous la case de consentement le jour du branchement.
- [ ] **Page Privacy Policy / mentions légales** : le lien existait dans la maquette footer,
      omis car la page n'existe pas. Bloquant RGPD au moment où la newsletter partira
      vers un ESP (le consentement doit pointer vers une politique lisible). Y intégrer à cette occasion les données officielles
      (raison sociale complète, n° d'enregistrement 0105532085411, fax) et éventuellement
      les dirigeants (Narin / Roma Kulisra) + `jewelry@advmfr.net` — cf. mémoire
      « Fiche officielle ADVMFR ».

## 🟠 Pages restantes à refondre (maquettes Stitch dispo dans le projet Claude Design)

- [x] Sustainability (feature/sustainability-redesign)
- [x] News & Events (feature/news-redesign)
- [x] Design & Development (feature/design-redesign)
- [x] Blog « Journal » index + article (feature/journal-redesign)
- [ ] Contact (pas de maquette dédiée — décliner le design system)
- [ ] Blog (restylage léger aux nouveaux tokens si nécessaire)

## 🟡 Technique

- [ ] **Vercel** : vérifier que `NEXT_PUBLIC_SITE_URL=https://www.advmfr.com` est bien posé
      dans les env du projet (sinon canonicals/sitemap en localhost sur build non-Vercel).
- [x] **Baseline knip** : résorbée. `bun run deadcode` sort en 0, sans hint — les
      exports morts ont été supprimés ou rebranchés, et `knip.json` est corrigé
      (entrée stale `advmfr-next/**` retirée, `.claude/**` ignoré comme dans
      `.oxlintrc.json` / `eslint.config.mjs`).
- [ ] **e2e** : `home.spec.ts` à jour ; ajouter des specs about-us / production-process /
      gallery sur la nouvelle structure.
- [ ] **Stash GitHub Desktop** (`stash@{0}` sur audit/seo-i18n) : contient un bump de deps
      vers TypeScript 7 (incompatible Next 16) — à dropper, ou à rejouer en gardant TS 6.x.
- [x] **Salons 2026 — confirmer les dates de stand exactes** : fait le 2026-08-25 avec le
      calendrier client (`docs/modifications-client/Events Page Notes.md`) — 7 salons, dates
      ISO exactes dans `EVENT_DATES`. Reste : une vraie photo JCK Las Vegas (placeholder
      `bangkok_gems.webp` en attendant, voir `photo-requirements.md`).
- [ ] **Journal — bande vidéos « From the Workshop »** : présente dans la maquette,
      non implémentée (aucune vidéo n'existe). À ajouter quand des films seront produits.
- [ ] **Journal — valider les 3 « News in Brief »** (`BlogPage.brief.items`) : rédigées
      sur des faits sûrs (RJC CoP 2019, ligne stamping laiton, calendrier salons 2026)
      sans dates-mois ni chiffres — le client peut les préciser/remplacer librement.
- [x] Images orphelines purgées (ADVMF-18, 2026-08-25) : 15 fichiers supprimés de
      `public/` (~5,6 Mo), dont `about/about-philosophy.webp`, `home/glimpses/`,
      `home/oem/` (sauf `cad.webp`, référencé) et `success-team.webp` — chacun vérifié
      à 0 référence dans `src/ content/ messages/ e2e/ scripts/ next.config.ts`.

## 🔵 Suivis Plane ouverts (issus de la revue de `fix/home-bp-final`)

- [ ] **ADVMF-63** — les `loading.tsx` par page masquent le contenu pendant la navigation
      (`/about-us`, `/gallery`…). Le `loading.tsx` au niveau `[locale]` a été supprimé
      (il transformait tous les 404 en HTTP 200) ; les 9 segments de page gardent le leur,
      à revoir un par un.
- [ ] **ADVMF-64 — « Test de non-régression cn()/tailwind-merge sur les tokens @theme »** :
      une classe passée par `cn()` peut être supprimée silencieusement par tailwind-merge,
      qui la croit en conflit — les utilities dérivées des tokens `@theme` (`text-label`,
      `text-h2`…) sont les plus exposées. Le projet n'a pas de runner unitaire : à trancher
      (`bun test` ?).
- [ ] **ADVMF-65** (Backlog) — `e2e/blog.spec.ts` rouge (préexistant) et `CountUp` de
      `SustainabilityPeople` sans jumeau `sr-only`.
- [x] **ADVMF-66 — nom de site unifié** (tranché le 2026-08-25) : « Advance Manufacturers »
      partout côté machines (`og:site_name`, `WebSite.name`, `Organization.name`,
      `authors`/`publisher`, fil d'Ariane, RSS). Le nom court de l'entreprise est
      **ADVMFR**, en un mot, et sert d'alias (`alternateName`, `short_name` PWA).
      « ADV MFR » redevient ce qu'il est — le lockup visuel (`site.wordmark`), hors des
      metas. Le suffixe de `<title>` reste « Advance Mfrs » (source SEO). Voir
      `docs/brand.md` § Identité.
- [ ] **`twitter:site` = `@advmfr` non vérifié** : X a été retiré de `sameAs` faute de
      profil confirmé, la même incertitude vaut pour ce meta — à vider ou à confirmer
      avec le client.

## 🟢 Publication

- [ ] PRs empilées à merger dans l'ordre : #2 (home) → #3 (about) → #4 (production)
      → gallery (à venir). Supprimer ensuite les branches intermédiaires
      (`Fix-Nextjs`, `audit/seo-i18n`, `feature/*`).
- [ ] `d3k crawl` en local (hors sandbox) pour la vérif runtime complète recommandée
      par l'audit SEO (`docs/audits/seo-i18n-audit.md`).
