Phase 16C/16D/16E Fix - Correct Onboarding Wizard Step Order and Runtime Transition

This commit is contained in:
Nick Beckley 2026-06-27 21:43:48 +01:00
parent 908199c802
commit 85404b9c42
2 changed files with 27 additions and 20 deletions

View File

@ -2586,11 +2586,14 @@
projectId: project.projectId,
documentText: importStructure.documentText || ""
});
renderFirstRunCharacterCandidates(discovery?.candidates || []);
firstRunCharacterCandidatesModel = Array.isArray(discovery?.candidates) ? discovery.candidates : [];
setHidden(firstRunCharacterSection, true);
setHidden(firstRunCharacterActions, true);
} catch (discoveryError) {
console.error("Unable to discover character candidates.", discoveryError);
renderFirstRunCharacterCandidates([]);
setText(firstRunCharacterStatus, "Character discovery is unavailable.");
firstRunCharacterCandidatesModel = [];
setHidden(firstRunCharacterSection, true);
setHidden(firstRunCharacterActions, true);
}
setDiagnostics({
lastScan: "Success",
@ -2716,17 +2719,7 @@
setDocumentMessage(response.message || "Manuscript structure imported.");
window.setTimeout(updateFirstRunButtons, 750);
} else {
setFirstRunMode(true);
setHidden(firstRunSummary, true);
setHidden(firstRunImportActions, true);
setHidden(firstRunCharacterSection, false);
setHidden(firstRunCharacterActions, false);
setHidden(firstRunCreateCharactersButton, true);
setHidden(firstRunSkipCharactersButton, true);
setHidden(firstRunContinueButton, false);
setText(firstRunCharacterStatus, "No likely characters found.");
setFirstRunStatus(response.message || "Manuscript structure imported.");
setDocumentMessage(response.message || "Manuscript structure imported.");
await finishFirstRunOnboarding(response.message || "Manuscript structure imported.");
}
} catch (error) {
console.error("Unable to import manuscript structure.", error);
@ -2737,7 +2730,7 @@
}
};
const finishFirstRunOnboarding = () => {
const finishFirstRunOnboarding = async (message = "") => {
firstRunCharacterStepActive = false;
firstRunCharacterStepActivatedAt = 0;
firstRunCharacterCandidatesModel = [];
@ -2748,7 +2741,13 @@
setFirstRunMode(false);
setFirstRunStatus("");
setHidden(firstRunCharacterActions, true);
loadRuntimeDocumentAwareness();
if (message) {
setDocumentMessage(message);
}
const runtimeLoaded = await loadRuntimeDocumentAwareness();
if (message && runtimeLoaded && detectedChapterTitle) {
setDocumentMessage(message);
}
};
const createFirstRunCharacters = async () => {
@ -2770,7 +2769,7 @@
});
setDocumentMessage(response.message || "Characters created.");
setText(firstRunCharacterStatus, `${response.createdCount || 0} created, ${response.skippedCount || 0} already existed.`);
finishFirstRunOnboarding();
await finishFirstRunOnboarding(response.message || "Characters created.");
} catch (error) {
console.error("Unable to create discovered characters.", error);
setText(firstRunCharacterStatus, `Unable to create characters: ${errorText(error)}`);
@ -2800,6 +2799,14 @@
heading2: String(structure.heading2Count)
});
if (!detectedChapterTitle) {
resetPlotDirectorScene("Not detected");
setSceneContextStale(false);
setSceneTrackingState("Live");
setDocumentMessage("Manuscript linked. Click inside a chapter to show the current scene.");
return true;
}
if (!detectedSceneTitle) {
await refreshPlotDirectorChapter();
} else {
@ -4231,8 +4238,8 @@
firstRunScanButton?.addEventListener("click", analyseFirstRunManuscript);
firstRunImportButton?.addEventListener("click", importFirstRunManuscript);
firstRunCreateCharactersButton?.addEventListener("click", createFirstRunCharacters);
firstRunSkipCharactersButton?.addEventListener("click", finishFirstRunOnboarding);
firstRunContinueButton?.addEventListener("click", finishFirstRunOnboarding);
firstRunSkipCharactersButton?.addEventListener("click", () => finishFirstRunOnboarding("Character creation skipped."));
firstRunContinueButton?.addEventListener("click", () => finishFirstRunOnboarding());
firstRunCancelButton?.addEventListener("click", () => setFirstRunMode(false));
firstRunImportCancelButton?.addEventListener("click", () => resetFirstRunPreview("Import cancelled."));

File diff suppressed because one or more lines are too long