diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..4b71fd7 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,73 @@ +# AGENTS.md — mgt2-compendium-amiral-denisov + +## First read + +- `.github/copilot-instructions.md` — packs, icons, module.json conventions (this file builds on it, don't repeat it) + +## No package manager / no build + +There is **no** `package.json`, no lockfile, no bundler. JavaScript is plain ESM loaded directly by FoundryVTT. Do not run `npm install` or any build command. + +## Commands + +5 chat commands registered at runtime (not declared in `module.json`): + +| Command | Entrypoint | Dialog | +|---|---|---| +| `/commerce` | `scripts/commerce.js` | `CommerceDialog` (3 tabs) | +| `/pnj` | `scripts/npc.js` | `NpcDialog` (4 tabs) | +| `/rencontre` | `scripts/npc.js` | same dialog (tab 2) | +| `/mission` | `scripts/npc.js` | same dialog (tab 3) | +| `/sector` | `scripts/sector.js` | `SectorMapApp` (IFRAME Traveller Map, clics→chat) | +| `/subsector` | `scripts/sector.js` | `SectorMapApp` (IFRAME) | + +Commands are registered via `ChatLogV2.CHAT_COMMANDS` — not Hooks.on("chatMessage") as the copilot-instructions say (that file is stale). See `commerce.js:15` and `npc.js:15` for the actual pattern. + +## Framework quirks + +- **ApplicationV2** + `HandlebarsApplicationMixin` for all dialogs. +- Foundry v13/v14 dual code paths: some hooks must handle both jQuery (v13) and DOM (v14) APIs. +- Dice rolls: `await new Roll(formula).evaluate()` — always async. +- Skill FQN format for `game.i18n`: e.g. `pilot.spacecraft`, `electronics.computers`, `gunner.turret`. + +## Runtime systems (run at `ready` hook, GM only) + +1. **Migration** (`mgt2eMigration.js`): converts legacy item types to mgt2e (armor→armour, equipment→item/augment, computer→hardware, etc.). Tracked via `game.settings` version flag. Forced re-run requires deleting the setting. + +2. **NPC RollTable sync** (`npcRollTableSync.js`): writes D66 tables from `scripts/data/npcTables.js` into the `tables-pnj` compendium pack. Checksums to avoid redundant writes. + +## Testing + +```sh +# standalone, no npm needed — install jest globally or use npx +npx jest scripts/tests/travellerNpcGenerator.test.js +``` + +- Single file, 1096 lines, hand-rolled FoundryVTT mocks. +- Covers: utilities, lookups, validation, characteristic/skill generation, skill conversion, full NPC gen, ModuleCache, errors, config validation. +- No CI test step — you must run manually. +- No Jest config file — relies on defaults. + +## Versioning + +- `module.json` → `"version"` is the single source of truth. +- Git tag format: `v1.3.0` (CI strips `v`). +- No changelog file. + +## CI/CD (Gitea) + +- Only triggers on **`release: [published]`** — not on push/PR. +- Builds a zip archive of `module.json + assets/ + packs/ + scripts/ + styles/ + templates/` and uploads to the release. +- No test step in CI. + +## Deprecated packs (still on disk, NOT in module.json) + +- `packs/arme/` → superseded by `armes` +- `packs/carriere/` → superseded by `carrieres` +- `packs/talent-psy/` → superseded by `talents-psioniques` + +Do not re-add them to `module.json`. They remain for historical data recovery only. + +## All content is in French + +Labels, comments, commit messages, UI strings, icon file names, rule references — everything. Check French naming before searching/grepping. diff --git a/module.json b/module.json index 84c6673..7d599ae 100644 --- a/module.json +++ b/module.json @@ -11,6 +11,7 @@ "esmodules": [ "scripts/commerce.js", "scripts/npc.js", + "scripts/sector.js", "scripts/utils/travellerNpcUtils.js", "scripts/data/travellerNpcGenerator.js", "scripts/travellerNpcGenerator.js", diff --git a/packs/armes/000086.log b/packs/armes/000101.log similarity index 100% rename from packs/armes/000086.log rename to packs/armes/000101.log diff --git a/packs/armes/CURRENT b/packs/armes/CURRENT index bdbe58e..d7ae20e 100644 --- a/packs/armes/CURRENT +++ b/packs/armes/CURRENT @@ -1 +1 @@ -MANIFEST-000084 +MANIFEST-000100 diff --git a/packs/armes/LOG b/packs/armes/LOG index a5f9a6d..04a360d 100644 --- a/packs/armes/LOG +++ b/packs/armes/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.414164 7f3e6f7fe6c0 Recovering log #82 -2026/05/27-23:11:58.424222 7f3e6f7fe6c0 Delete type=3 #80 -2026/05/27-23:11:58.424274 7f3e6f7fe6c0 Delete type=0 #82 -2026/05/28-01:07:03.306861 7f3e6effd6c0 Level-0 table #87: started -2026/05/28-01:07:03.306872 7f3e6effd6c0 Level-0 table #87: 0 bytes OK -2026/05/28-01:07:03.314015 7f3e6effd6c0 Delete type=0 #85 -2026/05/28-01:07:03.314175 7f3e6effd6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.314198 7f3e6effd6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.863670 7f52c63fe6c0 Recovering log #98 +2026/06/01-22:42:05.873307 7f52c63fe6c0 Delete type=3 #96 +2026/06/01-22:42:05.873357 7f52c63fe6c0 Delete type=0 #98 diff --git a/packs/armes/LOG.old b/packs/armes/LOG.old index f6bb342..94d90f6 100644 --- a/packs/armes/LOG.old +++ b/packs/armes/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.639035 7f3e6f7fe6c0 Recovering log #77 -2026/05/27-14:31:25.648169 7f3e6f7fe6c0 Delete type=3 #75 -2026/05/27-14:31:25.648196 7f3e6f7fe6c0 Delete type=0 #77 -2026/05/27-14:33:21.786747 7f3e6effd6c0 Level-0 table #83: started -2026/05/27-14:33:21.786766 7f3e6effd6c0 Level-0 table #83: 0 bytes OK -2026/05/27-14:33:21.793932 7f3e6effd6c0 Delete type=0 #81 -2026/05/27-14:33:21.800554 7f3e6effd6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.800579 7f3e6effd6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.535828 7f52c6bff6c0 Recovering log #94 +2026/06/01-08:35:53.546637 7f52c6bff6c0 Delete type=3 #92 +2026/06/01-08:35:53.546677 7f52c6bff6c0 Delete type=0 #94 +2026/06/01-08:51:10.470757 7f52c4bfb6c0 Level-0 table #99: started +2026/06/01-08:51:10.470772 7f52c4bfb6c0 Level-0 table #99: 0 bytes OK +2026/06/01-08:51:10.476934 7f52c4bfb6c0 Delete type=0 #97 +2026/06/01-08:51:10.484526 7f52c4bfb6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.491484 7f52c4bfb6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end) diff --git a/packs/armes/MANIFEST-000084 b/packs/armes/MANIFEST-000100 similarity index 62% rename from packs/armes/MANIFEST-000084 rename to packs/armes/MANIFEST-000100 index 6080192..2398c38 100644 Binary files a/packs/armes/MANIFEST-000084 and b/packs/armes/MANIFEST-000100 differ diff --git a/packs/armures/000185.log b/packs/armures/000200.log similarity index 100% rename from packs/armures/000185.log rename to packs/armures/000200.log diff --git a/packs/armures/CURRENT b/packs/armures/CURRENT index 0a6f13a..d0dd497 100644 --- a/packs/armures/CURRENT +++ b/packs/armures/CURRENT @@ -1 +1 @@ -MANIFEST-000183 +MANIFEST-000199 diff --git a/packs/armures/LOG b/packs/armures/LOG index e7b02a2..3e0f9fd 100644 --- a/packs/armures/LOG +++ b/packs/armures/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.290859 7f3e6f7fe6c0 Recovering log #181 -2026/05/27-23:11:58.307573 7f3e6f7fe6c0 Delete type=3 #179 -2026/05/27-23:11:58.307626 7f3e6f7fe6c0 Delete type=0 #181 -2026/05/28-01:07:03.251844 7f3e6effd6c0 Level-0 table #186: started -2026/05/28-01:07:03.251857 7f3e6effd6c0 Level-0 table #186: 0 bytes OK -2026/05/28-01:07:03.257706 7f3e6effd6c0 Delete type=0 #184 -2026/05/28-01:07:03.263618 7f3e6effd6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.275995 7f3e6effd6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.758175 7f52c53fc6c0 Recovering log #197 +2026/06/01-22:42:05.768018 7f52c53fc6c0 Delete type=3 #195 +2026/06/01-22:42:05.768044 7f52c53fc6c0 Delete type=0 #197 diff --git a/packs/armures/LOG.old b/packs/armures/LOG.old index 9f1055c..c2f2881 100644 --- a/packs/armures/LOG.old +++ b/packs/armures/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.531736 7f3ebd7ff6c0 Recovering log #176 -2026/05/27-14:31:25.541455 7f3ebd7ff6c0 Delete type=3 #174 -2026/05/27-14:31:25.541507 7f3ebd7ff6c0 Delete type=0 #176 -2026/05/27-14:33:21.722465 7f3e6effd6c0 Level-0 table #182: started -2026/05/27-14:33:21.722495 7f3e6effd6c0 Level-0 table #182: 0 bytes OK -2026/05/27-14:33:21.728923 7f3e6effd6c0 Delete type=0 #180 -2026/05/27-14:33:21.735721 7f3e6effd6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.735741 7f3e6effd6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.408086 7f52c63fe6c0 Recovering log #193 +2026/06/01-08:35:53.419231 7f52c63fe6c0 Delete type=3 #191 +2026/06/01-08:35:53.419290 7f52c63fe6c0 Delete type=0 #193 +2026/06/01-08:51:10.410303 7f52c4bfb6c0 Level-0 table #198: started +2026/06/01-08:51:10.410335 7f52c4bfb6c0 Level-0 table #198: 0 bytes OK +2026/06/01-08:51:10.417249 7f52c4bfb6c0 Delete type=0 #196 +2026/06/01-08:51:10.423845 7f52c4bfb6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.424110 7f52c4bfb6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end) diff --git a/packs/armures/MANIFEST-000183 b/packs/armures/MANIFEST-000199 similarity index 61% rename from packs/armures/MANIFEST-000183 rename to packs/armures/MANIFEST-000199 index a4e7a1a..d79bd83 100644 Binary files a/packs/armures/MANIFEST-000183 and b/packs/armures/MANIFEST-000199 differ diff --git a/packs/carrieres/000069.log b/packs/carrieres/000084.log similarity index 100% rename from packs/carrieres/000069.log rename to packs/carrieres/000084.log diff --git a/packs/carrieres/CURRENT b/packs/carrieres/CURRENT index 0094dac..011e5ad 100644 --- a/packs/carrieres/CURRENT +++ b/packs/carrieres/CURRENT @@ -1 +1 @@ -MANIFEST-000067 +MANIFEST-000083 diff --git a/packs/carrieres/LOG b/packs/carrieres/LOG index 9583f57..7289728 100644 --- a/packs/carrieres/LOG +++ b/packs/carrieres/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.442577 7f3e6f7fe6c0 Recovering log #65 -2026/05/27-23:11:58.452097 7f3e6f7fe6c0 Delete type=3 #63 -2026/05/27-23:11:58.452144 7f3e6f7fe6c0 Delete type=0 #65 -2026/05/28-01:07:03.320241 7f3e6effd6c0 Level-0 table #70: started -2026/05/28-01:07:03.320254 7f3e6effd6c0 Level-0 table #70: 0 bytes OK -2026/05/28-01:07:03.326319 7f3e6effd6c0 Delete type=0 #68 -2026/05/28-01:07:03.356879 7f3e6effd6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.381785 7f3e6effd6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.887236 7f52c63fe6c0 Recovering log #81 +2026/06/01-22:42:05.897193 7f52c63fe6c0 Delete type=3 #79 +2026/06/01-22:42:05.897236 7f52c63fe6c0 Delete type=0 #81 diff --git a/packs/carrieres/LOG.old b/packs/carrieres/LOG.old index c5af229..3779354 100644 --- a/packs/carrieres/LOG.old +++ b/packs/carrieres/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.663213 7f3e6f7fe6c0 Recovering log #60 -2026/05/27-14:31:25.672282 7f3e6f7fe6c0 Delete type=3 #58 -2026/05/27-14:31:25.672315 7f3e6f7fe6c0 Delete type=0 #60 -2026/05/27-14:33:21.794049 7f3e6effd6c0 Level-0 table #66: started -2026/05/27-14:33:21.794078 7f3e6effd6c0 Level-0 table #66: 0 bytes OK -2026/05/27-14:33:21.800426 7f3e6effd6c0 Delete type=0 #64 -2026/05/27-14:33:21.808266 7f3e6effd6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.831733 7f3e6effd6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.563616 7f52c6bff6c0 Recovering log #77 +2026/06/01-08:35:53.575271 7f52c6bff6c0 Delete type=3 #75 +2026/06/01-08:35:53.575318 7f52c6bff6c0 Delete type=0 #77 +2026/06/01-08:51:10.477043 7f52c4bfb6c0 Level-0 table #82: started +2026/06/01-08:51:10.477061 7f52c4bfb6c0 Level-0 table #82: 0 bytes OK +2026/06/01-08:51:10.484427 7f52c4bfb6c0 Delete type=0 #80 +2026/06/01-08:51:10.491475 7f52c4bfb6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.498513 7f52c4bfb6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end) diff --git a/packs/carrieres/MANIFEST-000067 b/packs/carrieres/MANIFEST-000083 similarity index 63% rename from packs/carrieres/MANIFEST-000067 rename to packs/carrieres/MANIFEST-000083 index b2bfc30..2daf3fd 100644 Binary files a/packs/carrieres/MANIFEST-000067 and b/packs/carrieres/MANIFEST-000083 differ diff --git a/packs/competences/000188.log b/packs/competences/000203.log similarity index 100% rename from packs/competences/000188.log rename to packs/competences/000203.log diff --git a/packs/competences/CURRENT b/packs/competences/CURRENT index 627283a..5639343 100644 --- a/packs/competences/CURRENT +++ b/packs/competences/CURRENT @@ -1 +1 @@ -MANIFEST-000186 +MANIFEST-000202 diff --git a/packs/competences/LOG b/packs/competences/LOG index a0c4193..4af6a96 100644 --- a/packs/competences/LOG +++ b/packs/competences/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.309946 7f3ebcffe6c0 Recovering log #184 -2026/05/27-23:11:58.320486 7f3ebcffe6c0 Delete type=3 #182 -2026/05/27-23:11:58.320525 7f3ebcffe6c0 Delete type=0 #184 -2026/05/28-01:07:03.257742 7f3e6effd6c0 Level-0 table #189: started -2026/05/28-01:07:03.257754 7f3e6effd6c0 Level-0 table #189: 0 bytes OK -2026/05/28-01:07:03.263574 7f3e6effd6c0 Delete type=0 #187 -2026/05/28-01:07:03.263715 7f3e6effd6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.275990 7f3e6effd6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.770418 7f52c6bff6c0 Recovering log #200 +2026/06/01-22:42:05.779812 7f52c6bff6c0 Delete type=3 #198 +2026/06/01-22:42:05.779865 7f52c6bff6c0 Delete type=0 #200 diff --git a/packs/competences/LOG.old b/packs/competences/LOG.old index 1f714f4..9bee816 100644 --- a/packs/competences/LOG.old +++ b/packs/competences/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.544106 7f3ebd7ff6c0 Recovering log #179 -2026/05/27-14:31:25.554048 7f3ebd7ff6c0 Delete type=3 #177 -2026/05/27-14:31:25.554071 7f3ebd7ff6c0 Delete type=0 #179 -2026/05/27-14:33:21.729016 7f3e6effd6c0 Level-0 table #185: started -2026/05/27-14:33:21.729040 7f3e6effd6c0 Level-0 table #185: 0 bytes OK -2026/05/27-14:33:21.735577 7f3e6effd6c0 Delete type=0 #183 -2026/05/27-14:33:21.735798 7f3e6effd6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.735816 7f3e6effd6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.422306 7f52c53fc6c0 Recovering log #196 +2026/06/01-08:35:53.433915 7f52c53fc6c0 Delete type=3 #194 +2026/06/01-08:35:53.433952 7f52c53fc6c0 Delete type=0 #196 +2026/06/01-08:51:10.450191 7f52c4bfb6c0 Level-0 table #201: started +2026/06/01-08:51:10.450225 7f52c4bfb6c0 Level-0 table #201: 0 bytes OK +2026/06/01-08:51:10.456638 7f52c4bfb6c0 Delete type=0 #199 +2026/06/01-08:51:10.463422 7f52c4bfb6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.470752 7f52c4bfb6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end) diff --git a/packs/competences/MANIFEST-000186 b/packs/competences/MANIFEST-000202 similarity index 60% rename from packs/competences/MANIFEST-000186 rename to packs/competences/MANIFEST-000202 index 40c863a..e376d4f 100644 Binary files a/packs/competences/MANIFEST-000186 and b/packs/competences/MANIFEST-000202 differ diff --git a/packs/contenant-sac-coffre/000122.log b/packs/contenant-sac-coffre/000137.log similarity index 100% rename from packs/contenant-sac-coffre/000122.log rename to packs/contenant-sac-coffre/000137.log diff --git a/packs/contenant-sac-coffre/CURRENT b/packs/contenant-sac-coffre/CURRENT index 30eb131..0eb07d3 100644 --- a/packs/contenant-sac-coffre/CURRENT +++ b/packs/contenant-sac-coffre/CURRENT @@ -1 +1 @@ -MANIFEST-000120 +MANIFEST-000136 diff --git a/packs/contenant-sac-coffre/LOG b/packs/contenant-sac-coffre/LOG index a12859d..cbb72e5 100644 --- a/packs/contenant-sac-coffre/LOG +++ b/packs/contenant-sac-coffre/LOG @@ -1,7 +1,3 @@ -2026/05/27-23:11:58.375862 7f3e6ffff6c0 Recovering log #118 -2026/05/27-23:11:58.385912 7f3e6ffff6c0 Delete type=3 #116 -2026/05/27-23:11:58.385947 7f3e6ffff6c0 Delete type=0 #118 -2026/05/28-01:07:03.287852 7f3e6effd6c0 Level-0 table #123: started -2026/05/28-01:07:03.287863 7f3e6effd6c0 Level-0 table #123: 0 bytes OK -2026/05/28-01:07:03.294442 7f3e6effd6c0 Delete type=0 #121 -2026/05/28-01:07:03.300889 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.829157 7f52c53fc6c0 Recovering log #134 +2026/06/01-22:42:05.838624 7f52c53fc6c0 Delete type=3 #132 +2026/06/01-22:42:05.838670 7f52c53fc6c0 Delete type=0 #134 diff --git a/packs/contenant-sac-coffre/LOG.old b/packs/contenant-sac-coffre/LOG.old index c5db16c..acb33e3 100644 --- a/packs/contenant-sac-coffre/LOG.old +++ b/packs/contenant-sac-coffre/LOG.old @@ -1,7 +1,7 @@ -2026/05/27-14:31:25.604521 7f3ebd7ff6c0 Recovering log #114 -2026/05/27-14:31:25.613630 7f3ebd7ff6c0 Delete type=3 #112 -2026/05/27-14:31:25.613651 7f3ebd7ff6c0 Delete type=0 #114 -2026/05/27-14:33:21.767043 7f3e6effd6c0 Level-0 table #119: started -2026/05/27-14:33:21.767067 7f3e6effd6c0 Level-0 table #119: 0 bytes OK -2026/05/27-14:33:21.773608 7f3e6effd6c0 Delete type=0 #117 -2026/05/27-14:33:21.780095 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.494562 7f52c6bff6c0 Recovering log #130 +2026/06/01-08:35:53.505274 7f52c6bff6c0 Delete type=3 #128 +2026/06/01-08:35:53.505312 7f52c6bff6c0 Delete type=0 #130 +2026/06/01-08:51:10.430797 7f52c4bfb6c0 Level-0 table #135: started +2026/06/01-08:51:10.430815 7f52c4bfb6c0 Level-0 table #135: 0 bytes OK +2026/06/01-08:51:10.436925 7f52c4bfb6c0 Delete type=0 #133 +2026/06/01-08:51:10.449909 7f52c4bfb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/contenant-sac-coffre/MANIFEST-000120 b/packs/contenant-sac-coffre/MANIFEST-000120 deleted file mode 100644 index 540472b..0000000 Binary files a/packs/contenant-sac-coffre/MANIFEST-000120 and /dev/null differ diff --git a/packs/contenant-sac-coffre/MANIFEST-000136 b/packs/contenant-sac-coffre/MANIFEST-000136 new file mode 100644 index 0000000..a91cf01 Binary files /dev/null and b/packs/contenant-sac-coffre/MANIFEST-000136 differ diff --git a/packs/equipement/000130.log b/packs/equipement/000145.log similarity index 100% rename from packs/equipement/000130.log rename to packs/equipement/000145.log diff --git a/packs/equipement/CURRENT b/packs/equipement/CURRENT index a8d9908..3e77273 100644 --- a/packs/equipement/CURRENT +++ b/packs/equipement/CURRENT @@ -1 +1 @@ -MANIFEST-000128 +MANIFEST-000144 diff --git a/packs/equipement/LOG b/packs/equipement/LOG index 592f53f..e46a6be 100644 --- a/packs/equipement/LOG +++ b/packs/equipement/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.349736 7f3e6ffff6c0 Recovering log #126 -2026/05/27-23:11:58.359183 7f3e6ffff6c0 Delete type=3 #124 -2026/05/27-23:11:58.359211 7f3e6ffff6c0 Delete type=0 #126 -2026/05/28-01:07:03.276071 7f3e6effd6c0 Level-0 table #131: started -2026/05/28-01:07:03.276086 7f3e6effd6c0 Level-0 table #131: 0 bytes OK -2026/05/28-01:07:03.281962 7f3e6effd6c0 Delete type=0 #129 -2026/05/28-01:07:03.300877 7f3e6effd6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.300894 7f3e6effd6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.805356 7f52c5bfd6c0 Recovering log #142 +2026/06/01-22:42:05.815150 7f52c5bfd6c0 Delete type=3 #140 +2026/06/01-22:42:05.815203 7f52c5bfd6c0 Delete type=0 #142 diff --git a/packs/equipement/LOG.old b/packs/equipement/LOG.old index 514f654..5f0056b 100644 --- a/packs/equipement/LOG.old +++ b/packs/equipement/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.580201 7f3ebd7ff6c0 Recovering log #121 -2026/05/27-14:31:25.589450 7f3ebd7ff6c0 Delete type=3 #119 -2026/05/27-14:31:25.589494 7f3ebd7ff6c0 Delete type=0 #121 -2026/05/27-14:33:21.747566 7f3e6effd6c0 Level-0 table #127: started -2026/05/27-14:33:21.747585 7f3e6effd6c0 Level-0 table #127: 0 bytes OK -2026/05/27-14:33:21.754474 7f3e6effd6c0 Delete type=0 #125 -2026/05/27-14:33:21.760899 7f3e6effd6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.760915 7f3e6effd6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.466145 7f52c6bff6c0 Recovering log #138 +2026/06/01-08:35:53.477972 7f52c6bff6c0 Delete type=3 #136 +2026/06/01-08:35:53.478013 7f52c6bff6c0 Delete type=0 #138 +2026/06/01-08:51:10.424141 7f52c4bfb6c0 Level-0 table #143: started +2026/06/01-08:51:10.424176 7f52c4bfb6c0 Level-0 table #143: 0 bytes OK +2026/06/01-08:51:10.430711 7f52c4bfb6c0 Delete type=0 #141 +2026/06/01-08:51:10.449900 7f52c4bfb6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.456752 7f52c4bfb6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end) diff --git a/packs/equipement/MANIFEST-000128 b/packs/equipement/MANIFEST-000144 similarity index 60% rename from packs/equipement/MANIFEST-000128 rename to packs/equipement/MANIFEST-000144 index 79136c0..5657cad 100644 Binary files a/packs/equipement/MANIFEST-000128 and b/packs/equipement/MANIFEST-000144 differ diff --git a/packs/espece/000122.log b/packs/espece/000137.log similarity index 100% rename from packs/espece/000122.log rename to packs/espece/000137.log diff --git a/packs/espece/CURRENT b/packs/espece/CURRENT index 30eb131..0eb07d3 100644 --- a/packs/espece/CURRENT +++ b/packs/espece/CURRENT @@ -1 +1 @@ -MANIFEST-000120 +MANIFEST-000136 diff --git a/packs/espece/LOG b/packs/espece/LOG index b3b1714..507be2a 100644 --- a/packs/espece/LOG +++ b/packs/espece/LOG @@ -1,7 +1,3 @@ -2026/05/27-23:11:58.388239 7f3e6f7fe6c0 Recovering log #118 -2026/05/27-23:11:58.398684 7f3e6f7fe6c0 Delete type=3 #116 -2026/05/27-23:11:58.398724 7f3e6f7fe6c0 Delete type=0 #118 -2026/05/28-01:07:03.294489 7f3e6effd6c0 Level-0 table #123: started -2026/05/28-01:07:03.294501 7f3e6effd6c0 Level-0 table #123: 0 bytes OK -2026/05/28-01:07:03.300827 7f3e6effd6c0 Delete type=0 #121 -2026/05/28-01:07:03.314060 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.840284 7f52c6bff6c0 Recovering log #134 +2026/06/01-22:42:05.850204 7f52c6bff6c0 Delete type=3 #132 +2026/06/01-22:42:05.850246 7f52c6bff6c0 Delete type=0 #134 diff --git a/packs/espece/LOG.old b/packs/espece/LOG.old index 8a51162..9ff68eb 100644 --- a/packs/espece/LOG.old +++ b/packs/espece/LOG.old @@ -1,7 +1,7 @@ -2026/05/27-14:31:25.615623 7f3ebd7ff6c0 Recovering log #114 -2026/05/27-14:31:25.625348 7f3ebd7ff6c0 Delete type=3 #112 -2026/05/27-14:31:25.625369 7f3ebd7ff6c0 Delete type=0 #114 -2026/05/27-14:33:21.761003 7f3e6effd6c0 Level-0 table #119: started -2026/05/27-14:33:21.761022 7f3e6effd6c0 Level-0 table #119: 0 bytes OK -2026/05/27-14:33:21.766953 7f3e6effd6c0 Delete type=0 #117 -2026/05/27-14:33:21.780083 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.508573 7f52c53fc6c0 Recovering log #130 +2026/06/01-08:35:53.519646 7f52c53fc6c0 Delete type=3 #128 +2026/06/01-08:35:53.519709 7f52c53fc6c0 Delete type=0 #130 +2026/06/01-08:51:10.437011 7f52c4bfb6c0 Level-0 table #135: started +2026/06/01-08:51:10.437031 7f52c4bfb6c0 Level-0 table #135: 0 bytes OK +2026/06/01-08:51:10.443132 7f52c4bfb6c0 Delete type=0 #133 +2026/06/01-08:51:10.449915 7f52c4bfb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/espece/MANIFEST-000120 b/packs/espece/MANIFEST-000120 deleted file mode 100644 index 540472b..0000000 Binary files a/packs/espece/MANIFEST-000120 and /dev/null differ diff --git a/packs/espece/MANIFEST-000136 b/packs/espece/MANIFEST-000136 new file mode 100644 index 0000000..a91cf01 Binary files /dev/null and b/packs/espece/MANIFEST-000136 differ diff --git a/packs/journal/000103.log b/packs/journal/000118.log similarity index 100% rename from packs/journal/000103.log rename to packs/journal/000118.log diff --git a/packs/journal/CURRENT b/packs/journal/CURRENT index ed5ac88..5ff346e 100644 --- a/packs/journal/CURRENT +++ b/packs/journal/CURRENT @@ -1 +1 @@ -MANIFEST-000101 +MANIFEST-000117 diff --git a/packs/journal/LOG b/packs/journal/LOG index 8459ce7..e0bb704 100644 --- a/packs/journal/LOG +++ b/packs/journal/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.400455 7f3ebd7ff6c0 Recovering log #99 -2026/05/27-23:11:58.410587 7f3ebd7ff6c0 Delete type=3 #97 -2026/05/27-23:11:58.410645 7f3ebd7ff6c0 Delete type=0 #99 -2026/05/28-01:07:03.300932 7f3e6effd6c0 Level-0 table #104: started -2026/05/28-01:07:03.300945 7f3e6effd6c0 Level-0 table #104: 0 bytes OK -2026/05/28-01:07:03.306823 7f3e6effd6c0 Delete type=0 #102 -2026/05/28-01:07:03.314070 7f3e6effd6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.314229 7f3e6effd6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.852043 7f52c5bfd6c0 Recovering log #115 +2026/06/01-22:42:05.861694 7f52c5bfd6c0 Delete type=3 #113 +2026/06/01-22:42:05.861740 7f52c5bfd6c0 Delete type=0 #115 diff --git a/packs/journal/LOG.old b/packs/journal/LOG.old index ad24c69..6fd6140 100644 --- a/packs/journal/LOG.old +++ b/packs/journal/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.627132 7f3ebd7ff6c0 Recovering log #95 -2026/05/27-14:31:25.636967 7f3ebd7ff6c0 Delete type=3 #93 -2026/05/27-14:31:25.637002 7f3ebd7ff6c0 Delete type=0 #95 -2026/05/27-14:33:21.773684 7f3e6effd6c0 Level-0 table #100: started -2026/05/27-14:33:21.773700 7f3e6effd6c0 Level-0 table #100: 0 bytes OK -2026/05/27-14:33:21.779958 7f3e6effd6c0 Delete type=0 #98 -2026/05/27-14:33:21.786739 7f3e6effd6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.800533 7f3e6effd6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.522844 7f52c5bfd6c0 Recovering log #111 +2026/06/01-08:35:53.532856 7f52c5bfd6c0 Delete type=3 #109 +2026/06/01-08:35:53.532912 7f52c5bfd6c0 Delete type=0 #111 +2026/06/01-08:51:10.463428 7f52c4bfb6c0 Level-0 table #116: started +2026/06/01-08:51:10.463447 7f52c4bfb6c0 Level-0 table #116: 0 bytes OK +2026/06/01-08:51:10.470660 7f52c4bfb6c0 Delete type=0 #114 +2026/06/01-08:51:10.477037 7f52c4bfb6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.484516 7f52c4bfb6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end) diff --git a/packs/journal/MANIFEST-000101 b/packs/journal/MANIFEST-000117 similarity index 68% rename from packs/journal/MANIFEST-000101 rename to packs/journal/MANIFEST-000117 index 6373af9..dc0f34c 100644 Binary files a/packs/journal/MANIFEST-000101 and b/packs/journal/MANIFEST-000117 differ diff --git a/packs/maladie-poison-and-blessure/000130.log b/packs/maladie-poison-and-blessure/000145.log similarity index 100% rename from packs/maladie-poison-and-blessure/000130.log rename to packs/maladie-poison-and-blessure/000145.log diff --git a/packs/maladie-poison-and-blessure/CURRENT b/packs/maladie-poison-and-blessure/CURRENT index a8d9908..3e77273 100644 --- a/packs/maladie-poison-and-blessure/CURRENT +++ b/packs/maladie-poison-and-blessure/CURRENT @@ -1 +1 @@ -MANIFEST-000128 +MANIFEST-000144 diff --git a/packs/maladie-poison-and-blessure/LOG b/packs/maladie-poison-and-blessure/LOG index 6d97d83..0ff057b 100644 --- a/packs/maladie-poison-and-blessure/LOG +++ b/packs/maladie-poison-and-blessure/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.323722 7f3e6f7fe6c0 Recovering log #126 -2026/05/27-23:11:58.334612 7f3e6f7fe6c0 Delete type=3 #124 -2026/05/27-23:11:58.334668 7f3e6f7fe6c0 Delete type=0 #126 -2026/05/28-01:07:03.263720 7f3e6effd6c0 Level-0 table #131: started -2026/05/28-01:07:03.263735 7f3e6effd6c0 Level-0 table #131: 0 bytes OK -2026/05/28-01:07:03.269766 7f3e6effd6c0 Delete type=0 #129 -2026/05/28-01:07:03.275999 7f3e6effd6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.276022 7f3e6effd6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.782042 7f52c5bfd6c0 Recovering log #142 +2026/06/01-22:42:05.791804 7f52c5bfd6c0 Delete type=3 #140 +2026/06/01-22:42:05.791860 7f52c5bfd6c0 Delete type=0 #142 diff --git a/packs/maladie-poison-and-blessure/LOG.old b/packs/maladie-poison-and-blessure/LOG.old index ecff47c..e184c8d 100644 --- a/packs/maladie-poison-and-blessure/LOG.old +++ b/packs/maladie-poison-and-blessure/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.557570 7f3ebd7ff6c0 Recovering log #121 -2026/05/27-14:31:25.567130 7f3ebd7ff6c0 Delete type=3 #119 -2026/05/27-14:31:25.567150 7f3ebd7ff6c0 Delete type=0 #121 -2026/05/27-14:33:21.735841 7f3e6effd6c0 Level-0 table #127: started -2026/05/27-14:33:21.735866 7f3e6effd6c0 Level-0 table #127: 0 bytes OK -2026/05/27-14:33:21.741712 7f3e6effd6c0 Delete type=0 #125 -2026/05/27-14:33:21.760883 7f3e6effd6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.760906 7f3e6effd6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.437746 7f52c6bff6c0 Recovering log #138 +2026/06/01-08:35:53.448341 7f52c6bff6c0 Delete type=3 #136 +2026/06/01-08:35:53.448380 7f52c6bff6c0 Delete type=0 #138 +2026/06/01-08:51:10.443210 7f52c4bfb6c0 Level-0 table #143: started +2026/06/01-08:51:10.443229 7f52c4bfb6c0 Level-0 table #143: 0 bytes OK +2026/06/01-08:51:10.449810 7f52c4bfb6c0 Delete type=0 #141 +2026/06/01-08:51:10.450168 7f52c4bfb6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.463413 7f52c4bfb6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end) diff --git a/packs/maladie-poison-and-blessure/MANIFEST-000128 b/packs/maladie-poison-and-blessure/MANIFEST-000144 similarity index 62% rename from packs/maladie-poison-and-blessure/MANIFEST-000128 rename to packs/maladie-poison-and-blessure/MANIFEST-000144 index 87d6133..fcb3162 100644 Binary files a/packs/maladie-poison-and-blessure/MANIFEST-000128 and b/packs/maladie-poison-and-blessure/MANIFEST-000144 differ diff --git a/packs/objet/000122.log b/packs/objet/000137.log similarity index 100% rename from packs/objet/000122.log rename to packs/objet/000137.log diff --git a/packs/objet/CURRENT b/packs/objet/CURRENT index 30eb131..0eb07d3 100644 --- a/packs/objet/CURRENT +++ b/packs/objet/CURRENT @@ -1 +1 @@ -MANIFEST-000120 +MANIFEST-000136 diff --git a/packs/objet/LOG b/packs/objet/LOG index b2b6df2..db37743 100644 --- a/packs/objet/LOG +++ b/packs/objet/LOG @@ -1,7 +1,3 @@ -2026/05/27-23:11:58.337311 7f3ebcffe6c0 Recovering log #118 -2026/05/27-23:11:58.347349 7f3ebcffe6c0 Delete type=3 #116 -2026/05/27-23:11:58.347392 7f3ebcffe6c0 Delete type=0 #118 -2026/05/28-01:07:03.269795 7f3e6effd6c0 Level-0 table #123: started -2026/05/28-01:07:03.269808 7f3e6effd6c0 Level-0 table #123: 0 bytes OK -2026/05/28-01:07:03.275958 7f3e6effd6c0 Delete type=0 #121 -2026/05/28-01:07:03.276003 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.793837 7f52c53fc6c0 Recovering log #134 +2026/06/01-22:42:05.803487 7f52c53fc6c0 Delete type=3 #132 +2026/06/01-22:42:05.803533 7f52c53fc6c0 Delete type=0 #134 diff --git a/packs/objet/LOG.old b/packs/objet/LOG.old index 1a6ab91..e7d9279 100644 --- a/packs/objet/LOG.old +++ b/packs/objet/LOG.old @@ -1,7 +1,7 @@ -2026/05/27-14:31:25.569405 7f3ebd7ff6c0 Recovering log #114 -2026/05/27-14:31:25.578632 7f3ebd7ff6c0 Delete type=3 #112 -2026/05/27-14:31:25.578657 7f3ebd7ff6c0 Delete type=0 #114 -2026/05/27-14:33:21.741780 7f3e6effd6c0 Level-0 table #119: started -2026/05/27-14:33:21.741799 7f3e6effd6c0 Level-0 table #119: 0 bytes OK -2026/05/27-14:33:21.747507 7f3e6effd6c0 Delete type=0 #117 -2026/05/27-14:33:21.760892 7f3e6effd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.451848 7f52c63fe6c0 Recovering log #130 +2026/06/01-08:35:53.463255 7f52c63fe6c0 Delete type=3 #128 +2026/06/01-08:35:53.463313 7f52c63fe6c0 Delete type=0 #130 +2026/06/01-08:51:10.417333 7f52c4bfb6c0 Level-0 table #135: started +2026/06/01-08:51:10.417354 7f52c4bfb6c0 Level-0 table #135: 0 bytes OK +2026/06/01-08:51:10.423737 7f52c4bfb6c0 Delete type=0 #133 +2026/06/01-08:51:10.424133 7f52c4bfb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/objet/MANIFEST-000120 b/packs/objet/MANIFEST-000120 deleted file mode 100644 index 540472b..0000000 Binary files a/packs/objet/MANIFEST-000120 and /dev/null differ diff --git a/packs/objet/MANIFEST-000136 b/packs/objet/MANIFEST-000136 new file mode 100644 index 0000000..a91cf01 Binary files /dev/null and b/packs/objet/MANIFEST-000136 differ diff --git a/packs/ordinateur/000130.log b/packs/ordinateur/000145.log similarity index 100% rename from packs/ordinateur/000130.log rename to packs/ordinateur/000145.log diff --git a/packs/ordinateur/CURRENT b/packs/ordinateur/CURRENT index a8d9908..3e77273 100644 --- a/packs/ordinateur/CURRENT +++ b/packs/ordinateur/CURRENT @@ -1 +1 @@ -MANIFEST-000128 +MANIFEST-000144 diff --git a/packs/ordinateur/LOG b/packs/ordinateur/LOG index f4490e8..0fd58e7 100644 --- a/packs/ordinateur/LOG +++ b/packs/ordinateur/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.362926 7f3ebd7ff6c0 Recovering log #126 -2026/05/27-23:11:58.372894 7f3ebd7ff6c0 Delete type=3 #124 -2026/05/27-23:11:58.372934 7f3ebd7ff6c0 Delete type=0 #126 -2026/05/28-01:07:03.281993 7f3e6effd6c0 Level-0 table #131: started -2026/05/28-01:07:03.282003 7f3e6effd6c0 Level-0 table #131: 0 bytes OK -2026/05/28-01:07:03.287823 7f3e6effd6c0 Delete type=0 #129 -2026/05/28-01:07:03.300883 7f3e6effd6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.314065 7f3e6effd6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.817864 7f52c6bff6c0 Recovering log #142 +2026/06/01-22:42:05.827428 7f52c6bff6c0 Delete type=3 #140 +2026/06/01-22:42:05.827476 7f52c6bff6c0 Delete type=0 #142 diff --git a/packs/ordinateur/LOG.old b/packs/ordinateur/LOG.old index 2d2cb83..613dd21 100644 --- a/packs/ordinateur/LOG.old +++ b/packs/ordinateur/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.591969 7f3ebd7ff6c0 Recovering log #121 -2026/05/27-14:31:25.601963 7f3ebd7ff6c0 Delete type=3 #119 -2026/05/27-14:31:25.601983 7f3ebd7ff6c0 Delete type=0 #121 -2026/05/27-14:33:21.754559 7f3e6effd6c0 Level-0 table #127: started -2026/05/27-14:33:21.754583 7f3e6effd6c0 Level-0 table #127: 0 bytes OK -2026/05/27-14:33:21.760810 7f3e6effd6c0 Delete type=0 #125 -2026/05/27-14:33:21.760994 7f3e6effd6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.773676 7f3e6effd6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.480904 7f52c63fe6c0 Recovering log #138 +2026/06/01-08:35:53.491518 7f52c63fe6c0 Delete type=3 #136 +2026/06/01-08:35:53.491573 7f52c63fe6c0 Delete type=0 #138 +2026/06/01-08:51:10.456761 7f52c4bfb6c0 Level-0 table #143: started +2026/06/01-08:51:10.456779 7f52c4bfb6c0 Level-0 table #143: 0 bytes OK +2026/06/01-08:51:10.463323 7f52c4bfb6c0 Delete type=0 #141 +2026/06/01-08:51:10.470745 7f52c4bfb6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.477028 7f52c4bfb6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end) diff --git a/packs/ordinateur/MANIFEST-000128 b/packs/ordinateur/MANIFEST-000144 similarity index 61% rename from packs/ordinateur/MANIFEST-000128 rename to packs/ordinateur/MANIFEST-000144 index e127d0d..fbdf399 100644 Binary files a/packs/ordinateur/MANIFEST-000128 and b/packs/ordinateur/MANIFEST-000144 differ diff --git a/packs/tables-pnj/000084.ldb b/packs/tables-pnj/000084.ldb deleted file mode 100644 index 17def9e..0000000 Binary files a/packs/tables-pnj/000084.ldb and /dev/null differ diff --git a/packs/tables-pnj/000168.ldb b/packs/tables-pnj/000168.ldb new file mode 100644 index 0000000..5131ae3 Binary files /dev/null and b/packs/tables-pnj/000168.ldb differ diff --git a/packs/tables-pnj/000170.ldb b/packs/tables-pnj/000170.ldb new file mode 100644 index 0000000..fdbebad Binary files /dev/null and b/packs/tables-pnj/000170.ldb differ diff --git a/packs/tables-pnj/000183.ldb b/packs/tables-pnj/000183.ldb new file mode 100644 index 0000000..d3c88fb Binary files /dev/null and b/packs/tables-pnj/000183.ldb differ diff --git a/packs/tables-pnj/000184.ldb b/packs/tables-pnj/000184.ldb new file mode 100644 index 0000000..4c01fe5 Binary files /dev/null and b/packs/tables-pnj/000184.ldb differ diff --git a/packs/tables-pnj/000186.ldb b/packs/tables-pnj/000186.ldb new file mode 100644 index 0000000..c4f3981 Binary files /dev/null and b/packs/tables-pnj/000186.ldb differ diff --git a/packs/tables-pnj/000187.log b/packs/tables-pnj/000187.log new file mode 100644 index 0000000..b820db0 Binary files /dev/null and b/packs/tables-pnj/000187.log differ diff --git a/packs/tables-pnj/000188.ldb b/packs/tables-pnj/000188.ldb new file mode 100644 index 0000000..ef6fdeb Binary files /dev/null and b/packs/tables-pnj/000188.ldb differ diff --git a/packs/tables-pnj/CURRENT b/packs/tables-pnj/CURRENT index a9ebced..91e41f4 100644 --- a/packs/tables-pnj/CURRENT +++ b/packs/tables-pnj/CURRENT @@ -1 +1 @@ -MANIFEST-000048 +MANIFEST-000171 diff --git a/packs/tables-pnj/LOG b/packs/tables-pnj/LOG index 33b8db4..6a5254f 100644 --- a/packs/tables-pnj/LOG +++ b/packs/tables-pnj/LOG @@ -1,92 +1,34 @@ -2026/05/27-23:11:58.454344 7f3ebcffe6c0 Recovering log #44 -2026/05/27-23:11:58.463285 7f3ebcffe6c0 Delete type=3 #40 -2026/05/27-23:11:58.463300 7f3ebcffe6c0 Delete type=0 #44 -2026/05/27-23:37:44.587645 7f3e6effd6c0 Level-0 table #51: started -2026/05/27-23:37:44.605872 7f3e6effd6c0 Level-0 table #51: 1343154 bytes OK -2026/05/27-23:37:44.612030 7f3e6effd6c0 Delete type=0 #49 -2026/05/28-00:04:39.168329 7f3e6effd6c0 Level-0 table #53: started -2026/05/28-00:04:39.185209 7f3e6effd6c0 Level-0 table #53: 1393674 bytes OK -2026/05/28-00:04:39.191603 7f3e6effd6c0 Delete type=0 #50 -2026/05/28-00:18:55.273857 7f3e6effd6c0 Level-0 table #55: started -2026/05/28-00:18:55.294346 7f3e6effd6c0 Level-0 table #55: 1451564 bytes OK -2026/05/28-00:18:55.300308 7f3e6effd6c0 Delete type=0 #52 -2026/05/28-00:20:15.021651 7f3e6effd6c0 Level-0 table #57: started -2026/05/28-00:20:15.040525 7f3e6effd6c0 Level-0 table #57: 1496314 bytes OK -2026/05/28-00:20:15.046886 7f3e6effd6c0 Delete type=0 #54 -2026/05/28-00:20:43.720521 7f3e6effd6c0 Level-0 table #59: started -2026/05/28-00:20:43.742455 7f3e6effd6c0 Level-0 table #59: 1546947 bytes OK -2026/05/28-00:20:43.748835 7f3e6effd6c0 Delete type=0 #56 -2026/05/28-00:20:43.749387 7f3e6effd6c0 Compacting 4@0 + 1@1 files -2026/05/28-00:20:43.771709 7f3e6effd6c0 Generated table #60@0: 10302 keys, 1546947 bytes -2026/05/28-00:20:43.771721 7f3e6effd6c0 Compacted 4@0 + 1@1 files => 1546947 bytes -2026/05/28-00:20:43.777946 7f3e6effd6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/05/28-00:20:43.778171 7f3e6effd6c0 Delete type=2 #51 -2026/05/28-00:20:43.778444 7f3e6effd6c0 Delete type=2 #53 -2026/05/28-00:20:43.778777 7f3e6effd6c0 Delete type=2 #55 -2026/05/28-00:20:43.778977 7f3e6effd6c0 Delete type=2 #57 -2026/05/28-00:20:43.779160 7f3e6effd6c0 Delete type=2 #59 -2026/05/28-00:21:51.457842 7f3e6effd6c0 Level-0 table #62: started -2026/05/28-00:21:51.479532 7f3e6effd6c0 Level-0 table #62: 1604425 bytes OK -2026/05/28-00:21:51.485724 7f3e6effd6c0 Delete type=0 #58 -2026/05/28-00:30:27.802783 7f3e6effd6c0 Level-0 table #64: started -2026/05/28-00:30:27.823947 7f3e6effd6c0 Level-0 table #64: 1651065 bytes OK -2026/05/28-00:30:27.829721 7f3e6effd6c0 Delete type=0 #61 -2026/05/28-00:35:01.919877 7f3e6effd6c0 Level-0 table #66: started -2026/05/28-00:35:01.987012 7f3e6effd6c0 Level-0 table #66: 1703060 bytes OK -2026/05/28-00:35:02.043369 7f3e6effd6c0 Delete type=0 #63 -2026/05/28-00:37:26.052331 7f3e6effd6c0 Level-0 table #68: started -2026/05/28-00:37:26.076959 7f3e6effd6c0 Level-0 table #68: 1753179 bytes OK -2026/05/28-00:37:26.083119 7f3e6effd6c0 Delete type=0 #65 -2026/05/28-00:37:26.083369 7f3e6effd6c0 Compacting 4@0 + 1@1 files -2026/05/28-00:37:26.103213 7f3e6effd6c0 Generated table #69@0: 11630 keys, 1753179 bytes -2026/05/28-00:37:26.103227 7f3e6effd6c0 Compacted 4@0 + 1@1 files => 1753179 bytes -2026/05/28-00:37:26.109075 7f3e6effd6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/05/28-00:37:26.109152 7f3e6effd6c0 Delete type=2 #60 -2026/05/28-00:37:26.109336 7f3e6effd6c0 Delete type=2 #62 -2026/05/28-00:37:26.109453 7f3e6effd6c0 Delete type=2 #64 -2026/05/28-00:37:26.109722 7f3e6effd6c0 Delete type=2 #66 -2026/05/28-00:37:26.109828 7f3e6effd6c0 Delete type=2 #68 -2026/05/28-00:48:03.393850 7f3e6effd6c0 Level-0 table #71: started -2026/05/28-00:48:03.411976 7f3e6effd6c0 Level-0 table #71: 1806724 bytes OK -2026/05/28-00:48:03.419030 7f3e6effd6c0 Delete type=0 #67 -2026/05/28-00:52:05.605289 7f3e6effd6c0 Level-0 table #73: started -2026/05/28-00:52:05.629208 7f3e6effd6c0 Level-0 table #73: 1856591 bytes OK -2026/05/28-00:52:05.635297 7f3e6effd6c0 Delete type=0 #70 -2026/05/28-00:53:23.184161 7f3e6effd6c0 Level-0 table #75: started -2026/05/28-00:53:23.202618 7f3e6effd6c0 Level-0 table #75: 1901920 bytes OK -2026/05/28-00:53:23.208730 7f3e6effd6c0 Delete type=0 #72 -2026/05/28-01:02:57.320650 7f3e6effd6c0 Level-0 table #77: started -2026/05/28-01:02:57.341951 7f3e6effd6c0 Level-0 table #77: 1962797 bytes OK -2026/05/28-01:02:57.347793 7f3e6effd6c0 Delete type=0 #74 -2026/05/28-01:02:57.348132 7f3e6effd6c0 Compacting 4@0 + 1@1 files -2026/05/28-01:02:57.369982 7f3e6effd6c0 Generated table #78@0: 12958 keys, 1962797 bytes -2026/05/28-01:02:57.370013 7f3e6effd6c0 Compacted 4@0 + 1@1 files => 1962797 bytes -2026/05/28-01:02:57.376098 7f3e6effd6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/05/28-01:02:57.376330 7f3e6effd6c0 Delete type=2 #69 -2026/05/28-01:02:57.376716 7f3e6effd6c0 Delete type=2 #71 -2026/05/28-01:02:57.377097 7f3e6effd6c0 Delete type=2 #73 -2026/05/28-01:02:57.377594 7f3e6effd6c0 Delete type=2 #75 -2026/05/28-01:02:57.377833 7f3e6effd6c0 Delete type=2 #77 -2026/05/28-01:06:35.052396 7f3e6effd6c0 Level-0 table #80: started -2026/05/28-01:06:35.067526 7f3e6effd6c0 Level-0 table #80: 2007084 bytes OK -2026/05/28-01:06:35.074274 7f3e6effd6c0 Delete type=0 #76 -2026/05/28-01:07:03.326355 7f3e6effd6c0 Level-0 table #82: started -2026/05/28-01:07:03.344521 7f3e6effd6c0 Level-0 table #82: 2055614 bytes OK -2026/05/28-01:07:03.350350 7f3e6effd6c0 Delete type=0 #79 -2026/05/28-01:07:03.356890 7f3e6effd6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 261156 : 1 -2026/05/28-01:07:03.356894 7f3e6effd6c0 Compacting 2@0 + 1@1 files -2026/05/28-01:07:03.375384 7f3e6effd6c0 Generated table #83@0: 13622 keys, 2055614 bytes -2026/05/28-01:07:03.375400 7f3e6effd6c0 Compacted 2@0 + 1@1 files => 2055614 bytes -2026/05/28-01:07:03.381064 7f3e6effd6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/05/28-01:07:03.381439 7f3e6effd6c0 Delete type=2 #78 -2026/05/28-01:07:03.381593 7f3e6effd6c0 Delete type=2 #80 -2026/05/28-01:07:03.381689 7f3e6effd6c0 Delete type=2 #82 -2026/05/28-01:07:03.381868 7f3e6effd6c0 Manual compaction at level-0 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 261156 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.416170 7f3e6effd6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 274490 : 1 -2026/05/28-01:07:03.416174 7f3e6effd6c0 Compacting 1@1 + 1@2 files -2026/05/28-01:07:03.432983 7f3e6effd6c0 Generated table #84@1: 13622 keys, 2055614 bytes -2026/05/28-01:07:03.432994 7f3e6effd6c0 Compacted 1@1 + 1@2 files => 2055614 bytes -2026/05/28-01:07:03.438860 7f3e6effd6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/05/28-01:07:03.438913 7f3e6effd6c0 Delete type=2 #47 -2026/05/28-01:07:03.439160 7f3e6effd6c0 Delete type=2 #83 -2026/05/28-01:07:03.445861 7f3e6effd6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 274490 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.898881 7f52c6bff6c0 Recovering log #164 +2026/06/01-22:42:05.908070 7f52c6bff6c0 Delete type=3 #158 +2026/06/01-22:42:05.908116 7f52c6bff6c0 Delete type=0 #164 +2026/06/01-22:42:20.631787 7f52c4bfb6c0 Level-0 table #174: started +2026/06/01-22:42:20.664092 7f52c4bfb6c0 Level-0 table #174: 3534281 bytes OK +2026/06/01-22:42:20.670615 7f52c4bfb6c0 Delete type=0 #172 +2026/06/01-22:44:14.476907 7f52c4bfb6c0 Level-0 table #176: started +2026/06/01-22:44:14.517289 7f52c4bfb6c0 Level-0 table #176: 3590317 bytes OK +2026/06/01-22:44:14.524467 7f52c4bfb6c0 Delete type=0 #173 +2026/06/01-22:46:05.183822 7f52c4bfb6c0 Level-0 table #178: started +2026/06/01-22:46:05.221801 7f52c4bfb6c0 Level-0 table #178: 3635543 bytes OK +2026/06/01-22:46:05.228261 7f52c4bfb6c0 Delete type=0 #175 +2026/06/01-22:47:46.984190 7f52c4bfb6c0 Level-0 table #180: started +2026/06/01-22:47:47.016424 7f52c4bfb6c0 Level-0 table #180: 3689250 bytes OK +2026/06/01-22:47:47.022818 7f52c4bfb6c0 Delete type=0 #177 +2026/06/01-22:49:07.037465 7f52c4bfb6c0 Level-0 table #182: started +2026/06/01-22:49:07.113718 7f52c4bfb6c0 Level-0 table #182: 3742709 bytes OK +2026/06/01-22:49:07.141920 7f52c4bfb6c0 Delete type=0 #179 +2026/06/01-22:49:07.142905 7f52c4bfb6c0 Compacting 4@0 + 1@1 files +2026/06/01-22:49:07.200300 7f52c4bfb6c0 Generated table #183@0: 12232 keys, 2147703 bytes +2026/06/01-22:49:07.251271 7f52c4bfb6c0 Generated table #184@0: 12346 keys, 1594009 bytes +2026/06/01-22:49:07.251297 7f52c4bfb6c0 Compacted 4@0 + 1@1 files => 3741712 bytes +2026/06/01-22:49:07.282491 7f52c4bfb6c0 compacted to: files[ 0 2 2 0 0 0 0 ] +2026/06/01-22:49:07.282953 7f52c4bfb6c0 Delete type=2 #174 +2026/06/01-22:49:07.283509 7f52c4bfb6c0 Delete type=2 #176 +2026/06/01-22:49:07.284069 7f52c4bfb6c0 Delete type=2 #178 +2026/06/01-22:49:07.284659 7f52c4bfb6c0 Delete type=2 #180 +2026/06/01-22:49:07.285224 7f52c4bfb6c0 Delete type=2 #182 +2026/06/01-22:50:15.076056 7f52c4bfb6c0 Level-0 table #186: started +2026/06/01-22:50:15.139569 7f52c4bfb6c0 Level-0 table #186: 3791699 bytes OK +2026/06/01-22:50:15.177008 7f52c4bfb6c0 Delete type=0 #181 +2026/06/01-22:51:23.050617 7f52c4bfb6c0 Level-0 table #188: started +2026/06/01-22:51:23.083717 7f52c4bfb6c0 Level-0 table #188: 3847811 bytes OK +2026/06/01-22:51:23.090754 7f52c4bfb6c0 Delete type=0 #185 diff --git a/packs/tables-pnj/LOG.old b/packs/tables-pnj/LOG.old index 64207cc..6a3a4ef 100644 --- a/packs/tables-pnj/LOG.old +++ b/packs/tables-pnj/LOG.old @@ -1,25 +1,39 @@ -2026/05/27-14:31:25.674162 7f3e6f7fe6c0 Recovering log #36 -2026/05/27-14:31:25.684284 7f3e6f7fe6c0 Delete type=3 #21 -2026/05/27-14:31:25.684327 7f3e6f7fe6c0 Delete type=0 #36 -2026/05/27-14:32:13.276652 7f3e6effd6c0 Level-0 table #43: started -2026/05/27-14:32:13.292995 7f3e6effd6c0 Level-0 table #43: 1244894 bytes OK -2026/05/27-14:32:13.298790 7f3e6effd6c0 Delete type=0 #41 -2026/05/27-14:33:21.808275 7f3e6effd6c0 Level-0 table #45: started -2026/05/27-14:33:21.824612 7f3e6effd6c0 Level-0 table #45: 1294793 bytes OK -2026/05/27-14:33:21.831380 7f3e6effd6c0 Delete type=0 #42 -2026/05/27-14:33:21.838976 7f3e6effd6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 109340 : 1 -2026/05/27-14:33:21.838980 7f3e6effd6c0 Compacting 1@0 + 1@1 files -2026/05/27-14:33:21.852317 7f3e6effd6c0 Generated table #46@0: 8642 keys, 1294793 bytes -2026/05/27-14:33:21.852331 7f3e6effd6c0 Compacted 1@0 + 1@1 files => 1294793 bytes -2026/05/27-14:33:21.859689 7f3e6effd6c0 compacted to: files[ 0 1 1 0 0 0 0 ] -2026/05/27-14:33:21.859935 7f3e6effd6c0 Delete type=2 #43 -2026/05/27-14:33:21.860058 7f3e6effd6c0 Delete type=2 #45 -2026/05/27-14:33:21.877111 7f3e6effd6c0 Manual compaction at level-0 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 109340 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.877144 7f3e6effd6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 109340 : 1 -2026/05/27-14:33:21.877150 7f3e6effd6c0 Compacting 1@1 + 1@2 files -2026/05/27-14:33:21.895679 7f3e6effd6c0 Generated table #47@1: 8642 keys, 1294793 bytes -2026/05/27-14:33:21.895699 7f3e6effd6c0 Compacted 1@1 + 1@2 files => 1294793 bytes -2026/05/27-14:33:21.901922 7f3e6effd6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/05/27-14:33:21.902059 7f3e6effd6c0 Delete type=2 #39 -2026/05/27-14:33:21.902514 7f3e6effd6c0 Delete type=2 #46 -2026/05/27-14:33:21.908609 7f3e6effd6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 109340 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.577873 7f52c53fc6c0 Recovering log #151 +2026/06/01-08:35:53.588883 7f52c53fc6c0 Delete type=3 #115 +2026/06/01-08:35:53.588945 7f52c53fc6c0 Delete type=0 #151 +2026/06/01-08:47:35.073031 7f52c4bfb6c0 Level-0 table #161: started +2026/06/01-08:47:35.109060 7f52c4bfb6c0 Level-0 table #161: 3389567 bytes OK +2026/06/01-08:47:35.119693 7f52c4bfb6c0 Delete type=0 #159 +2026/06/01-08:49:55.679233 7f52c4bfb6c0 Level-0 table #163: started +2026/06/01-08:49:55.721583 7f52c4bfb6c0 Level-0 table #163: 3442926 bytes OK +2026/06/01-08:49:55.728383 7f52c4bfb6c0 Delete type=0 #160 +2026/06/01-08:51:10.512438 7f52c4bfb6c0 Level-0 table #165: started +2026/06/01-08:51:10.552653 7f52c4bfb6c0 Level-0 table #165: 3485558 bytes OK +2026/06/01-08:51:10.559696 7f52c4bfb6c0 Delete type=0 #162 +2026/06/01-08:51:10.560948 7f52c4bfb6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 761930 : 1 +2026/06/01-08:51:10.560964 7f52c4bfb6c0 Compacting 2@0 + 1@1 files +2026/06/01-08:51:10.590673 7f52c4bfb6c0 Generated table #166@0: 12461 keys, 2148113 bytes +2026/06/01-08:51:10.614131 7f52c4bfb6c0 Generated table #167@0: 10457 keys, 1336575 bytes +2026/06/01-08:51:10.614152 7f52c4bfb6c0 Compacted 2@0 + 1@1 files => 3484688 bytes +2026/06/01-08:51:10.620854 7f52c4bfb6c0 compacted to: files[ 0 2 2 0 0 0 0 ] +2026/06/01-08:51:10.621202 7f52c4bfb6c0 Delete type=2 #161 +2026/06/01-08:51:10.621653 7f52c4bfb6c0 Delete type=2 #163 +2026/06/01-08:51:10.622090 7f52c4bfb6c0 Delete type=2 #165 +2026/06/01-08:51:10.641251 7f52c4bfb6c0 Manual compaction at level-0 from '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 761930 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.649348 7f52c4bfb6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at '!tables.results!e9c7LNgXUFbYLZF1.0q5zLunzoX2kqo8m' @ 780825 : 1 +2026/06/01-08:51:10.649351 7f52c4bfb6c0 Compacting 1@1 + 1@2 files +2026/06/01-08:51:10.679226 7f52c4bfb6c0 Generated table #168@1: 12461 keys, 2148113 bytes +2026/06/01-08:51:10.684351 7f52c4bfb6c0 Generated table #169@1: 755 keys, 94591 bytes +2026/06/01-08:51:10.684370 7f52c4bfb6c0 Compacted 1@1 + 1@2 files => 2242704 bytes +2026/06/01-08:51:10.692020 7f52c4bfb6c0 compacted to: files[ 0 1 3 0 0 0 0 ] +2026/06/01-08:51:10.692313 7f52c4bfb6c0 Delete type=2 #155 +2026/06/01-08:51:10.692659 7f52c4bfb6c0 Delete type=2 #166 +2026/06/01-08:51:10.711439 7f52c4bfb6c0 Manual compaction at level-1 from '!tables.results!e9c7LNgXUFbYLZF1.0q5zLunzoX2kqo8m' @ 780825 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 784560 : 1 +2026/06/01-08:51:10.711444 7f52c4bfb6c0 Compacting 1@1 + 2@2 files +2026/06/01-08:51:10.734315 7f52c4bfb6c0 Generated table #170@1: 10457 keys, 1336575 bytes +2026/06/01-08:51:10.734332 7f52c4bfb6c0 Compacted 1@1 + 2@2 files => 1336575 bytes +2026/06/01-08:51:10.741118 7f52c4bfb6c0 compacted to: files[ 0 0 2 0 0 0 0 ] +2026/06/01-08:51:10.741262 7f52c4bfb6c0 Delete type=2 #157 +2026/06/01-08:51:10.741508 7f52c4bfb6c0 Delete type=2 #167 +2026/06/01-08:51:10.741680 7f52c4bfb6c0 Delete type=2 #169 +2026/06/01-08:51:10.747933 7f52c4bfb6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 784560 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zzqLG98O4eFQZHp0' @ 0 : 0; will stop at (end) diff --git a/packs/tables-pnj/MANIFEST-000048 b/packs/tables-pnj/MANIFEST-000048 deleted file mode 100644 index 3f2e4b2..0000000 Binary files a/packs/tables-pnj/MANIFEST-000048 and /dev/null differ diff --git a/packs/tables-pnj/MANIFEST-000171 b/packs/tables-pnj/MANIFEST-000171 new file mode 100644 index 0000000..9323706 Binary files /dev/null and b/packs/tables-pnj/MANIFEST-000171 differ diff --git a/packs/talents-psioniques/000076.log b/packs/talents-psioniques/000076.log deleted file mode 100644 index e69de29..0000000 diff --git a/packs/tables-pnj/000081.log b/packs/talents-psioniques/000091.log similarity index 100% rename from packs/tables-pnj/000081.log rename to packs/talents-psioniques/000091.log diff --git a/packs/talents-psioniques/CURRENT b/packs/talents-psioniques/CURRENT index f8d57cc..2f2c868 100644 --- a/packs/talents-psioniques/CURRENT +++ b/packs/talents-psioniques/CURRENT @@ -1 +1 @@ -MANIFEST-000074 +MANIFEST-000090 diff --git a/packs/talents-psioniques/LOG b/packs/talents-psioniques/LOG index f684555..1f0fb88 100644 --- a/packs/talents-psioniques/LOG +++ b/packs/talents-psioniques/LOG @@ -1,8 +1,3 @@ -2026/05/27-23:11:58.427900 7f3ebd7ff6c0 Recovering log #72 -2026/05/27-23:11:58.438233 7f3ebd7ff6c0 Delete type=3 #70 -2026/05/27-23:11:58.438292 7f3ebd7ff6c0 Delete type=0 #72 -2026/05/28-01:07:03.314279 7f3e6effd6c0 Level-0 table #77: started -2026/05/28-01:07:03.314328 7f3e6effd6c0 Level-0 table #77: 0 bytes OK -2026/05/28-01:07:03.320204 7f3e6effd6c0 Delete type=0 #75 -2026/05/28-01:07:03.356871 7f3e6effd6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) -2026/05/28-01:07:03.381781 7f3e6effd6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) +2026/06/01-22:42:05.875087 7f52c6bff6c0 Recovering log #88 +2026/06/01-22:42:05.885101 7f52c6bff6c0 Delete type=3 #86 +2026/06/01-22:42:05.885133 7f52c6bff6c0 Delete type=0 #88 diff --git a/packs/talents-psioniques/LOG.old b/packs/talents-psioniques/LOG.old index f104890..d49837c 100644 --- a/packs/talents-psioniques/LOG.old +++ b/packs/talents-psioniques/LOG.old @@ -1,8 +1,8 @@ -2026/05/27-14:31:25.650849 7f3e6f7fe6c0 Recovering log #67 -2026/05/27-14:31:25.660624 7f3e6f7fe6c0 Delete type=3 #65 -2026/05/27-14:31:25.660648 7f3e6f7fe6c0 Delete type=0 #67 -2026/05/27-14:33:21.780104 7f3e6effd6c0 Level-0 table #73: started -2026/05/27-14:33:21.780129 7f3e6effd6c0 Level-0 table #73: 0 bytes OK -2026/05/27-14:33:21.786659 7f3e6effd6c0 Delete type=0 #71 -2026/05/27-14:33:21.800546 7f3e6effd6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) -2026/05/27-14:33:21.808253 7f3e6effd6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) +2026/06/01-08:35:53.549764 7f52c5bfd6c0 Recovering log #84 +2026/06/01-08:35:53.560355 7f52c5bfd6c0 Delete type=3 #82 +2026/06/01-08:35:53.560413 7f52c5bfd6c0 Delete type=0 #84 +2026/06/01-08:51:10.491490 7f52c4bfb6c0 Level-0 table #89: started +2026/06/01-08:51:10.491513 7f52c4bfb6c0 Level-0 table #89: 0 bytes OK +2026/06/01-08:51:10.498412 7f52c4bfb6c0 Delete type=0 #87 +2026/06/01-08:51:10.505791 7f52c4bfb6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) +2026/06/01-08:51:10.560715 7f52c4bfb6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end) diff --git a/packs/talents-psioniques/MANIFEST-000074 b/packs/talents-psioniques/MANIFEST-000090 similarity index 62% rename from packs/talents-psioniques/MANIFEST-000074 rename to packs/talents-psioniques/MANIFEST-000090 index 962fbd8..6d27032 100644 Binary files a/packs/talents-psioniques/MANIFEST-000074 and b/packs/talents-psioniques/MANIFEST-000090 differ diff --git a/scripts/SectorMapApp.js b/scripts/SectorMapApp.js new file mode 100644 index 0000000..fe5baa4 --- /dev/null +++ b/scripts/SectorMapApp.js @@ -0,0 +1,496 @@ +/** + * MGT2 – SectorMapApp + * + * Application interactive affichant une carte Traveller Map dans un IFRAME. + * Les clics sur la carte affichent les détails du monde dans le chat. + */ + +const { ApplicationV2 } = foundry.applications.api; +const MODULE_ID = 'mgt2-compendium-amiral-denisov'; + +export class SectorMapApp extends ApplicationV2 { + static DEFAULT_OPTIONS = { + id: 'mgt2-sector-map', + classes: ['mgt2-sector-map'], + position: { width: 960, height: 720 }, + window: { icon: 'fas fa-map', resizable: true, controls: [] }, + }; + + constructor(sector, subsector) { + super(); + this._sector = sector; + this._subsector = subsector; + this._handler = null; + } + + get title() { + return this._subsector + ? `Sous-secteur ${this._subsector} — ${this._sector}` + : `Secteur ${this._sector}`; + } + + get _mapUrl() { + const base = 'https://travellermap.com'; + if (this._subsector) { + return `${base}/?sector=${encodeURIComponent(this._sector)}&subsector=${encodeURIComponent(this._subsector)}&style=mongoose&hideui=1`; + } + return `${base}/go/${encodeURIComponent(this._sector)}?style=mongoose`; + } + + /* ───── Rendu ───── */ + + _replaceHTML(result, config) { + const content = this.element?.querySelector('.window-content'); + if (!content) return; + const html = typeof result === 'string' ? result : this._lastHTML; + content.innerHTML = typeof html === 'string' ? html : ''; + } + + _renderHTML() { + return `
+
+ ${this._sector}${this._subsector ? ` — sous-secteur ${this._subsector}` : ''} + Cliquez sur un hex pour voir les détails du monde + + +
+ +
`; + } + + async _onRender(context, options) { + this._listen(); + this.element?.querySelector('.mgt2-sector-map-share')?.addEventListener('click', () => { + this._shareMap(); + }); + this.element?.querySelector('.mgt2-sector-map-sync')?.addEventListener('click', () => { + this._syncAll(); + }); + } + + /* ───── Écoute des clics IFRAME ───── */ + + _listen() { + if (this._handler) return; + this._handler = (event) => { + // Accept messages from travellermap or any origin (for testing) + const d = event.data || {}; + const wx = d.x ?? d.location?.x; + const wy = d.y ?? d.location?.y; + if (wx == null || wy == null) return; + const x = Number(wx); + const y = Number(wy); + if (isNaN(x) || isNaN(y)) return; + console.log('SectorMapApp | click at', x, y, 'from', event.origin); + this._onMapClick({x, y}).catch(err => { + console.error('SectorMapApp | click handler failed:', err); + }); + }; + window.addEventListener('message', this._handler); + } + + async _onMapClick(loc) { + const wx = loc?.x; + const wy = loc?.y; + if (wx == null || wy == null) return; + + const coordResp = await fetch( + `https://travellermap.com/api/coordinates?x=${wx}&y=${wy}` + ); + if (!coordResp.ok) { console.error('SectorMapApp | /api/coordinates failed', coordResp.status); return; } + const coord = await coordResp.json(); + const { sx, sy, hx, hy } = coord; + if (sx == null || hx == null || hy == null) { console.error('SectorMapApp | no sx/hx/hy in', coord); return; } + + const metaResp = await fetch( + `https://travellermap.com/api/metadata?sx=${sx}&sy=${sy}` + ); + if (!metaResp.ok) { console.error('SectorMapApp | /api/metadata failed', metaResp.status); return; } + const meta = await metaResp.json(); + const sectorName = meta.Names?.[0]?.Text; + if (!sectorName) { console.error('SectorMapApp | no Names[0].Text in metadata', meta); return; } + + const hex = String(hx).padStart(2, '0') + String(hy).padStart(2, '0'); + const resp = await fetch( + `https://travellermap.com/data/${encodeURIComponent(sectorName)}/${hex}` + ); + if (!resp.ok) { console.error('SectorMapApp | /data failed', resp.status, sectorName, hex); return; } + + const data = await resp.json(); + const world = data.Worlds?.[0]; + if (!world) { console.error('SectorMapApp | no Worlds in data', data); return; } + + this._postWorldCard(world); + } + + /* ───── Carte de chat ───── */ + + static _STARPORT = { A:'Excellent', B:'Bon', C:'Routinier', D:'Médiocre', E:'Frontière', X:'Aucun' }; + static _SIZE = ['Aucun (Astéroïde)','1 600 km','3 200 km','4 800 km','6 400 km','8 000 km','9 600 km','11 200 km','12 800 km','14 400 km','16 000 km']; // A=10, F=15=Gaz géant (géré à part) + static _ATMO = [ + 'Aucune (vide)','Trace','Très ténue (polluée)','Très ténue','Ténue (polluée)','Ténue','Standard','Standard (polluée)','Dense','Dense (polluée)', + 'Exotique','Corrosive','Insidieuse','','','']; + static _HYDRO = [ '0–5% (désert)','6–15%','16–25%','26–35%','36–45%','46–55%','56–65%','66–75%','76–85%','86–95%','96–100%' ]; + static _POP = ['','Dizaines','Centaines','Milliers','Dizaines de milliers','Centaines de milliers','Millions','Dizaines de millions','Centaines de millions','Milliards','Dizaines de milliards','','','','','','']; + static _GOV = [ + 'Aucun','Compagnie / Corporation','Démocratie participative','Oligarchie auto-perpétuée', + 'Démocratie représentative','Technocratie féodale','Gouvernement captif / Colonie', + 'Balkanisation','Bureaucratie de service civil','Bureaucratie impersonnelle', + 'Dictature charismatique','Dictature non-charismatique','Oligarchie charismatique', + 'Dictature religieuse','Oligarchie religieuse','Gouvernement tribal']; + static _LAW = [ + 'Aucune', 'Armes de poing, explosifs, poison','Armes à énergie portatives','Mitrailleuses, armes auto', + 'Armes d\'assaut légères, PM','Armes de poing individuelles','Toutes les armes à feu sauf neutralisateur', + 'Fusils, neutralisateur','Armes blanches, neutralisateur','Armes hors du domicile','Armes interdites', + 'Contrôle rigide','Aucune arme','Contrôle militariste sévère']; + static _TL = [ + 'Âge de pierre','Âge du bronze/fer','Médiéval','Grandes découvertes','Révolution industrielle', + 'Production mécanisée','Ère nucléaire','Pré-stellaire (ère de l\'information)','Propulsion à saut (1re gen)', + 'Propulsion à saut-2','Propulsion à saut-3','Propulsion à saut-4','Propulsion à saut-5', + 'Propulsion à saut-6','Transporteur','Moyenne stellaire']; + + static _hexVal(ch) { + const n = parseInt(ch, 36); + if (isNaN(n)) return -1; + return n; + } + + static _uwpDigit(desc, val) { + return `${val}`; + } + + _uwpBreakdown(uwp) { + if (!uwp || uwp.length < 2) return ''; + const d = SectorMapApp._hexVal; + const s = d(uwp[0]), sz = d(uwp[1]), a = d(uwp[2]), h = d(uwp[3]); + const p = d(uwp[4]), g = d(uwp[5]), l = d(uwp[6]); + const t = uwp.length > 8 ? d(uwp[8]) : -1; + + const lines = []; + + const starport = SectorMapApp._STARPORT[uwp[0]]; + lines.push(`${uwp[0]}Starport${starport ?? '—'}`); + + if (uwp[1] === 'F' || uwp[1] === 'f') { + lines.push(`${uwp[1]}TailleGaz géant`); + } else if (sz >= 0 && sz <= 10) { + const km = SectorMapApp._SIZE[sz]; + const grav = sz === 0 ? '0g' : (sz < 10 ? `0.${sz}g` : '1.0g+'); + lines.push(`${uwp[1]}Taille${km} (${grav})`); + } + + if (a >= 0 && a <= 15) { + const atmo = SectorMapApp._ATMO[a] ?? '—'; + lines.push(`${uwp[2]}Atmosphère${atmo}`); + } + + if (h >= 0 && h <= 10) { + lines.push(`${uwp[3]}Hydrosphère${SectorMapApp._HYDRO[h]}`); + } + + if (p >= 0 && p <= 15) { + lines.push(`${uwp[4]}Population${SectorMapApp._POP[p] ?? '—'}`); + } + + if (g >= 0 && g <= 15) { + lines.push(`${uwp[5]}Gouvernement${SectorMapApp._GOV[g] ?? '—'}`); + } + + if (l >= 0 && l <= 15) { + lines.push(`${uwp[6]}Niveau légal${SectorMapApp._LAW[l] ?? '—'}`); + } + + if (t >= 0 && t <= 15) { + lines.push(`${uwp[8]}Technologie${SectorMapApp._TL[t] ?? '—'}`); + } + + return `${lines.join('')}
`; + } + + static _REMARKS_HELP = { + AB:'Anneau (ceinture)', AG:'Agricole', AN:'Site ancien', AS:'Astéroïde', + BA:'Bande astéroïdale', CP:'Sous-secteur capitale', CS:'Colonie', + CX:'Chasseur (Croiseur)', CY:'Colonie', DA:'Déchu', DE:'Désertique', + DI:'Interdit (Diebar)', FL:'Fluides Lo', FO:'Interdit (Forbidden)', + FR:'Gelé (Frozen)', GA:'Jardin (Garden)', HE:'Helios', HI:'Haute population', + HT:'Haute technologie', IC:'Mondes gelés (Ice)', IN:'Industrialisé', + LI:'Faible population', LO:'Faible population (Low)', LT:'Basse technologie (Low Tech)', + MI:'Militaire', MR:'Mine (ressources)', NA:'Non-agricole', + NI:'Non-industrialisé', OC:'Océanique', OX:'Oxydant', + PA:'Pré-agricole (Pre-Agricultural)', PH:'Phosphore', + PO:'Pauvre (Poor)', PR:'Pré-industriel (Pre-Industrial)', + PX:'Prisonnier (exil)', PZ:'Puzzle (énigmatique)', + RE:'Religieux (Religious)', RI:'Riche (Rich)', + SA:'Bande d\'astéroïdes (Satellite)', SC:'Sainte (colonie)', + SL:'Esclavage (Slave)', SO:'Soleil (Sol)', SP:'Désert (Despoiled)', + SR:'Réserve (Reserve)', ST:'Base stellaire', SU:'Secteur capitale', + TR:'Traces (Trace)', TU:'Tucannides', TZ:'Mondes Tz', + UN:'Inhabité (Uninhabited)', VA:'Vide (Vacuum)', + WA:'Monde aquatique (Water)', WT:'Monde d\'eau (Watery)', + }; + + static _STAR_TYPES = { O:'Bleu (hypergéante)', B:'Bleu-blanc', A:'Blanc', F:'Blanc-jaune', G:'Jaune (naine)', K:'Orange (naine)', M:'Rouge (naine)', L:'Brune', T:'Brune', Y:'Brune' }; + static _STAR_CLASS = { 'I':'Supergéante', 'II':'Géante brillante', 'III':'Géante', 'IV':'Sous-géante', 'V':'Naine (séquence principale)', 'VI':'Sous-naine', 'VII':'Naine blanche' }; + + + + static _BASES_HELP = { + N:'Base navale', S:'Base scout', W:'Relais', D:'Dépôt naval', + T:'Base TAS', C:'Consulat', P:'Base pirate', R:'Base de réparation', + K:'Base navale (K.)', X:'Relais Xboat', + }; + + _tooltipHelp(map, codes) { + if (!codes) return ''; + return codes.split(/[\s,;]+/).map(c => { + const desc = map[c.toUpperCase()]; + return `${c}${desc ? ' — ' + desc : ''}`; + }).join(' | '); + } + + static _NOBILITY = { + B:'Chevalier (Baronet)', C:'Baron', D:'Marquis', E:'Comte', F:'Duc', G:'Archiduc', H:'Empereur', + }; + + static _IMPORTANCE = { + '-5':'Très mineur', '-4':'Mineur', '-3':'Mineur', '-2':'Très secondaire', '-1':'Secondaire', + '0':'Ordinaire', '1':'Important', '2':'Important', '3':'Très important', '4':'Majeure', + '5':'Majeure', '6':'Capitale', + }; + + /* ───── Lignes dépliables (details/summary) ───── */ + + _foldRow(label, value, detail, titleAttr) { + const valAttr = titleAttr ? ` title="${titleAttr}"` : ''; + return ` +
+ ${label}${value} +
${detail}
+
+ `; + } + + _decodeImportance(ix) { + if (!ix) return ''; + const m = String(ix).match(/\{?\s*(-?\d+)\s*\}?/); + if (!m) return this._foldRow('Importance', ix, ''); + const val = m[1]; + const desc = SectorMapApp._IMPORTANCE[val] || '—'; + const detail = `
Valeur d’importance économique et stratégique du monde.
${val} = ${desc}
`; + return this._foldRow('Importance', `{ ${val} } ${desc}`, detail); + } + + _decodeEconomics(ex) { + if (!ex) return ''; + let s = String(ex).replace(/[()\s]/g, ''); + const m = s.match(/^([\dA-F])([\dA-F])([\dA-F])([+-]\d+)$/i); + if (!m) return this._foldRow('Économie', ex, ''); + const res = m[1], lab = m[2], inf = m[3], eff = m[4]; + const detail = ` + + + + +
Ressources${res}
Main-d’œuvre${lab}
Infrastructure${inf}
Efficacité${eff}
`; + return this._foldRow('Économie', `( ${res} ${lab} ${inf} ${eff} )`, detail); + } + + _decodeCulture(cx) { + if (!cx) return ''; + const s = String(cx).replace(/[\[\]\s]/g, ''); + if (s.length < 4) return this._foldRow('Culture', cx, ''); + const h = s[0].toUpperCase(), t = s[1].toUpperCase(), p = s[2].toUpperCase(), a = s[3].toUpperCase(); + const detail = ` + + + + +
Hétérogénéité${h}
Traditionalisme${t}
Progressisme${p}
Agressivité${a}
`; + return this._foldRow('Culture', `[ ${h} ${t} ${p} ${a} ]`, detail); + } + + _decodePopulation(uwp, pbg) { + if (!uwp || uwp.length < 5) return ''; + const popUwp = SectorMapApp._hexVal(uwp[4]); + if (popUwp < 0) return ''; + const popPbg = pbg ? parseInt(pbg[0], 10) : null; + const multiplier = popPbg != null && !isNaN(popPbg) ? popPbg : 1; + const base = Math.pow(10, popUwp); + const total = multiplier * base; + const fmtBase = `10${popUwp}`; + const fmtMult = multiplier; + const fmtTotal = total >= 1e9 ? `${(total / 1e9).toFixed(1)} milliards` + : total >= 1e6 ? `${(total / 1e6).toFixed(1)} millions` + : total >= 1e3 ? `${(total / 1e3).toFixed(0)} 000` + : String(total); + const belts = pbg ? parseInt(pbg[1], 10) : null; + const gas = pbg ? parseInt(pbg[2], 10) : null; + const detail = `
Population = multiplicateur (PBG: ${popPbg}) × 10chiffre UWP (${uwp[4]})
+ Ceintures d’astéroïdes : ${belts ?? '?'}  |  Géantes gazeuses : ${gas ?? '?'}
`; + return this._foldRow('Population', `${fmtMult} × ${fmtBase} = ${fmtTotal}`, detail); + } + + _decodeNobility(nob) { + if (!nob) return ''; + const titles = []; + for (const ch of nob) { + const desc = SectorMapApp._NOBILITY[ch.toUpperCase()]; + if (desc) titles.push(`${ch} (${desc})`); + } + if (!titles.length) return this._foldRow('Noblesse', nob, ''); + const detail = `
Titres de noblesse impériale présents sur ce monde.
`; + return this._foldRow('Noblesse', titles.join(', '), detail); + } + + _postWorldCard(w) { + const sector = w.Sector || ''; + const hex = w.Hex || ''; + const name = w.Name || '—'; + const uwp = w.UWP || '???????-?'; + const bases = w.Bases || ''; + const remarks = w.Remarks || ''; + const allegiance = w.Allegiance || ''; + const stellar = w.Stellar || ''; + const zone = w.Zone || ''; + const pbg = w.PBG || ''; + + const zoneLabel = zone === 'R' ? 'Rouge' + : zone === 'A' ? 'Ambre' + : 'Verte'; + + // Construction des lignes pliables + const lines = []; + + // UWP + const uwpDetail = this._uwpBreakdown(uwp); + lines.push(this._foldRow('UWP', `${uwp}`, uwpDetail)); + + // Champs étendus + const ixRow = this._decodeImportance(w.Ix); + if (ixRow) lines.push(ixRow); + const exRow = this._decodeEconomics(w.Ex); + if (exRow) lines.push(exRow); + const cxRow = this._decodeCulture(w.Cx); + if (cxRow) lines.push(cxRow); + const popRow = this._decodePopulation(uwp, pbg); + if (popRow) lines.push(popRow); + const nobRow = this._decodeNobility(w.Nobility); + if (nobRow) lines.push(nobRow); + + // Bases + if (bases) { + const bCodes = bases.split(/[\s,;]+/); + const bList = bCodes.map(c => { + const desc = SectorMapApp._BASES_HELP[c.toUpperCase()]; + return `${c}${desc || '—'}`; + }).join(''); + const bDetail = `${bList}
`; + lines.push(this._foldRow('Bases', bases, bDetail)); + } + + // Remarques + if (remarks) { + const rCodes = remarks.split(/[\s,;]+/); + const rList = rCodes.map(c => { + const desc = SectorMapApp._REMARKS_HELP[c.toUpperCase()]; + return `${c}${desc || '—'}`; + }).join(''); + const rDetail = `${rList}
`; + lines.push(this._foldRow('Remarques', remarks, rDetail)); + } + + // Allégeance + if (allegiance) { + const allegFull = w.AllegianceName || ''; + const aDetail = `
${allegFull || allegiance}
`; + lines.push(this._foldRow('Allégeance', allegFull ? `${allegiance} (${allegFull})` : allegiance, aDetail)); + } + + // Étoile (les notations comme "G3 V" contiennent un espace entre sous-classe et luminosité) + if (stellar) { + const sList = []; + let remaining = stellar.trim(); + const reStar = /^([OBAFGKMLTY])(\d)\s*(VII|VI|V|IV|III|II|I)\s*/i; + while (remaining) { + const m = remaining.match(reStar); + if (m) { + const type = SectorMapApp._STAR_TYPES[m[1].toUpperCase()] || m[1]; + const cls = SectorMapApp._STAR_CLASS[m[3]] || m[3]; + sList.push(`${m[1]}${m[2]} ${m[3]}${type} · ${cls}`); + remaining = remaining.slice(m[0].length).trimStart(); + } else { + // Saute les tokens non reconnus (BD, compagnon, etc.) + const next = remaining.indexOf(' '); + if (next < 0) break; + remaining = remaining.slice(next + 1).trimStart(); + } + } + const sDetail = sList.length ? `${sList.join('')}
` : `
${stellar}
`; + lines.push(this._foldRow('Étoile', `${stellar}`, sDetail)); + } + + const html = `
+
+ ${name} + ${sector} ${hex} + ${zoneLabel} +
+ ${lines.join('')}
+
`; + + ChatMessage.create({ + content: html, + whisper: [game.user.id], + }); + } + + /* ───── Partage ───── */ + + _shareMap() { + const posterUrl = `https://travellermap.com/api/poster?sector=${encodeURIComponent(this._sector)}${this._subsector ? `&subsector=${encodeURIComponent(this._subsector)}` : ''}&style=mongoose&scale=128&dpr=2`; + const label = this._subsector + ? `Sous-secteur ${this._subsector} — ${this._sector}` + : `Secteur ${this._sector}`; + + const html = `
+
+ ${label} +
+
+ ${label} +
+ +
`; + + ChatMessage.create({ content: html, rollMode: 'public' }); + ui.notifications.info(`Carte partagée avec les joueurs`); + } + + _syncAll() { + game.socket.emit(`module.${MODULE_ID}`, { + type: 'sectorMapSync', + sector: this._sector, + subsector: this._subsector, + }); + ui.notifications.info(`Carte synchronisée chez tous les joueurs`); + } + + /* ───── Nettoyage ───── */ + + close() { + if (this._handler) { + window.removeEventListener('message', this._handler); + this._handler = null; + } + return super.close(); + } +} diff --git a/scripts/sector.js b/scripts/sector.js new file mode 100644 index 0000000..f250579 --- /dev/null +++ b/scripts/sector.js @@ -0,0 +1,146 @@ +/** + * MGT2 – Commandes /sector et /subsector + * + * Ouvre l'application interactive SectorMapApp (IFRAME Traveller Map). + * Compatible Foundry VTT v13 et v14 + */ + +import { SectorMapApp } from './SectorMapApp.js'; + +const MODULE_ID = 'mgt2-compendium-amiral-denisov'; +const ChatLogV2 = foundry.applications?.sidebar?.tabs?.ChatLog; + +let _pendingHandle = false; + +/* ───── Fonctions partagées ───── */ + +async function openMap(sector, subsector) { + const app = new SectorMapApp(sector, subsector); + await app.render({ force: true }); +} + +async function handleSectorCommand(sector, subsector) { + if (_pendingHandle) return; + _pendingHandle = true; + try { + if (!sector?.trim()) { + ui.notifications.warn('Usage : /sector (ex: /sector "Spinward Marches")'); + return; + } + if (!game.user?.isGM) { + ui.notifications.error('Seul le MJ peut utiliser cette commande'); + return; + } + await openMap(sector.trim()); + } catch (err) { + console.error(`${MODULE_ID} | Erreur /sector :`, err); + ui.notifications.error(`Erreur : ${err.message}`); + } finally { + _pendingHandle = false; + } +} + +async function handleSubsectorCommand(raw) { + if (_pendingHandle) return; + _pendingHandle = true; + try { + const parts = raw?.trim().split(/\s+/); + if (!parts || parts.length < 2) { + ui.notifications.warn('Usage : /subsector (ex: /subsector "Spinward Marches" C)'); + return; + } + const sub = parts.pop(); + const sector = parts.join(' '); + if (!sector || !sub) { + ui.notifications.warn('Usage : /subsector '); + return; + } + if (!game.user?.isGM) { + ui.notifications.error('Seul le MJ peut utiliser cette commande'); + return; + } + await openMap(sector.trim(), sub.trim()); + } catch (err) { + console.error(`${MODULE_ID} | Erreur /subsector :`, err); + ui.notifications.error(`Erreur : ${err.message}`); + } finally { + _pendingHandle = false; + } +} + +/* ───── Commande /sector ───── */ + +if (ChatLogV2?.CHAT_COMMANDS) { + ChatLogV2.CHAT_COMMANDS['sector'] = { + rgx: /^\/sector(?:\s+(.*))?$/i, + fn: function() { + const raw = arguments[1]?.[1]?.trim?.(); + if (raw) { + handleSectorCommand(raw); + return false; + } + return true; + }, + }; + console.log(`${MODULE_ID} | Commande /sector enregistrée`); + + ChatLogV2.CHAT_COMMANDS['subsector'] = { + rgx: /^\/subsector(?:\s+(.*))?$/i, + fn: function() { + const raw = arguments[1]?.[1]?.trim?.(); + if (raw) { + handleSubsectorCommand(raw); + return false; + } + return true; + }, + }; + console.log(`${MODULE_ID} | Commande /subsector enregistrée`); +} + +/* ───── Hooks de secours (v13 / fallback v14) ───── */ + +Hooks.on('preCreateChatMessage', (message, data, options) => { + const c = message.content?.trim(); + + let m = c?.match(/^\/sector(?:\s+(.*))?$/i); + if (m) { + handleSectorCommand(m[1]?.trim()); + return false; + } + + m = c?.match(/^\/subsector(?:\s+(.*))?$/i); + if (m) { + handleSubsectorCommand(m[1]?.trim()); + return false; + } +}); + +/* ───── Socket (synchronisation MJ → joueurs) ───── */ + +Hooks.once('ready', () => { + game.socket.on(`module.${MODULE_ID}`, (data) => { + if (data?.type !== 'sectorMapSync') return; + if (game.user?.isGM) return; + openMap(data.sector, data.subsector); + }); +}); + +Hooks.on('chatMessage', (...args) => { + let msg; + if (args[0]?.content !== undefined) msg = args[0].content; + else if (typeof args[1] === 'string') msg = args[1]; + else return; + + let m = msg?.trim()?.match(/^\/sector(?:\s+(.*))?$/i); + if (m) { + handleSectorCommand(m[1]?.trim()); + return false; + } + + m = msg?.trim()?.match(/^\/subsector(?:\s+(.*))?$/i); + if (m) { + handleSubsectorCommand(m[1]?.trim()); + return false; + } +}); diff --git a/styles/npc.css b/styles/npc.css index 51fd6d8..6d120e7 100644 --- a/styles/npc.css +++ b/styles/npc.css @@ -329,3 +329,278 @@ button.btn-calculate:hover, border-color: #a9d0a9; background: #eef8ee; } + +/* === MGT2 Sector Map ====================================================== */ + +#mgt2-sector-map .window-content { + padding: 0; + overflow: hidden; + background: #1a1a2e; +} + +.mgt2-sector-map-outer { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; +} + +.mgt2-sector-map-toolbar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 6px 12px; + background: #2c2c3e; + border-bottom: 1px solid #c9a227; + flex-shrink: 0; +} + +.mgt2-sector-map-label { + color: #d9b24c; + font-weight: bold; + font-size: 0.85em; +} + +.mgt2-sector-map-hint { + color: #a99c7a; + font-size: 0.78em; +} + +.mgt2-sector-map-share { + background: #c9a227; + color: #1a1a2e; + border: none; + border-radius: 3px; + padding: 4px 12px; + font-size: 0.8em; + font-weight: bold; + cursor: pointer; + flex-shrink: 0; +} + +.mgt2-sector-map-share:hover { + background: #d9b24c; +} + +.mgt2-sector-map-frame { + width: 100%; + flex: 1; + border: none; +} + +/* === MGT2 World Card (chat) ============================================== */ + +.mgt2-world-card { + background: #f5f0e8; + border: 1px solid #c9a227; + border-radius: 5px; + overflow: hidden; + font-family: 'Signika', sans-serif; + color: #222; +} + +.mgt2-world-card-header { + display: flex; + align-items: center; + gap: 10px; + padding: 8px 12px; + background: #2c2c3e; + border-bottom: 2px solid #c9a227; +} + +.mgt2-world-name { + font-size: 1.1em; + font-weight: bold; + color: #d9b24c; +} + +.mgt2-world-hex { + font-size: 0.78em; + color: #a99c7a; + font-weight: normal; +} + +.mgt2-world-zone { + margin-left: auto; + font-size: 0.75em; + font-weight: bold; + padding: 2px 8px; + border-radius: 999px; + text-transform: uppercase; +} + +.mgt2-world-zone.zone-g { + background: #2a6a2a; + color: #fff; +} + +.mgt2-world-zone.zone-a { + background: #b8860b; + color: #fff; +} + +.mgt2-world-zone.zone-r { + background: #8b0000; + color: #fff; +} + +.mgt2-world-card-body { + width: 100%; + border-collapse: collapse; +} + +.mgt2-world-card-body td { + padding: 0; + border-bottom: 1px solid #e0d8c8; +} + +.mgt2-world-card-body .mono { + font-family: 'Courier New', monospace; + letter-spacing: 0.1em; +} + +/* === Fold rows (details/summary) ========================================= */ + +.mgt2-world-card-body details { + display: block; +} + +.mgt2-world-card-body summary { + display: flex; + align-items: center; + gap: 8px; + padding: 4px 12px; + cursor: pointer; + list-style: none; + user-select: none; +} + +.mgt2-world-card-body summary::-webkit-details-marker { + display: none; +} + +.mgt2-world-card-body summary::before { + content: '▸'; + color: #c9a227; + font-size: 0.75em; + flex-shrink: 0; + transition: transform 0.15s; +} + +.mgt2-world-card-body details[open] summary::before { + transform: rotate(90deg); +} + +.mgt2-world-card-body summary:hover { + background: rgba(201, 162, 39, 0.08); +} + +.fold-label { + width: 100px; + flex-shrink: 0; + font-weight: bold; + color: #5f4300; + font-size: 0.83em; +} + +.fold-value { + font-size: 0.83em; + color: #222; +} + +.fold-content { + padding: 4px 12px 8px 28px; + font-size: 0.78em; + color: #555; + background: rgba(201, 162, 39, 0.04); + border-top: 1px solid #ece6da; +} + +.fold-desc { + line-height: 1.5; +} + +.fold-subtable { + width: 100%; + border-collapse: collapse; +} + +.fold-subtable td { + padding: 2px 8px; + font-size: 0.95em; + border: none; +} + +.fold-subtable td:first-child { + width: 120px; + font-weight: 600; + color: #5f4300; +} + +.fold-subtable td:nth-child(2) { + font-family: 'Courier New', monospace; + color: #7a5c00; + letter-spacing: 0.1em; +} + +/* === UWP breakdown inside fold =========================================== */ + +.uwp-breakdown { + width: 100%; + border-collapse: collapse; +} + +.uwp-breakdown td { + padding: 2px 8px; + font-size: 0.95em; + border-bottom: 1px solid #ece6da; + border-top: none; + color: #555; +} + +.uwp-breakdown td:first-child { + width: 24px; + font-family: 'Courier New', monospace; + font-weight: bold; + color: #7a5c00; + letter-spacing: 0.05em; +} + +.uwp-breakdown td:nth-child(2) { + width: 110px; + font-weight: 600; + color: #5f4300; +} + +.uwp-breakdown td:nth-child(3) { + color: #666; +} + +.uwp-breakdown tr:last-child td { + border-bottom: none; +} + +/* === MGT2 Shared Map (chat) ============================================== */ + +.mgt2-shared-map { + background: #f5f0e8; + border: 1px solid #c9a227; + border-radius: 5px; + overflow: hidden; + font-family: 'Signika', sans-serif; + color: #222; +} + +.mgt2-shared-map .mgt2-sector-map-share { + display: none; +} + +.mgt2-shared-map-image { + line-height: 0; +} + +.mgt2-shared-map-image img { + display: block; + max-width: 100%; + height: auto; +}