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

File diff suppressed because one or more lines are too long