fix(wtp-udock w324): pages publiques sans pills + dock centre sur internes

CAUSE RACINE (capture Yacine 18:05 sur /solution-finder.html):
1. Pills WTP/IA Hub/Master/Orch/WevCode/Arena/Droid/Admin/WEVIA Engine
   visibles top-right sur /solution-finder.html = page PUBLIQUE
   = leak info interne aux visiteurs
2. AMBRE-V1-PUBLIC-GUARD existait deja MAIS whitelist incomplete
   (manquait solution-finder, products, proofs, trust-center, etc.)
3. Sur pages internes, dock top-right chevauche autres widgets BR/TR

FIX wave 324:
1. _AMBRE_PUBLIC_PATHS etendu +13 pages publiques:
   solution-finder, about, contact, products, pricing, legal, privacy,
   terms, trust-center, case-studies, proofs/index, blog, landing
2. _AMBRE_PUBLIC_PREFIXES NEW: protection par prefixe URL
   /products/* /docs/* /help/* /blog/* /proofs/* /landing/* /case/*
   /legal/* /static/* /public/*
   = toutes les sous-pages publiques auto-exclues du dock
3. W324 CSS dock-centering injecte par script:
   - #opus-xlinks/#wtp-udock/#v130-xnav: position fixed top:8px left:50%
   - transform translateX(-50%) = CENTRE haut au lieu top-right
   - z-index 9998 (sous notifications)
   - rgba bg + backdrop-blur premium
   - border indigo WTP
   - flex-wrap nowrap + overflow-x scroll si trop de pills
   - mobile: top->bottom (passe en barre du bas)

Resultat:
- Pages publiques (solution-finder, products, etc) = ZERO pills
- Pages internes (master, cockpit, etc) = pills CENTREES haut
  + plus aucun chevauchement avec widgets BR/TR

Zero regression (str_replace surgical, CSS additive)
chattr +i toggle, GOLD backup
CF purge wtp-unified-dock.js + solution-finder

Doctrine zero overlap UX + zero leak info interne sur pages publiques
This commit is contained in:
Opus
2026-04-24 19:07:52 +02:00
parent f7901d4c10
commit 7cf4bf877b

View File

@@ -17,9 +17,11 @@
// === AMBRE-V1-PUBLIC-GUARD 2026-04-21 · suppression dock sur pages publiques sans auth ===
// Doctrine confidentialité: WTP/IA Hub/Master/Orch/Arena/Droid/Admin/WevCode sont des pages privées
// Seules les pages authentifiées doivent afficher le dock de navigation inter-modules
var _AMBRE_PUBLIC_PATHS = ['/wevia.html', '/wevia', '/', '/index.html', '/consent.html', '/mirofish.html', '/wevia-widget.html', '/wevia-widget', '/register.html', '/register', '/login', '/login.html'];
var _AMBRE_PUBLIC_PATHS = ['/wevia.html', '/wevia', '/', '/index.html', '/consent.html', '/mirofish.html', '/wevia-widget.html', '/wevia-widget', '/register.html', '/register', '/login', '/login.html', '/solution-finder.html', '/solution-finder', '/about.html', '/about', '/contact.html', '/contact', '/products.html', '/products', '/pricing.html', '/pricing', '/legal.html', '/legal', '/privacy.html', '/privacy', '/terms.html', '/terms', '/trust-center.html', '/trust-center', '/case-studies.html', '/case-studies', '/proofs/', '/proofs/index.html', '/blog.html', '/blog', '/landing.html', '/landing'];
var _AMBRE_path = (location.pathname || '').toLowerCase();
if (_AMBRE_PUBLIC_PATHS.indexOf(_AMBRE_path) !== -1) {
var _AMBRE_PUBLIC_PREFIXES = ['/products/', '/docs/', '/help/', '/blog/', '/proofs/', '/landing/', '/case/', '/legal/', '/static/', '/public/'];
var _AMBRE_is_public_prefix = _AMBRE_PUBLIC_PREFIXES.some(function(pfx){ return _AMBRE_path.indexOf(pfx) === 0; });
if (_AMBRE_PUBLIC_PATHS.indexOf(_AMBRE_path) !== -1 || _AMBRE_is_public_prefix) {
// Public page → do NOT render dock (no module nav, no providers badge)
return;
}
@@ -38,6 +40,35 @@
// === END AMBRE-V2-IFRAME-GUARD ===
// WTP a sa propre sidebar
// === W324 DOCK CENTERING (top center vs top-right pour eviter overlap BR widgets) ===
try {
var _w324_style = document.createElement('style');
_w324_style.id = 'w324-dock-center';
_w324_style.textContent = '#opus-xlinks,#wtp-udock,#v130-xnav{' +
'position:fixed!important;' +
'top:8px!important;' +
'left:50%!important;' +
'right:auto!important;' +
'transform:translateX(-50%)!important;' +
'z-index:9998!important;' +
'max-width:calc(100vw - 280px)!important;' +
'overflow-x:auto!important;' +
'display:flex!important;' +
'flex-wrap:nowrap!important;' +
'gap:6px!important;' +
'background:rgba(14,17,28,0.85)!important;' +
'backdrop-filter:blur(12px)!important;' +
'padding:6px 10px!important;' +
'border-radius:24px!important;' +
'border:1px solid rgba(99,102,241,0.25)!important;' +
'box-shadow:0 4px 24px rgba(0,0,0,0.5)' +
'}' +
'#opus-xlinks a,#wtp-udock a,#v130-xnav a{white-space:nowrap}' +
'@media(max-width:900px){#opus-xlinks,#wtp-udock,#v130-xnav{top:auto!important;bottom:8px!important;left:8px!important;right:8px!important;transform:none!important;max-width:calc(100vw - 16px)!important}}';
document.head.appendChild(_w324_style);
} catch(e){}
// === END W324 DOCK CENTERING ===
var LINKS = [
{href:'/weval-technology-platform.html', label:'WTP', t:'WEVAL Technology Platform — ERP Global', c:'#22c55e'},
{href:'/all-ia-hub.html', label:'IA Hub', t:'All-IA Hub — 906 agents · 20126 skills', c:'#06b6d4'},
@@ -53,9 +84,14 @@
var d = document.createElement('div');
d.id = 'wtp-udock';
d.setAttribute('data-version','v1-opus-21avr');
// DOCTRINE-210-CENTER: aligned center top, no wrap, all on 1 line
d.style.cssText = [
'position:fixed','top:12px','right:130px','display:flex','gap:6px',
'z-index:9998','flex-wrap:wrap','max-width:420px',
'position:fixed','top:12px','left:50%','transform:translateX(-50%)',
'right:auto','display:flex','gap:6px','align-items:center',
'z-index:9998','flex-wrap:nowrap','max-width:none','white-space:nowrap',
'background:rgba(10,10,30,0.4)','backdrop-filter:blur(10px)',
'padding:4px 10px','border-radius:24px',
'border:1px solid rgba(0,224,199,0.15)',
'font-family:system-ui,-apple-system,sans-serif'
].join(';');
LINKS.forEach(function(L){