Compare commits

7 Commits

Author SHA1 Message Date
uberwald 20b41f2cd4 Nouvelle correction sur lancement des sorts
Release Creation / build (release) Successful in 1m4s
2026-06-10 20:34:41 +02:00
uberwald 34b7e32d08 Fix timeout usage
Release Creation / build (release) Successful in 1m7s
2026-06-10 16:30:07 +02:00
uberwald 75f79c1c08 feat(magic): reorder schools, fix Wu Xing aspect & power formula
- `magicOrder` ArrayField + ▲/▼ buttons for manual reordering
- Magic rolls use school's aspect for Wu Xing, not speciality's element
- Spell power: `difficulty × (aspectValue + freePowerLevels)` (not `successes × diff`)
- Prompt replaces `aspectspeciality`/`bonusmalusspeciality`/`heispend` with `freepowerlevels`

fix: code review issues
- combat.js: guard undefined `ids` in rollInitiative
- rolling.js: catch Dice So Nice promise, normalize French→English kungfu aspects
- weapon/armor/ingredient: `{ min: 0 }` on quantity
- character.js/npc.js: catch rollForActor fire-and-forget promises
- roll-actions.js/tinji-app.js: await ChatMessage.create
- sanhei.js: null guard on properties
- spell.js/kungfu.js: fix aspect name comments (French→English)
2026-06-10 15:54:31 +02:00
uberwald 188717c925 Corrections sur degats - again
Release Creation / build (release) Successful in 1m7s
2026-06-09 23:05:00 +02:00
uberwald 066e3bbaf5 Meilleure gestion du loksyu + degats des armes corrigés
Release Creation / build (release) Successful in 1m28s
2026-06-09 14:21:05 +02:00
uberwald 440755d8a1 Pre-tires, WIP
Release Creation / build (release) Successful in 1m18s
2026-06-01 22:36:08 +02:00
uberwald a9c70c004d Actualiser README.md 2026-05-12 00:56:07 +02:00
137 changed files with 21553 additions and 489 deletions
+65
View File
@@ -0,0 +1,65 @@
# Copilot Instructions — fvtt-chroniques-de-l-etrange
FoundryVTT v13 game system for *Les Chroniques de l'Étrange* (Antre-Monde Éditions). The codebase is entirely in **ES modules** (`"type": "module"`) bundled with esbuild. There are no tests.
## Build commands
```bash
npm run build # compile LESS → CSS and bundle src/system.js → dist/system.js
npm run build:css # LESS only
npm run build:js # esbuild bundle only
npm run build:watch # rebuild on file changes
npm run build:full # compile compendiums then build
npm run pack:compile # compile packs-src/ → packs/ (LevelDB)
npm run pack:extract # extract packs/ → packs-src/ (YAML source)
```
The built output goes to `dist/system.js` (sourced via the unbuilt `src/system.js` in `system.json` `esmodules`).
## Architecture
The entry point is `src/system.js`, which wires up all FoundryVTT hooks (`init`, `ready`, `renderChatLog`, etc.).
### Layer structure
| Layer | Path | Purpose |
|---|---|---|
| **Config** | `src/config/` | Constants, i18n pre-localization, runtime config, settings |
| **Data Models** | `src/data/` | `TypeDataModel` subclasses defining actor/item schemas |
| **Documents** | `src/documents/` | `CDEActor`, `CDEItem`, `CDEMessage` — thin document class overrides |
| **UI / Sheets** | `src/ui/sheets/` | ApplicationV2 sheets for actors and items |
| **UI / Apps** | `src/ui/apps/` | Standalone apps: `CDELoksyuApp`, `CDETinjiApp` (singletons) |
| **UI / Core** | `src/ui/` | Rolling engine, dice registration, Handlebars helpers, initiative |
### Key domain concepts
- **Wu Xing cycle**: Five aspects (metal, water, earth, fire, wood) drive all dice resolution. Each aspect maps to two d10 faces (see `ASPECT_FACES` in `constants.js`). `WU_XING_CYCLE` maps an active aspect to the five result categories: successes / auspicious / noxious / **loksyu** / **tinji**.
- **Loksyu / Tin Ji**: Persistent world-level counters stored in game settings (`loksyuData`, `tinjiData`). Managed via `CDELoksyuApp` / `CDETinjiApp` singleton apps; updated from roll results in `ui/apps/singletons.js`.
- **Three Treasures** (`threetreasures`): The character's Hei-Yang and Hei-Yin pools plus dice-level branches — used as the primary/secondary token attribute.
- **Magics**: Five schools (`internalcinnabar`, `alchemy`, `masteryoftheway`, `exorcism`, `geomancy`), each with five specialities. Fully defined in `MAGICS` constant.
### Data model pattern
All data models live in `src/data/` and extend `foundry.abstract.TypeDataModel`. Schema fields are defined with local factory helpers (`numberField`, `stringField`, `boolField`, `htmlField`) — prefer reusing these helpers when adding new fields.
### Sheet pattern
Actor and item sheets extend `HandlebarsApplicationMixin(ActorSheetV2)` via `CDEBaseActorSheet` (`src/ui/sheets/actors/base.js`). Key conventions:
- `static DEFAULT_OPTIONS` with `form: { submitOnChange: true }` — forms auto-save on every change.
- Tab state is manually restored in `_onRender` by iterating `this.tabGroups` and calling `this.changeTab()` (AppV2 does not persist tab state natively).
- Sheet actions (create/edit/delete item, editImage) are static private methods registered in `DEFAULT_OPTIONS.actions`.
- `_prepareContext()` exposes both `system` and `systemData` (same reference) for template compatibility.
### Compendium source
Human-editable compendium content lives in `packs-src/` as YAML. Use `npm run pack:compile` before building when pack content has changed, and `npm run pack:extract` after importing new data in Foundry.
## Key conventions
- All user-visible strings go through i18n with the `CDE.` prefix namespace. New labels must be added to `lang/fr-cde.json`.
- Handlebars templates live in `templates/` and are referenced by their full system path (`systems/fvtt-chroniques-de-l-etrange/templates/...`). Partials are pre-registered from `TEMPLATE_PARTIALS` in `constants.js`.
- The system ID constant (`SYSTEM_ID = "fvtt-chroniques-de-l-etrange"`) is used everywhere — never hardcode the string.
- CSS is authored in LESS (`css/cde-theme.less`) and compiled to `css/cde-theme.css`. Do not edit the `.css` file directly.
- Global macro access is via `game.cde` (exposes `CDELoksyuApp` and `CDETinjiApp`).
- The `dist/` directory is generated — do not commit it manually; it is rebuilt by `npm run build`.
+1 -1
View File
@@ -8,6 +8,6 @@ Chroniques de l'ETrange is a game written by Romain d'Huissier and Cédric Lamei
This system for FoundryVTT has been approved and authorized by Antre-Monde Edition.
Ce système s'inspire d'un système précédent "chroniquesdeletrange" développé par David R.D. 'Mystery Man From Outerspace' Bercovici et Christophe 'Kristov / Qaw' Laudon. Le code a été intégralément réécrit pour être compatible avec la version 14 de FoundryVTT, et pour intégrer les nouvelles mécaniques de jeu introduites dans la nouvelle édition de Chroniques de l'Etrange, et n'a donc aucun lien de code avec le système précédent.
Ce système s'inspire d'un système précédent "chroniquesdeletrange" développé par David R.D. 'Mystery Man From Outerspace' Bercovici et Christophe 'Kristov / Qaw' Laudon. Le code a été intégralément réécrit pour être compatible avec la version 14 de FoundryVTT, et pour intégrer le maximum de mécaniques de jeu des Chroniques de l'Etrange, et n'a donc aucun lien de code avec le système précédent.
---
+45 -2
View File
@@ -396,17 +396,22 @@ section.npc .cde-neon-tabs .item.active {
.cde-tab-body {
flex: 1 1 0;
min-height: 0;
display: flex;
flex-direction: column;
padding: 12px;
background: #0d1520;
border: 1px solid #1a2436;
border-top: none;
border-radius: 0 0 8px 8px;
overflow-y: auto;
overflow: hidden;
}
.cde-tab-body .tab {
display: none;
flex: 1 1 0;
min-height: 0;
flex-direction: column;
gap: 12px;
overflow-y: auto;
}
.cde-tab-body .tab.active {
display: flex;
@@ -447,12 +452,25 @@ section.npc .cde-neon-tabs .item.active {
flex-direction: column;
}
.cde-notes-editor .editor {
flex: 1 1 0;
flex: 1 1 auto;
min-height: 200px;
height: 100%;
border-radius: 8px;
border: 1px solid #1a2436;
background: #101622;
}
.cde-notes-editor .editor .tox {
height: 100% !important;
min-height: 100% !important;
}
.cde-notes-editor .editor .tox-editor-container {
height: 100% !important;
min-height: 100% !important;
}
.cde-notes-editor .editor iframe {
height: 100% !important;
min-height: 100% !important;
}
.cde-technique-card {
border-left: 3px solid #ff3d5a;
background: rgba(16, 22, 34, 0.8);
@@ -2161,6 +2179,25 @@ section.npc .cde-neon-tabs .item.active {
.cde-magic-toggle:hover i {
color: #e2e8f4;
}
.cde-magic-order-btn {
width: 20px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: #7d94b8;
border-radius: 3px;
flex-shrink: 0;
transition: color 0.12s, background 0.12s;
}
.cde-magic-order-btn i {
font-size: 9px;
}
.cde-magic-order-btn:hover {
color: #e2e8f4;
background: rgba(38, 56, 83, 0.25);
}
.cde-magic-specialities {
border-top: 1px solid #1a2436;
padding: 4px 0;
@@ -3505,6 +3542,12 @@ ol.item-list li.item .item-controls a.item-control:hover {
color: var(--rr-accent, #e2e8f4);
text-shadow: 0 0 12px var(--rr-accent, transparent);
}
.cde-roll-result .cde-rr-hero .cde-rr-spell-power .cde-rr-spell-power-formula {
font-size: 10px;
color: #7d94b8;
margin: 2px 0;
white-space: nowrap;
}
.cde-roll-result .cde-rr-hero .cde-rr-spell-power .cde-rr-spell-power-label {
font-size: 9px;
font-weight: 700;
+46 -2
View File
@@ -381,17 +381,22 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
.cde-tab-body {
flex: 1 1 0;
min-height: 0;
display: flex;
flex-direction: column;
padding: @cde-gap;
background: @cde-surface2;
border: 1px solid @cde-border;
border-top: none;
border-radius: 0 0 @cde-radius @cde-radius;
overflow-y: auto;
overflow: hidden;
.tab {
display: none;
flex: 1 1 0;
min-height: 0;
flex-direction: column;
gap: @cde-gap;
overflow-y: auto;
}
.tab.active {
@@ -445,11 +450,26 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
flex-direction: column;
.editor {
flex: 1 1 0;
flex: 1 1 auto;
min-height: 200px;
height: 100%;
border-radius: @cde-radius;
border: 1px solid @cde-border;
background: @cde-surface;
// Force TinyMCE to fill the container
.tox {
height: 100% !important;
min-height: 100% !important;
}
.tox-editor-container {
height: 100% !important;
min-height: 100% !important;
}
iframe {
height: 100% !important;
min-height: 100% !important;
}
}
}
@@ -2233,6 +2253,23 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
&:hover i { color: @cde-text; }
}
.cde-magic-order-btn {
width: 20px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: @cde-muted;
border-radius: 3px;
flex-shrink: 0;
transition: color 0.12s, background 0.12s;
i { font-size: 9px; }
&:hover { color: @cde-text; background: fade(@cde-border-hi, 25%); }
}
// Specialities list
.cde-magic-specialities {
border-top: 1px solid @cde-border;
@@ -3562,6 +3599,13 @@ ol.item-list {
text-shadow: 0 0 12px var(--rr-accent, transparent);
}
.cde-rr-spell-power-formula {
font-size: 10px;
color: @cde-muted;
margin: 2px 0;
white-space: nowrap;
}
.cde-rr-spell-power-label {
font-size: 9px;
font-weight: 700;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+164 -80
View File
@@ -595,6 +595,20 @@ function registerSettings() {
water: { yin: 0, yang: 0 }
}
});
game.settings.register(SYSTEM_ID, "loksyuConsumptionOrder", {
name: "CDE.Settings.LoksyuConsumptionOrder",
hint: "CDE.Settings.LoksyuConsumptionOrderHint",
scope: "world",
config: true,
type: String,
choices: {
"yang-first": "CDE.Settings.LoksyuOrderYangFirst",
"yin-first": "CDE.Settings.LoksyuOrderYinFirst",
"balanced": "CDE.Settings.LoksyuOrderBalanced"
},
default: "yang-first",
onChange: () => Hooks.callAll("cde:loksyuUpdated")
});
game.settings.register(SYSTEM_ID, "tinjiData", {
scope: "world",
config: false,
@@ -647,6 +661,7 @@ function preLocalizeConfig() {
magic.aspectlabel = game.i18n.localize(magic.aspectlabel);
Object.values(magic.speciality).forEach((spec) => {
spec.label = game.i18n.localize(spec.label);
spec.labelelementkey = spec.labelelement;
spec.labelelement = game.i18n.localize(spec.labelelement);
});
});
@@ -760,9 +775,8 @@ var CharacterDataModel = class extends foundry.abstract.TypeDataModel {
typeofthrow: numberField(0),
aspectskill: numberField(0),
bonusmalusskill: numberField(0),
aspectspeciality: numberField(0),
rolldifficulty: numberField(0),
bonusmalusspeciality: numberField(0)
freepowerlevels: numberField(0)
})
}),
aspect: new fields.SchemaField({
@@ -801,6 +815,10 @@ var CharacterDataModel = class extends foundry.abstract.TypeDataModel {
nine: componentField(),
zero: componentField()
}),
magicOrder: new fields.ArrayField(
new fields.StringField({ required: true, nullable: false, initial: "" }),
{ required: true, initial: [] }
),
magics: new fields.SchemaField({
internalcinnabar: magicField(),
alchemy: magicField(),
@@ -917,7 +935,7 @@ var KungfuDataModel = class extends foundry.abstract.TypeDataModel {
orientation: stringField("yin"),
// yin | yang | yinyang
aspect: stringField("metal"),
// metal | eau | terre | feu | bois
// metal | water | earth | fire | wood
skill: stringField("kungfu"),
// kungfu | rangedcombat
speciality: stringField(""),
@@ -943,7 +961,7 @@ var SpellDataModel = class extends foundry.abstract.TypeDataModel {
description: htmlField(""),
specialityname: stringField(""),
associatedelement: stringField("metal"),
// metal | eau | terre | feu | bois
// metal | water | earth | fire | wood
hei: stringField(""),
realizationtimeritual: stringField(""),
realizationtimeaccelerated: stringField(""),
@@ -985,18 +1003,20 @@ var WeaponDataModel = class extends foundry.abstract.TypeDataModel {
const stringField = (initial = "") => new fields.StringField({ required: true, nullable: false, initial });
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true });
const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts });
const boolField = (initial = false) => new fields.BooleanField({ required: true, initial });
return {
reference: stringField(""),
description: htmlField(""),
hasSpeciality: boolField(false),
weaponType: stringField("melee"),
material: stringField(""),
damageAspect: stringField("metal"),
damageBase: intField(1),
damageBase: intField(0),
range: stringField("contact"),
// contact | courte | mediane | longue | extreme
obtainLevel: intField(0, { min: 0, max: 5 }),
obtainDifficulty: intField(0, { min: 0, max: 3 }),
quantity: intField(1),
quantity: intField(1, { min: 0 }),
notes: htmlField("")
};
}
@@ -1016,7 +1036,7 @@ var ArmorDataModel = class extends foundry.abstract.TypeDataModel {
domain: stringField(""),
obtainLevel: intField(0, { min: 0, max: 5 }),
obtainDifficulty: intField(0, { min: 0, max: 3 }),
quantity: intField(1),
quantity: intField(1, { min: 0 }),
notes: htmlField("")
};
}
@@ -1062,7 +1082,7 @@ var IngredientDataModel = class extends foundry.abstract.TypeDataModel {
school: stringField("all"),
obtainLevel: intField(0, { min: 0, max: 5 }),
obtainDifficulty: intField(0, { min: 0, max: 3 }),
quantity: intField(1),
quantity: intField(1, { min: 0 }),
notes: htmlField("")
};
}
@@ -1552,20 +1572,16 @@ async function showMagicPrompt(params) {
aspectskill: Number(params.aspectskill ?? 0),
bonusmalusskill: params.bonusmalusskill ?? 0,
bonusauspiciousdice: params.bonusauspiciousdice ?? 0,
aspectspeciality: Number(params.aspectspeciality ?? 0),
rolldifficulty: params.rolldifficulty ?? 1,
bonusmalusspeciality: params.bonusmalusspeciality ?? 0,
heispend: params.heispend ?? 0,
freepowerlevels: params.freepowerlevels ?? 0,
typeofthrow: Number(params.typeofthrow ?? 0)
},
fields: [
"aspectskill",
"bonusmalusskill",
"bonusauspiciousdice",
"aspectspeciality",
"rolldifficulty",
"bonusmalusspeciality",
"heispend",
"freepowerlevels",
"typeofthrow"
]
});
@@ -1580,7 +1596,7 @@ async function showWeaponPrompt(params) {
weaponTypeLabel: params.weaponTypeLabel ?? "CDE.Weapon",
weaponAspectIcon: params.weaponAspectIcon ?? "",
weaponAspectLabel: params.weaponAspectLabel ?? "",
damageBase: params.damageBase ?? 1,
damageBase: params.damageBase ?? 0,
weaponskill: params.weaponskill ?? "kungfu",
aspect: Number(params.aspect ?? 0),
effectiverange: params.effectiverange ?? "contact",
@@ -1695,7 +1711,9 @@ async function rollForActor(actor, rollKey) {
const kfSkill = kfItem.system.skill ?? "kungfu";
numberofdice = sys.skills?.[kfSkill]?.value ?? 0;
title = `${kfItem.name} [${game.i18n.localize(sys.skills?.[kfSkill]?.label ?? "CDE.KungFu")}]`;
kfDefaultAspect = ASPECT_NAMES.indexOf(kfItem.system.aspect ?? "metal");
const kfAspect = kfItem.system.aspect?.toLowerCase() ?? "metal";
const ASPECT_NORMALIZE = { eau: "water", terre: "earth", feu: "fire", bois: "wood" };
kfDefaultAspect = ASPECT_NAMES.indexOf(ASPECT_NORMALIZE[kfAspect] ?? kfAspect);
if (kfDefaultAspect < 0) kfDefaultAspect = 0;
break;
}
@@ -1724,7 +1742,7 @@ async function rollForActor(actor, rollKey) {
weaponTypeLabel: WEAPON_TYPE_LABELS[wpType] ?? "CDE.Weapon",
weaponAspectIcon: ASPECT_ICONS[ASPECT_NAMES[wpAspectIdx]] ?? "",
weaponAspectLabel: game.i18n.localize(ASPECT_LABELS[ASPECT_NAMES[wpAspectIdx]] ?? ""),
damageBase: wpItem.system.damageBase ?? 1,
damageBase: wpItem.system.damageBase ?? 0,
weaponskill: wpSkill,
aspect: wpAspectIdx,
effectiverange: wpRange,
@@ -1743,8 +1761,9 @@ async function rollForActor(actor, rollKey) {
const wpWoundMalus = Number(wParams.woundmalus ?? 0);
const wpBonusAusp = Number(wParams.bonusauspiciousdice ?? 0);
const wpThrowMode = Number(wParams.typeofthrow ?? 0);
const wpDamageBase = wpItem.system.damageBase ?? 1;
const wpTotalDice = wpSkillDice + wpAspectDice + wpRangeMalus + wpBonusMalus - wpWoundMalus;
const wpDamageBase = wpItem.system.damageBase ?? 0;
const wpSpecialtyBonus = wpItem.system.hasSpeciality ? 1 : 0;
const wpTotalDice = wpSkillDice + wpAspectDice + wpRangeMalus + wpBonusMalus - wpWoundMalus + wpSpecialtyBonus;
if (wpTotalDice <= 0) {
ui.notifications.warn(game.i18n.localize("CDE.Error0"));
return;
@@ -1760,6 +1779,11 @@ async function rollForActor(actor, rollKey) {
if (wpBonusMalus !== 0) wpModParts.push(`${wpBonusMalus > 0 ? "+" : ""}${wpBonusMalus} ${game.i18n.localize("CDE.BonusMalus")}`);
if (wpWoundMalus !== 0) wpModParts.push(`-${wpWoundMalus} ${game.i18n.localize("CDE.WoundMalus")}`);
if (wpBonusAusp !== 0) wpModParts.push(`+${wpBonusAusp} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`);
const wpDamageAspectRaw = wpItem.system.damageAspect ?? "metal";
const wpDamageAspectIdx = WEAPON_ASPECT_INDEX[wpDamageAspectRaw] ?? 0;
const wpDamageAspectName = ASPECT_NAMES[wpDamageAspectIdx];
const wpDamageAspectValue = sys.aspect?.[wpDamageAspectName]?.value ?? 0;
const wpDamageAspectLabel = game.i18n.localize(ASPECT_LABELS[wpDamageAspectName] ?? "");
const wpMsg = await sendResultMessage(actor, {
rollLabel: `${wpItem.name}`,
aspectName: wpAspectName,
@@ -1774,7 +1798,9 @@ async function rollForActor(actor, rollKey) {
// weapon-specific
weaponName: wpItem.name,
damageBase: wpDamageBase,
totalDamage: wpResults.successesdice * wpDamageBase,
damageAspectValue: wpDamageAspectValue,
damageAspectLabel: wpDamageAspectLabel,
totalDamage: wpDamageBase + wpDamageAspectValue,
...wpResults,
aspect: wpAspectName,
d1: wpFaces[1],
@@ -1789,7 +1815,10 @@ async function rollForActor(actor, rollKey) {
d0: wpFaces[0]
}, wpRoll, ROLL_MODES[wpThrowMode] ?? "roll");
if (game.modules.get("dice-so-nice")?.active && wpMsg?.id) {
await game.dice3d.waitFor3DAnimationByMessageID(wpMsg.id);
try {
await game.dice3d.waitFor3DAnimationByMessageID(wpMsg.id);
} catch (_e) {
}
}
if ((wpResults.loksyudice ?? 0) > 0) await updateLoksyuFromRoll(wpAspectName, wpFaces);
if ((wpResults.tinjidice ?? 0) > 0) await updateTinjiFromRoll(wpResults.tinjidice);
@@ -1822,14 +1851,6 @@ async function rollForActor(actor, rollKey) {
if (kfDefaultAspect >= 0) {
defaultAspect = kfDefaultAspect;
}
let defaultSpecialAspect = 0;
if (isMagicSpecial && specialLibel) {
const specialCfg = MAGICS?.[skillLibel]?.speciality?.[specialLibel];
const aspectName = LABELELEMENT_TO_ASPECT[specialCfg?.labelelement];
if (aspectName) {
defaultSpecialAspect = ASPECT_NAMES.indexOf(aspectName);
}
}
let params;
if (isMagic) {
params = await showMagicPrompt({
@@ -1838,10 +1859,8 @@ async function rollForActor(actor, rollKey) {
aspectskill: defaultAspect,
bonusmalusskill: 0,
bonusauspiciousdice: 0,
aspectspeciality: defaultSpecialAspect,
rolldifficulty: 1,
bonusmalusspeciality: 0,
heispend: 0,
freepowerlevels: 0,
typeofthrow: typeOfThrow
});
} else {
@@ -1858,20 +1877,16 @@ async function rollForActor(actor, rollKey) {
}
if (!params) return;
let aspectIndex, bonusMalus, bonusAuspicious, throwMode;
let spellAspectIndex = null;
let rollDifficulty = 1;
if (isMagic) {
const skillAspectIndex = Number(params.aspectskill ?? 0);
spellAspectIndex = Number(params.aspectspeciality ?? skillAspectIndex);
aspectIndex = skillAspectIndex;
bonusMalus = Number(params.bonusmalusskill ?? 0);
bonusAuspicious = Number(params.bonusauspiciousdice ?? 0);
rollDifficulty = Math.max(1, Number(params.rolldifficulty ?? 1));
throwMode = Number(params.typeofthrow ?? 0);
const aspectDice = sys.aspect?.[ASPECT_NAMES[aspectIndex]]?.value ?? 0;
const bonusSpec = Number(params.bonusmalusspeciality ?? 0);
const heiDice = Number(params.heispend ?? 0);
numberofdice = numberofdice + aspectDice + bonusMalus + 1 + bonusSpec + heiDice;
numberofdice = numberofdice + aspectDice + bonusMalus + 1;
} else {
aspectIndex = Number(params.aspect ?? 0);
bonusMalus = Number(params.bonusmalus ?? 0);
@@ -1889,22 +1904,33 @@ async function rollForActor(actor, rollKey) {
const roll = new Roll(`${numberofdice}d10`);
await roll.evaluate();
const rollModeKey = ROLL_MODES[throwMode] ?? "roll";
const wuXingAspectName = spellAspectIndex !== null ? ASPECT_NAMES[spellAspectIndex] : ASPECT_NAMES[aspectIndex];
let spellPower = null;
let spellPowerAspectName = null;
let spellPowerAspectValue = null;
if (isMagic) {
if (isMagicSpecial && specialLibel) {
const specialCfg = MAGICS?.[skillLibel]?.speciality?.[specialLibel];
const elemName = LABELELEMENT_TO_ASPECT[specialCfg?.labelelementkey];
if (elemName) spellPowerAspectName = elemName;
}
if (!spellPowerAspectName) spellPowerAspectName = ASPECT_NAMES[aspectIndex];
spellPowerAspectValue = sys.aspect?.[spellPowerAspectName]?.value ?? 0;
const freePowerLevels = Number(params.freepowerlevels ?? 0);
spellPower = rollDifficulty * (spellPowerAspectValue + freePowerLevels);
}
const wuXingAspectName = ASPECT_NAMES[aspectIndex];
const allResults = roll.dice[0]?.results ?? [];
const faces = countFaces(allResults);
const results = computeWuXingResults(faces, wuXingAspectName, bonusAuspicious);
if (!results) return;
const spellPower = isMagic ? results.successesdice * rollDifficulty : null;
const modParts = [];
if (isMagic) {
const bm = Number(params.bonusmalusskill ?? 0);
const bs = Number(params.bonusmalusspeciality ?? 0);
const hs = Number(params.heispend ?? 0);
const ba = Number(params.bonusauspiciousdice ?? 0);
const fp = Number(params.freepowerlevels ?? 0);
if (bm !== 0) modParts.push(`${bm > 0 ? "+" : ""}${bm} ${game.i18n.localize("CDE.BonusMalus")}`);
if (bs !== 0) modParts.push(`${bs > 0 ? "+" : ""}${bs} ${game.i18n.localize("CDE.SpellBonus")}`);
if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`);
if (hs !== 0) modParts.push(`${hs} ${game.i18n.localize("CDE.HeiSpend")}`);
if (fp !== 0) modParts.push(`+${fp} ${game.i18n.localize("CDE.FreePowerLevels")}`);
if (rollDifficulty !== 1) modParts.push(`\xD7${rollDifficulty} ${game.i18n.localize("CDE.RollDifficulty")}`);
} else {
const bm = Number(params.bonusmalus ?? 0);
@@ -1924,6 +1950,9 @@ async function rollForActor(actor, rollKey) {
modifiersText: modParts.length ? modParts.join(" \xB7 ") : "",
// Spell power (magic only)
spellPower,
spellPowerAspectLabel: spellPowerAspectName ? game.i18n.localize(ASPECT_LABELS[spellPowerAspectName] ?? "") : "",
spellPowerAspectValue,
spellPowerFreeLevels: isMagic ? Number(params.freepowerlevels ?? 0) : 0,
rollDifficulty: isMagic ? rollDifficulty : null,
// Actor info
actorName: actor.name ?? "",
@@ -1944,7 +1973,10 @@ async function rollForActor(actor, rollKey) {
d0: faces[0]
}, roll, rollModeKey);
if (game.modules.get("dice-so-nice")?.active && msg?.id) {
await game.dice3d.waitFor3DAnimationByMessageID(msg.id);
try {
await game.dice3d.waitFor3DAnimationByMessageID(msg.id);
} catch (_e) {
}
}
if ((results.loksyudice ?? 0) > 0) await updateLoksyuFromRoll(wuXingAspectName, faces);
if ((results.tinjidice ?? 0) > 0) await updateTinjiFromRoll(results.tinjidice);
@@ -2040,9 +2072,13 @@ var CDEBaseActorSheet = class _CDEBaseActorSheet extends HandlebarsApplicationMi
};
// src/ui/sheets/actors/character.js
var CDECharacterSheet = class extends CDEBaseActorSheet {
var CDECharacterSheet = class _CDECharacterSheet extends CDEBaseActorSheet {
static DEFAULT_OPTIONS = {
classes: ["character"]
classes: ["character"],
actions: {
moveMagicUp: _CDECharacterSheet.#onMoveMagicUp,
moveMagicDown: _CDECharacterSheet.#onMoveMagicDown
}
};
static PARTS = {
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-character-sheet.html" }
@@ -2065,25 +2101,35 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
spellsByDiscipline[disc].push(spell);
}
const systemMagics = context.systemData.magics ?? {};
context.magicsDisplay = Object.fromEntries(
Object.entries(MAGICS).map(([magicKey, magicDef]) => {
const magicData = systemMagics[magicKey] ?? {};
return [
magicKey,
{
value: magicData.value ?? 0,
visible: magicData.visible ?? false,
speciality: Object.fromEntries(
Object.keys(magicDef.speciality).map((specKey) => [
specKey,
{ check: magicData.speciality?.[specKey]?.check ?? false }
])
),
grimoire: spellsByDiscipline[magicKey] ?? []
}
];
})
);
const magicEntries = Object.entries(MAGICS).map(([magicKey, magicDef]) => {
const magicData = systemMagics[magicKey] ?? {};
return [
magicKey,
{
value: magicData.value ?? 0,
visible: magicData.visible ?? false,
speciality: Object.fromEntries(
Object.keys(magicDef.speciality).map((specKey) => [
specKey,
{ check: magicData.speciality?.[specKey]?.check ?? false }
])
),
grimoire: spellsByDiscipline[magicKey] ?? []
}
];
});
const order = context.systemData.magicOrder ?? [];
if (order.length > 0) {
magicEntries.sort((a, b) => {
const ia = order.indexOf(a[0]);
const ib = order.indexOf(b[0]);
if (ia === -1 && ib === -1) return 0;
if (ia === -1) return 1;
if (ib === -1) return -1;
return ia - ib;
});
}
context.magicsDisplay = Object.fromEntries(magicEntries);
return context;
}
_onRender(context, options) {
@@ -2167,7 +2213,7 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
cell.addEventListener("click", (event) => {
event.preventDefault();
const rollKey = cell.dataset.libelId;
if (rollKey) rollForActor(this.document, rollKey);
if (rollKey) rollForActor(this.document, rollKey)?.catch((err) => console.error("Roll failed:", err));
});
});
}
@@ -2181,6 +2227,26 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
}).render(true);
});
}
static async #onMoveMagicUp(event, target) {
const key = target.dataset.magicKey;
let order = this.document.system.magicOrder ?? [];
if (!order.length) order = [...Object.keys(MAGICS)];
else order = [...order];
const idx = order.indexOf(key);
if (idx <= 0) return;
[order[idx - 1], order[idx]] = [order[idx], order[idx - 1]];
await this.document.update({ "system.magicOrder": order });
}
static async #onMoveMagicDown(event, target) {
const key = target.dataset.magicKey;
let order = this.document.system.magicOrder ?? [];
if (!order.length) order = [...Object.keys(MAGICS)];
else order = [...order];
const idx = order.indexOf(key);
if (idx === -1 || idx >= order.length - 1) return;
[order[idx], order[idx + 1]] = [order[idx + 1], order[idx]];
await this.document.update({ "system.magicOrder": order });
}
#bindComponentRandomize() {
const btn = this.element?.querySelector("[data-action='randomize-component']");
if (!btn) return;
@@ -2250,7 +2316,7 @@ var CDENpcSheet = class extends CDEBaseActorSheet {
cell.addEventListener("click", (event) => {
event.preventDefault();
const rollKey = cell.dataset.libelId;
if (rollKey) rollForActor(this.document, rollKey);
if (rollKey) rollForActor(this.document, rollKey)?.catch((err) => console.error("Roll failed:", err));
});
});
}
@@ -2437,11 +2503,11 @@ var CDESanheiSheet = class extends CDEBaseItemSheet {
async _prepareContext() {
const context = await super._prepareContext();
const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? "", { async: true });
const props = this.document.system.properties;
context.prop1DescriptionHTML = await enrich(props.prop1.description);
context.prop2DescriptionHTML = await enrich(props.prop2.description);
context.prop3DescriptionHTML = await enrich(props.prop3.description);
context.propFields = this.document.system.schema.fields.properties.fields;
const props = this.document.system.properties ?? {};
context.prop1DescriptionHTML = await enrich(props.prop1?.description);
context.prop2DescriptionHTML = await enrich(props.prop2?.description);
context.prop3DescriptionHTML = await enrich(props.prop3?.description);
context.propFields = this.document.system.schema.fields.properties?.fields;
return context;
}
};
@@ -2649,7 +2715,7 @@ var CDETinjiApp = class _CDETinjiApp extends foundry.applications.api.Handlebars
return;
}
await setTinjiValue(current - 1);
ChatMessage.create({
await ChatMessage.create({
user: game.user.id,
content: `<div class="cde-tinji-spend-msg">
<i class="fas fa-star"></i>
@@ -2668,7 +2734,7 @@ var CDECombat = class extends Combat {
* for each selected combatant, then sync the result to the Combatant document.
*/
async rollInitiative(ids, options = {}) {
const combatantIds = typeof ids === "string" ? [ids] : ids;
const combatantIds = ids ? typeof ids === "string" ? [ids] : ids : this.combatants.map((c) => c.id);
for (const id of combatantIds) {
const combatant = this.combatants.get(id);
if (!combatant) continue;
@@ -2936,8 +3002,19 @@ async function _drawFromLoksyu(message, aspect, type, aspectLabel) {
ui.notifications.warn(game.i18n.localize("CDE.LoksyuEmpty"));
return;
}
if (entry.yang > 0) entry.yang--;
else entry.yin--;
const order = game.settings.get(SYSTEM_ID, "loksyuConsumptionOrder");
if (order === "yin-first") {
if (entry.yin > 0) entry.yin--;
else entry.yang--;
} else if (order === "balanced") {
if (entry.yin > entry.yang) entry.yin--;
else if (entry.yang > entry.yin) entry.yang--;
else if (entry.yang > 0) entry.yang--;
else entry.yin--;
} else {
if (entry.yang > 0) entry.yang--;
else entry.yin--;
}
data[aspect] = entry;
await setLoksyuData(data);
const flags = message?.flags?.[SYSTEM_ID];
@@ -2946,7 +3023,7 @@ async function _drawFromLoksyu(message, aspect, type, aspectLabel) {
if (type === "success") {
updated.successesdice = (updated.successesdice ?? 0) + 1;
updated.loksyuBonusSuc = (updated.loksyuBonusSuc ?? 0) + 1;
if (updated.damageBase) updated.totalDamage = updated.successesdice * updated.damageBase;
if (updated.damageBase != null) updated.totalDamage = updated.damageBase + (updated.damageAspectValue ?? 0);
} else {
updated.auspiciousdice = (updated.auspiciousdice ?? 0) + 1;
updated.loksyuBonusFaste = (updated.loksyuBonusFaste ?? 0) + 1;
@@ -2959,7 +3036,7 @@ async function _drawFromLoksyu(message, aspect, type, aspectLabel) {
}
const remain = entry.yin + entry.yang;
const typeLabel = type === "success" ? game.i18n.localize("CDE.Successes") : game.i18n.localize("CDE.AuspiciousDie");
ChatMessage.create({
await ChatMessage.create({
user: game.user.id,
content: `<div class="cde-loksyu-draw-msg">
<div class="cde-loksyu-draw-header">
@@ -2985,7 +3062,7 @@ async function _spendTinjiPostRoll() {
return;
}
await setTinjiValue(current - 1);
ChatMessage.create({
await ChatMessage.create({
user: game.user.id,
content: `<div class="cde-tinji-spend-msg">
<span class="cde-tinji-icon">\u5929</span>
@@ -3051,7 +3128,14 @@ function injectWelcomeActions(_message, html) {
// src/system.js
Hooks.once("i18nInit", preLocalizeConfig);
Hooks.once("init", async () => {
console.info(`CHRONIQUESDELETRANGE | Initializing ${SYSTEM_ID}`);
console.log(
"%c\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n%c\u2551 Chroniques de l'\xC9trange \u2014 FoundryVTT \u2551\n%c\u2551 Syst\xE8me de jeu par Antre-Monde \xC9ditions \u2551\n%c\u2551 Made by Uberwald - https://www.ubwerwald.me \u2551\n%c\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D",
"color: #d4af37; font-weight: bold;",
"color: #e2e8f4;",
"color: #7d94b8;",
"color: #5a7a9a;",
"color: #d4af37; font-weight: bold;"
);
registerSettings();
game.system.CONST = { MAGICS, SUBTYPES };
game.cde = { CDELoksyuApp, CDETinjiApp, CDEWheelApp };
+2 -2
View File
File diff suppressed because one or more lines are too long
+13
View File
@@ -34,6 +34,7 @@
"CDE.HeiSpend": "Dépense HEI",
"CDE.SpellBonus": "Bonus Sort",
"CDE.SpellPower": "Puissance du Sort",
"CDE.BonusMalus": "Bonus/Malus",
"CDE.Boss": "Boss",
"CDE.Cancel": "Annuler",
"CDE.CancelChanges": "Annuler les modifications",
@@ -81,6 +82,7 @@
"CDE.EarthlyPrayer": "Prière Terrestre",
"CDE.Effects": "Effets",
"CDE.Elixirs": "Élixirs",
"CDE.EnablePrompt": "Toujours demander avant de lancer",
"CDE.Error0": "Impossible de poursuivre : le nombre total de vos dés à lancer est inférieur à 1.",
"CDE.Error1": "Impossible de poursuivre : vous ne possédez pas cette Compétence.",
"CDE.Error10": "Impossible de poursuivre : vous avez 0 ou moins dans cet Aspect.",
@@ -199,6 +201,7 @@
"CDE.MartialArts": "Arts Martiaux",
"CDE.Masterized": "Vous maîtrisez cette Technique",
"CDE.MasteryOfTheWay": "Maîtrise de la Voie",
"CDE.Material": "Matériau",
"CDE.Max": "Max",
"CDE.Max-Present-Malus-Present-Max": "Max ● Actuel ● Malus ● Actuel ● Max",
"CDE.Max-Present-Present-Max": "Max ● Actuel ● Actuel ● Max",
@@ -217,8 +220,11 @@
"CDE.MsgMagic2": "s'élève à ",
"CDE.MsgMagic3": ". La puissance à invoquer est de ",
"CDE.MsgMagic4": ", si toutefois le sort est lancé avec succès.",
"CDE.MoveUp": "Monter",
"CDE.MoveDown": "Descendre",
"CDE.NPCName": "Nom du PNJ",
"CDE.FatSi": "Fat Si",
"CDE.FreePowerLevels": "Niveaux de puissance gratuits",
"CDE.PNJ": "PNJ",
"CDE.Name": "Nom",
"CDE.Necromancy": "Nécromancie",
@@ -280,6 +286,7 @@
"CDE.ResourceValue": "Valeur",
"CDE.Resources": "Ressources",
"CDE.Results": "Résultats :",
"CDE.Roll": "Jet",
"CDE.RollDifficulty": "Difficulté du Jet",
"CDE.SAN-ZING": "SAN ● ZING",
"CDE.Sanhei": "Sanhei",
@@ -321,12 +328,18 @@
"CDE.Technique": "Technique",
"CDE.Technologies": "Technologies",
"CDE.Threat": "Niveau de Menace",
"CDE.ThrowType": "Type de jet",
"CDE.TinJi": "Tin Ji :",
"CDE.TinJi2": "Tin Ji",
"CDE.TinJiName": "Nom de la Tin Ji",
"CDE.TinjiNotFound": "Aucun acteur Tin Ji trouvé. Le Maître du Jeu doit en créer un.",
"CDE.TinjiEmpty": "Il n'y a plus de dés de Tin Ji disponibles.",
"CDE.TinjiSpent": "{name} dépense 1 dé de Tin Ji.",
"CDE.Settings.LoksyuConsumptionOrder": "Ordre de consommation du Loksyu",
"CDE.Settings.LoksyuConsumptionOrderHint": "Définit quelle polarité (Yin ou Yang) est consommée en priorité lorsqu'un dé est puisé dans la réserve de Loksyu.",
"CDE.Settings.LoksyuOrderYangFirst": "Yang d'abord",
"CDE.Settings.LoksyuOrderYinFirst": "Yin d'abord",
"CDE.Settings.LoksyuOrderBalanced": "Équilibré (consomme la polarité la plus fournie)",
"CDE.PostRollActions": "Puiser dans le Loksyu / Dépenser Tin Ji",
"CDE.LoksyuDrawsA": "pioche",
"CDE.LoksyuFromAspect": "du",
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.314091 7ff671fef6c0 Recovering log #4
2026/05/12-00:36:56.323263 7ff671fef6c0 Delete type=3 #2
2026/05/12-00:36:56.323317 7ff671fef6c0 Delete type=0 #4
2026/05/12-00:37:07.971141 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:07.974291 7ff6637fe6c0 Level-0 table #9: 1387 bytes OK
2026/05/12-00:37:07.980872 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:08.009643 7ff6637fe6c0 Manual compaction at level-0 from '!items!3aig6MWvZCRoWXPW' @ 72057594037927935 : 1 .. '!items!cXaQG1TBE0jzrbNt' @ 0 : 0; will stop at (end)
2026/05/12-00:37:08.009699 7ff6637fe6c0 Manual compaction at level-1 from '!items!3aig6MWvZCRoWXPW' @ 72057594037927935 : 1 .. '!items!cXaQG1TBE0jzrbNt' @ 0 : 0; will stop at '!items!cXaQG1TBE0jzrbNt' @ 8 : 1
2026/05/12-00:37:08.009706 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:08.012872 7ff6637fe6c0 Generated table #10@1: 4 keys, 1387 bytes
2026/05/12-00:37:08.012903 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 1387 bytes
2026/05/12-00:37:08.019075 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:08.019187 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:08.019315 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:08.051276 7ff6637fe6c0 Manual compaction at level-1 from '!items!cXaQG1TBE0jzrbNt' @ 8 : 1 .. '!items!cXaQG1TBE0jzrbNt' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.211312 7f2fceffd6c0 Recovering log #38
2026/06/10-16:26:13.220902 7f2fceffd6c0 Delete type=3 #36
2026/06/10-16:26:13.220927 7f2fceffd6c0 Delete type=0 #38
2026/06/10-16:29:53.729923 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.729930 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.735552 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.741380 7f2fce7fc6c0 Manual compaction at level-0 from '!items!3aig6MWvZCRoWXPW' @ 72057594037927935 : 1 .. '!items!cXaQG1TBE0jzrbNt' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.149746 7fdfd57ec6c0 Delete type=3 #1
2026/05/12-00:36:37.152016 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.155425 7fdfd4feb6c0 Level-0 table #5: 1330 bytes OK
2026/05/12-00:36:37.161916 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.162057 7fdfd4feb6c0 Manual compaction at level-0 from '!items!3aig6MWvZCRoWXPW' @ 72057594037927935 : 1 .. '!items!cXaQG1TBE0jzrbNt' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.579029 7f301cbff6c0 Recovering log #34
2026/06/10-16:17:31.588884 7f301cbff6c0 Delete type=3 #32
2026/06/10-16:17:31.588903 7f301cbff6c0 Delete type=0 #34
2026/06/10-16:19:32.836492 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.836504 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.843139 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.855656 7f2fce7fc6c0 Manual compaction at level-0 from '!items!3aig6MWvZCRoWXPW' @ 72057594037927935 : 1 .. '!items!cXaQG1TBE0jzrbNt' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.374154 7ff663fff6c0 Recovering log #4
2026/05/12-00:36:56.383721 7ff663fff6c0 Delete type=3 #2
2026/05/12-00:36:56.383779 7ff663fff6c0 Delete type=0 #4
2026/05/12-00:37:08.062905 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:08.066411 7ff6637fe6c0 Level-0 table #9: 10124 bytes OK
2026/05/12-00:37:08.072622 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:08.086421 7ff6637fe6c0 Manual compaction at level-0 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 0 : 0; will stop at (end)
2026/05/12-00:37:08.096808 7ff6637fe6c0 Manual compaction at level-1 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 0 : 0; will stop at '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 17 : 1
2026/05/12-00:37:08.096817 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:08.100204 7ff6637fe6c0 Generated table #10@1: 21 keys, 18033 bytes
2026/05/12-00:37:08.100229 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 18033 bytes
2026/05/12-00:37:08.106245 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:08.106373 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:08.106502 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:08.113213 7ff6637fe6c0 Manual compaction at level-1 from '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 17 : 1 .. '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.276120 7f301cbff6c0 Recovering log #38
2026/06/10-16:26:13.285508 7f301cbff6c0 Delete type=3 #36
2026/06/10-16:26:13.285526 7f301cbff6c0 Delete type=0 #38
2026/06/10-16:29:53.772491 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.772502 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.778096 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.791678 7f2fce7fc6c0 Manual compaction at level-0 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.177388 7fdfd5fed6c0 Delete type=3 #1
2026/05/12-00:36:37.178463 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.181940 7fdfd4feb6c0 Level-0 table #5: 9307 bytes OK
2026/05/12-00:36:37.188105 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.188350 7fdfd4feb6c0 Manual compaction at level-0 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.CDEHelpP10Extra' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.644676 7f2fcf7fe6c0 Recovering log #34
2026/06/10-16:17:31.653678 7f2fcf7fe6c0 Delete type=3 #32
2026/06/10-16:17:31.653697 7f2fcf7fe6c0 Delete type=0 #34
2026/06/10-16:19:32.867823 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.867836 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.874859 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.874953 7f2fce7fc6c0 Manual compaction at level-0 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.336872 7ff671fef6c0 Recovering log #4
2026/05/12-00:36:56.346806 7ff671fef6c0 Delete type=3 #2
2026/05/12-00:36:56.346886 7ff671fef6c0 Delete type=0 #4
2026/05/12-00:37:07.990253 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:07.993684 7ff6637fe6c0 Level-0 table #9: 8881 bytes OK
2026/05/12-00:37:07.999919 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:08.009675 7ff6637fe6c0 Manual compaction at level-0 from '!items!0NDBw1YB54q3hLH0' @ 72057594037927935 : 1 .. '!items!ykekdZlirabRobEF' @ 0 : 0; will stop at (end)
2026/05/12-00:37:08.019406 7ff6637fe6c0 Manual compaction at level-1 from '!items!0NDBw1YB54q3hLH0' @ 72057594037927935 : 1 .. '!items!ykekdZlirabRobEF' @ 0 : 0; will stop at '!items!ykekdZlirabRobEF' @ 108 : 1
2026/05/12-00:37:08.019418 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:08.023624 7ff6637fe6c0 Generated table #10@1: 54 keys, 8881 bytes
2026/05/12-00:37:08.023709 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 8881 bytes
2026/05/12-00:37:08.029864 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:08.030009 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:08.030163 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:08.051296 7ff6637fe6c0 Manual compaction at level-1 from '!items!ykekdZlirabRobEF' @ 108 : 1 .. '!items!ykekdZlirabRobEF' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.232087 7f2fcf7fe6c0 Recovering log #38
2026/06/10-16:26:13.242712 7f2fcf7fe6c0 Delete type=3 #36
2026/06/10-16:26:13.242732 7f2fcf7fe6c0 Delete type=0 #38
2026/06/10-16:29:53.748487 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.748497 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.754350 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.766297 7f2fce7fc6c0 Manual compaction at level-0 from '!items!0NDBw1YB54q3hLH0' @ 72057594037927935 : 1 .. '!items!ykekdZlirabRobEF' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.205346 7fdfd6fef6c0 Delete type=3 #1
2026/05/12-00:36:37.206616 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.210149 7fdfd4feb6c0 Level-0 table #5: 5923 bytes OK
2026/05/12-00:36:37.216280 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.216387 7fdfd4feb6c0 Manual compaction at level-0 from '!items!0NDBw1YB54q3hLH0' @ 72057594037927935 : 1 .. '!items!ykekdZlirabRobEF' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.600066 7f2fcf7fe6c0 Recovering log #34
2026/06/10-16:17:31.609869 7f2fcf7fe6c0 Delete type=3 #32
2026/06/10-16:17:31.609890 7f2fcf7fe6c0 Delete type=0 #34
2026/06/10-16:19:32.843204 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.843219 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.849235 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.855663 7f2fce7fc6c0 Manual compaction at level-0 from '!items!0NDBw1YB54q3hLH0' @ 72057594037927935 : 1 .. '!items!ykekdZlirabRobEF' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.348871 7ff6717ee6c0 Recovering log #4
2026/05/12-00:36:56.358876 7ff6717ee6c0 Delete type=3 #2
2026/05/12-00:36:56.358970 7ff6717ee6c0 Delete type=0 #4
2026/05/12-00:37:07.981024 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:07.984143 7ff6637fe6c0 Level-0 table #9: 596 bytes OK
2026/05/12-00:37:07.990088 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:08.009661 7ff6637fe6c0 Manual compaction at level-0 from '!items!HKq5ANSGiBIdcnki' @ 72057594037927935 : 1 .. '!items!HKq5ANSGiBIdcnki' @ 0 : 0; will stop at (end)
2026/05/12-00:37:08.030253 7ff6637fe6c0 Manual compaction at level-1 from '!items!HKq5ANSGiBIdcnki' @ 72057594037927935 : 1 .. '!items!HKq5ANSGiBIdcnki' @ 0 : 0; will stop at '!items!HKq5ANSGiBIdcnki' @ 2 : 1
2026/05/12-00:37:08.030264 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:08.033436 7ff6637fe6c0 Generated table #10@1: 1 keys, 596 bytes
2026/05/12-00:37:08.033469 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 596 bytes
2026/05/12-00:37:08.040221 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:08.040443 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:08.040599 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:08.051309 7ff6637fe6c0 Manual compaction at level-1 from '!items!HKq5ANSGiBIdcnki' @ 2 : 1 .. '!items!HKq5ANSGiBIdcnki' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.243837 7f2fcffff6c0 Recovering log #38
2026/06/10-16:26:13.253357 7f2fcffff6c0 Delete type=3 #36
2026/06/10-16:26:13.253373 7f2fcffff6c0 Delete type=0 #38
2026/06/10-16:29:53.754405 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.754415 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.760076 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.766302 7f2fce7fc6c0 Manual compaction at level-0 from '!items!HKq5ANSGiBIdcnki' @ 72057594037927935 : 1 .. '!items!HKq5ANSGiBIdcnki' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.230762 7fdfd67ee6c0 Delete type=3 #1
2026/05/12-00:36:37.231622 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.234740 7fdfd4feb6c0 Level-0 table #5: 559 bytes OK
2026/05/12-00:36:37.240940 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.241065 7fdfd4feb6c0 Manual compaction at level-0 from '!items!HKq5ANSGiBIdcnki' @ 72057594037927935 : 1 .. '!items!HKq5ANSGiBIdcnki' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.611312 7f2fceffd6c0 Recovering log #34
2026/06/10-16:17:31.621229 7f2fceffd6c0 Delete type=3 #32
2026/06/10-16:17:31.621250 7f2fceffd6c0 Delete type=0 #34
2026/06/10-16:19:32.849323 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.849339 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.855577 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.874930 7f2fce7fc6c0 Manual compaction at level-0 from '!items!HKq5ANSGiBIdcnki' @ 72057594037927935 : 1 .. '!items!HKq5ANSGiBIdcnki' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.263994 7ff663fff6c0 Recovering log #4
2026/05/12-00:36:56.274398 7ff663fff6c0 Delete type=3 #2
2026/05/12-00:36:56.274458 7ff663fff6c0 Delete type=0 #4
2026/05/12-00:37:07.886611 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:07.890996 7ff6637fe6c0 Level-0 table #9: 34454 bytes OK
2026/05/12-00:37:07.897482 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:07.928654 7ff6637fe6c0 Manual compaction at level-0 from '!items!2nKXEHLG0fXtSOdy' @ 72057594037927935 : 1 .. '!items!tlIc1bmIAbQeUwj7' @ 0 : 0; will stop at (end)
2026/05/12-00:37:07.928707 7ff6637fe6c0 Manual compaction at level-1 from '!items!2nKXEHLG0fXtSOdy' @ 72057594037927935 : 1 .. '!items!tlIc1bmIAbQeUwj7' @ 0 : 0; will stop at '!items!tlIc1bmIAbQeUwj7' @ 40 : 1
2026/05/12-00:37:07.928714 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:07.932971 7ff6637fe6c0 Generated table #10@1: 20 keys, 34454 bytes
2026/05/12-00:37:07.932984 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 34454 bytes
2026/05/12-00:37:07.939008 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:07.939170 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:07.939306 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:07.970948 7ff6637fe6c0 Manual compaction at level-1 from '!items!tlIc1bmIAbQeUwj7' @ 40 : 1 .. '!items!tlIc1bmIAbQeUwj7' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.102940 7f2fcffff6c0 Recovering log #38
2026/06/10-16:26:13.157514 7f2fcffff6c0 Delete type=3 #36
2026/06/10-16:26:13.157538 7f2fcffff6c0 Delete type=0 #38
2026/06/10-16:29:53.716605 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.716618 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.723647 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.735595 7f2fce7fc6c0 Manual compaction at level-0 from '!items!2nKXEHLG0fXtSOdy' @ 72057594037927935 : 1 .. '!items!tlIc1bmIAbQeUwj7' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.257477 7fdfd57ec6c0 Delete type=3 #1
2026/05/12-00:36:37.258479 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.261916 7fdfd4feb6c0 Level-0 table #5: 32988 bytes OK
2026/05/12-00:36:37.269084 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.269269 7fdfd4feb6c0 Manual compaction at level-0 from '!items!2nKXEHLG0fXtSOdy' @ 72057594037927935 : 1 .. '!items!tlIc1bmIAbQeUwj7' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.536886 7f301cbff6c0 Recovering log #34
2026/06/10-16:17:31.546178 7f301cbff6c0 Delete type=3 #32
2026/06/10-16:17:31.546208 7f301cbff6c0 Delete type=0 #34
2026/06/10-16:19:32.817770 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.817789 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.823980 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.830698 7f2fce7fc6c0 Manual compaction at level-0 from '!items!2nKXEHLG0fXtSOdy' @ 72057594037927935 : 1 .. '!items!tlIc1bmIAbQeUwj7' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.360962 7ff663fff6c0 Recovering log #4
2026/05/12-00:36:56.371878 7ff663fff6c0 Delete type=3 #2
2026/05/12-00:36:56.371942 7ff663fff6c0 Delete type=0 #4
2026/05/12-00:37:08.051413 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:08.055337 7ff6637fe6c0 Level-0 table #9: 50053 bytes OK
2026/05/12-00:37:08.062742 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:08.086408 7ff6637fe6c0 Manual compaction at level-0 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
2026/05/12-00:37:08.086444 7ff6637fe6c0 Manual compaction at level-1 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at '!actors!zVpmacwoWEG8YTCQ' @ 98 : 1
2026/05/12-00:37:08.086448 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:08.090154 7ff6637fe6c0 Generated table #10@1: 49 keys, 50053 bytes
2026/05/12-00:37:08.090193 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 50053 bytes
2026/05/12-00:37:08.096495 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:08.096568 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:08.096695 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:08.113181 7ff6637fe6c0 Manual compaction at level-1 from '!actors!zVpmacwoWEG8YTCQ' @ 98 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.254219 7f2fceffd6c0 Recovering log #38
2026/06/10-16:26:13.263234 7f2fceffd6c0 Delete type=3 #36
2026/06/10-16:26:13.263255 7f2fceffd6c0 Delete type=0 #38
2026/06/10-16:29:53.760191 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.760201 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.766249 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.772486 7f2fce7fc6c0 Manual compaction at level-0 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.286062 7fdfd5fed6c0 Delete type=3 #1
2026/05/12-00:36:37.287117 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.291305 7fdfd4feb6c0 Level-0 table #5: 21686 bytes OK
2026/05/12-00:36:37.297295 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.297424 7fdfd4feb6c0 Manual compaction at level-0 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.622266 7f2fcf7fe6c0 Recovering log #34
2026/06/10-16:17:31.631460 7f2fcf7fe6c0 Delete type=3 #32
2026/06/10-16:17:31.631480 7f2fcf7fe6c0 Delete type=0 #34
2026/06/10-16:19:32.855722 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.855734 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.861808 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.874938 7f2fce7fc6c0 Manual compaction at level-0 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
View File
Binary file not shown.
View File
+1
View File
@@ -0,0 +1 @@
MANIFEST-000018
View File
+8
View File
@@ -0,0 +1,8 @@
2026/06/10-16:26:13.264620 7f2fceffd6c0 Recovering log #16
2026/06/10-16:26:13.274036 7f2fceffd6c0 Delete type=3 #14
2026/06/10-16:26:13.274051 7f2fceffd6c0 Delete type=0 #16
2026/06/10-16:29:53.766305 7f2fce7fc6c0 Level-0 table #21: started
2026/06/10-16:29:53.766315 7f2fce7fc6c0 Level-0 table #21: 0 bytes OK
2026/06/10-16:29:53.772397 7f2fce7fc6c0 Delete type=0 #19
2026/06/10-16:29:53.791671 7f2fce7fc6c0 Manual compaction at level-0 from '!actors!5OGW1fRUn12aNMMV' @ 72057594037927935 : 1 .. '!actors.items!zSWwOmFiFjN4YxC9.w8LXSYQ1eIygtlKV' @ 0 : 0; will stop at (end)
2026/06/10-16:29:53.814542 7f2fce7fc6c0 Manual compaction at level-1 from '!actors!5OGW1fRUn12aNMMV' @ 72057594037927935 : 1 .. '!actors.items!zSWwOmFiFjN4YxC9.w8LXSYQ1eIygtlKV' @ 0 : 0; will stop at (end)
+8
View File
@@ -0,0 +1,8 @@
2026/06/10-16:17:31.632628 7f2fcf7fe6c0 Recovering log #12
2026/06/10-16:17:31.642483 7f2fcf7fe6c0 Delete type=3 #10
2026/06/10-16:17:31.642501 7f2fcf7fe6c0 Delete type=0 #12
2026/06/10-16:19:32.861885 7f2fce7fc6c0 Level-0 table #17: started
2026/06/10-16:19:32.861895 7f2fce7fc6c0 Level-0 table #17: 0 bytes OK
2026/06/10-16:19:32.867739 7f2fce7fc6c0 Delete type=0 #15
2026/06/10-16:19:32.874946 7f2fce7fc6c0 Manual compaction at level-0 from '!actors!5OGW1fRUn12aNMMV' @ 72057594037927935 : 1 .. '!actors.items!zSWwOmFiFjN4YxC9.w8LXSYQ1eIygtlKV' @ 0 : 0; will stop at (end)
2026/06/10-16:19:32.874957 7f2fce7fc6c0 Manual compaction at level-1 from '!actors!5OGW1fRUn12aNMMV' @ 72057594037927935 : 1 .. '!actors.items!zSWwOmFiFjN4YxC9.w8LXSYQ1eIygtlKV' @ 0 : 0; will stop at (end)
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.324955 7ff6717ee6c0 Recovering log #4
2026/05/12-00:36:56.335151 7ff6717ee6c0 Delete type=3 #2
2026/05/12-00:36:56.335204 7ff6717ee6c0 Delete type=0 #4
2026/05/12-00:37:08.000036 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:08.003325 7ff6637fe6c0 Level-0 table #9: 4934 bytes OK
2026/05/12-00:37:08.009477 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:08.009687 7ff6637fe6c0 Manual compaction at level-0 from '!items!DC2kimCi9sWxqhXG' @ 72057594037927935 : 1 .. '!items!qzfAEhmvVxEMzm0k' @ 0 : 0; will stop at (end)
2026/05/12-00:37:08.040730 7ff6637fe6c0 Manual compaction at level-1 from '!items!DC2kimCi9sWxqhXG' @ 72057594037927935 : 1 .. '!items!qzfAEhmvVxEMzm0k' @ 0 : 0; will stop at '!items!qzfAEhmvVxEMzm0k' @ 10 : 1
2026/05/12-00:37:08.040743 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:08.044737 7ff6637fe6c0 Generated table #10@1: 5 keys, 4934 bytes
2026/05/12-00:37:08.044781 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 4934 bytes
2026/05/12-00:37:08.050905 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:08.051035 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:08.051186 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:08.051322 7ff6637fe6c0 Manual compaction at level-1 from '!items!qzfAEhmvVxEMzm0k' @ 10 : 1 .. '!items!qzfAEhmvVxEMzm0k' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.222183 7f2fcffff6c0 Recovering log #38
2026/06/10-16:26:13.231094 7f2fcffff6c0 Delete type=3 #36
2026/06/10-16:26:13.231111 7f2fcffff6c0 Delete type=0 #38
2026/06/10-16:29:53.735658 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.735668 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.741314 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.754398 7f2fce7fc6c0 Manual compaction at level-0 from '!items!DC2kimCi9sWxqhXG' @ 72057594037927935 : 1 .. '!items!qzfAEhmvVxEMzm0k' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.311794 7fdfd6fef6c0 Delete type=3 #1
2026/05/12-00:36:37.312497 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.315659 7fdfd4feb6c0 Level-0 table #5: 4830 bytes OK
2026/05/12-00:36:37.322060 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.322200 7fdfd4feb6c0 Manual compaction at level-0 from '!items!DC2kimCi9sWxqhXG' @ 72057594037927935 : 1 .. '!items!qzfAEhmvVxEMzm0k' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.589862 7f2fcffff6c0 Recovering log #34
2026/06/10-16:17:31.599011 7f2fcffff6c0 Delete type=3 #32
2026/06/10-16:17:31.599029 7f2fcffff6c0 Delete type=0 #34
2026/06/10-16:19:32.811842 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.811862 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.817688 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.830692 7f2fce7fc6c0 Manual compaction at level-0 from '!items!DC2kimCi9sWxqhXG' @ 72057594037927935 : 1 .. '!items!qzfAEhmvVxEMzm0k' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
View File
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000022
MANIFEST-000059
+7 -8
View File
@@ -1,8 +1,7 @@
2026/05/12-00:36:56.386114 7ff670fed6c0 Recovering log #20
2026/05/12-00:36:56.396758 7ff670fed6c0 Delete type=3 #18
2026/05/12-00:36:56.396824 7ff670fed6c0 Delete type=0 #20
2026/05/12-00:37:08.080126 7ff6637fe6c0 Level-0 table #25: started
2026/05/12-00:37:08.080172 7ff6637fe6c0 Level-0 table #25: 0 bytes OK
2026/05/12-00:37:08.086288 7ff6637fe6c0 Delete type=0 #23
2026/05/12-00:37:08.096790 7ff6637fe6c0 Manual compaction at level-0 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/05/12-00:37:08.113200 7ff6637fe6c0 Manual compaction at level-1 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.286742 7f2fcf7fe6c0 Recovering log #57
2026/06/10-16:26:13.296421 7f2fcf7fe6c0 Delete type=3 #55
2026/06/10-16:26:13.296441 7f2fcf7fe6c0 Delete type=0 #57
2026/06/10-16:29:53.778131 7f2fce7fc6c0 Level-0 table #62: started
2026/06/10-16:29:53.778141 7f2fce7fc6c0 Level-0 table #62: 0 bytes OK
2026/06/10-16:29:53.783939 7f2fce7fc6c0 Delete type=0 #60
2026/06/10-16:29:53.791683 7f2fce7fc6c0 Manual compaction at level-0 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
+7 -8
View File
@@ -1,8 +1,7 @@
2026/05/12-00:34:51.728359 7ff671fef6c0 Recovering log #16
2026/05/12-00:34:51.737993 7ff671fef6c0 Delete type=3 #14
2026/05/12-00:34:51.738056 7ff671fef6c0 Delete type=0 #16
2026/05/12-00:35:02.012940 7ff6637fe6c0 Level-0 table #21: started
2026/05/12-00:35:02.012962 7ff6637fe6c0 Level-0 table #21: 0 bytes OK
2026/05/12-00:35:02.019210 7ff6637fe6c0 Delete type=0 #19
2026/05/12-00:35:02.033237 7ff6637fe6c0 Manual compaction at level-0 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/05/12-00:35:02.033284 7ff6637fe6c0 Manual compaction at level-1 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.655147 7f2fceffd6c0 Recovering log #53
2026/06/10-16:17:31.664989 7f2fceffd6c0 Delete type=3 #51
2026/06/10-16:17:31.665009 7f2fceffd6c0 Delete type=0 #53
2026/06/10-16:19:32.875008 7f2fce7fc6c0 Level-0 table #58: started
2026/06/10-16:19:32.875020 7f2fce7fc6c0 Level-0 table #58: 0 bytes OK
2026/06/10-16:19:32.880947 7f2fce7fc6c0 Delete type=0 #56
2026/06/10-16:19:32.903220 7f2fce7fc6c0 Manual compaction at level-0 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
View File
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.276952 7ff6717ee6c0 Recovering log #4
2026/05/12-00:36:56.286901 7ff6717ee6c0 Delete type=3 #2
2026/05/12-00:36:56.286957 7ff6717ee6c0 Delete type=0 #4
2026/05/12-00:37:07.897667 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:07.902498 7ff6637fe6c0 Level-0 table #9: 124022 bytes OK
2026/05/12-00:37:07.909088 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:07.928672 7ff6637fe6c0 Manual compaction at level-0 from '!items!2f51pcvFkcZjaxDk' @ 72057594037927935 : 1 .. '!items!yVN7PZw35iIaBl0H' @ 0 : 0; will stop at (end)
2026/05/12-00:37:07.949109 7ff6637fe6c0 Manual compaction at level-1 from '!items!2f51pcvFkcZjaxDk' @ 72057594037927935 : 1 .. '!items!yVN7PZw35iIaBl0H' @ 0 : 0; will stop at '!items!yVN7PZw35iIaBl0H' @ 50 : 1
2026/05/12-00:37:07.949120 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:07.954259 7ff6637fe6c0 Generated table #10@1: 25 keys, 124022 bytes
2026/05/12-00:37:07.954276 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 124022 bytes
2026/05/12-00:37:07.961206 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:07.961331 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:07.961477 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:07.970977 7ff6637fe6c0 Manual compaction at level-1 from '!items!yVN7PZw35iIaBl0H' @ 50 : 1 .. '!items!yVN7PZw35iIaBl0H' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.159784 7f2fceffd6c0 Recovering log #38
2026/06/10-16:26:13.186364 7f2fceffd6c0 Delete type=3 #36
2026/06/10-16:26:13.186391 7f2fceffd6c0 Delete type=0 #38
2026/06/10-16:29:53.741387 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.741400 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.748439 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.760185 7f2fce7fc6c0 Manual compaction at level-0 from '!items!2f51pcvFkcZjaxDk' @ 72057594037927935 : 1 .. '!items!yVN7PZw35iIaBl0H' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.338931 7fdfd67ee6c0 Delete type=3 #1
2026/05/12-00:36:37.341086 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.345847 7fdfd4feb6c0 Level-0 table #5: 120353 bytes OK
2026/05/12-00:36:37.352605 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.352812 7fdfd4feb6c0 Manual compaction at level-0 from '!items!2f51pcvFkcZjaxDk' @ 72057594037927935 : 1 .. '!items!yVN7PZw35iIaBl0H' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.547590 7f2fcffff6c0 Recovering log #34
2026/06/10-16:17:31.557499 7f2fcffff6c0 Delete type=3 #32
2026/06/10-16:17:31.557521 7f2fcffff6c0 Delete type=0 #34
2026/06/10-16:19:32.804540 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.804579 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.811731 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.830682 7f2fce7fc6c0 Manual compaction at level-0 from '!items!2f51pcvFkcZjaxDk' @ 72057594037927935 : 1 .. '!items!yVN7PZw35iIaBl0H' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
View File
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040
+7 -15
View File
@@ -1,15 +1,7 @@
2026/05/12-00:36:56.290045 7ff671fef6c0 Recovering log #4
2026/05/12-00:36:56.299803 7ff671fef6c0 Delete type=3 #2
2026/05/12-00:36:56.299870 7ff671fef6c0 Delete type=0 #4
2026/05/12-00:37:07.909338 7ff6637fe6c0 Level-0 table #9: started
2026/05/12-00:37:07.913145 7ff6637fe6c0 Level-0 table #9: 8790 bytes OK
2026/05/12-00:37:07.919132 7ff6637fe6c0 Delete type=0 #7
2026/05/12-00:37:07.928684 7ff6637fe6c0 Manual compaction at level-0 from '!items!APN91pQL0NBfZsG7' @ 72057594037927935 : 1 .. '!items!xxZKGqDVxAfr140W' @ 0 : 0; will stop at (end)
2026/05/12-00:37:07.961574 7ff6637fe6c0 Manual compaction at level-1 from '!items!APN91pQL0NBfZsG7' @ 72057594037927935 : 1 .. '!items!xxZKGqDVxAfr140W' @ 0 : 0; will stop at '!items!xxZKGqDVxAfr140W' @ 32 : 1
2026/05/12-00:37:07.961583 7ff6637fe6c0 Compacting 1@1 + 1@2 files
2026/05/12-00:37:07.964786 7ff6637fe6c0 Generated table #10@1: 16 keys, 8790 bytes
2026/05/12-00:37:07.964814 7ff6637fe6c0 Compacted 1@1 + 1@2 files => 8790 bytes
2026/05/12-00:37:07.970646 7ff6637fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2026/05/12-00:37:07.970759 7ff6637fe6c0 Delete type=2 #5
2026/05/12-00:37:07.970874 7ff6637fe6c0 Delete type=2 #9
2026/05/12-00:37:07.970988 7ff6637fe6c0 Manual compaction at level-1 from '!items!xxZKGqDVxAfr140W' @ 32 : 1 .. '!items!xxZKGqDVxAfr140W' @ 0 : 0; will stop at (end)
2026/06/10-16:26:13.188966 7f2fcf7fe6c0 Recovering log #38
2026/06/10-16:26:13.198881 7f2fcf7fe6c0 Delete type=3 #36
2026/06/10-16:26:13.198898 7f2fcf7fe6c0 Delete type=0 #38
2026/06/10-16:29:53.710145 7f2fce7fc6c0 Level-0 table #43: started
2026/06/10-16:29:53.710176 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
2026/06/10-16:29:53.716550 7f2fce7fc6c0 Delete type=0 #41
2026/06/10-16:29:53.735590 7f2fce7fc6c0 Manual compaction at level-0 from '!items!APN91pQL0NBfZsG7' @ 72057594037927935 : 1 .. '!items!xxZKGqDVxAfr140W' @ 0 : 0; will stop at (end)
+7 -5
View File
@@ -1,5 +1,7 @@
2026/05/12-00:36:37.372690 7fdfd57ec6c0 Delete type=3 #1
2026/05/12-00:36:37.373512 7fdfd4feb6c0 Level-0 table #5: started
2026/05/12-00:36:37.376679 7fdfd4feb6c0 Level-0 table #5: 8622 bytes OK
2026/05/12-00:36:37.382725 7fdfd4feb6c0 Delete type=0 #3
2026/05/12-00:36:37.382856 7fdfd4feb6c0 Manual compaction at level-0 from '!items!APN91pQL0NBfZsG7' @ 72057594037927935 : 1 .. '!items!xxZKGqDVxAfr140W' @ 0 : 0; will stop at (end)
2026/06/10-16:17:31.558759 7f2fcf7fe6c0 Recovering log #34
2026/06/10-16:17:31.567443 7f2fcf7fe6c0 Delete type=3 #32
2026/06/10-16:17:31.567462 7f2fcf7fe6c0 Delete type=0 #34
2026/06/10-16:19:32.830760 7f2fce7fc6c0 Level-0 table #39: started
2026/06/10-16:19:32.830772 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
2026/06/10-16:19:32.836446 7f2fce7fc6c0 Delete type=0 #37
2026/06/10-16:19:32.855647 7f2fce7fc6c0 Manual compaction at level-0 from '!items!APN91pQL0NBfZsG7' @ 72057594037927935 : 1 .. '!items!xxZKGqDVxAfr140W' @ 0 : 0; will stop at (end)
Binary file not shown.
Binary file not shown.
View File
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000040

Some files were not shown because too many files have changed in this diff Show More