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 remotenowstackest 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-saasOptions 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-dirtyLe 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 fichier | Résolution |
|---|---|
site-config.ts, convex/utils/siteConfig.ts, branding, assets | Garder 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.json | Union : versions upstream pour les dépendances communes, conserver les dépendances propres au projet (leaflet, docx, mammoth, paraglide, @anthropic-ai/sdk…) |
pnpm-lock.yaml | Garder la version locale puis pnpm install pour régénérer |
CHANGELOG.md | Interclasser les entrées des deux côtés par date décroissante |
| Tests upstream | Adapter 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.12exact danspackage.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 avecgit 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