Commit Graph

61 Commits

Author SHA1 Message Date
Jules Neny
cde95cdf61 feat(gio): llms.txt + Schema.org WebSite+Person JSON-LD + meta ai-content-declaration
- public/llms.txt : description structuree ecosysteme Jules NENY pour LLMs (sections/reseaux/politique d'usage)
- BaseLayout.astro : Schema.org WebSite + Person JSON-LD (sameAs Insta + Substack + Gitea) ; Schema.org Article conditionnel via isArticle prop
- Meta ai-content-declaration : human-authored-with-ai-coordination
2026-05-12 11:29:20 +02:00
Jules Neny
f099463636 feat(seo): sitemap + robots.txt + meta OG/Twitter/canonical + site URL
- Installe @astrojs/sitemap ; integre dans astro.config.mjs avec filtre /api/
- Ajoute site: 'https://trans-former.fr' pour canonical absolues
- BaseLayout : props ogImage + canonical + isArticle + articleDate ; meta description/canonical/robots/OG/Twitter Card complets ; suppression doublons
- manifeste.astro : passe isArticle=true pour Schema.org Article
- public/robots.txt : open index + GPTBot/ClaudeBot/Google-Extended/Applebot-Extended/PerplexityBot explicites
2026-05-12 11:29:02 +02:00
Jules Neny
d01301e40b merge(v14-bis): drag overlay + toggle minmax + manifeste preview slot + scrollbar + couleurs muted + Insta x2 2026-05-12 00:49:43 +02:00
Jules Neny
dbba7dee3a fix(v14-bis): drag handle overlay + toggle gauche + manifeste preview + scrollbar visible + couleurs attenuees + 2e logo insta
FIX 1 drag handle : overlay full-screen z-9998 capture mouseup garanti
  (iframe AEP capturait les events — overlay au-dessus de tout au mousedown)
FIX 2 toggle gauche : minmax(0,1fr) + visibility hidden au lieu de display:none
  (conflit display:none + width:0 effondrait la col centre quand 2 cols togglees)
FIX 3 manifeste preview : slot flex-col + astro-island display:block
  (display:contents masquait astro-island au flex layout, preview ne s'inserait pas)
FIX 4 scrollbar visible : overflow-y:auto + scrollbar-color custom #94A3B8
  (style WebKit + Firefox uniquement quand data-preview-open=true)
FIX 5 couleurs attenuees : data-muted #C8867E/#8F9A78/#7B848E/#566375 + texte encre
FIX 6 Insta x2 : @aep.politique + @julesneny avec aria-labels et titles distincts
FIX 7 SVG Insta : path simple (camera carree + lentille) au lieu du path complexe
2026-05-12 00:49:01 +02:00
Jules Neny
3baeb0378c merge(v14-cde): Carte O cadre + bouton toggle desktop + drag mouseup fix + manifeste preview client:load + transitions 2026-05-12 00:31:21 +02:00
Jules Neny
6db93d9c5a merge(v14-abf): toggle cols fix + pastels revert + footer compact aligned 2026-05-12 00:31:20 +02:00
Jules Neny
5a628fd85b fix(v14-cde): Carte O cadre + bouton replier desktop + drag mouseup fix + manifeste preview event + transitions
- C1 : cadre 1px #CBD5E1 + radius 6px autour section centre-haut (Carte O zone).
  Force tuning CarteO.vue : forceX/Y strength 0.05 -> 0.08, collide radius +12 -> +14
  pour mieux contenir les nodes dans le cadre visible.
- C2 : bouton toggle Carte O desktop (icone triangle dans le bandeau, a cote de la legende).
  Replie a flex 0 0 36px (header reste visible, body masque avec opacity 0).
  Persistance sessionStorage 'tf-carte-o-collapsed'.
- D  : fix drag handle qui ne se decliquait pas au mouseup. Listeners poses sur window
  (vs document) + ajout pointerup/mouseleave/blur/mouseenter-buttons-0 pour couvrir
  tous les flux utilisateur (sortie iframe, perte focus, relache hors-page).
  Suspension transitions CSS pendant le drag (pas de lag).
- E1 : PreviewArticle hydration client:load (vs client:visible) - le v-if rendait
  l'IntersectionObserver aveugle, donc les listeners 'preview-open' n'etaient jamais
  installes. Resultat : clic manifeste -> preview ne s'ouvrait pas.
- E2 : Transition Vue preview-fade (opacity + translateY 8px, 250ms ease) +
  transitions CSS flex-basis 0.3s ease sur sections haut/bas pour smooth UX.
2026-05-12 00:30:42 +02:00
Jules Neny
bc7e394913 fix(v14-abf): toggle cols cacher seulement bidirectionnel + revert pastels transparent + footer align 2026-05-12 00:28:52 +02:00
Jules Neny
b48b66bd76 merge(v13-f): palette desopacifiee + toggle cols + footer gap + manifeste CTA bord rouge 2026-05-11 20:15:17 +02:00
Jules Neny
e012d11bee feat(v13-f): palette desopacifiee pills + toggle cols laterales + footer gap-6 + manifeste CTA bord rouge 2026-05-11 20:14:28 +02:00
Jules Neny
8703d056d9 merge(v13-e): manifeste UX preview centrale + page /manifeste preserve 2026-05-11 20:09:07 +02:00
Jules Neny
b4f6d63f33 feat(v13-e): manifeste UX preview centrale (racine) + page /manifeste preserve standalone 2026-05-11 20:08:20 +02:00
Jules Neny
8e7125b426 merge(v13-d): Carte O Option B rectangle central + bandeau sommaire + legende + TMIP 2026-05-11 20:01:34 +02:00
Jules Neny
6b9f6bf751 merge(v13-c): header 1-line cliquables + phrase intention Roboto Condensed 2026-05-11 20:01:33 +02:00
Jules Neny
372cb62229 merge(v13-bg): layout 1 ecran fixe + Pro/LinkedIn + hamburger desktop hide 2026-05-11 20:01:33 +02:00
Jules Neny
8f8b0c5f4c feat(v13-d): Carte O Option B rectangle central + bandeau sommaire + legende + TMIP relie
- YAML carte-o-source : label central -> 'Une medecine du corps social pour
  ecrire un nouveau contrat social' (phrase pleine 3 lignes)
- YAML : projet TMIP gagne lien_central:true (edge explicite centre <-> projet)
- build-carte-o.js : addEdge accepte opts.central=true pour tagger les edges
  rattachees au noeud central (permet tuning force-link cote Vue)
- carte-o.json regenere : 17 nodes, 20 edges (vs 19 V1.2-O), tous les edges
  central->thematiques + central->tmip portent flag central:true
- CarteO.vue : noeud central rendu en RECT 300x64 fill encre (vs cercle r30),
  label blanc multi-tspan 3 lignes 13px font-weight 500 line-height 1.35
- CarteO.vue : splitCentralLabel reecrit pour wrap intelligent (3 lignes
  ~30 chars), preserve compat ' + ' (V1.2)
- CarteO.vue : force tuning V1.3 -> alphaDecay 0.025, velocityDecay 0.4,
  forceCollide +12 (CENTRAL_COLLIDE_RADIUS=160 pour le rect), forceX/Y
  strength 0.05 rappel cadre, link distance/strength differencies
  (central->projet = 90/0.6, central->essai = 200/0.3)
- CarteO.vue : hover handler selector etendu rect|circle
- CarteOWrapper.vue : CarteEdge gagne champ central?:boolean
- ColCentre.astro : tabs Chatbot retires (ChatbotV2 import retire aussi),
  remplaces par header bandeau 'Sommaire editorial d'architecture
  d'ecologie politique' (gauche, monospace 12px) + legende 3 symboles
  (publie ● / a venir ○ / projet 🟠) en droite

Build SSR : 5 pages prerender, 0 warning, 4.35s.
2026-05-11 20:00:30 +02:00
Jules Neny
aa410ce7aa feat(v13-bg): layout 1 ecran fixe + hamburger desktop hide + categorie Pro 2026-05-11 20:00:16 +02:00
Jules Neny
e90a7e12ef feat(v13-c): header 1-line cliquables + phrase intention Roboto Condensed 2026-05-11 19:58:07 +02:00
Jules Neny
e43ec60ecf merge(v13-p0): iframe AEP skeleton timeout fallback fix loading stuck 2026-05-11 19:53:54 +02:00
Jules Neny
1033099663 fix(v13-p0): iframe AEP skeleton timeout fallback (resolves loading stuck)
Le @load event ne fire pas (ou tardivement) sur l'iframe AEP enfermee
dans un wrapper avec transform scale(0.42) + viewport simulee 1440px.
Resultat : skeleton 'Chargement de la carte AEP...' reste affiche
indefiniment, masquant l'iframe meme si elle se charge.

Fix :
- setTimeout 2.5s dans onMounted qui force revealIframe() inconditionnellement
- onIframeLoad clear le timer si l'event fire dans les temps (cas nominal)
- retrait du z-10 sur le skeleton (defense en profondeur : si bug residuel,
  l'iframe sera quand meme visible derriere)
- factorisation revealIframe() partagee entre @load et fallback
- cleanup du timer dans onUnmounted

Build SSR : 5 pages, 0 warning, ~4s.
Tests browser manuels a faire par Jules pour confirmer disparition skeleton.
2026-05-11 19:52:57 +02:00
Jules Neny
9bb55bc311 merge(v12-p): preview article 3 zones + colonnes scrollables indep 2026-05-11 18:52:59 +02:00
Jules Neny
7ec0efdeb5 merge(v12-o): Carte O logos Brandfetch overlay (zoom>1.5x) 2026-05-11 18:52:58 +02:00
Jules Neny
12a2d40371 feat(v12-p): preview article 3 zones + colonnes scrollables indep
- PreviewArticle.vue : nouveau composant qui ecoute journal-item-click et s'insere entre Carte O et iframe AEP
- EmbedDynamique.vue : retire le swap article (iframe AEP toujours visible en bas)
- ColCentre.astro : passe en flex-col, preview ouverte = Carte O 33vh + Preview auto + iframe 67vh, overflow-y-auto sur le container
- Bouton 'Retour a la carte' emet preview-close -> grid revient 1/3 + 2/3
- Scroll independant : Journal (gauche), Centre (preview), Insta (droite)
- Drag-resize desactive quand preview ouverte (anti-collision)
2026-05-11 18:52:11 +02:00
Jules Neny
a1d6271b65 feat(v12-o): Carte O logos plateforme via Brandfetch CDN (visible zoom>1.5x)
Champ optionnel domain dans YAML carte-o-source : propage vers JSON et
permet d'afficher un logo plateforme en bas-droite de chaque node (cercle
blanc 18px + image clippee circulaire 14px) quand le zoom depasse 1.5x.

V1.2-O par defaut : substack.com sur les 15 thematiques essais. Centre +
projet TMIP gardent leur fill brut (encre / ocre). Toggle visibilite via
callback zoom (opacity 0/1 sur .logo-overlay).

A flagger : CDN Brandfetch retourne 403 en curl server-side avec le client
ID fourni. A revalider en browser (origin trans-former.fr) — le CDN peut
exiger un Origin header autorise. Si bloque, fallback prevu en V1.3
(proxy local ou logos packages dans /public/logos/).

Files:
- public/data/carte-o-source.yaml : +15 champs domain
- scripts/build-carte-o.js : propagation domain -> JSON
- src/components/vue/CarteO.vue : CarteNode.domain + logoUrl helper
  + logo-overlay (circle + image clip-path) + toggle visibilite zoom
- public/data/carte-o.json : regenere (15/17 nodes ont domain)
2026-05-11 18:48:15 +02:00
Jules Neny
e613fc1ca3 merge(v12-q): iframe AEP forcé desktop transform scale 2026-05-11 18:43:06 +02:00
Jules Neny
d12f77554f merge(v12-n): Carte O fusion noeud central + palette minimaliste 2026-05-11 18:43:06 +02:00
Jules Neny
397484a35e merge(v12-m): header bandeau SiteHeader + titre Trans-Former/Jules Neny 2026-05-11 18:42:50 +02:00
Jules Neny
3f2783e3fc feat(v12-n): Carte O fusion noeud central + palette minimaliste encre/papier/ocre
- YAML: fusion 3 noeuds confus (centre + ncs-politique + medecine-corps-social) en 1 seul noeud central 'Contrat social + Medecine du corps social'
- Build script: toutes les thematiques rattachees directement au centre (suppression mapping NCS/MDCS), radius central 30px, projets 18px
- CarteO.vue palette V1.2: central #0F172A (encre), essais #FFFFFF stroke encre, projets #B45309 (ocre conserve)
- Labels: inscrit dans le cercle (blanc) pour central+projets, a droite (encre douce) pour essais
- Label central long split sur 2-3 lignes via splitCentralLabel()
- Background: #FAFAF7 (papier, raccord colonnes laterales)
- Liens: #94A3B8 opacity 0.4 1px

17 nodes / 19 edges. Build SSR 5 pages prerender + server, 0 warning.
2026-05-11 18:42:06 +02:00
Jules Neny
3ba4628818 feat(v12-m): header bandeau Trans-Former / Jules Neny / baseline palette terre 2026-05-11 18:41:51 +02:00
Jules Neny
7791054ca0 feat(v12-q): iframe AEP forcé desktop via transform scale + viewport 1440px 2026-05-11 18:40:50 +02:00
Jules Neny
78dde6a2a3 merge(v12-r): col-centre default 1/3 + 2/3 (vs 50/50) 2026-05-11 18:34:39 +02:00
Jules Neny
3360daa61f merge(v12-l): footer 1-line 3-zones logos RS palette terre 2026-05-11 18:34:39 +02:00
Jules Neny
d2d3629965 merge(v12-k): nav gauche palette terre + sub-pills Court/Article 2026-05-11 18:34:39 +02:00
Jules Neny
272fb5c181 feat(v12-r): col-centre default 1/3 Carte O + 2/3 iframe AEP (vs 50/50) 2026-05-11 18:34:01 +02:00
Jules Neny
6ea256f8a4 feat(v12-l): footer 1-line 3-zones (nav + subscribe + logos RS terre) 2026-05-11 18:33:46 +02:00
Jules Neny
95b75d4866 feat(v12-k): nav gauche palette terre + sub-pills Court/Article 2026-05-11 18:32:37 +02:00
Jules Neny
046f34ec8b feat(v11-f): drag-resize desktop ColCentre HAUT/BAS + persist session 2026-05-11 15:22:44 +02:00
Jules Neny
61e53a04d5 feat(v11-e): centre BAS embed dynamique click-journal + suppression ScrollArticles
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 15:19:24 +02:00
Jules Neny
4a29a9592a Merge branch 'feat/v11-dg' into feat/page-cerveau-v1 2026-05-11 15:15:36 +02:00
Jules Neny
79004573f1 feat(v11-dg): mobile header page active + hamburger top-right + poignee carte-o + polish css
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 15:14:48 +02:00
Jules Neny
d8d3af28a0 feat(v11-c): carte-o rendering refonte niveau/nature/statut + contextmenu positionne
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 15:13:46 +02:00
Jules Neny
1e1c56db2f Merge branch 'feat/v11-i' into feat/page-cerveau-v1 2026-05-11 15:08:08 +02:00
Jules Neny
44ffe84d5b Merge branch 'feat/v11-b' into feat/page-cerveau-v1 2026-05-11 15:08:08 +02:00
Jules Neny
c18328517a feat(v11-a): ajout Substack julesneny.substack.com dans selecteur Politique 2026-05-11 15:07:58 +02:00
Jules Neny
beb8e9a0bd feat(v11-i): footer CTA infolettre + endpoint /api/subscribe Kit V4 2026-05-11 15:04:58 +02:00
Jules Neny
5642690829 feat(v11-b): carte-o YAML source editoriale + build script niveau/nature/statut
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 15:04:53 +02:00
Jules Neny
62794459ac feat(v11-a): hashtags 4 categories capsules monospace + selecteur Politique
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 15:03:45 +02:00
Jules Neny
5589678abc merge: PC7 chatbot v2 AEP + Astro server SSR endpoint (round 3) 2026-05-09 01:23:06 +02:00
Jules Neny
be7fc09085 feat: PC7 chatbot V1 onglet centre HAUT + endpoint Astro proxy SSR
- ChatbotV2.vue : Vue island, thread chat (input + messages bot/user),
  persistance sessionStorage, bandeau beta '120 fiches AEP, RAG-PE bientot',
  gestion erreurs 429/502/504 ; pas de streaming ni markdown V1
- /api/chatbot.ts : endpoint Astro server proxy POST vers CHATBOT_UPSTREAM
  (default https://aep.trans-former.fr/api/chatbot), timeout 25s,
  body { question, history } -> upstream classique chatbot AEP Mistral Small
- astro.config.mjs : output 'server' + adapter @astrojs/node standalone
  (Astro 6 a supprime mode hybrid ; on opt-in prerender sur les pages)
- Toutes les pages publiques (index, manifeste, manifeste/commander,
  a-propos, mentions-legales) ont 'export const prerender = true'
- ColCentre.astro : remplace ChatbotPlaceholder par ChatbotV2 dans le tab
- .env.example : ajoute CHATBOT_UPSTREAM (V1.5 = switch LightRAG-PE 1 ligne)

Decision V1 : endpoint AEP /api/chatbot (classique, repond bien) au lieu
de /api/chatbot-v2 qui retourne v2_ready=false ('base vectorielle en cours').
Bandeau beta reste valide ; switch v2 quand ready cote AEP via env var.

Note PC8 deploy : Coolify doit booter avec 'node ./dist/server/entry.mjs'
(SSR Node standalone) au lieu de servir dist/client/ static.

Test end-to-end OK : SSR boot port 4399 + curl POST /api/chatbot ->
reponse_texte 800+ chars de l'AEP backend.
2026-05-09 01:22:01 +02:00
Jules Neny
fccbc6d19c merge: PC6 journal n8n + JournalList (round 2) 2026-05-09 01:15:10 +02:00