Files
AsterionWP2026/RESTART-PLAN.md
j.foucher 026be81373 chore: session 2 snapshot — archive before Bricks-first restart
Snapshots the project at the end of session 2, just before resetting to a
Bricks-first orthodox architecture. RESTART-PLAN.md at the root explains
why this approach is being abandoned and what the next session will look like.

Why we restart
- Three architectures got stacked: Custom PHP Templates → Gutenberg blocks
  in post_content → Bricks data in post meta. Each layer fights the next.
- Bricks Builder UI does not load because our header.php / footer.php /
  page.php emit chrome that conflicts with Bricks' own template-parts.
- CSS overrides multiplied (Gutenberg + Bricks variants) and still don't
  pixel-match the original PHP-rendered visual.
- 8+ one-shot mu-plugins live in LocalWP to patch over inconsistencies.

What survives the restart (preserved here on main)
- BRIEF, both PDFs, .txt extracts (sources of truth)
- assets/css/tokens.css (full design system, untouched)
- assets/fonts/Inter-Variable*.woff2 (RGPD self-hosted)
- inc/<section>-data.php files (text copy from PDF strategie, will become
  /content-source/ on next session for reuse as translation dictionary
  and as input to programmatic page generation)
- The Git repo, remote, branch main
- LocalWP site, Bricks v2.3.4, WPML 4.9.3 with active licenses
- WPML EN + FR setup with directory URL strategy

What gets wiped at the start of next session
- wp-content/themes/asterion-bricks/header.php / footer.php / page.php /
  index.php / front-page.php / template-parts/ / templates/
- inc/render-blocks.php, inc/render-blocks-native.php, inc/render-bricks.php
- inc/shortcodes.php, inc/i18n.php, inc/form-handler.php
- 35+ WP pages created over the session
- All one-shot mu-plugins in LocalWP/wp-content/mu-plugins/

Restart approach (detailed in RESTART-PLAN.md)
- Minimalist child theme: style.css, functions.php, theme.json, tokens.css,
  trimmed utilities.css, fonts, inc/cpt.php — that's it.
- No header.php / footer.php / page.php in child theme — Bricks Templates
  (Header / Footer / Single — Page) take over via Bricks' Conditions.
- User builds 5-7 archetype Bricks templates visually (~1-2h each) then
  programmatic generation fills the variants from inc/*-data.php sources.
- WPML duplication after EN is validated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 14:30:51 +02:00

251 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Restart Plan — Asterion VR refonte
**Date** : 2026-05-09 — fin de session 2
**Décision** : repartir d'une base propre, avec une approche Bricks-first orthodoxe.
---
## 1. Pourquoi redémarrer
L'approche actuelle a empilé trois architectures incompatibles :
1. **Custom Templates PHP** rendant depuis des data files (livrée, fonctionnait visuellement mais non éditable)
2. **Migration Gutenberg blocks** dans `post_content` (rendu visuel cassé, blocs `core/html` non éditables)
3. **Migration Bricks data** dans `_bricks_page_content_2` (Bricks builder UI ne s'affiche pas correctement parce que mes `header.php` / `footer.php` interfèrent)
À chaque tentative de fix, je rajoute un patch (override CSS, mu-plugin, conditionnel). Le résultat :
- Code du child theme pollué (multiple renderers coexistent : `render-blocks.php`, `render-blocks-native.php`, `render-bricks.php`)
- Settings Bricks bricolés, pas alignés sur le workflow Bricks officiel
- 35 pages WP créées + 4 doublons supprimés + duplications WPML qui ont nécessité un patch slug
- mu-plugins en cascade (8+ fichiers one-shot dans LocalWP)
**Bricks attend que le thème soit _minimaliste_ et qu'il prenne lui-même la main sur le rendu.** Mon child theme actuel fait l'inverse : il fournit des templates complets qui combattent Bricks.
---
## 2. Ce qu'on garde (à préserver dans le repo avant reset)
| Asset | Lieu actuel | Sort |
|---|---|---|
| Brief + 2 PDFs + .txt extraits | racine repo | **garder tel quel** — sources de vérité |
| `inc/solutions-data.php` + `industries-data.php` + `technology-data.php` + `editorial-data.php` + `forms-data.php` | child theme | **garder, mais déplacer dans `/content-source/`** — données pures, réutilisables comme source de génération ou comme dictionnaire de traduction WPML |
| `assets/css/tokens.css` (palette, typo, spacing, motion) | child theme | **garder dans le nouveau child theme** — design system partagé entre Bricks et notre CSS |
| `assets/fonts/Inter-Variable.woff2` + `Inter-Variable-Italic.woff2` | child theme | **garder** (RGPD, déjà self-hostés) |
| `BRIEF-Claude-Code.md`, `MISSING-ASSETS.md`, `README.md` | racine | **garder, à amender** |
| Repo Git, remote `git.polymorph.fr`, branche `main` | — | **garder**, on continue dessus |
| LocalWP `asterion-2026` site, WordPress 6.9, port 10004 | LocalWP | **garder**, juste reset le contenu pages + theme |
| Bricks parent v2.3.4 + WPML 4.9.3 + licenses | LocalWP | **garder** |
## Ce qu'on supprime / archive
- Tout `wp-content/themes/asterion-bricks/` actuel **archivé dans une branche `archive/php-templates`** puis ré-init du dossier
- Toutes les pages WP créées (35+) → wipe complet
- Tous les mu-plugins one-shot dans LocalWP → wipe (sauf `asterion-debug.php` et `asterion-status.php` que je laisse temporairement comme outils dev)
- Les overrides CSS Gutenberg / Bricks accumulés
- Les Custom Templates `templates/page-*.php`
- Les renderers PHP `render-blocks.php`, `render-blocks-native.php`, `render-bricks.php`
---
## 3. Architecture cible — Bricks-first orthodoxe
### 3.1. Child theme minimaliste
Le child theme `asterion-bricks` ne fait **plus** :
- ❌ Pas de `header.php` / `footer.php` custom (Bricks gère via ses **templates**)
- ❌ Pas de `front-page.php` / `page.php` / `index.php` custom (Bricks gère)
- ❌ Pas de Custom Templates `page-*.php`
Le child theme fait **uniquement** :
-`style.css` : header WP avec `Template: bricks` (obligatoire)
-`functions.php` : enqueue tokens.css + utilities.css en frontend, register CPT (case_study, scenario), self-host fonts
-`assets/css/tokens.css` : design tokens (couleurs, typo, spacing) en CSS variables
-`assets/css/utilities.css` : helpers très ciblés uniquement (`.av-skip-link`, `.av-sr-only`)
-`assets/fonts/` : Inter Variable self-hosté
-`inc/cpt.php` : Custom Post Types
-`theme.json` : optionnel, pour Gutenberg color picker en cohérence
**Total estimé : 8 fichiers, ~400 lignes.** Drastiquement plus léger.
### 3.2. Bricks Templates (= header / footer / archives / single)
Tout le shell visuel devient des **Bricks Templates** créés via le builder :
| Template Bricks | Type | Rôle |
|---|---|---|
| `Header` | header | Logo + nav (Solutions / Industries / Technology / Why Asterion / Insights) + CTA + lang switcher |
| `Footer` | footer | 5 colonnes + bottom strip |
| `Archive — Insights` | archive | Liste des posts (blog hub) |
| `Single — Insight` | single | Article de blog |
| `Archive — Customers` | archive | Liste case_study |
| `Single — Case Study` | single | Page case_study individuelle |
| (option) `Single — Page` | single | Fallback si une page n'a pas de Bricks data |
Ces templates s'appliquent automatiquement à toutes les pages/posts via les **Bricks "Conditions"** (par exemple "Apply on : All pages"). Tu (Jérôme) construis ces 5-7 templates **une seule fois** dans Bricks, à ton rythme.
### 3.3. Pages individuelles
Pour chaque page (Home, Solutions hub, MY PROSERVE, Industries hub, Police, etc.), 2 options selon l'effort qu'on veut investir :
**Option A — Build visuel dans Bricks (recommandé pour les 7 templates de page)**
1. Tu (Jérôme) construis 1 page de chaque archetype dans Bricks builder :
- Home
- Solution detail (1 fois → réutilisable pour les 4 tiers)
- Industry detail (1 fois → 4 industries)
- Technology detail (1 fois → 6 tech pages)
- Editorial (1 fois → 5 pages)
- Conversion form (1 fois → 4 forms)
- Legal (1 fois → 4 legals)
2. Pour chaque archetype, tu **sauvegardes en Template Bricks** avec un nom (ex. "Solution Detail") dans Bricks → Templates.
3. Pour les variantes (4 solutions, 4 industries, etc.) : tu importes le template puis change juste le contenu textuel (Bricks "Bulk Edit" ou copy-paste).
**Effort estimé** : 7 templates × 30-60 min de build visuel = 4-7h de ton temps.
**Option B — Génération programmatique depuis les data files**
Une fois UN template Bricks finalisé visuellement pour un archetype, je peux :
1. Récupérer son JSON via `_bricks_page_content_2`
2. Identifier les "slots" textuels (le titre h1, les paragraphes, les card items, etc.)
3. Pour chaque variante (Police, Military, etc.), prendre les data du fichier `industries-data.php`, faire un templating substitution, écrire dans la nouvelle page WP.
Je l'ai prouvé techniquement — la difficulté c'est de **partir d'un template Bricks bien construit** pour ne pas inventer le format.
→ Je propose qu'on fasse **A pour 1 industrie + 1 solution + 1 tech**, puis **B pour les 11 autres similaires** (4 industries × 4 solutions × 6 tech, soit 14, dont 3 déjà manuels = 11 à générer).
### 3.4. Traduction WPML
Méthode standard :
1. Une fois une page EN finalisée dans Bricks (template + contenu), elle a son `_bricks_page_content_2`
2. Dans WPML → Translation Dashboard → choisir la page → "Translate"
3. WPML Translation Editor scanne les valeurs textuelles dans le JSON Bricks et expose un éditeur côté-à-côté EN/FR
4. Tu / le linguiste rentre les traductions, valide, publie
Pour pré-remplir : on peut écrire un mu-plugin one-shot qui pour chaque page EN crée la page FR via WPML API + pré-remplit les traductions en utilisant les data files (déjà bilingues si je les structure ainsi). Mais à faire APRÈS qu'au moins 1 page soit validée en Bricks.
### 3.5. Tokens et style cohérence
Mes tokens CSS (couleurs, typo, spacing) doivent être accessibles dans Bricks pour qu'on puisse les sélectionner via les controls Bricks (color picker, font picker, etc.).
Bricks a une feature **Theme Styles** qui permet de définir une palette globale et des variables CSS. On va :
1. Importer `tokens.css` via `functions.php` (chargé sur frontend ET dans builder)
2. Configurer **Bricks → Theme Styles** avec la même palette (color slugs `brand-navy`, `brand-gold`, etc.) référençant nos variables
3. Quand tu construis dans Bricks builder, tu choisis "Brand Navy" dans le color picker → Bricks émet `var(--bricks-color-brand-navy)` que je mappe à `var(--color-brand-navy)` dans tokens.css
Résultat : le design system est centralisé dans `tokens.css`, mais accessible visuellement dans Bricks builder. Tu modifies un token → tout le site update.
---
## 4. Étapes de restart (ordre)
### Phase 0 — Backup (avant compactage)
1. Créer une branche `archive/session-2-php-templates` depuis `main`
2. Pousser sur le remote
3. La branche `main` reste là où elle est (juste un commit "archive snapshot" et on continue)
### Phase 1 — Reset du theme
1. `git rm -r wp-content/themes/asterion-bricks/`
2. Recréer le child theme **minimaliste** (8 fichiers, comme décrit en 3.1)
3. `tokens.css` repris en l'état (déjà parfait)
4. Ré-importer Inter fonts (déjà téléchargées)
5. Activer le child theme
### Phase 2 — Reset des pages WP
1. Mu-plugin one-shot qui : `wp_delete_post(force) sur tous les posts type=page`. Garde le post `Sample Page` ou wipe complet. Reset des options `_bricks_page_content_2` partout.
2. Reset Bricks settings : `delete_option('bricks_global_settings')` puis re-set juste `postTypes = ['page','post','case_study','scenario']`.
### Phase 3 — Bricks Theme Styles
1. Tu ouvres **Bricks → Theme Styles** dans WP admin
2. Tu crées une theme style "Asterion VR" appliquée à tout le site
3. Tu y configures : couleurs (utilise mes hex de tokens.css), typo (Inter), heading sizes
4. Sauvegarde
### Phase 4 — Templates Bricks
1. **Header** : Bricks → Templates → Add New → type "Header" → tu construis le menu sticky avec 5 items + CTA + lang switcher → conditions "Apply on : Entire website"
2. **Footer** : pareil, type "Footer", 5 colonnes + bottom strip
3. (option) **Single — Page fallback** pour les pages sans Bricks data
### Phase 5 — Première vraie page
1. WP admin → Pages → Add New → "Industries" (slug `industries`) → publier vide
2. Ouvrir **Edit with Bricks**
3. Construire la page hub Industries (hero + 4 cards) en Bricks éléments natifs, en utilisant le copy depuis `content-source/industries-data.php`
4. Sauver → exporter le template → versionner le JSON dans `wp-content/themes/asterion-bricks/templates/industries-overview.json`
### Phase 6 — Validation
Tu valides visuellement Industries. Si OK, on continue avec :
- 4 pages industry detail (template "Industry Detail")
- Solutions hub + 4 tiers
- Technology hub + 6 pillars
- Editorial × 5
- Conversion × 4
- Legal × 4
- Insights / Resources
- Home
Soit **34 pages** à construire au total. Avec mon aide pour la génération programmatique (option B en 3.3), on en fait probablement **7 manuellement, 27 générées** à partir des templates manuels.
### Phase 7 — WPML
Une fois EN finalisé, mu-plugin one-shot qui :
- Duplique chaque page EN en FR via WPML API (utilise les data FR des data files comme pré-remplissage)
- Tu valides, le linguiste affine
---
## 5. Risques résiduels
- **Bricks license** : si elle expire (annuelle), le builder est bridé. Vérifier renouvellement.
- **Format JSON Bricks** : peut changer entre versions Bricks majeures (v3.x). On versionne nos exports template JSON pour pouvoir les re-importer.
- **Performance** : Bricks ajoute du CSS / JS supplémentaire vs HTML pur. Lighthouse cible (90+) atteignable mais demande optimisation (lazy load, caching).
- **WPML traduction** : le linguiste doit comprendre Bricks Translation Editor (formation 30 min suffisent normalement).
---
## 6. Compactage du contexte
Avant de redémarrer, il faut :
1. **Mettre à jour les memories** (`project_asterion_status.md`, etc.) avec :
- L'état archivé en branche
- Le plan ci-dessus
- Les data files (sources de vérité textuelle)
- Les tokens.css (à reprendre tel quel)
- Les contraintes (XAMPP intouchable, Bricks-first, etc.)
2. **Compactage du contexte** : tu commandes `/compact` ou redémarres une nouvelle session, je reprends depuis les memories.
---
## 7. Time-box
| Phase | Effort dev (moi) | Effort utilisateur (toi) | Calendrier |
|---|---|---|---|
| 0 — Backup | 5 min | 0 | jour J |
| 1 — Theme reset | 30 min | valider | jour J |
| 2 — Pages reset | 15 min | 0 | jour J |
| 3 — Theme Styles | 0 | 30 min | jour J |
| 4 — Templates header/footer | 0 | 1-2h | jour J/J+1 |
| 5 — 1ère page (Industries) | 30 min guidance | 30 min | jour J+1 |
| 6 — Validation + autres pages | 2-3h génération | 4-7h build | semaine |
| 7 — WPML traductions | 1h génération | 30 min × 35 pages = ~17h | linguiste 1-2 semaines |
**On peut avoir un site EN complet en Bricks dans 1 semaine** si tu mets 4-7h de build visuel. La trad FR vient ensuite.
---
## 8. Ce que je veux que tu confirmes avant de démarrer
1. **OK pour archiver la session actuelle dans une branche `archive/session-2-php-templates` ?** (rien ne se perd, juste isolé)
2. **OK pour le child theme minimaliste sans header.php / footer.php** ? (Bricks gère via templates)
3. **Tu acceptes de construire 5-7 templates Bricks visuels** (1-2h chacun) ? Ou tu préfères que je tente une génération 100% programmatique (plus risqué, format JSON instable) ?
4. **OK pour les CPT case_study + scenario en plus de page/post** ? (déjà déclarés, on les garde)
Réponds aux 4. Ensuite : `/compact` et on redémarre propre.