fix(hooks): remove auto editMode flag setting to prevent phase errors

The createActor hook was causing 'ActiveEffect application phase already
completed' errors because setFlag() triggers actor updates which call
prepareData() -> prepareEmbeddedDocuments() -> applyActiveEffects().

Even with setTimeout delays, the error persisted. The cleanest solution is
to remove the auto-setting entirely. Users can enable edit mode manually
via the checkbox in the character sheet (which is preserved).

This prevents the error on:
- Character sheet profile editing
- Creature sheet creation
- Group sheet profile editing

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-06-04 23:23:11 +02:00
parent 02aabbea36
commit dfc9b823a4
+6 -13
View File
@@ -147,17 +147,10 @@ export const registerHooks = function () {
}*/ }*/
} }
}); });
Hooks.on("createActor", async function (actor, options, id) { // Note: editMode flag is no longer auto-set on actor creation to avoid
// Delay flag setting to avoid the "phase already completed" error // "ActiveEffect application phase already completed" errors.
// When an actor is created, it goes through data preparation which applies effects. // Users can enable edit mode manually via the checkbox in the character sheet.
// If we call setFlag() immediately, it triggers updateActor -> prepareData -> // Hooks.on("createActor", async function (actor, options, id) {
// prepareEmbeddedDocuments() which tries to apply effects again, causing the error. // actor.setFlag("world", "editMode", true);
// By using setTimeout with 0ms, we defer the flag setting until after the current // })
// preparation cycle is complete.
setTimeout(() => {
actor.setFlag("world", "editMode", true).catch(err => {
console.error("Vermine2047 | Failed to set editMode flag:", err);
});
}, 0);
})
} }