AJout gestion map
This commit is contained in:
@@ -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.
|
||||
@@ -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",
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000084
|
||||
MANIFEST-000100
|
||||
|
||||
+3
-8
@@ -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
|
||||
|
||||
+8
-8
@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000183
|
||||
MANIFEST-000199
|
||||
|
||||
+3
-8
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000067
|
||||
MANIFEST-000083
|
||||
|
||||
+3
-8
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000186
|
||||
MANIFEST-000202
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000120
|
||||
MANIFEST-000136
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000128
|
||||
MANIFEST-000144
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000120
|
||||
MANIFEST-000136
|
||||
|
||||
+3
-7
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000101
|
||||
MANIFEST-000117
|
||||
|
||||
+3
-8
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000128
|
||||
MANIFEST-000144
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
BIN
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000120
|
||||
MANIFEST-000136
|
||||
|
||||
+3
-7
@@ -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
|
||||
|
||||
+7
-7
@@ -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)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000128
|
||||
MANIFEST-000144
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000048
|
||||
MANIFEST-000171
|
||||
|
||||
+34
-92
@@ -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
|
||||
|
||||
+39
-25
@@ -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)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000074
|
||||
MANIFEST-000090
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Binary file not shown.
@@ -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 `<div class="mgt2-sector-map-outer">
|
||||
<div class="mgt2-sector-map-toolbar">
|
||||
<span class="mgt2-sector-map-label">${this._sector}${this._subsector ? ` — sous-secteur ${this._subsector}` : ''}</span>
|
||||
<span class="mgt2-sector-map-hint">Cliquez sur un hex pour voir les détails du monde</span>
|
||||
<button type="button" class="mgt2-sector-map-share" title="Partager une image fixe dans le chat"><i class="fas fa-image"></i> Partager</button>
|
||||
<button type="button" class="mgt2-sector-map-sync" title="Ouvrir la carte interactive chez tous les joueurs"><i class="fas fa-users"></i> Synchroniser</button>
|
||||
</div>
|
||||
<iframe
|
||||
src="${this._mapUrl}"
|
||||
class="mgt2-sector-map-frame"
|
||||
allow="clipboard-write"
|
||||
referrerpolicy="no-referrer">
|
||||
</iframe>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
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 `<span class="uwp-dig" title="${desc}">${val}</span>`;
|
||||
}
|
||||
|
||||
_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(`<tr><td>${uwp[0]}</td><td>Starport</td><td>${starport ?? '—'}</td></tr>`);
|
||||
|
||||
if (uwp[1] === 'F' || uwp[1] === 'f') {
|
||||
lines.push(`<tr><td>${uwp[1]}</td><td>Taille</td><td>Gaz géant</td></tr>`);
|
||||
} 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(`<tr><td>${uwp[1]}</td><td>Taille</td><td>${km} (${grav})</td></tr>`);
|
||||
}
|
||||
|
||||
if (a >= 0 && a <= 15) {
|
||||
const atmo = SectorMapApp._ATMO[a] ?? '—';
|
||||
lines.push(`<tr><td>${uwp[2]}</td><td>Atmosphère</td><td>${atmo}</td></tr>`);
|
||||
}
|
||||
|
||||
if (h >= 0 && h <= 10) {
|
||||
lines.push(`<tr><td>${uwp[3]}</td><td>Hydrosphère</td><td>${SectorMapApp._HYDRO[h]}</td></tr>`);
|
||||
}
|
||||
|
||||
if (p >= 0 && p <= 15) {
|
||||
lines.push(`<tr><td>${uwp[4]}</td><td>Population</td><td>${SectorMapApp._POP[p] ?? '—'}</td></tr>`);
|
||||
}
|
||||
|
||||
if (g >= 0 && g <= 15) {
|
||||
lines.push(`<tr><td>${uwp[5]}</td><td>Gouvernement</td><td>${SectorMapApp._GOV[g] ?? '—'}</td></tr>`);
|
||||
}
|
||||
|
||||
if (l >= 0 && l <= 15) {
|
||||
lines.push(`<tr><td>${uwp[6]}</td><td>Niveau légal</td><td>${SectorMapApp._LAW[l] ?? '—'}</td></tr>`);
|
||||
}
|
||||
|
||||
if (t >= 0 && t <= 15) {
|
||||
lines.push(`<tr><td>${uwp[8]}</td><td>Technologie</td><td>${SectorMapApp._TL[t] ?? '—'}</td></tr>`);
|
||||
}
|
||||
|
||||
return `<table class="uwp-breakdown"><tbody>${lines.join('')}</tbody></table>`;
|
||||
}
|
||||
|
||||
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 `<tr><td colspan="2">
|
||||
<details>
|
||||
<summary><span class="fold-label">${label}</span><span class="fold-value"${valAttr}>${value}</span></summary>
|
||||
<div class="fold-content">${detail}</div>
|
||||
</details>
|
||||
</td></tr>`;
|
||||
}
|
||||
|
||||
_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 = `<div class="fold-desc">Valeur d’importance économique et stratégique du monde.<br>${val} = ${desc}</div>`;
|
||||
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 = `<table class="fold-subtable">
|
||||
<tr><td>Ressources</td><td>${res}</td></tr>
|
||||
<tr><td>Main-d’œuvre</td><td>${lab}</td></tr>
|
||||
<tr><td>Infrastructure</td><td>${inf}</td></tr>
|
||||
<tr><td>Efficacité</td><td>${eff}</td></tr>
|
||||
</table>`;
|
||||
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 = `<table class="fold-subtable">
|
||||
<tr><td>Hétérogénéité</td><td>${h}</td></tr>
|
||||
<tr><td>Traditionalisme</td><td>${t}</td></tr>
|
||||
<tr><td>Progressisme</td><td>${p}</td></tr>
|
||||
<tr><td>Agressivité</td><td>${a}</td></tr>
|
||||
</table>`;
|
||||
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<sup>${popUwp}</sup>`;
|
||||
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 = `<div class="fold-desc">Population = multiplicateur (PBG: <b>${popPbg}</b>) × 10<sup>chiffre UWP (${uwp[4]})</sup><br>
|
||||
Ceintures d’astéroïdes : <b>${belts ?? '?'}</b> | Géantes gazeuses : <b>${gas ?? '?'}</b></div>`;
|
||||
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 = `<div class="fold-desc">Titres de noblesse impériale présents sur ce monde.</div>`;
|
||||
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', `<span class="mono">${uwp}</span>`, 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 `<tr><td class="mono">${c}</td><td>${desc || '—'}</td></tr>`;
|
||||
}).join('');
|
||||
const bDetail = `<table class="fold-subtable"><tbody>${bList}</tbody></table>`;
|
||||
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 `<tr><td class="mono">${c}</td><td>${desc || '—'}</td></tr>`;
|
||||
}).join('');
|
||||
const rDetail = `<table class="fold-subtable"><tbody>${rList}</tbody></table>`;
|
||||
lines.push(this._foldRow('Remarques', remarks, rDetail));
|
||||
}
|
||||
|
||||
// Allégeance
|
||||
if (allegiance) {
|
||||
const allegFull = w.AllegianceName || '';
|
||||
const aDetail = `<div class="fold-desc">${allegFull || allegiance}</div>`;
|
||||
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(`<tr><td class="mono">${m[1]}${m[2]} ${m[3]}</td><td>${type} · ${cls}</td></tr>`);
|
||||
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 ? `<table class="fold-subtable"><tbody>${sList.join('')}</tbody></table>` : `<div class="fold-desc">${stellar}</div>`;
|
||||
lines.push(this._foldRow('Étoile', `<span class="mono">${stellar}</span>`, sDetail));
|
||||
}
|
||||
|
||||
const html = `<section class="mgt2-world-card">
|
||||
<div class="mgt2-world-card-header">
|
||||
<span class="mgt2-world-name">${name}</span>
|
||||
<span class="mgt2-world-hex">${sector} ${hex}</span>
|
||||
<span class="mgt2-world-zone zone-${zone.toLowerCase() || 'g'}">${zoneLabel}</span>
|
||||
</div>
|
||||
<table class="mgt2-world-card-body"><tbody>${lines.join('')}</tbody></table>
|
||||
</section>`;
|
||||
|
||||
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 = `<section class="mgt2-shared-map">
|
||||
<div class="mgt2-world-card-header">
|
||||
<span class="mgt2-world-name">${label}</span>
|
||||
</div>
|
||||
<div class="mgt2-shared-map-image">
|
||||
<img src="${posterUrl}" alt="${label}">
|
||||
</div>
|
||||
<div class="mgt2-shared-map-footer">
|
||||
<a href="https://travellermap.com/go/${encodeURIComponent(this._sector)}" target="_blank" rel="noopener">
|
||||
Ouvrir sur Traveller Map <i class="fas fa-external-link-alt"></i>
|
||||
</a>
|
||||
</div>
|
||||
</section>`;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -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 <nom du secteur> (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 <secteur> <sous-secteur> (ex: /subsector "Spinward Marches" C)');
|
||||
return;
|
||||
}
|
||||
const sub = parts.pop();
|
||||
const sector = parts.join(' ');
|
||||
if (!sector || !sub) {
|
||||
ui.notifications.warn('Usage : /subsector <secteur> <sous-secteur>');
|
||||
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;
|
||||
}
|
||||
});
|
||||
+275
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user