- Nouvelle architecture modulaire avec src/api, src/core, src/utils
- Séparation claire docs/ (admin, changelog, dev, security) et tests/ (unit, integration, scripts)
- server.js devient un simple point d'entrée
- Ajout de STRUCTURE.md documentant l'architecture
- Archivage ancien-confluent/ avec générateur de lexique complet
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Problèmes résolus:
- Polling toutes les 3s vers /api/llm/limit (1200 req/h par user)
- Rate limiters par IP bloquaient légitimement les traductions
- globalLimiter (200/15min) et translationLimiter (10/min) redondants
Changements:
- Suppression setInterval 3s dans index.html
- Mise à jour compteur LLM uniquement après traductions
- Suppression globalLimiter et translationLimiter
- Garde uniquement checkLLMLimit() (par API key, 20/jour)
- Fix affichage: utilise data.remaining de l'API
Résultat: système de quotas simple, clair et fonctionnel
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Ajout support custom API keys (Anthropic/OpenAI) dans localStorage
- Backend utilise custom keys si fournis (pas de déduction rate limit)
- Tentative fix rate limiter pour /api/llm/limit (skip globalLimiter)
- Fix undefined/undefined dans compteur requêtes
- Ajout error loop prevention (stop après 5 erreurs)
- Reset quotidien à minuit pour compteur LLM
Note: Problème 429 persiste, à débugger à la maison
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Backend:
- auth.js: Système de tokens avec API keys UUID
- rateLimiter.js: Rate limiting multi-tiers (global, traduction, admin)
- logger.js: Logging des requêtes avec rotation automatique
- adminRoutes.js: Routes admin pour gestion des tokens
- server.js: Intégration de tous les middlewares de sécurité
Frontend:
- Interface de connexion modale élégante
- Stockage sécurisé API key dans localStorage
- Bouton déconnexion dans le header
- authFetch() wrapper pour toutes les requêtes protégées
- Protection automatique des endpoints de traduction
Sécurité:
- Token admin généré automatiquement au premier lancement
- Limites quotidiennes par token configurables
- Rate limiting pour prévenir les abus
- Logs détaillés de toutes les requêtes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Nouvel onglet Settings (⚙️) permettant de configurer:
Paramètres globaux:
- Niveau de langue (Proto/Ancien Confluent)
→ S'applique aux traductions et au lexique
→ Supprimé des onglets individuels
Configuration LLM:
- Provider (Anthropic/OpenAI)
- Modèle (avec mise à jour dynamique selon provider)
- Température (slider 0.0-2.0 pour créativité)
Interface:
- Thème clair/sombre avec CSS complet
- Mode verbose (checkbox pour détails)
- Application immédiate du thème
API Keys (optionnel):
- Anthropic API Key
- OpenAI API Key
- Placeholder pour utilisation clés serveur
Fonctionnalités:
- localStorage pour persistance
- Bouton sauvegarde avec message confirmation
- Paramètres appliqués à tous les onglets
- Valeurs par défaut définies
Interface simplifiée: choix de langue retiré des autres onglets
car centralisé dans Settings.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Modifications de l'interface HTML:
- Ajout onglet "Confluent → Français" avec traducteur brut
- Appel API vers /api/translate/conf2fr
- Renommage onglet "Traduction" → "Français → Confluent"
- Suppression section "Configuration" (provider/model)
- Simplification: seul le choix langue cible reste
- Nettoyage code JS (loadConfig, saveConfig simplifiés)
Interface plus simple et focalisée sur les fonctionnalités essentielles.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Ajout de 've' (origine) et 'eol' (habituel) dans 00-grammaire.json
- Documentation détaillée des incohérences dans test-results-radical-system.md
- Alerte sur suffixes 'aran' et 'vis' non documentés dans grammaire officielle
- Révision objectifs coverage: 94% réaliste après ajout ve/eol
- Recommandation: valider texte de test avant ajout de nouveaux suffixes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Prompt système strict avec Chain-of-Thought obligatoire
- Retrait des racines en dur du prompt (context skimming pur)
- Amélioration logique fallback (activation si <50% couverture)
- Ajout lexique : loup, frère, manger + fichier famille
- Debug endpoint /api/debug/prompt pour inspection
- Documentation complète système racines françaises
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Nouveau système qui analyse le texte français et génère des prompts optimisés en incluant uniquement le vocabulaire pertinent du lexique, réduisant drastiquement le nombre de tokens.
# Backend
- contextAnalyzer.js : Analyse contextuelle avec lemmatisation française
- Tokenization avec normalisation des accents
- Recherche intelligente (correspondances exactes, synonymes, formes conjuguées)
- Calcul dynamique du nombre max d'entrées selon longueur (30/50/100)
- Expansion sémantique niveau 1 (modulaire pour futur)
- Fallback racines (309 racines si mots inconnus)
- promptBuilder.js : Génération de prompts optimisés
- Templates de base sans lexique massif
- Injection ciblée du vocabulaire pertinent
- Formatage par type (racines sacrées, standards, verbes)
- Support fallback avec toutes les racines
- server.js : Intégration API avec structure 3 layers
- Layer 1: Traduction pure
- Layer 2: Métadonnées contextuelles (mots trouvés, optimisation)
- Layer 3: Explications du LLM (décomposition, notes)
- lexiqueLoader.js : Fusion du lexique simple data/lexique-francais-confluent.json
- Charge 636 entrées (516 ancien + 120 merged)
# Frontend
- index.html : Interface 3 layers collapsibles
- Layer 1 (toujours visible) : Traduction avec mise en valeur
- Layer 2 (collapsible) : Contexte lexical + statistiques d'optimisation
- Layer 3 (collapsible) : Explications linguistiques du LLM
- Design dark complet (fix fond blanc + listes déroulantes)
- Animations smooth pour expand/collapse
# Documentation
- docs/PROMPT_CONTEXTUEL_INTELLIGENT.md : Plan complet validé
- Architecture technique détaillée
- Cas d'usage et décisions de design
- Métriques de succès
# Tests
- Tests exhaustifs avec validation exigeante
- Économie moyenne : 81% de tokens
- Économie minimale : 52% (même avec fallback)
- Context skimming opérationnel et validé
# Corrections
- ancien-confluent/lexique/02-racines-standards.json : Fix erreur JSON ligne 527
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Ajout onglet "Lexique" dans ConfluentTranslator
- Recherche en temps réel à chaque lettre tapée
- Sélecteur Proto/Ancien Confluent
- Affichage français → confluent avec compteur
- Endpoint /lexique dans server.js
- Structure modulaire lexique-ancien/ (21 fichiers)
- Format ultra-flexible : normalisation FR, multi-traductions, métadonnées
- 20 domaines thématiques (castes, lieux, émotions, actions...)
- ~500-600 mots à remplir (listés en commentaire _mots_a_gerer)
- Structure modulaire lexique-proto/ (6 fichiers)
- Racines monosyllabiques primitives
- ~150-200 racines à remplir
- README explicatif des différences Proto/Ancien
Format JSON supporte :
- Synonymes FR (chevaux → cheval)
- Plusieurs traductions CF par mot FR
- Compositions avec racines + sens littéral
- Évolution Proto → Ancien
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>