This commit is contained in:
@@ -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 v13–v14. 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.
|
||||
|
||||
Reference in New Issue
Block a user