PUsh all v14 Stuff
Release Creation / build (release) Failing after 30s

This commit is contained in:
2026-07-21 21:45:06 +02:00
parent 6ae99aadb0
commit f49d9e2cf4
39 changed files with 529 additions and 218 deletions
+42 -113
View File
@@ -1,125 +1,54 @@
# Agents pour le système JDR Ecryme (FoundryVTT)
# Ecryme (FoundryVTT) — agent notes
Ce fichier documente les commandes et workflows pour les agents (automatisations, scripts, outils externes) utilisés dans le développement et la maintenance du système Ecryme pour FoundryVTT.
**This is a FoundryVTT Game System** (not a module), id `fvtt-ecryme`. Compatible with Foundry v13v14. Requires `babele` and `lib-wrapper`.
## Commandes de développement
## Quick commands
### Linting et validation
```bash
# Vérification du code TypeScript
npm run lint
| Command | What |
|---------|------|
| `npm run build` | Compile `styles/ecryme.less``css/ecryme.css` via Gulp |
| `npm run watch` | Watch `styles/**/*.less` and rebuild |
# Vérification des types
npm run typecheck
No other npm scripts exist. **No tests, no linter, no typechecker, no TypeScript.** Pure JS ES modules, no bundling.
# Construction du projet
npm run build
## Project structure
```
modules/ # JS source (loaded directly by Foundry, no build step)
ecryme-main.js # Entry point — registers documents, sheets, hooks, templates
actors/ # Actor document + sheet classes (pc, npc, annency)
items/ # Item document + sheet classes (equipment, weapon, trait, spec, maneuver)
models/ # Foundry DataModels (extends TypeDataModel) — schema definitions
dialogs/ # Roll/confrontation dialog classes
app/ # Combat, commands, hotbar, summary app
common/ # Config constants + utility helpers (798-line utility)
templates/ # Handlebars sheets (actors/, items/, chat/, dialogs/)
styles/ # LESS source files (ecryme.less imports all partials)
lang/ # fr.json, en.json localization
packs/ # LevelDB compendium packs (specialisation, equipment, traits, scenes, maneuvers, help)
translated/fr/ # Babele translation JSON files for compendium content
images/ # Assets, icons, UI
css/ # Compiled CSS output (committed despite being in .gitignore)
```
### Tests
```bash
# Exécution des tests unitaires
npm test
## Architecture
# Exécution des tests avec couverture
npm run test:coverage
```
- **App v1 sheets** (`foundry.appv1.sheets.ActorSheet`/`ItemSheet`), not ApplicationV2
- **DataModels** replace the deprecated `template.json` (kept as `template.json.SAVED`)
- Actor types: `pc`, `npc`, `annency`
- Item types: `equipment`, `weapon`, `trait`, `specialization`, `maneuver`
- ES module imports use relative paths with `.js` extension
- Custom combat class extends `Combat` with its own initiative formula
- Socket enabled (`"socket": true` in `system.json`)
### Déploiement
```bash
# Construction pour la production
npm run build:prod
## Conventions (verified from codebase)
# Génération du package pour FoundryVTT
npm run package
```
- **JS files**: kebab-case (`ecryme-actor.js`)
- **Classes**: PascalCase (`EcrymeActor`)
- **Templates**: kebab-case `.hbs` (`actor-sheet.hbs`)
- **Barrel files**: `_module.js`
- **Hooks**: init → register classes/sheets/templates; ready → welcome msg/scene import; babele.init → register translation dir
## Workflows recommandés
## Release
### Avant de soumettre une PR
1. Exécuter les tests unitaires
2. Vérifier le linting (`npm run lint`)
3. Vérifier les types (`npm run typecheck`)
4. Construire le projet (`npm run build`)
5. Tester manuellement dans FoundryVTT avec les scénarios de test fournis dans `/test-scenarios/`
### Pour ajouter une nouvelle fonctionnalité
1. Créer une branche `feature/<nom-de-la-fonctionnalité>`
2. Ajouter les tests dans `/tests/`
3. Implémenter la fonctionnalité
4. Mettre à jour la documentation dans `/docs/` si nécessaire
5. Soumettre une PR avec une description claire des changements
## Structure du projet
```
/
├── src/ # Code source principal
│ ├── module/ # Définition du module FoundryVTT
│ ├── systems/ # Systèmes de règles spécifiques à Ecryme
│ ├── actors/ # Logique des acteurs (PJs, PNJs, créatures)
│ ├── items/ # Logique des objets (armes, sorts, équipements)
│ └── utils/ # Utilitaires partagés
├── tests/ # Tests unitaires et d'intégration
├── docs/ # Documentation technique et utilisateur
├── templates/ # Templates Handlebar pour les feuilles de personnage
└── test-scenarios/ # Scénarios de test pour FoundryVTT
```
## Conventions de codage
- **TypeScript strict** : Toujours utiliser les types les plus précis possibles
- **Noms de fichiers** :
- PascalCase pour les classes (`CharacterSheet.ts`)
- kebab-case pour les templates (`character-sheet.hbs`)
- camelCase pour les utilitaires (`diceRoller.ts`)
- **Tests** :
- Un fichier de test par fichier source (`characterSheet.test.ts`)
- Couverture minimale de 80% requise pour les PR
## Outils spécifiques à FoundryVTT
### Génération des templates
```bash
# Recompiler les templates Handlebar après modification
npm run build:templates
```
### Validation des données
```bash
# Valider la structure des données contre le schéma
npm run validate:schema
```
### Déploiement pour test local
```bash
# Lier le module en développement à FoundryVTT (nécessite le module "Module Developer")
npx foundryvtt-link
```
## Dépannage
### Problèmes courants
1. **Les changements ne s'affichent pas dans Foundry** :
- Vérifier que le module est bien lié (`npm run link`)
- Redémarrer FoundryVTT
- Vider le cache du navigateur (Ctrl+F5)
2. **Erreurs de type dans les templates** :
- Exécuter `npm run validate:templates`
- Vérifier les annotations JSDoc dans les fichiers `.ts`
3. **Problèmes de performance** :
- Utiliser le profiler de Foundry (F12 > Performance)
- Vérifier les boucles dans les templates Handlebar
## Ressources utiles
- [Documentation FoundryVTT](https://foundryvtt.com/article/api/)
- [Guide des systèmes personnalisés](https://foundryvtt.com/article/system-development/)
- [Référence Handlebar](https://handlebarsjs.com/guide/)
- [TypeScript pour Foundry](https://github.com/League-of-Foundry-Developers/foundry-vtt-types)
## Contribution
Les contributions sont les bienvenues ! Veuillez :
1. Ouvrir une issue pour discuter des changements majeurs
2. Suivre les conventions de codage ci-dessus
3. Inclure des tests pour les nouvelles fonctionnalités
4. Mettre à jour la documentation si nécessaire
Gitea CI (`.gitea/workflows/release.yaml`) triggers on published release. Zips the source tree directly — JS is used as-is, no build step for JS. CSS must be pre-compiled before release.