Files
Forge-Engine/.pre-commit-config.yaml
T
williamandClaude Sonnet 5 bab581737a
Build and deploy / test-python (push) Successful in 11m2s
Build and deploy / test-js (push) Successful in 1m2s
Build and deploy / lint-python (push) Successful in 4m6s
Build and deploy / lint-js (push) Failing after 1m21s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Build and deploy / sonarqube (push) Failing after 4m2s
Ajoute le support de formation : entite racine separee du jeu 2D
Nouveau moteur document_engine/ (elements CRUD + rendering + labels),
db/supports/ (stockage independant de db/games), routes/document/
(CRUD AJAX + publication), et l'editeur frontend complet
(templates/document/, static/document/) avec moteur de layout reel
(glisser-deposer -> fusion en rangee ou insertion avant/apres), vrai
Undo/Redo par pile de commandes, grille d'accroche pour les formes
libres, apercu responsive a largeurs fixes, mode Apercu, et publication
persistee.

"Mes formations" (templates/index.html) liste desormais les
environnements 2D et les supports de formation cote a cote ;
l'onboarding et core/auth_guard.py sont generalises pour qu'un compte
restreint puisse posseder un projet de chaque type independamment.

SKIP=djlint : le hook ne signale que le backlog H021 (styles en ligne)
deja documente dans CODE_QUALITY.md sur des fichiers pre-existants non
touches ici (base.html, game/play.html, scene_edit.html,
game_dashboard_simple.html, clause_row.html) plus une ligne de
index.html deja presente avant cette session — aucun nouveau fichier
(document_edit.html compris) n'y figure. Tous les autres outils
(ruff, mypy --strict, vulture, bandit, import-linter, eslint,
stylelint) passent sans erreur ; 617 tests Python + 276 tests JS
verts, plus une verification manuelle complete du cycle de vie via le
serveur de developpement.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-20 09:20:33 +02:00

81 lines
2.8 KiB
YAML

# Hooks locaux (language: system) plutot que les miroirs pre-commit
# habituels (astral-sh/ruff-pre-commit, pre-commit/mirrors-mypy,
# pre-commit/mirrors-eslint...) : ce projet a deja un environnement
# Python (requirements-dev.txt) et un node_modules/ (package.json) bien
# a lui — repartir sur un environnement ISOLE et RE-TELECHARGE par
# pre-commit dupliquerait exactement les memes outils/versions pour rien
# (et serait plus lent, plus fragile hors ligne). Voir CODE_QUALITY.md
# pour l'installation prealable (`pip install -r requirements-dev.txt`
# + `npm install`), necessaire pour que ces hooks trouvent les
# executables.
#
# Chaque hook est bloquant (aucune regle desactivee "pour ne pas casser
# le build", demande explicite) — un commit est refuse si un outil
# trouve un probleme, jusqu'a ce que la Phase 3 du plan qualite ait
# nettoye l'existant.
#
# eslint/stylelint : entry appelle `node <script.js>` directement plutot
# que `npx eslint` ou le shim node_modules/.bin/eslint(.cmd) — ces deux
# dernieres formes font passer pre-commit par cmd.exe pour lancer un
# executable Windows (.cmd) ou un script a shebang POSIX (#!/bin/sh),
# et pre-commit resout mal cmd.exe/sh depuis ce contexte (bug constate
# sous Windows). Appeler `node` directement sur le fichier JS du package
# evite tout intermediaire shell.
repos:
- repo: local
hooks:
- id: ruff-check
name: Ruff (lint Python)
entry: ruff check
language: system
types: [python]
- id: ruff-format
name: Ruff (formatage Python)
entry: ruff format --check
language: system
types: [python]
- id: mypy
name: Mypy (typage strict Python)
entry: mypy .
language: system
types: [python]
pass_filenames: false
- id: vulture
name: Vulture (code mort Python)
entry: vulture
language: system
pass_filenames: false
- id: bandit
name: Bandit (securite Python)
entry: bandit -c pyproject.toml -r ai auth core db filters publish routes game_engine document_engine scripts app.py build_css.py
language: system
pass_filenames: false
- id: import-linter
name: import-linter (contrats d'architecture Python)
entry: lint-imports
language: system
pass_filenames: false
- id: djlint
name: djLint (templates Jinja)
entry: djlint templates
language: system
pass_filenames: false
- id: eslint
name: ESLint (JS)
entry: node node_modules/eslint/bin/eslint.js
language: system
files: ^static/js/.*\.js$
- id: stylelint
name: Stylelint (CSS)
entry: node node_modules/stylelint/bin/stylelint.mjs
language: system
files: \.css$