Compare commits

...

2 Commits

Author SHA1 Message Date
uberwald 6ae99aadb0 Fix v14 migration issues
Release Creation / build (release) Successful in 45s
2026-05-25 23:08:58 +02:00
uberwald c1a9bfbb04 Corrections CSS diverses 2026-05-10 18:37:58 +02:00
50 changed files with 616 additions and 169 deletions
+125
View File
@@ -0,0 +1,125 @@
# Agents pour le système JDR Ecryme (FoundryVTT)
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.
## Commandes de développement
### Linting et validation
```bash
# Vérification du code TypeScript
npm run lint
# Vérification des types
npm run typecheck
# Construction du projet
npm run build
```
### Tests
```bash
# Exécution des tests unitaires
npm test
# Exécution des tests avec couverture
npm run test:coverage
```
### Déploiement
```bash
# Construction pour la production
npm run build:prod
# Génération du package pour FoundryVTT
npm run package
```
## Workflows recommandés
### 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
+4 -6
View File
@@ -28,6 +28,7 @@ import { EcrymeItem } from "./items/ecryme-item.js";
import { EcrymeHotbar } from "./app/ecryme-hotbar.js" import { EcrymeHotbar } from "./app/ecryme-hotbar.js"
import { EcrymeCharacterSummary } from "./app/ecryme-summary-app.js" import { EcrymeCharacterSummary } from "./app/ecryme-summary-app.js"
import { ECRYME_CONFIG } from "./common/ecryme-config.js" import { ECRYME_CONFIG } from "./common/ecryme-config.js"
import * as models from "./models/_module.js"
/* -------------------------------------------- */ /* -------------------------------------------- */
/* Foundry VTT Initialization */ /* Foundry VTT Initialization */
@@ -36,10 +37,7 @@ import { ECRYME_CONFIG } from "./common/ecryme-config.js"
/************************************************************************************/ /************************************************************************************/
Hooks.once("init", async function () { Hooks.once("init", async function () {
console.log(`Initializing Ecryme RPG`); console.log(`Initializing Ecryme RPG System`);
// Import DataModels dynamically to avoid timing issues
const models = await import("./models/_module.js");
/* -------------------------------------------- */ /* -------------------------------------------- */
// preload handlebars templates // preload handlebars templates
@@ -166,11 +164,11 @@ Hooks.once("ready", function () {
}) })
/* -------------------------------------------- */ /* -------------------------------------------- */
Hooks.once('babele.init', (babele) => { Hooks.once("babele.init", (babele) => {
console.log("Initializing Babele translations")
babele.setSystemTranslationsDir("translated"); babele.setSystemTranslationsDir("translated");
}); });
/* -------------------------------------------- */ /* -------------------------------------------- */
/* Foundry VTT Initialization */ /* Foundry VTT Initialization */
/* -------------------------------------------- */ /* -------------------------------------------- */
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000303 MANIFEST-000379
+7 -7
View File
@@ -1,7 +1,7 @@
2026/04/01-22:22:33.307143 7f3054fed6c0 Recovering log #301 2026/05/25-23:08:24.585664 7fe4cbfff6c0 Recovering log #377
2026/04/01-22:22:33.317732 7f3054fed6c0 Delete type=3 #299 2026/05/25-23:08:24.596183 7fe4cbfff6c0 Delete type=3 #375
2026/04/01-22:22:33.317793 7f3054fed6c0 Delete type=0 #301 2026/05/25-23:08:24.596270 7fe4cbfff6c0 Delete type=0 #377
2026/04/01-22:25:20.279569 7f303effd6c0 Level-0 table #306: started 2026/05/25-23:08:42.305844 7fe4c9ffb6c0 Level-0 table #382: started
2026/04/01-22:25:20.279591 7f303effd6c0 Level-0 table #306: 0 bytes OK 2026/05/25-23:08:42.305858 7fe4c9ffb6c0 Level-0 table #382: 0 bytes OK
2026/04/01-22:25:20.285397 7f303effd6c0 Delete type=0 #304 2026/05/25-23:08:42.311644 7fe4c9ffb6c0 Delete type=0 #380
2026/04/01-22:25:20.301474 7f303effd6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end) 2026/05/25-23:08:42.324476 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
+7 -7
View File
@@ -1,7 +1,7 @@
2026/03/29-20:29:06.206172 7f4fbbfff6c0 Recovering log #297 2026/05/25-23:06:37.876581 7fe4cbfff6c0 Recovering log #373
2026/03/29-20:29:06.261102 7f4fbbfff6c0 Delete type=3 #295 2026/05/25-23:06:37.885990 7fe4cbfff6c0 Delete type=3 #371
2026/03/29-20:29:06.261170 7f4fbbfff6c0 Delete type=0 #297 2026/05/25-23:06:37.886037 7fe4cbfff6c0 Delete type=0 #373
2026/03/29-20:29:46.891306 7f4fb9fff6c0 Level-0 table #302: started 2026/05/25-23:07:52.694183 7fe4c9ffb6c0 Level-0 table #378: started
2026/03/29-20:29:46.891333 7f4fb9fff6c0 Level-0 table #302: 0 bytes OK 2026/05/25-23:07:52.694213 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
2026/03/29-20:29:46.898508 7f4fb9fff6c0 Delete type=0 #300 2026/05/25-23:07:52.700676 7fe4c9ffb6c0 Delete type=0 #376
2026/03/29-20:29:46.908209 7f4fb9fff6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end) 2026/05/25-23:07:52.700785 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000240 MANIFEST-000312
+8 -8
View File
@@ -1,8 +1,8 @@
2026/04/01-22:22:33.362867 7f303ffff6c0 Recovering log #238 2026/05/25-23:08:24.638383 7fe4cb7fe6c0 Recovering log #310
2026/04/01-22:22:33.372518 7f303ffff6c0 Delete type=3 #236 2026/05/25-23:08:24.648627 7fe4cb7fe6c0 Delete type=3 #308
2026/04/01-22:22:33.372575 7f303ffff6c0 Delete type=0 #238 2026/05/25-23:08:24.648688 7fe4cb7fe6c0 Delete type=0 #310
2026/04/01-22:25:20.317434 7f303effd6c0 Level-0 table #243: started 2026/05/25-23:08:42.324943 7fe4c9ffb6c0 Level-0 table #315: started
2026/04/01-22:25:20.317467 7f303effd6c0 Level-0 table #243: 0 bytes OK 2026/05/25-23:08:42.324976 7fe4c9ffb6c0 Level-0 table #315: 0 bytes OK
2026/04/01-22:25:20.323626 7f303effd6c0 Delete type=0 #241 2026/05/25-23:08:42.331359 7fe4c9ffb6c0 Delete type=0 #313
2026/04/01-22:25:20.329928 7f303effd6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2026/05/25-23:08:42.359806 7fe4c9ffb6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2026/04/01-22:25:20.329961 7f303effd6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2026/05/25-23:08:42.380057 7fe4c9ffb6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
+8 -8
View File
@@ -1,8 +1,8 @@
2026/03/29-20:29:06.471558 7f4fbbfff6c0 Recovering log #234 2026/05/25-23:06:37.927773 7fe4cb7fe6c0 Recovering log #306
2026/03/29-20:29:06.518113 7f4fbbfff6c0 Delete type=3 #232 2026/05/25-23:06:37.937509 7fe4cb7fe6c0 Delete type=3 #304
2026/03/29-20:29:06.518198 7f4fbbfff6c0 Delete type=0 #234 2026/05/25-23:06:37.937560 7fe4cb7fe6c0 Delete type=0 #306
2026/03/29-20:29:46.931946 7f4fb9fff6c0 Level-0 table #239: started 2026/05/25-23:07:52.707381 7fe4c9ffb6c0 Level-0 table #311: started
2026/03/29-20:29:46.931970 7f4fb9fff6c0 Level-0 table #239: 0 bytes OK 2026/05/25-23:07:52.707409 7fe4c9ffb6c0 Level-0 table #311: 0 bytes OK
2026/03/29-20:29:46.939018 7f4fb9fff6c0 Delete type=0 #237 2026/05/25-23:07:52.713201 7fe4c9ffb6c0 Delete type=0 #309
2026/03/29-20:29:46.939221 7f4fb9fff6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2026/05/25-23:07:52.733614 7fe4c9ffb6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
2026/03/29-20:29:46.939255 7f4fb9fff6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end) 2026/05/25-23:07:52.733638 7fe4c9ffb6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000303 MANIFEST-000377
+7 -7
View File
@@ -1,7 +1,7 @@
2026/04/01-22:22:33.346957 7f303f7fe6c0 Recovering log #301 2026/05/25-23:08:24.625469 7fe4cbfff6c0 Recovering log #375
2026/04/01-22:22:33.357630 7f303f7fe6c0 Delete type=3 #299 2026/05/25-23:08:24.635881 7fe4cbfff6c0 Delete type=3 #373
2026/04/01-22:22:33.357703 7f303f7fe6c0 Delete type=0 #301 2026/05/25-23:08:24.635933 7fe4cbfff6c0 Delete type=0 #375
2026/04/01-22:25:20.310663 7f303effd6c0 Level-0 table #306: started 2026/05/25-23:08:42.317961 7fe4c9ffb6c0 Level-0 table #380: started
2026/04/01-22:25:20.310684 7f303effd6c0 Level-0 table #306: 0 bytes OK 2026/05/25-23:08:42.317972 7fe4c9ffb6c0 Level-0 table #380: 0 bytes OK
2026/04/01-22:25:20.317275 7f303effd6c0 Delete type=0 #304 2026/05/25-23:08:42.324427 7fe4c9ffb6c0 Delete type=0 #378
2026/04/01-22:25:20.329915 7f303effd6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end) 2026/05/25-23:08:42.324891 7fe4c9ffb6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
+7 -7
View File
@@ -1,7 +1,7 @@
2026/03/29-20:29:06.396102 7f50089fe6c0 Recovering log #297 2026/05/25-23:06:37.915238 7fe4ca7fc6c0 Recovering log #371
2026/03/29-20:29:06.450000 7f50089fe6c0 Delete type=3 #295 2026/05/25-23:06:37.925308 7fe4ca7fc6c0 Delete type=3 #369
2026/03/29-20:29:06.454938 7f50089fe6c0 Delete type=0 #297 2026/05/25-23:06:37.925365 7fe4ca7fc6c0 Delete type=0 #371
2026/03/29-20:29:46.925606 7f4fb9fff6c0 Level-0 table #302: started 2026/05/25-23:07:52.700870 7fe4c9ffb6c0 Level-0 table #376: started
2026/03/29-20:29:46.925637 7f4fb9fff6c0 Level-0 table #302: 0 bytes OK 2026/05/25-23:07:52.701331 7fe4c9ffb6c0 Level-0 table #376: 0 bytes OK
2026/03/29-20:29:46.931692 7f4fb9fff6c0 Delete type=0 #300 2026/05/25-23:07:52.707294 7fe4c9ffb6c0 Delete type=0 #374
2026/03/29-20:29:46.939210 7f4fb9fff6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end) 2026/05/25-23:07:52.733595 7fe4c9ffb6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000190 MANIFEST-000264
+8 -15
View File
@@ -1,15 +1,8 @@
2026/04/01-22:22:33.334622 7f3054fed6c0 Recovering log #187 2026/05/25-23:08:24.610750 7fe4ca7fc6c0 Recovering log #262
2026/04/01-22:22:33.344318 7f3054fed6c0 Delete type=3 #185 2026/05/25-23:08:24.621300 7fe4ca7fc6c0 Delete type=3 #260
2026/04/01-22:22:33.344375 7f3054fed6c0 Delete type=0 #187 2026/05/25-23:08:24.621336 7fe4ca7fc6c0 Delete type=0 #262
2026/04/01-22:25:20.285604 7f303effd6c0 Level-0 table #193: started 2026/05/25-23:08:42.311679 7fe4c9ffb6c0 Level-0 table #267: started
2026/04/01-22:25:20.288857 7f303effd6c0 Level-0 table #193: 1790 bytes OK 2026/05/25-23:08:42.311691 7fe4c9ffb6c0 Level-0 table #267: 0 bytes OK
2026/04/01-22:25:20.295385 7f303effd6c0 Delete type=0 #191 2026/05/25-23:08:42.317830 7fe4c9ffb6c0 Delete type=0 #265
2026/04/01-22:25:20.301484 7f303effd6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end) 2026/05/25-23:08:42.324483 7fe4c9ffb6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/04/01-22:25:20.301515 7f303effd6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 25 : 1 2026/05/25-23:08:42.324930 7fe4c9ffb6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/04/01-22:25:20.301522 7f303effd6c0 Compacting 1@1 + 1@2 files
2026/04/01-22:25:20.304593 7f303effd6c0 Generated table #194@1: 4 keys, 1790 bytes
2026/04/01-22:25:20.304612 7f303effd6c0 Compacted 1@1 + 1@2 files => 1790 bytes
2026/04/01-22:25:20.310413 7f303effd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/04/01-22:25:20.310505 7f303effd6c0 Delete type=2 #189
2026/04/01-22:25:20.310609 7f303effd6c0 Delete type=2 #193
2026/04/01-22:25:20.329887 7f303effd6c0 Manual compaction at level-1 from '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 25 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
+8 -15
View File
@@ -1,15 +1,8 @@
2026/03/29-20:29:06.332960 7f50091ff6c0 Recovering log #183 2026/05/25-23:06:37.900889 7fe4caffd6c0 Recovering log #258
2026/03/29-20:29:06.388262 7f50091ff6c0 Delete type=3 #181 2026/05/25-23:06:37.911257 7fe4caffd6c0 Delete type=3 #256
2026/03/29-20:29:06.388321 7f50091ff6c0 Delete type=0 #183 2026/05/25-23:06:37.911321 7fe4caffd6c0 Delete type=0 #258
2026/03/29-20:29:46.898664 7f4fb9fff6c0 Level-0 table #188: started 2026/05/25-23:07:52.688262 7fe4c9ffb6c0 Level-0 table #263: started
2026/03/29-20:29:46.901825 7f4fb9fff6c0 Level-0 table #188: 1776 bytes OK 2026/05/25-23:07:52.688293 7fe4c9ffb6c0 Level-0 table #263: 0 bytes OK
2026/03/29-20:29:46.907962 7f4fb9fff6c0 Delete type=0 #186 2026/05/25-23:07:52.694093 7fe4c9ffb6c0 Delete type=0 #261
2026/03/29-20:29:46.908219 7f4fb9fff6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end) 2026/05/25-23:07:52.700777 7fe4c9ffb6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/03/29-20:29:46.908247 7f4fb9fff6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 21 : 1 2026/05/25-23:07:52.700805 7fe4c9ffb6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/03/29-20:29:46.908252 7f4fb9fff6c0 Compacting 1@1 + 1@2 files
2026/03/29-20:29:46.911456 7f4fb9fff6c0 Generated table #189@1: 4 keys, 1776 bytes
2026/03/29-20:29:46.911490 7f4fb9fff6c0 Compacted 1@1 + 1@2 files => 1776 bytes
2026/03/29-20:29:46.917990 7f4fb9fff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/03/29-20:29:46.918113 7f4fb9fff6c0 Delete type=2 #90
2026/03/29-20:29:46.918250 7f4fb9fff6c0 Delete type=2 #188
2026/03/29-20:29:46.939181 7f4fb9fff6c0 Manual compaction at level-1 from '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 21 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000303 MANIFEST-000375
+7 -7
View File
@@ -1,7 +1,7 @@
2026/04/01-22:22:33.292826 7f303f7fe6c0 Recovering log #301 2026/05/25-23:08:24.571661 7fe4cb7fe6c0 Recovering log #373
2026/04/01-22:22:33.303240 7f303f7fe6c0 Delete type=3 #299 2026/05/25-23:08:24.583242 7fe4cb7fe6c0 Delete type=3 #371
2026/04/01-22:22:33.303305 7f303f7fe6c0 Delete type=0 #301 2026/05/25-23:08:24.583309 7fe4cb7fe6c0 Delete type=0 #373
2026/04/01-22:25:20.273517 7f303effd6c0 Level-0 table #306: started 2026/05/25-23:08:42.299898 7fe4c9ffb6c0 Level-0 table #378: started
2026/04/01-22:25:20.273562 7f303effd6c0 Level-0 table #306: 0 bytes OK 2026/05/25-23:08:42.299954 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
2026/04/01-22:25:20.279479 7f303effd6c0 Delete type=0 #304 2026/05/25-23:08:42.305788 7fe4c9ffb6c0 Delete type=0 #376
2026/04/01-22:25:20.301462 7f303effd6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end) 2026/05/25-23:08:42.324469 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
+7 -7
View File
@@ -1,7 +1,7 @@
2026/03/29-20:29:06.137584 7f50089fe6c0 Recovering log #297 2026/05/25-23:06:37.865486 7fe4cbfff6c0 Recovering log #369
2026/03/29-20:29:06.194124 7f50089fe6c0 Delete type=3 #295 2026/05/25-23:06:37.874724 7fe4cbfff6c0 Delete type=3 #367
2026/03/29-20:29:06.194207 7f50089fe6c0 Delete type=0 #297 2026/05/25-23:06:37.874744 7fe4cbfff6c0 Delete type=0 #369
2026/03/29-20:29:46.885007 7f4fb9fff6c0 Level-0 table #302: started 2026/05/25-23:07:52.682178 7fe4c9ffb6c0 Level-0 table #374: started
2026/03/29-20:29:46.885035 7f4fb9fff6c0 Level-0 table #302: 0 bytes OK 2026/05/25-23:07:52.682203 7fe4c9ffb6c0 Level-0 table #374: 0 bytes OK
2026/03/29-20:29:46.891162 7f4fb9fff6c0 Delete type=0 #300 2026/05/25-23:07:52.688174 7fe4c9ffb6c0 Delete type=0 #372
2026/03/29-20:29:46.908195 7f4fb9fff6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end) 2026/05/25-23:07:52.700766 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
+1
View File
@@ -0,0 +1 @@
MANIFEST-000002
View File
+1
View File
@@ -0,0 +1 @@
2026/05/06-14:41:23.043596 7f0aceffd6c0 Delete type=3 #1
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000303 MANIFEST-000379
+7 -7
View File
@@ -1,7 +1,7 @@
2026/04/01-22:22:33.321647 7f303f7fe6c0 Recovering log #301 2026/05/25-23:08:24.598700 7fe4caffd6c0 Recovering log #377
2026/04/01-22:22:33.331315 7f303f7fe6c0 Delete type=3 #299 2026/05/25-23:08:24.608566 7fe4caffd6c0 Delete type=3 #375
2026/04/01-22:22:33.331375 7f303f7fe6c0 Delete type=0 #301 2026/05/25-23:08:24.608604 7fe4caffd6c0 Delete type=0 #377
2026/04/01-22:25:20.295489 7f303effd6c0 Level-0 table #306: started 2026/05/25-23:08:42.331497 7fe4c9ffb6c0 Level-0 table #382: started
2026/04/01-22:25:20.295522 7f303effd6c0 Level-0 table #306: 0 bytes OK 2026/05/25-23:08:42.331525 7fe4c9ffb6c0 Level-0 table #382: 0 bytes OK
2026/04/01-22:25:20.301347 7f303effd6c0 Delete type=0 #304 2026/05/25-23:08:42.338312 7fe4c9ffb6c0 Delete type=0 #380
2026/04/01-22:25:20.301502 7f303effd6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end) 2026/05/25-23:08:42.359828 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
+7 -7
View File
@@ -1,7 +1,7 @@
2026/03/29-20:29:06.273975 7f4fbb7fe6c0 Recovering log #297 2026/05/25-23:06:37.888245 7fe4cb7fe6c0 Recovering log #373
2026/03/29-20:29:06.324534 7f4fbb7fe6c0 Delete type=3 #295 2026/05/25-23:06:37.898117 7fe4cb7fe6c0 Delete type=3 #371
2026/03/29-20:29:06.324646 7f4fbb7fe6c0 Delete type=0 #297 2026/05/25-23:06:37.898159 7fe4cb7fe6c0 Delete type=0 #373
2026/03/29-20:29:46.878666 7f4fb9fff6c0 Level-0 table #302: started 2026/05/25-23:07:52.675131 7fe4c9ffb6c0 Level-0 table #378: started
2026/03/29-20:29:46.878739 7f4fb9fff6c0 Level-0 table #302: 0 bytes OK 2026/05/25-23:07:52.675198 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
2026/03/29-20:29:46.884892 7f4fb9fff6c0 Delete type=0 #300 2026/05/25-23:07:52.682088 7fe4c9ffb6c0 Delete type=0 #376
2026/03/29-20:29:46.908174 7f4fb9fff6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end) 2026/05/25-23:07:52.700749 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
View File
+1
View File
@@ -0,0 +1 @@
MANIFEST-000002
View File
+1
View File
@@ -0,0 +1 @@
2026/05/06-14:41:23.014318 7f0acffff6c0 Delete type=3 #1
Binary file not shown.
+1 -2
View File
@@ -73,8 +73,7 @@ button,
background: rgba(0, 0, 0, 0.75); background: rgba(0, 0, 0, 0.75);
} }
.window-app.sheet .window-content, .fvtt-ecryme .window-content {
.application.sheet .window-content {
margin: 0; margin: 0;
padding: 0; padding: 0;
overflow: hidden auto; overflow: hidden auto;
+15 -20
View File
@@ -1,15 +1,23 @@
// ============================================================ // ============================================================
// Sheet styles (actor + item, AppV1 + AppV2) // Sheet styles (actor + item, AppV1 + AppV2)
// Scoped to .fvtt-ecryme to avoid overriding core Foundry UI
// ============================================================ // ============================================================
// Sheet header background // Sheet window-content + header background
.window-app.sheet .window-content .sheet-header, .fvtt-ecryme .window-content,
.application.sheet .window-content .sheet-header { .fvtt-ecryme .window-content .sheet-body {
font-size: 0.8rem;
background: @background-image;
color: @color-text-dark;
}
.fvtt-ecryme .window-content .sheet-header {
color: @color-text-dark; color: @color-text-dark;
background: @background-image; background: @background-image;
} }
// Input / select base (light background) // Inputs & selects inside Ecryme sheets
.fvtt-ecryme .window-content {
input[type="text"], input[type="text"],
input[type="number"], input[type="number"],
select[type="text"] { select[type="text"] {
@@ -22,9 +30,6 @@ select {
color: @color-input-text; color: @color-input-text;
} }
// Sheet content inputs & selects — dark text
.window-app.sheet .window-content,
.application.sheet .window-content {
.sheet-header, .sheet-header,
.sheet-body { .sheet-body {
select[type="text"], select[type="text"],
@@ -53,16 +58,6 @@ select {
} }
} }
// Sheet body + window-content background
.window-app .window-content,
.window-app.sheet .window-content .sheet-body,
.application .window-content,
.application.sheet .window-content .sheet-body {
font-size: 0.8rem;
background: @background-image;
color: @color-text-dark;
}
section.sheet-body { section.sheet-body {
padding: 0.25rem 0.5rem; padding: 0.25rem 0.5rem;
@@ -73,7 +68,7 @@ section.sheet-body {
} }
} }
.sheet { .fvtt-ecryme {
header.sheet-header { header.sheet-header {
.profile-img { .profile-img {
object-fit: cover; object-fit: cover;
@@ -135,8 +130,8 @@ nav.sheet-tabs {
} }
} }
// Tooltip // Tooltip (scoped to Ecryme sheets)
.window-app.sheet .window-content { .fvtt-ecryme .window-content {
.tooltip:hover .tooltiptext { .tooltip:hover .tooltiptext {
top: 2rem; top: 2rem;
left: 2rem; left: 2rem;
+20
View File
@@ -103,6 +103,20 @@
"minimum": "13", "minimum": "13",
"verified": "14" "verified": "14"
}, },
"documentTypes": {
"Actor": {
"pc": {"htmlFields": ["description", "gmnotes"]},
"npc": {"htmlFields": ["description", "gmnotes"]},
"annency": {"htmlFields": ["description", "enhancements"]}
},
"Item": {
"equipment": {"htmlFields": ["description"]},
"trait": {"htmlFields": ["description"]},
"weapon": {"htmlFields": ["description"]},
"specialization": {"htmlFields": ["description"]},
"maneuver": {"htmlFields": ["description"]}
}
},
"id": "fvtt-ecryme", "id": "fvtt-ecryme",
"primaryTokenAttribute": "secondary.health", "primaryTokenAttribute": "secondary.health",
"secondaryTokenAttribute": "secondary.delirium", "secondaryTokenAttribute": "secondary.delirium",
@@ -116,7 +130,13 @@
"id": "babele", "id": "babele",
"type": "module", "type": "module",
"compatibility": {} "compatibility": {}
},
{
"id": "lib-wrapper",
"type": "module",
"compatibility": {}
} }
] ]
}, },
"title": "Ecryme, le Jeu de Rôles", "title": "Ecryme, le Jeu de Rôles",
+331
View File
@@ -0,0 +1,331 @@
{
"_comment": "DEPRECATED - This template.json is kept for reference only. The system now uses DataModels (see modules/models/). Do not edit this file.",
"Actor": {
"types": [
"pc","annency", "npc"
],
"templates": {
"biodata": {
"biodata": {
"age": "",
"size": "",
"lieunaissance": "",
"nationalite": "",
"profession": "",
"residence": "",
"milieusocial": "",
"poids": "",
"cheveux": "",
"sexe": "",
"yeux": "",
"enfance": "",
"description": "",
"gmnotes": ""
}
},
"core": {
"subactors": [],
"equipmentfree": "",
"skills": {
"physical": {
"name": "ECRY.ui.physical",
"pnjvalue": 0,
"skilllist": {
"athletics": {
"key": "athletics",
"name": "ECRY.ui.athletics",
"max": 0,
"value": 0
},
"driving": {
"key": "driving",
"name": "ECRY.ui.driving",
"max": 0,
"value": 0
},
"fencing": {
"key": "fencing",
"name": "ECRY.ui.fencing",
"max": 0,
"value": 0
},
"brawling": {
"key": "brawling",
"name": "ECRY.ui.brawling",
"max": 0,
"value": 0
},
"shooting": {
"key": "shooting",
"name": "ECRY.ui.shooting",
"max": 0,
"value": 0
}
}
},
"mental": {
"name": "ECRY.ui.mental",
"pnjvalue": 0,
"skilllist": {
"anthropomecanology": {
"key": "anthropomecanology",
"name": "ECRY.ui.anthropomecanology",
"value": 0,
"max": 10
},
"ecrymology": {
"key": "ecrymology",
"name": "ECRY.ui.ecrymology",
"value": 0,
"max": 10
},
"traumatology": {
"key": "traumatology",
"name": "ECRY.ui.traumatology",
"value": 0,
"max": 10
},
"traversology": {
"key": "traversology",
"name": "ECRY.ui.traversology",
"value": 0,
"max": 10
},
"urbatechnology": {
"key": "urbatechnology",
"name": "ECRY.ui.urbatechnology",
"value": 0,
"max": 10
}
}
},
"social": {
"name": "ECRY.ui.social",
"pnjvalue": 0,
"skilllist": {
"quibbling": {
"key": "quibbling",
"name": "ECRY.ui.quibbling",
"value": 0,
"max": 10
},
"creativity": {
"key": "creativity",
"name": "ECRY.ui.creativity",
"value": 0,
"max": 10
},
"loquacity": {
"key": "loquacity",
"name": "ECRY.ui.loquacity",
"value": 0,
"max": 10
},
"guile": {
"key": "guile",
"name": "ECRY.ui.guile",
"value": 0,
"max": 10
},
"performance": {
"key": "performance",
"name": "ECRY.ui.performance",
"value": 0,
"max": 10
}
}
}
},
"impacts": {
"physical": {
"superficial": 0,
"light": 0,
"serious": 0,
"major": 0
},
"mental": {
"superficial": 0,
"light": 0,
"serious": 0,
"major": 0
},
"social": {
"superficial": 0,
"light": 0,
"serious": 0,
"major": 0
}
},
"cephaly": {
"name": "ECRY.ui.cephaly",
"skilllist": {
"elegy": {
"name": "ECRY.ui.elegy",
"value": 0,
"max": 10
},
"entelechy": {
"name": "ECRY.ui.entelechy",
"value": 0,
"max": 10
},
"mekany": {
"name": "ECRY.ui.mekany",
"value": 0,
"max": 10
},
"psyche": {
"name": "ECRY.ui.psyche",
"value": 0,
"max": 10
},
"scoria": {
"name": "ECRY.ui.scoria",
"value": 0,
"max": 10
}
}
},
"internals": {
"confrontbonus": 0
}
},
"npccore": {
"npctype": "",
"description": ""
},
"annency": {
"base": {
"iscollective": false,
"ismultiple": false,
"characters": [],
"location": {"1": "", "2": "", "3":"", "4":"", "5":"" },
"description": "",
"enhancements": ""
},
"boheme": {
"name": "",
"ideals": "",
"politic": "",
"description": ""
}
}
},
"annency": {
"templates": [
"annency"
]
},
"npc": {
"templates": [
"biodata",
"core"
]
},
"pc": {
"templates": [
"biodata",
"core"
]
}
},
"Item": {
"types": [
"equipment",
"trait",
"weapon",
"specialization",
"maneuver"
],
"templates": {
"common": {
"description": ""
},
"equipement": {
"weight": 0,
"cost": 0,
"costunit": ""
}
},
"maneuver": {
"templates": [
"common"
]
},
"confrontation": {
"templates": [
"common"
],
"attackerId": "",
"defenserId": "",
"rolllist": [],
"bonusexecution": 0,
"bonuspreservation": 0
},
"equipment": {
"templates": [
"common",
"equipement"
],
"quantity": 1,
"weight": 0
},
"trait": {
"templates": [
"common"
],
"traitype": "normal",
"level": 1
},
"weapon": {
"templates": [
"common",
"equipement"
],
"weapontype": "melee",
"effect": 0
},
"specialization": {
"bonus": 2,
"templates": [
"common"
],
"skillkey": ""
},
"scar": {
"templates": [
"common"
],
"skillcategory": [
"physical",
"mental",
"social",
"cephalie"
],
"scarLevel": 1
},
"annency": {
"templates": [
"common"
],
"collective": false,
"multiple": false,
"improvements": ""
},
"boheme": {
"templates": [
"common"
],
"ideals": "",
"political": ""
},
"contact": {
"templates": [
"common"
],
"attitude": "neutral",
"organization": "",
"location": ""
}
}
}
+11 -22
View File
@@ -1,31 +1,19 @@
<div class="chat-message-header"> <div class="chat-message-header">
<img class="actor-icon" src="systems/fvtt-ecryme/images/icons/logo-ecryme.webp" alt="Écryme" /> <img
class="actor-icon"
src="systems/fvtt-ecryme/images/icons/logo-ecryme.webp"
alt="Écryme"
/>
<h4 class="chat-actor-name">Écryme RPG</h4> <h4 class="chat-actor-name">Écryme RPG</h4>
</div> </div>
<div class="ecryme-chat-body"> <div class="ecryme-chat-body">
<h3 class="welcome-message-h3">⚙ Bonjour à tous !</h3> <h3 class="welcome-message-h3">⚙ Bonjour à tous !</h3>
<div class="welcome-section">
👋 Juste un petit message pour vous informer que :
<br />
<strong>⚠️ Le nouveau financement participatif pour la prochaine extension
d'Écryme, LES SECRETS DE L'ÉCRYME ouvre le 21 octobre !</strong>
</div>
<div class="welcome-section">
⚠️ Suivez la page de pré-lancement ici pour être sûr de ne pas manquer le
lancement :<br />
<a href="https://shorturl.at/qDjg7">https://shorturl.at/qDjg7</a>
</div>
<hr />
<div class="welcome-section"> <div class="welcome-section">
Nous avons aussi un nouveau Discord pour ceux ou celles qui souhaiteraient Nous avons aussi un nouveau Discord pour ceux ou celles qui souhaiteraient
participer plus activement à la communauté des jeux d'Open Sesame Games, avec participer plus activement à la communauté des jeux d'Open Sesame Games,
un espace dédié aux écrymiens !<br /> avec un espace dédié aux écrymiens !<br />
Nouveaux joueurs comme vétérans sont les bienvenus, n'hésitez pas à passer Nouveaux joueurs comme vétérans sont les bienvenus, n'hésitez pas à passer
pour papoter, profiter de nos ressources, ou suivre les nouvelles d'OSG plus pour papoter, profiter de nos ressources, ou suivre les nouvelles d'OSG plus
directement.<br /> directement.<br />
@@ -35,13 +23,14 @@
<div class="welcome-section"> <div class="welcome-section">
Ce système vous est proposé par <strong>Open Sesame Games</strong>.<br /> Ce système vous est proposé par <strong>Open Sesame Games</strong>.<br />
Vous trouverez de l'aide dans Vous trouverez de l'aide dans
@UUID[Compendium.fvtt-ecryme.help.JournalEntry.wooTFYjEwh83FwgT]{Aide pour Écryme}<br /> @UUID[Compendium.fvtt-ecryme.help.JournalEntry.wooTFYjEwh83FwgT]{Aide pour
Écryme}<br />
ainsi que sur le Discord de Foundry FR :<br /> ainsi que sur le Discord de Foundry FR :<br />
<a href="https://discord.gg/pPSDNJk">Discord Foundry FR</a> <a href="https://discord.gg/pPSDNJk">Discord Foundry FR</a>
</div> </div>
<div class="welcome-footer"> <div class="welcome-footer">
⚙ Merci pour votre attention et à très bientôt ! — L'équipe Open Sesame Games ⚙ Merci pour votre attention et à très bientôt ! — L'équipe Open Sesame
Games
</div> </div>
</div> </div>