Developer/Synchronisation NowStack

Synchronisation NowStack

Mettre à jour le fork Decrocheo avec le boilerplate NowStack : script, règles de résolution des conflits et pièges connus

Decrocheo est un fork du boilerplate NowStack. Cette page décrit comment récupérer les correctifs et nouveautés du boilerplate sans écraser les personnalisations produit (branding, copie française, tarification).

Prérequis

  • Accès collaborateur au dépôt Melvynx/nowstack-saas (le remote nowstack est déjà configuré dans le repo).
  • Arbre de travail propre (committez avant de lancer le sync).

Lancer la synchronisation

Toujours passer --repo Melvynx/nowstack-saas : le défaut du script (melvynx/nowstack) n'est pas le bon dépôt pour ce fork.

.agents/skills/sync-with-nowstack/scripts/sync-with-nowstack.sh --repo Melvynx/nowstack-saas

Options utiles :

# Voir ce qui serait fait sans rien modifier
.agents/skills/sync-with-nowstack/scripts/sync-with-nowstack.sh --repo Melvynx/nowstack-saas --dry-run

# Autoriser un fichier non suivi inoffensif dans l'arbre
.agents/skills/sync-with-nowstack/scripts/sync-with-nowstack.sh --repo Melvynx/nowstack-saas --allow-dirty

Le script crée automatiquement une branche de sauvegarde backup/master-before-nowstack-<sha>-<date> avant la fusion, puis lance pnpm install (si les dépendances changent) et pnpm ts.

Historique git : contexte important

Le repo a été créé par copie à plat (sans historique commun avec le boilerplate). Depuis le 2026-07-15, les historiques sont reliés par le commit de fusion e8c2796 : un graft temporaire (git replace --graft) sur le point de fork réel (72e5ea0, état du boilerplate au 2026-05-17) a permis un vrai merge 3-voies (14 conflits au lieu de 145 en fusion brute).

Les syncs suivants sont donc des merges git normaux — plus besoin de cherry-pick ni de graft.

Règles de résolution des conflits

À appliquer fichier par fichier :

Type de fichierRésolution
site-config.ts, convex/utils/siteConfig.ts, branding, assetsGarder la version Decrocheo (git checkout --ours)
Composants refondus par upstream (auth, admin, layout)Prendre la structure upstream (git checkout --theirs) puis retraduire les libellés en français
package.jsonUnion : versions upstream pour les dépendances communes, conserver les dépendances propres au projet (leaflet, docx, mammoth, paraglide, @anthropic-ai/sdk…)
pnpm-lock.yamlGarder la version locale puis pnpm install pour régénérer
CHANGELOG.mdInterclasser les entrées des deux côtés par date décroissante
Tests upstreamAdapter les assertions aux libellés français et aux plans Découverte/Candidat/Chasseur

Vérifications après sync

pnpm ts        # typecheck
pnpm test:ci   # suite unitaire complète
pnpm build     # build production (3 passes + prérendu)

Vérifiez aussi visuellement les écrans touchés par upstream (pnpm start-all puis navigateur), en particulier le flux d'authentification.

Pièges connus

  • vite est figé en 8.0.12 exact dans package.json : rolldown 1.1.5 (embarqué par vite 8.1.x) panique au build SSR sur @shikijs/engine-javascript (« Symbol should belong to a chunk »), ce qui casse le déploiement Vercel. Si un sync remonte vite en 8.1.x, re-figer 8.0.12 tant que rolldown n'a pas corrigé le bug.
  • Fins de ligne (CRLF) : si tout le repo apparaît modifié après un outil qui réécrit les EOL, exécutez git add --renormalize . ; les vrais changements se voient avec git diff --ignore-cr-at-eol --stat.
  • Copie française : upstream est en anglais. Toute page ou composant pris côté upstream doit être retraduit (UI, meta title/description, messages d'erreur, toasts) avant commit.

Ajouter une entrée au changelog

Chaque sync doit laisser une trace dans CHANGELOG.md sous la date du jour :

## 2026-07-15

CHORE: Sync with NowStack boilerplate (upstream through 2026-07-08) — dynamic environment favicon route, split-screen sign-in layout, admin ban controls, dependency refresh