Projets
Ingénierie navigateur3 février 2026

Prototype d'Engineering pour l'Analyse d'Échecs

Prototype d'engineering navigateur explorant le parsing de l'échiquier, l'analyse Stockfish dans un WebWorker et l'explication des positions avec TypeScript et Manifest V3. Présenté comme projet d'analyse contrôlée et d'apprentissage, pas comme outil de contournement des règles de fair-play.

Vue d'ensemble

Cette extension Chrome est un prototype d'engineering navigateur explorant l'intégration en temps réel d'un moteur d'échecs. Elle analyse un échiquier rendu, génère les positions FEN, communique de manière asynchrone avec Stockfish et transforme les sorties du moteur en évaluations compréhensibles. Mon travail a couvert l'architecture TypeScript, le parsing du DOM, la gestion d'état, la communication WebWorker, la couche d'évaluation visuelle et le pipeline de build. Le portfolio le présente comme projet d'analyse contrôlée et d'apprentissage.

Usage Responsable

Le dépôt contient une intégration aux pages en direct et un mode d'exécution automatique créé pour tester l'automatisation navigateur. Ces capacités ne doivent pas être utilisées pendant une partie compétitive ou classée, ni dans un contexte contraire aux règles de fair-play d'une plateforme. La valeur d'engineering démontrée concerne l'architecture navigateur, l'extraction d'état, l'intégration asynchrone du moteur et l'interface d'évaluation explicable.

Fonctionnalités Clés

FonctionnalitéDescription
Analyse de PositionSurveillance de l'échiquier avec extraction FEN pour une analyse contrôlée
Évaluation des CoupsScore en centipawn avec affichage de la variation principale
Suggestions VisuellesRecommandations de coups surlignées sur l'échiquier
Suivi de l'AvantageBarre de progression dynamique montrant l'évaluation de la position
Mode de Test d'AutomatisationCapacité d'exécution pour des tests isolés d'automatisation navigateur, pas pour le jeu compétitif
Interface DéplaçablePanneau compact et minimisable positionnable n'importe où

Architecture Technique

L'extension suit une architecture modulaire orientée services :
src/
├── types/          # Définitions de types TypeScript
│   ├── chess.types.ts      # FEN, coups, scores
│   ├── engine.types.ts     # Communication moteur
│   └── ui.types.ts         # Types des composants UI
├── services/       # Services principaux
│   ├── board.service.ts    # État de l'échiquier & génération FEN
│   └── engine.service.ts   # WebWorker Stockfish
├── components/     # Composants UI
│   ├── panel.component.ts  # Panneau de contrôle principal
│   └── highlights.component.ts  # Surbrillance des coups
├── core/           # Logique métier
│   ├── analysis.manager.ts # Gestion de l'état d'analyse
│   └── autoplay.manager.ts # Exécution automatique des coups
└── content/        # Point d'entrée
    └── assistant.ts        # Orchestrateur principal

Patterns de Conception

  • Service Pattern - Services encapsulés pour l'interaction avec l'échiquier et le moteur
  • Observer Pattern - Mises à jour du moteur basées sur les événements avec modèle d'abonnement
  • Singleton Pattern - Services à instance unique pour la cohérence de l'état
  • Facade Pattern - La classe ChessAssistant orchestre tous les sous-systèmes

Stack Technique

TechnologieUtilisation
TypeScript 5.4Développement typé avec mode strict
Vite 5.2Builds rapides avec HMR et bundling optimisé
CRXJSDéveloppement d'extensions Chrome avec Vite
Chrome Extension MV3Version moderne du manifeste avec service workers
StockfishMoteur d'échecs pour l'analyse de positions
ESLint + PrettierQualité et formatage du code
GitHub ActionsPipeline CI/CD

Fonctionnalités Principales

Génération FEN

Le service d'échiquier extrait les positions des pièces depuis le DOM et génère la notation FEN standard :

Communication avec le Moteur

Communication asynchrone avec Stockfish via WebWorker :

Mises à Jour Événementielles

Mises à jour d'analyse en temps réel via un pattern d'abonnement :

Fonctionnalités de l'Interface

  • Design Compact - 260px de largeur, empreinte minimale
  • Panneau Déplaçable - Positionnable n'importe où sur l'écran
  • Minimisable - Se réduit en un petit bouton "+" à 50% d'opacité
  • Sélection de Couleur - Analyse du point de vue des Blancs ou des Noirs
  • Historique des Coups - Évaluations colorées (Excellent/Bon/Correct/Faible)

Résumé des Technologies

CatégorieTechnologies
LangageTypeScript 5.4, ES2022
BuildVite 5.2, CRXJS
ExtensionChrome Manifest V3
MoteurStockfish WASM
QualitéESLint, Prettier
CI/CDGitHub Actions