Guide DC — FRACTILIS
Documentation exhaustive pour la direction, la maintenance et l'évolution de la plateforme FRACTILIS. Ce guide fusionne l'architecture technique complète, les procédures opérationnelles et les protocoles de crise. Garder confidentiel.
🏗 Architecture de la Plateforme
FRACTILIS est une Single Page Application multi-fichiers en HTML/CSS/JS vanilla (sans framework). Chaque page est autonome mais partage des fichiers communs. Le backend est entièrement Firebase — pas de serveur dédié.
Firestore : Base de données temps réel
Hosting : CDN fractilis.web.app
Images : Cloudinary (cloud davzicbph)
Accès Hub Architecte
FozaStudio2026 — demandé à l'entrée du Hub ArchitecteOrdre de chargement des scripts (critique)
1. fractilis-firebase.js ← TOUJOURS en premier (expose window.db / window.auth)
2. fractilis-bg.js ← dépend de window.db pour Firestore (slideshow + CSS)
3. fractilis-nav.js ← dépend de window.auth (menu, Oracle, état connexion)
4. fractilis-mailer.js ← uniquement sur architecte.html
5. NexusRouter.js ← en dernier (vérifie auth + rang avant affichage)
📁 Fichiers & Dépendances
Fichiers système (tous présents dans public/)
| Fichier | Rôle | Pages |
|---|---|---|
fractilis-firebase.js | Init Firebase SDK. Expose window.db, window.auth. Fire l'event fractilis-firebase-ready. | Toutes |
fractilis-nav.js | Menu hamburger, Oracle flottant, auth state, groupes WA collapsibles, responsive mobile | Toutes |
fractilis-bg.js | Slideshow fond d'écran plein écran, CSS transparence globale, CSS mobile, warning portrait | Toutes |
fractilis-mailer.js | Envoi emails/notifications via Google Apps Script (FRACTILIS_AppsScript.js) | architecte.html |
NexusRouter.js | Guard navigation : vérifie auth + rang minimum via data-requires-auth et data-min-level | Pages protégées |
shared.css | Design system global : variables CSS, composants communs, galerie, cards | Toutes |
sw.js | Service Worker offline/cache. Bypass Cloudinary, cdnjs, API externes | Automatique (racine) |
config.js | Config Firebase (apiKey, projectId…). Exposition publique normale — protégé par règles Firestore. | Toutes |
NexusHub.js | Ancien système de navigation (remplacé par fractilis-nav.js). À supprimer des pages qui le chargent encore. | Legacy |
Bibliothèques CDN (aucune installation)
| Lib | Usage | Source |
|---|---|---|
| Firebase v9 compat | Auth + Firestore | gstatic.com |
| Leaflet.js 1.9.4 | Carte interactive Nexus | cdnjs |
| Leaflet.draw 1.0.4 | Dessin vectoriel sur carte | cdnjs |
| vis.js Network | Graphe relations + arbre dynastique | cdnjs |
| Three.js r128 | Viewer 3D (.glb/.gltf) | cdnjs |
| Cropper.js 1.5.12 | Recadrage photos galerie | public/assets/ (local) |
| Groq SDK | Oracle IA, génération quêtes/votes | API distante |
public/assets/cropper.min.js. Exécuter .\download_cropper.ps1 si absent.🔥 Firebase & Firestore
Collections Firestore — carte complète
| Collection | Structure clé | Qui écrit |
|---|---|---|
users/{uid} | role, niveau, points_merite, academy_exp, email, pseudo, displayName, last_seen, rang_icone | Auth system + DC |
fnx/entries | Articles Forge (JSON stringifié) | FORGE.html |
fnx/kanban | Colonnes Kanban FORGE | FORGE.html |
fnx/canon | Décisions canon validées | architecte.html |
fnx/map_data | Carte Nexus {shapes, layers, config} | FORGE.html |
fractilis_lore/{id} | nom, type, statut (proposition/canon/quarantine), auteur_uid, votes, coherence_feedback | resonateur.html + DC |
fractilis_quetes | titre, description, pole, difficulte, bounty_pm, statut, rang_minimum, source, num | architecte.html |
fractilis_idees | statut (en_attente/validee/refusee/escalade), auteur_uid, titre, votes_pour, notification_envoyee | resonateur.html |
votes | question, options, type, status (actif/clos), expiresAt, num, participants | architecte.html |
votes/{ideaId}_{userId} | userId, ideaId, weight (1–5 selon rôle), role, date | Membres |
notifications | userId, type, message, lu, createdAt | Système auto |
presence/{uid} | uid, pseudo, role, status (disponible/concentre/afk), page, last_seen | Chacun pour soi |
config_dc/secrets | groq_key, openai_key, admin_pwd_hash | DC uniquement |
config_dc/public | ga_measurement_id | DC uniquement |
fractilis_devlogs | titre, contenu, poles, progression, notification_envoyee, createdAt | architecte.html |
fractilis_cours | titre, role, actif, notification_envoyee, createdAt | architecte.html |
fractilis_meta/gallery | gallery:[{url, cropX, cropY, label, addedAt}] | architecte.html |
fractilis_meta/economy | total_pm_distribues, global_rate, global_multiplier | Auto |
fractilis_meta/progression | global, lore, tech, visuel, audio (valeurs 0–100) | architecte.html |
fractilis_meta/ai_project_memory | memory: String (contexte IA persistant) | Oracle IA |
fractilis_boutique | titre, description, categorie, cout_pm, stock, actif, rang_minimum, usage, icone | architecte.html |
fractilis_interviews | candidat_uid, questions, statut, source, createdBy | architecte.html |
fractilis_candidatures/{id} | nom, email, motivation, pole, score_ia, statut, date | candidature.html |
hub_visuel/board | nodes:[{id, type, x, y, data}], connections:[{from, to}] | architecte.html |
forge_validations_pending | type, titre, auteur_uid, statut, data | FORGE.html |
notifs_canon/{id} | uid, titre, type (canon/promotion_forge), vu, date | Auto |
bcast_history | type, titre, destinataires, createdAt | architecte.html |
Accéder à Firestore directement
Variables d'environnement importantes
// Dans config.js (public, normal)
const firebaseConfig = { apiKey: "...", projectId: "fractilis", ... };
// Dans Firestore config_dc/secrets (privé)
{ groq_key: "gsk_...", openai_key: "sk-...", admin_pwd_hash: "sha256..." }
// Dans fractilis-bg.js
window.CLOUDINARY_CLOUD_NAME = 'davzicbph';
window.CLOUDINARY_UPLOAD_PRESET = 'fractilis_gallery';
// Code DC (à changer tous les 3 mois)
FozaStudio2026
🚀 Déploiement
Déploiement standard
# Depuis la racine du projet (PowerShell)
cd C:\...\FRACTILIS_Final
# Hosting uniquement (le plus courant)
firebase deploy --only hosting
# Hosting + règles Firestore
firebase deploy --only hosting,firestore:rules
# Tout (hosting + firestore rules + indexes)
firebase deploy
Forcer la mise à jour du Service Worker
// Dans sw.js, incrémenter le numéro de version
const CACHE_NAME = 'fractilis-v6'; // était v5 → maintenant v6
// Les visiteurs reçoivent le nouveau SW à leur prochain chargement
Rollback d'urgence
# Voir les déploiements précédents
firebase hosting:releases:list --limit 10
# Revenir à la version précédente
firebase hosting:rollback
wrangler.toml est présent mais NON utilisé. FRACTILIS utilise Firebase Hosting exclusivement. Ne jamais déployer via Wrangler — ça casserait Firebase Auth.👥 Membres & Rangs
Hiérarchie complète des rôles
| Niveau | Rang | Icône | Accès | Poids vote |
|---|---|---|---|---|
| 1 | Recrue / Initié | ◎ | Accueil, Hall of Fame, Boutique, Academy | ×1 |
| 2 | Membre | ◈ | + Résonateur, Chambre des Votes, Forge (lecture) | ×2 |
| 3 | Artisan / Compilateur | ⬡ | + Arsenal IA, Atelier, Compendium | ×3 |
| 4 | Concepteur | ✦ | + Forge complète, Lore L2, Propositions | ×3 |
| 5 | Forgeron | ◉ | + Quêtes N5, Badge Honoraire | ×4 |
| 6 | Maître | ⬟ | + Référendum, Siège Conseil, Guide DC | ×4 |
| 7 | Architecte / DC | ◈◈ | Tout — Hub Architecte complet | ×5 |
rolelecteur · recrue · membre · artisan · concepteur · forgeron · maitre · architecte · admin · banniToute autre valeur casse le RBAC. Le champ doit être exactement en minuscule sans accent (sauf
maitre sans accent).
Promouvoir un membre
role et niveauusers/{uid} → modifier les champs role ET niveauBannir un membre
// Firestore → users/{uid}
{ "role": "banni", "banned": true, "ban_reason": "...", "ban_date": "2026-05-01" }
// ET Firebase Console → Authentication → Désactiver le compte
★ Économie & Points Mérite (PM)
Sources de PM
| Source | PM | Déclencheur |
|---|---|---|
| Quête N1 complétée | 10–30 | Auto (bounty_pm) |
| Quête N3 complétée | 60–150 | Auto |
| Quête N5 complétée | 300–500+ | Validation DC |
| Idée canonisée (Résonateur) | +50 | Auto à canonisation |
| Attribution manuelle DC | Libre | Hub Architecte → Membres |
| Bonus événement | Variable | global_multiplier dans fractilis_meta/economy |
Multiplicateurs économiques
// fractilis_meta/economy
{
"global_rate": 1.0, // Taux de base
"global_multiplier": 1.5, // Événement actif (×1.5 PM) → modifier ici pour un event
"total_pm_distribues": 4280
}
Progression automatique → rangs
La fonction getRang() dans config.js calcule le rang à partir de points_merite. Les accès se débloquent automatiquement. Seuils approximatifs :
RevShare — Opération irréversible
⚔ Gestion des Quêtes
Cycle de vie
Créer une quête manuellement
Niveaux et calibration
| Niveau | Durée | PM bounty | Livrable type |
|---|---|---|---|
| N1 — Initiation | 1–3 jours | 10–30 | Recherche, mockup, texte court |
| N2 — Standard | 3–7 jours | 30–60 | Composant, scène, asset simple |
| N3 — Avancé | 1–2 semaines | 60–150 | Système, chapitre, set d'assets |
| N4 — Expert | 2–4 semaines | 150–300 | Feature majeure, arc narratif |
| N5 — Légendaire | 1–3 mois | 300–500+ | Architecture, direction, livrable critique |
🗳 Votes & Gouvernance
Types de vote
| Type | Durée | Usage | Poids vote |
|---|---|---|---|
| Express | 24h | Décisions rapides | Standard |
| Ouvert | 72h | Décisions standard | Pondéré par rôle ×1–×5 |
| Ferme | 72h | Options fixes, pas de débat | Pondéré |
| Grand Débat | 7 jours | Décisions majeures | Pondéré |
Gérer un véto
Un véto membre gèle le vote 48h. Hub Architecte → Votes → Vétos actifs. Tu peux lever un véto si la décision est urgente (bouton "Lever le veto") ou si le véto n'est pas fondé. Documenter la décision dans le devlog.
💡 Résonateur & Creuset
Pipeline complet
proposition ou quarantine (si hors-canon). Notification WhatsApp envoyée au groupe studio.Actions DC sur le Résonateur
Hub Architecte → Résonateur → idées en attente :
- Valider : statut = "validee", notification + PM bonus à l'auteur auto
- Refuser : statut = "refusee" avec motif envoyé
- Escalader : statut = "escalade" → apparaît dans Votes → Escalades
- Forger : convertir directement en quête ou entrée Forge
Réinitialiser les votes d'une idée
// Si les votes ne se comptent pas :
// 1. Vérifier collection votes/{ideaId}_{userId} dans Firestore
// 2. Vérifier règle Firestore sur collection "votes"
// 3. En local : localStorage.removeItem('res_votes') pour réinitialiser
📋 Candidatures
Toutes les candidatures arrivent dans Firestore fractilis_candidatures ET dans le Google Sheet via Apps Script.
Workflow de traitement
| Décision | Action | Déclencheur |
|---|---|---|
| REJETER | Statut = "rejeté" + WA pré-rédigé (wa.me/NUMERO?text=…) | Hub Architecte → Recrutement |
| ENTRETIEN | WA avec invitation dans La Taverne | Pour profils à évaluer |
| ACCEPTER | WA avec lien groupe du pôle + message de bienvenue | Hub Architecte |
| PROMOUVOIR | WA + accès Notion + rang Concepteur direct | Profils exceptionnels |
Google Apps Script
// Google Sheets → Extensions → Apps Script → FRACTILIS_AppsScript.js
// Remplir SHEET_URL et DC_WA_NUMBER en tête de fichier
// Déployer → App Web → "Tout le monde (anonyme)"
// Copier l'URL dans script_onboarding.js (variable APPS_URL)
// Déclencheur : sendWeeklyDigest → Lundi → 8h–9h
// Tester : exécuter testEmails() depuis Apps Script
🔥 La Forge (Worldbuilder OS)
La Forge (FORGE.html, 4600+ lignes) est l'éditeur worldbuilding central. Elle contient : Carte Nexus · Assistant IA Oracle · Arbre dynastique · Graphe de relations · Chronologie · Kanban · Générateurs · Export Godot · Viewer 3D · Panel Équipe.
Modules de La Forge
fnx/entries. Statuts : proposition → canon → exportable Godot.fnx/entries.fnx/kanban. Drag & drop natif.Lore L2 (secret)
Activer L2 : cliquer badge "L2" en haut de la Forge → entrer FozaStudio2026 → les sections D8/D13/D14/D15 deviennent visibles.
Corpus / Documents
Niveaux d'accès documents : public · l1 · l2 · arch_only. Pour ajouter un document long : stocker dans Google Drive → coller le lien dans la Forge. Champ niveau_acces dans Firestore.
🗺 Carte Nexus
Carte interactive Leaflet.js. Chaque calque (Districts, Fractures, Biomes…) est toggleable indépendamment.
Usage
- Outil actif = bouton mis en surbrillance dans la toolbar gauche
- Une forme dessinée → onglet "Liste" → éditable via onglet "Propriétés"
- Sauvegarde dans
fnx/map_data(Firestore) ETfnx_map(localStorage) - Export GeoJSON = format standard, importable dans QGIS, Azgaar, Godot
Si la carte ne s'affiche pas
// Console : typeof L doit renvoyer "object" (Leaflet chargé)
// #body-map doit avoir une hauteur CSS définie
// Appeler _map.invalidateSize() après un changement de layout
// Leaflet.draw requiert Leaflet chargé EN PREMIER (ordre scripts)
🎓 Academy
Classes de contenu
role: 'membre' ou plus suffit.role: 'concepteur' ou 'architecte' exactement dans Firestore. academy-engine.js lit data.role.Membre reconnu "Initié" malgré son rang
L'Academy lit data.role uniquement. Si le doc Firestore contient grade ou rang_studio au lieu de role, le membre sera Classe 1. Fix : s'assurer que le champ est role (pas grade ni rang).
Tests de vérification
Hub Architecte → Vérification → deux modes :
- ⚡ IA : génère auto un test via Groq selon le rôle
- ✏ Manuel : composer les questions (Texte / QCM / Vrai-Faux). Le candidat reçoit un lien unique vers
candidate_interview.html?id=XXX
🖼 Galerie & Médias
Pipeline upload d'image
fractilis_meta/galleryonSnapshotCloudinary — config
Cloud name : davzicbph
Upload preset : fractilis_gallery (unsigned — pas de signature requise)
Dossier upload : gallery/
Console : cloudinary.com/console → Settings → Upload → Upload presets
Limite Firestore (stockage base64)
Sans Cloudinary : images compressées max 800×600px/80% JPEG avant stockage. Limite : 1MB par document Firestore. Au-delà de ~15 images en base64, migrer vers Cloudinary obligatoire.
💎 Boutique
Initialiser les 28 articles
Hub Architecte → Boutique → bouton "Initialiser les 28 articles". Une seule fois (ou si la boutique est vide).
Catégories et articles par défaut
Gestion du stock
stock = null → illimité. stock = 0 → épuisé. stock = n → décrémenté automatiquement à chaque achat.
⚙ Arsenal IA
Bibliothèque de prompts par catégorie pour les outils IA utilisés en production. Accessible aux Concepteurs+ via La Forge ou l'outil dédié.
Outils principaux
Si la clé Groq est expirée
// 1. console.groq.com → générer une nouvelle clé
// 2. Firestore → config_dc/secrets → groq_key = "gsk_nouvelle_cle"
// 3. Tester : ouvrir Oracle dans La Forge → poser une question
// Si toujours muet : vérifier aussi FRACTILIS_AppsScript.js → variable GROQ_KEY
🎮 Export Godot 4
Seuls les articles avec statut: 'canon' sont inclus dans l'export.
// JSON généré : data_export.json → placer dans res://data/ de Godot
// DataHandler.gd charge via ResourceLoader.load("res://data/data_export.json")
// API Godot :
DataHandler.get_entity("uuid")
DataHandler.get_by_type("arme")
// Structure JSON exportée :
{
"id": "uuid",
"nom": "Eran Kalen",
"type": "personnage",
"l1": "Texte public (Layer 1)",
"l2": "Révélation secrète (Layer 2 — non exporté en production)",
"stats": { ... }
}
l2.✅ Checklist Mensuelle DC
- ☐ Publier 1 devlog avec état d'avancement réel et % progression
- ☐ Traiter les idées en attente au Résonateur (<2 semaines de délai)
- ☐ Vérifier les candidatures en attente → traiter ou archiver
- ☐ Clôturer les quêtes expirées / prolonger si justifié
- ☐ Mettre à jour
fractilis_meta/progressionavec les vrais % - ☐ Faire le bilan PM distribués vs objectifs du mois
- ☐ Vérifier les limites Firebase Spark (Usage and billing)
- ☐ Sauvegarder les données importantes (Export JSON depuis architecte)
- ☐ Vérifier les contrats RevShare signés et archivés
- ☐ Tester
testEmails()dans Apps Script - ☐ Contrôler le Google Sheet candidatures
- ☐ Mettre à jour Hall of Fame si nouveaux membres notables
- ☐ Vérifier que les Firebase Rules sont correctes
Modifier la progression globale
// Firestore : fractilis_meta/progression
{
"global": 18, // % affiché sur l'index et dans les stats live
"lore": 35, // % pôle Narration
"tech": 12, // % pôle Technique
"visuel": 22, // % pôle Visuel
"audio": 5, // % pôle Audio
"studio": 10 // % organisation studio
}
// Alternative : triple-clic sur ◈ en footer de progression.html → FozaStudio2026
🔧 Dépannage Complet
Cause : Collection non listée dans firestore.rules ou utilisateur sans le bon role.
Fix : Vérifier firestore.rules → ajouter une règle pour la collection → firebase deploy --only firestore:rules
Cause : where + orderBy sur plusieurs champs sans index composite Firestore.
Fix : Cliquer le lien dans le message d'erreur → Firebase Console → créer l'index. Ou utiliser le tri côté client.
Fix : .\download_cropper.ps1 depuis la racine → vérifie que public/assets/cropper.min.js existe → redéployer.
Cause 1 : Service Worker intercepte Cloudinary. Fix : vérifier res.cloudinary.com dans BYPASS_PATTERNS de sw.js + incrémenter CACHE_NAME.
Cause 2 : base64 trop lourde. Fix : configurer Cloudinary.
Fix : Firebase Console → users/{ton_uid} → champ role = exactement architecte (minuscule, pas de majuscule)
DevTools → Application → Local Storage → clé fnx_e doit exister. window.FIREBASE_READY doit être true. L'autosave fonctionne en localStorage même sans Firebase.
Cause : NexusHub.js n'existe pas → Firebase retourne une page 404 HTML → le navigateur essaie de l'exécuter comme JS.
Fix : Vérifier que NexusHub.js est dans public/. Ou supprimer la balise script qui le charge.
1. Hub Architecte → Boutique → Initialiser les 28 articles (une seule fois). 2. Vérifier la syntaxe JS (apostrophes typographiques dans les strings). 3. Vérifier que mainContent n'est pas caché par l'auth wall.
1. Vérifier que des images sont dans la Galerie (Hub Architecte). 2. Console : window.db doit être défini. 3. Vérifier l'ordre des scripts (fractilis-firebase.js avant fractilis-bg.js).
Activer le mode debug
// Sur n'importe quelle page : Ctrl + Shift + D
// → Panneau debug (coin bas gauche) avec état Firebase, auth, heure
// Depuis la console navigateur :
console.log('DB:', !!window.db, 'Auth:', !!window.auth, 'Ready:', window.FIREBASE_READY)
window.fracBgReload() // Forcer rechargement slideshow fond
loadArticles && loadArticles() // Forcer rechargement boutique
🛡 Sécurité
Rotation des mots de passe — tous les 3 mois
Le code DC FozaStudio2026 est hardcodé dans plusieurs fichiers. Pour le changer :
// Fichiers à modifier :
architecte.html → variable ADMIN_PWD
progression.html → triple-clic ◈ footer
Hall of Fame.html → triple-clic ◈ footer
FORGE.html → variable L2_PASSWORD (code L2 distinct)
guide_dc.html → (ce document — section sécurité)
// Notifier les Concepteurs du nouveau code L2.
CSP — Content Security Policy
Définie dans firebase.json → headers. Si une ressource externe est bloquée :
// Ajouter dans la directive appropriée de firebase.json
"script-src": "... https://nouveau-domaine.com"
"connect-src": "... https://api.nouveau-service.com"
// Puis : firebase deploy --only hosting
Règles Firestore recommandées
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function isArchitecte() {
return request.auth != null && (
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'architecte'
|| get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'admin'
);
}
function level() {
return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.niveau || 0;
}
// Forge — lecture membres, écriture concepteurs+
match /fnx/{doc} {
allow read: if request.auth != null;
allow write: if request.auth != null && level() >= 4;
}
// Lore — lecture publique, canonisation DC
match /fractilis_lore/{id} {
allow read: if true;
allow create: if request.auth != null;
allow update: if isArchitecte();
}
// Users — chacun lit/modifie le sien, DC modifie tous
match /users/{uid} {
allow read: if request.auth != null;
allow write: if request.auth.uid == uid || isArchitecte();
}
}
}
Sauvegardes
// Export manuel depuis Hub Architecte → Export → JSON/Markdown/HTML
// Ou Firebase Console → Firestore → Exporter (plan Blaze requis pour export auto)
// Fréquence recommandée : mensuelle minimum
- Pousser des clés API dans un dépôt Git public
- Mettre des données sensibles dans
public/(accessible par URL) - Partager le code DC à des non-Architectes
🚨 Gestion de Crise
firebase hosting:rollback depuis PowerShellnode --check fichier.html + redéployerrole = "banni"config_dc/secrets → groq_key ET FRACTILIS_AppsScript.js → GROQ_KEY🔗 Liens Admin Essentiels
📖 Glossaire FRACTILIS
| Terme | Définition |
|---|---|
| La Fracture | Événement fondateur du 18 novembre 2047. Point de départ de la timeline FRACTILIS. |
| Le Nexus | Ville centrale de l'univers FRACTILIS, divisée en 7 districts. |
| Axion | Énergie primordiale libérée par la Fracture. Source de toute magie/technologie Magikpunk. |
| Écho | Entité issue de la Fracture. N'obéit pas aux lois physiques normales. |
| Oméga | Les 6 failles dimensionnelles majeures créées par la Fracture. |
| Magikpunk | Genre esthétique de FRACTILIS : magie organique + technologie. |
| Canon | Code : statut:'canon'. Élément validé DC, exportable Godot. |
| L1 / L2 | Layer 1 (lore public) / Layer 2 (lore secret, Maître+ uniquement). |
| DC | Directeur Créatif. Architecte de la plateforme et du projet. |
| fnx | Préfixe de toutes les collections Forge dans Firestore. |
| PM / Mérites | Points de Mérite. Monnaie de progression et d'investissement des membres. |
| Résonateur | Interface de soumission d'idées. Collection Firestore : fractilis_lore. |
| Creuset | Interface de fusion Résonateur ↔ Forge. Bridge de validation. |
| DataHandler.gd | Autoload Godot 4 qui charge et expose data_export.json. |
| Eran Kalen | Personnage central du lore. Voir FRACTILIS_COMPENDIUM_ABSOLU.html. |
| Oracle Nexus | Assistant IA flottant, contextualisé au lore canon via Groq. |
| Hub Architecte | Panneau d'administration complet (architecte.html). Accès DC exclusif. |
📝 Changelog Plateforme
v4.0 — Mai 2026
- Guide DC fusionné : v3.0 original + nouvelle documentation technique complète
- fractilis-bg.js : slideshow fond d'écran plein écran toutes pages, CSS transparence globale, mobile responsive, warning portrait non-bloquant
- boutique.html : tooltips au survol, catégories Identité/Pouvoir ajoutées, fix syntaxe apostrophes
- architecte.html : boutique tri client-side (28 articles), votes sans orderBy, formation manuelle, test DC
- academy-engine.js : resolveClass lit data.role → fin du bug "Initié" pour l'Architecte
- FORGE.html : accès architecte débloqué, Oracle button visible, timeline hauteur fixée
- fractilis-nav.js : menu WA collapsible, pages triées par rang, codex économique retiré
- sw.js : bypass Cloudinary + CDN images (fin des images noires)
v3.0 — Avril–Mai 2026
- Carte Nexus v2 : Leaflet.draw, calques FRACTILIS, export GeoJSON
- Viewer 3D (.glb/.gltf via Three.js + model-viewer)
- Panel Équipe temps réel (Firestore onSnapshot)
- Assistant IA Oracle flottant global
- Creuset double vue + statistiques de flux
- Vote pondéré ×1–×5 selon rôle
- Notifications canonisation (+50 mérites)
v2.0 — Mars 2026
- Résonateur v2 · Carte Nexus v1 · Export Godot 4 · Arbre dynastique vis.js · Graphe de relations
v1.0 — Janvier 2026
- Forge initiale · Firebase Auth · Kanban · Générateurs · Hall of Fame
Document confidentiel — usage Directeur Créatif exclusivement