Merci de garder les changements cohérents avec l'architecture du dépôt. Ce projet combine des sources multilingual en français, une génération WebAssembly et un rendu navigateur ; une modification partielle casse facilement l'intégration.
Prérequis recommandés :
- Python 3.12+
- Node.js 20+
- La dépendance Python épinglée dans
requirements-build.txt
Installation minimale :
pip install -r requirements-build.txtLancer l'application localement :
python scripts/compile_wasm.py
python -m http.server 8080 --directory public- Les implémentations canoniques des fractales doivent vivre dans
src/*.ml. - N'ajoutez pas une nouvelle fractale uniquement dans
public/js/renderer.js, sauf s'il s'agit strictement d'un helper de dessin côté navigateur. - Préférez les libellés et textes d'interface en français.
- Conservez les identifiants exportés stables, sauf demande explicite de renommage.
- N'éditez pas
public/main.mlnipublic/main_wasm_bundle.mlà la main : ils sont régénérés parpython scripts/compile_wasm.py.
Quand vous ajoutez ou modifiez une fractale, mettez à jour tous les points concernés ensemble :
- Ajoutez ou modifiez la fonction dans le module
src/*.mlapproprié. - Enregistrez la fractale dans
src/main.ml. - Mettez à jour les exports attendus dans
scripts/compile_wasm.ml. - Mettez à jour les attentes d'intégration dans
scripts/integration_checks.py. - Câblez la fractale dans
public/js/renderer.js:- presets
- familles / menus
- chemin de rendu
- chargement des exports WASM
- source map
- listes de coloration syntaxique si nécessaire
- puis mettez à jour le module UI concerné dans
public/js/si le changement touche l'export, les signets, le panneau source/benchmark ou un autre helper navigateur extrait
- Mettez à jour
README.mdsi les capacités documentées changent.
- Utilisez
POINT_FRACTALSpour les attracteurs et nuages de points. - Utilisez
LINE_FRACTALSpour les courbes géométriques et dessins récursifs. - Préférez le rendu scalaire/WASM pour les fractales de type escape-time.
Pour une fractale POINT_FRACTALS, vérifiez aussi :
- La présence d'une fonction JS
etapeXxx(...). - La présence d'une projection
projeterXxx(...)si l'orbite est 3D. - La déclaration du booléen
estXxxdansrenderPointFractaletremplirFractalePonctuelle. - La présence du dispatch d'étape et de projection dans les deux boucles de rendu.
- Une graine initiale d'orbite qui converge vers l'attracteur.
- Un réglage cohérent de
pointsTarget,burnInetpointsPerFrame.
Exécutez ces commandes après toute modification significative :
node --check public\js\renderer.js
node --check public\js\renderer-source-panel.js
node --check public\js\renderer-bookmarks.js
node --check public\js\renderer-export.js
python scripts\compile_wasm.py
python scripts\integration_checks.py
python scripts\ui_smoke_checks.pyPour tester volontairement une copie locale de multilingual, définissez
MULTILINGUAL_DEV_PATH avant de lancer compile_wasm.py.
Ordre important : compile_wasm.py régénère des artefacts dans public/. Relancez ensuite les checks sur les fichiers générés.
- Gardez les PRs ciblées : une idée principale par PR.
- Décrivez le comportement modifié et les zones du dépôt touchées.
- Indiquez les commandes de validation exécutées localement.
- Ajoutez des captures d'écran ou une courte vidéo si l'interface ou le rendu changent visiblement.
- Si vous ajoutez une fractale, vérifiez sa présence dans
src/main.ml,scripts/compile_wasm.ml,scripts/integration_checks.pyet dans les registres conservés danspublic/js/renderer.js(VIEW_PRESETS,FRACTAL_FAMILIES,FRACTAL_SOURCE_MAP,wasmFunctions,POINT_FRACTALS/LINE_FRACTALSselon le cas).
Mettez à jour la documentation dans le même changement si vous modifiez :
- les fractales disponibles ;
- le pipeline de build ;
- les commandes de validation ;
- le comportement utilisateur visible ;
- les contraintes de contribution.