Repository navigation
Releases
v3.24 — campagnes auto-jeu dans le Labo, base d'un reseau de neurones en ombre
Auto-jeu : la base de positions d'un réseau de neurones « en ombre »
- Nouveau type de campagne dans le Labo (🌐 Réseau, administration) :
auto-jeu. Un réglage de l'IA joue contre lui-même, chaque partie avec sa
propre graine, donc sa propre ouverture de 8 demi-coups tirée au hasard. Les
parties sont distribuées aux exécutants (navigateurs, PC, conteneurs) et
vérifiées par recalcul comme les duels. Le bilan affiche les parties et les
positions produites, et le partage Noirs / nulles / Blancs. - Côté serveur (
abalassembly-api) :type: 'autojeu'surPOST /ordo/campagnes
(migration 009), etscripts/exporter-positions.js, qui rejoue chaque partie
acceptée dans le moteur et écrit une ligne par position (plateau en 61 cases,
camp au trait, billes sorties, score du juge actuel, résultat final vu du
camp au trait, ouverture marquée), en NDJSON ou CSV. Testé jusque dans le
conteneur Docker. - C'est la première étape du réseau de neurones « en ombre » : il tournera à
côté du juge actuel, sans le remplacer, pour comparer les deux. Le moteur qui
joue ne change pas.
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.23 — bandeau de langue en bas, marges du haut, filtre du Musee
Bande vide en haut des pages, bandeau de langue, filtre du Musée
- Bandeau de langue (« View Abalassembly in English? ») : il s'affichait en
haut, sous la barre fixe du haut, donc invisible, tout en poussant chaque
page de sa hauteur. Pour tout navigateur qui n'est pas en français, une bande
vide au-dessus du titre, et une proposition de langue que personne ne voyait.
Il s'affiche maintenant en bas de l'écran. - Téléphone : plusieurs pages (Analyse, Éditeur, Gym, Labo…) gardaient la
marge de la barre du haut de l'ordinateur (64 px) en plus de celle du
téléphone (56 px) ; la page Photo aussi. Le titre remonte de 50 à 110 px selon
la page et la langue du navigateur ; rien ne passe sous la barre. - Ordinateur : l'accueil, l'Aide et la vue d'exercice du Gym Cerveau
commençaient sous la barre fixe du haut (haut des tuiles, titre « Aide »
et bouton « ← Tous les exercices » cachés). Ils démarrent maintenant sous la
barre. Vérifié sur les 36 pages à 1280, 1000 et 390 px de large. - Musée : les sept boutons de filtre (Luxe, Bois, Voyage…) appelaient une
fonction qui n'avait jamais existé. Le filtre existe maintenant, et les
boutons ne s'affichent que s'il y a des pièces à filtrer : la page n'en a pas
encore, elle dit honnêtement « en cours de préparation ».
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.22 — plus aucun code dans le HTML, CSP sans unsafe-inline
Plus aucun code dans le HTML : la CSP protège vraiment
- Les 1 011 gestionnaires écrits dans le HTML (
onclick,onchange,
oninput,onkeydown,onmouseover/onmouseout,ontoggle), dans les pages
comme dans le HTML que le JavaScript fabrique, sont remplacés par des attributs
de données :data-click="showPage('gym')",data-change,data-input,
data-keydown,data-toggle, plusdata-entree(touche Entrée),
data-fond(clic sur le fond d'une fenêtre) etdata-survol(style le temps du
survol). Le navigateur ne les exécute jamais : un seul écouteur
(src/main/00a-actions.js) les lit, n'appelle que les 460 fonctions de la
liste des actions du site (tools/actions.js), et n'accepte comme arguments
que des valeurs simples. Le clic remonte les éléments comme avant. - CSP :
script-srcn'a plus'unsafe-inline'. Les six blocs de script du
fichier y sont nommés par leur empreinte SHA-256, recalculée à chaque
assemblage. Un script glissé dans la page par un pseudo, un fichier ou un
message ne s'exécuterait pas, même si un échappement était oublié. Les fils
de calcul (IA, Labo, réseau de calcul) restent autorisés. - Rien ne change pour le joueur. Vérifié dans Chromium avec la nouvelle CSP : les
36 pages sans gestionnaire en ligne ni violation de la CSP, et un parcours
(menu, Gym Cerveau, partie contre l'IA qui joue, Analyse, réglages, survol,
fenêtres, Labo et son fil de calcul). - Tests : plus aucun gestionnaire en ligne dans les sources, empreintes exactes,
liste des actions à jour, interpréteur qui refuse tout ce qui n'est pas une
valeur simple.CONTRIBUTINGetSECURITYexpliquent la règle.
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.21 — polices hebergees (plus de Google Fonts), telephone, accessibilite
Plus de Google Fonts, téléphone et accessibilité
- Polices hébergées par le site : Playfair Display, DM Sans et DM Mono sont
embarquées dans le fichier (fonts/, licence SIL OFL 1.1,tools/polices.js),
comme les polices de la page Écosystème. Avant, chaque visite appelait Google
Fonts, qui recevait l'adresse IP de chaque visiteur, contrairement à ce que
disait la politique de confidentialité ; et hors ligne, le site retombait sur
des polices de secours. Le site n'appelle plus aucun autre site à l'ouverture
(vérifié dans un navigateur), et la CSP n'autorise plus Google. - Politique de confidentialité : la liste exacte des autres sites que deux
fonctions peuvent appeler (import Excel, partie en direct sur PlayStrategy),
et le fait que le site ne calcule aucune empreinte de l'appareil. - Téléphone : les plateaux d'Analyse et de l'Éditeur sortaient à moitié de
l'écran (540 et 500 px sur 390) ; ils retrécissent maintenant. La page Photo
gardait sa colonne de 520 px à côté du texte : une règle écrite plus bas
écrasait celle du téléphone. Mêmes marges corrigées sur l'accueil. Les 36
pages tiennent dans un écran de 390 px. - Accessibilité : 25 champs, 5 interrupteurs et 1 image avaient leur
étiquette à l'écran mais pas pour les lecteurs d'écran ; boutons et liens du
pied de page plus hauts au doigt (24 px au moins).
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.20 — Gym Cerveau, l'exercice sur sa propre vue, lance par Demarrer
Gym Cerveau : l'exercice sur sa propre vue, lancé par « Démarrer »
- « Commencer » ouvre l'exercice à la place de la liste, sur sa propre vue
(avant : un panneau à droite, ou sous la liste sur téléphone), avec son titre,
sa zone, sa consigne et le choix du niveau. - L'exercice ne part qu'au clic sur ▶ Démarrer : la position à mémoriser, le
chronomètre et les flashs n'avancent plus pendant qu'on lit la consigne ou
qu'on choisit le niveau. Changer de niveau remet le bouton Démarrer ; Rejouer
repart tout de suite. - « ← Tous les exercices » revient à la liste ; le Retour du navigateur ou du
téléphone aussi (adresse#gym-exercice). Quitter la page arrête l'exercice. - Le Duel Cerveau garde son décompte commun de 3 secondes : ses manches partent
sans bouton, sur la même vue, et son bandeau reste affiché pendant le duel.
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.19 — protection anti-robot du serveur, sans service tiers
Protection anti-robot du serveur, sans service tiers
- Preuve de travail (le « captcha » d'Abalassembly) : le serveur donne un
défi signé, l'appareil cherche une réponse par SHA-256 — environ 0,3 s sur un
ordinateur, une seconde sur un téléphone, rien à cliquer. Aucun script d'un
autre site, aucun cookie : le calcul tient dans le fichier du jeu, qui reste
utilisable hors ligne. Demandée à l'inscription, et à la connexion seulement
après trois mots de passe faux pour ce compte : un joueur normal ne la voit
jamais. La connexion du Labo (réseau de calcul) en profite aussi. - Côté serveur (
abalassembly-api) : limites propres à la connexion (10 par
minute) et à l'inscription (5 par heure), IPv6 comptée par bloc /64,
blocage d'un compte 15 minutes après dix mots de passe faux (les sessions
ouvertes continuent), même temps de réponse pour un email inconnu. - Tant que le serveur n'est pas en ligne, rien ne part de l'appareil (testé).
- Politique de confidentialité : une phrase sur cette protection.
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.18 — reseau de calcul -- parties du Labo verifiables, executant navigateur
Réseau de calcul : un ordonnanceur, des exécutants branchables
- Parties du Labo reproductibles. À profondeur fixe, une partie se refait
maintenant coup pour coup, dans n'importe quel fil et sur n'importe quel
appareil :- les clés de hachage du moteur sortent d'une graine fixe (avant,
Math.random, d'autres clés dans chaque fil) ; - le plateau est remis dans l'ordre des cases avant chaque recherche. Avant,
l'ordre des billes en mémoire, bousculé par les recherches précédentes,
changeait l'ordre des coups générés, donc le choix entre deux coups de même
note : un coup recalculé seul différait du coup joué (trouvé en
recalculant).
Vérifié sur 116 demi-coups recalculés un à un, jusqu'à la profondeur 3.
La force du jeu ne change pas.
- les clés de hachage du moteur sortent d'une graine fixe (avant,
- Vérification d'une partie rendue : le fil de calcul sait rejouer une
partie imposée et rechercher lui-même les demi-coups demandés. Il signale un
coup différent du sien, un coup illégal, une ouverture qui ne vient pas de la
graine, une partie inachevée ou des coups joués après la fin. - Onglet 🌐 Réseau de calcul du Labo :
- se connecter au serveur de calcul, choisir le nombre de cœurs prêtés,
brancher ou débrancher ; - pour l'administrateur : les interrupteurs (une famille d'exécutants, un
exécutant) et la création de campagnes (deux jeux de poids, une
profondeur, des paires).
Tant que le serveur n'est pas en ligne, l'onglet le dit et rien ne part
de l'appareil.
- se connecter au serveur de calcul, choisir le nombre de cœurs prêtés,
- Le serveur (
abalassembly-api,/ordo) tient la file des missions et les
baux, choisit l'exécutant selon sa vitesse mesurée, et vérifie chaque
partie. Un exécutant Node permet de brancher un PC en ligne de commande. - Page Calcul distribué réécrite : ce qui a
changé depuis l'étude qui l'écartait, et ce qui reste exclu.
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.17 — l'arbre de recherche dessine dans l'Observatoire IA
Observatoire IA — l'arbre de recherche dessiné
D'après les maquettes envoyées par ocj94 :
- Un vrai arbre, en haut de l'onglet Recherche et en vue simplifiée dans
la Vue générale : la position, ses meilleurs coups de départ en cases
notées, et sous chacun la chaîne de la suite que l'IA prévoit (la pastille
noire ou blanche dit qui joue). Il remplace la liste « Arbre des lignes
principales » ; les 10 lignes restent listées au niveau Développeur. - Il se remplit pendant le calcul. Les coups sont classés selon la
dernière profondeur terminée. Une pastille dit où en est chacun à la
profondeur en cours : en cours (jaune), noté (bleu, avec sa nouvelle note),
pas encore noté (gris, il garde sa note précédente). « p4 » dit de quelle
profondeur vient la note affichée. - Vue simplifiée (3 coups, 2 étages) ou complète (5 coups, toute la
suite), au choix et retenue. Toucher un coup le choisit ; après le coup,
toucher une case de la suite montre le plateau à cette étape. - Ce qui n'y est pas, parce que ce serait inventé : plusieurs réponses
notées sous un coup (le moteur ne garde que celle qu'il prévoit) et une case
« élaguée » (aucun coup de départ n'est élagué). - Pour la suite en direct, le message « profondeur terminée » du moteur
emporte maintenant la suite prévue de ses 10 meilleurs coups. Elle était
déjà calculée à ce moment-là : un test vérifie que le moteur joue le même
coup, avec les mêmes positions examinées.
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.16 — bibliotheques verifiees, SheetJS isole, versions verifiables
Sécurité — bibliothèques vérifiées, SheetJS isolé, versions vérifiables
Suite de l'analyse de sécurité (référentiel SSDF du NIST) :
- Bibliothèques des CDN vérifiées octet pour octet. Three.js (la 3D) et
SheetJS (le lecteur de tableur) ne s'exécutent qu'après comparaison de leur
empreinte SHA-384 avec celle du paquet npm officiel. Un fichier différent est
refusé, et un message le dit. cdnjs est retiré des sources, car il sert sa
propre copie. La copie locale de Three.js est identique au paquet npm. - SheetJS 0.18.5 isolé. Deux failles connues sur des fichiers piégés
(CVE-2023-30533, pollution de prototype ; CVE-2024-22363, expression
régulière qui s'emballe). Les versions corrigées ne sont plus sur npm. Le
tableur est donc lu dans un fil de calcul jetable, qui ne renvoie que des
lignes de texte et qui est arrêté au bout de 20 s. Aucun code de SheetJS ne
s'exécute dans la page. Vérifié dans un vrai navigateur : un bon fichier se
lit, et un fichier de bibliothèque falsifié est refusé sans s'exécuter. - Politique de sécurité du contenu resserrée. Les CDN ne peuvent plus
servir de script (script-src 'self' 'unsafe-inline' blob:). Ils sont
seulement lus (connect-src), et seul le contenu vérifié s'exécute. La page
Architecture le dit. - Versions vérifiables. Chaque nouvelle release joint
index.html, la
copie de Three.js et leurs empreintes SHA-256 (SHA256SUMS). SECURITY.md
explique comment vérifier.
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer
🔐 Empreintes SHA-256 des fichiers joints : SHA256SUMS (vérifier avec sha256sum -c SHA256SUMS).
v3.15 — l'Observatoire IA dans la colonne de droite, plus en fenetre
Changé — l'Observatoire IA dans la colonne de droite
Demande de l'auteur : « toute la partie Observatoire IA dans la sidebar de
droite et non dans une fenêtre ». L'Observatoire est maintenant un onglet de la
colonne de droite de la partie, « 🔭 Observatoire IA », à côté de Partie,
Liste, Commentaires, Chat, Analyse et Bots (le bouton de l'onglet Partie y
mène aussi).
- Sur ordinateur, il est à côté du plateau ; la colonne passe de 320 à 420 px
tant qu'il est ouvert, sur les écrans d'au moins 1 700 px (en dessous, le
plateau n'aurait plus la place). - Sur téléphone, il est sous le plateau, comme les autres onglets : plus de
tiroir sur le bas de l'écran. - Changer d'onglet le ferme ; ✕ ramène à l'onglet Partie ; le site se
souvient de l'onglet ouvert. Les boutons de fenêtre (— réduire, ⤢ plein
écran) disparaissent.
Corrigé — le plateau passait sous les colonnes
- De 901 à environ 1 500 px de large, le plateau gardait 640 px même quand la
colonne centrale était plus étroite : il passait sous les deux colonnes
(mesuré à 1 280 px : 90 px cachés de chaque côté, bouton plein écran
compris). Il rétrécit maintenant à la largeur de la colonne. - Sur téléphone, une ligne qui ne se coupe pas (une ligne de mesures, un
tableau) pouvait élargir toute la page au-delà de l'écran (mesuré : 419 px
sur un écran de 390). La colonne ne dépasse plus l'écran ; un tableau trop
large défile dans l'Observatoire.
🇫🇷 Journal complet · 🇬🇧 English changelog · 🎮 Jouer