diff --git a/PlotLine/ViewModels/OnboardingViewModels.cs b/PlotLine/ViewModels/OnboardingViewModels.cs index 56b8307..7e77083 100644 --- a/PlotLine/ViewModels/OnboardingViewModels.cs +++ b/PlotLine/ViewModels/OnboardingViewModels.cs @@ -32,6 +32,13 @@ public sealed class OnboardingOptionViewModel public string? Badge { get; init; } } +public sealed class OnboardingJourneyHeaderViewModel +{ + public int CurrentStep { get; init; } + public int TotalSteps { get; init; } = 9; + public string AriaLabel { get; init; } = "Manuscript import progress"; +} + public sealed class WritingJourneyOnboardingForm { [Required(ErrorMessage = "Choose the closest writing stage before continuing.")] diff --git a/PlotLine/Views/Onboarding/Index.cshtml b/PlotLine/Views/Onboarding/Index.cshtml index abbe486..c57bd24 100644 --- a/PlotLine/Views/Onboarding/Index.cshtml +++ b/PlotLine/Views/Onboarding/Index.cshtml @@ -3,37 +3,11 @@ @{ ViewData["Title"] = "Set up PlotDirector"; var currentJourneyOrder = CurrentJourneyOrder(Model); - var journeySteps = new[] - { - new { Label = "Welcome", Order = 1 }, - new { Label = "Writing Preferences", Order = 2 }, - new { Label = "Project", Order = 3 }, - new { Label = "Book", Order = 4 }, - new { Label = "Connect Word", Order = 5 }, - new { Label = "Scan", Order = 6 }, - new { Label = "Review", Order = 7 }, - new { Label = "Analyse", Order = 8 }, - new { Label = "Complete", Order = 9 } - }; }
-
- Step @Model.StepNumber of @Model.TotalSteps -
- -
-
-
    - @foreach (var step in journeySteps) - { -
  1. - @step.Order - @step.Label -
  2. - } -
+ @if (Model.CurrentStep == OnboardingSteps.Welcome) { @@ -255,11 +229,11 @@ else {
-

Ready for the next phase

+

Step @currentJourneyOrder of 9

@if (Model.IsMicrosoftWordPath) { -

Connect your Word Companion

-

Open Microsoft Word, open your manuscript, start the PlotDirector Word Companion, and sign in using your PlotDirector account. PlotDirector will stay on this page with you while the scan and build run.

+

@(currentJourneyOrder >= 6 ? "Scan Manuscript" : "Connect your Word Companion")

+

Open Microsoft Word, open your manuscript, start the PlotDirector Word Companion, and sign in using your PlotDirector account. PlotDirector will stay on this page with you while the scan runs.

} else { @@ -327,13 +301,13 @@ type="button" data-onboarding-scan-start disabled="@(!CanStartScan(Model.CompanionPresence, Model.ScanState))"> - @(Model.ScanState.IsComplete ? "Scan again" : "Scan manuscript") + Scan manuscript - @(string.Equals(Model.ScanState.ReviewStatus, ManuscriptScanReviewStatuses.ReadyToImport, StringComparison.Ordinal) ? "Edit review" : "Review scan") + @(string.Equals(Model.ScanState.ReviewStatus, ManuscriptScanReviewStatuses.ReadyToImport, StringComparison.Ordinal) ? "Edit review" : "Review chapters")
@if (string.Equals(Model.ScanState.ReviewStatus, ManuscriptScanReviewStatuses.ReadyToImport, StringComparison.Ordinal)) diff --git a/PlotLine/Views/Onboarding/ScanReview.cshtml b/PlotLine/Views/Onboarding/ScanReview.cshtml index 730fe06..37f32ef 100644 --- a/PlotLine/Views/Onboarding/ScanReview.cshtml +++ b/PlotLine/Views/Onboarding/ScanReview.cshtml @@ -19,11 +19,12 @@
@Html.AntiForgeryToken() +
-

@Model.SelectedBookTitle

-

Review manuscript scan

-

Nothing has been added to your story map yet. Choose the chapters Story Intelligence should analyse for scene creation.

+

Step 7 of 9

+

Review Chapters

+

Review the chapters PlotDirector found before Story Intelligence begins.

Scene and character scan details are shown for context only in this phase.

@@ -260,7 +261,6 @@
Back to setup -
diff --git a/PlotLine/Views/Onboarding/StoryIntelligence.cshtml b/PlotLine/Views/Onboarding/StoryIntelligence.cshtml index 611aba8..7e6addd 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligence.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligence.cshtml @@ -5,10 +5,11 @@
+
-

@Model.SelectedBookTitle

-

Analyse chapters with Story Intelligence

-

PlotDirector can now analyse your manuscript to identify scenes and begin understanding your story.

+

Step 8 of 9

+

Analyse Manuscript

+

PlotDirector will analyse approved chapters in the background and prepare scene suggestions for review.

@if (TempData["OnboardingStoryIntelligenceError"] is string error) @@ -59,8 +60,8 @@
-

It will extract scene summaries, scene purpose, characters, locations, assets, relationships, timeline clues and story observations.

-

For this step, only scenes are created in PlotDirector. The other discoveries are prepared for later review stages.

+

Nothing will be created yet. PlotDirector will prepare scene suggestions for review.

+

For this step, only scenes can be created in PlotDirector. Characters, locations, assets and relationships stay as later suggestions.

@if (!string.IsNullOrWhiteSpace(Model.Message)) @@ -75,9 +76,7 @@ }
-
- -
+ Back to chapter review
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceComplete.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceComplete.cshtml index 51b4057..7d5560d 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceComplete.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceComplete.cshtml @@ -5,27 +5,28 @@
+
-

@Model.BookTitle

+

Step 9 of 9

-

Your scenes have been created.

+

Manuscript import complete

PlotDirector created scenes from the approved manuscript chapters. Characters, locations, assets and relationships were left untouched.

- Chapters + Chapters analysed @Model.ChaptersCommitted
- Scenes created + Scenes prepared / created @Model.ScenesCreated
- Project - @Model.ProjectName + Notes needing review + None imported
Book @@ -34,8 +35,8 @@
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceProgress.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceProgress.cshtml index f7036a6..28b74ba 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceProgress.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceProgress.cshtml @@ -13,9 +13,10 @@ data-story-intelligence-run-ids="@runIds" data-story-max-progress-percent="@progressPercent" data-story-intelligence-has-active-runs="@Model.HasActiveRuns.ToString().ToLowerInvariant()"> +
-

@Model.BookTitle

-

Reading your manuscript...

+

Step 8 of 9

+

Reading your manuscript

PlotDirector is analysing your chapters and preparing scenes for review. You can safely leave this page and return later.

@@ -29,7 +30,7 @@ }
- Nothing has been added to your project yet. PlotDirector is preparing suggestions. You will review them before anything is created. + You can close Word or this browser tab once analysis has started. PlotDirector is working from a saved manuscript snapshot.
diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceReview.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceReview.cshtml index 4a85c4d..8c41bed 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceReview.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceReview.cshtml @@ -13,8 +13,9 @@
+
-

@Model.BookTitle

+

Step 8 of 9

Review analysis

PlotDirector has finished reading your manuscript. Review the chapter results, then create scenes when you are ready.

diff --git a/PlotLine/Views/Onboarding/_OnboardingJourneyHeader.cshtml b/PlotLine/Views/Onboarding/_OnboardingJourneyHeader.cshtml new file mode 100644 index 0000000..8f88ff6 --- /dev/null +++ b/PlotLine/Views/Onboarding/_OnboardingJourneyHeader.cshtml @@ -0,0 +1,43 @@ +@model OnboardingJourneyHeaderViewModel +@{ + var steps = new[] + { + new { Label = "Welcome", Order = 1 }, + new { Label = "Writing Preferences", Order = 2 }, + new { Label = "Project", Order = 3 }, + new { Label = "Book", Order = 4 }, + new { Label = "Connect Word", Order = 5 }, + new { Label = "Scan Manuscript", Order = 6 }, + new { Label = "Review Chapters", Order = 7 }, + new { Label = "Analyse Manuscript", Order = 8 }, + new { Label = "Complete", Order = 9 } + }; +} + +
+ Step @Model.CurrentStep of @Model.TotalSteps +
+ +
+
+
    + @foreach (var step in steps) + { +
  1. + @step.Order + @step.Label +
  2. + } +
+ +@functions { + private static string StepClass(int order, int currentStep) + { + if (order < currentStep) + { + return "is-complete"; + } + + return order == currentStep ? "is-current" : "is-upcoming"; + } +} diff --git a/PlotLine/Views/Projects/Index.cshtml b/PlotLine/Views/Projects/Index.cshtml index 4276b6b..96cc8b1 100644 --- a/PlotLine/Views/Projects/Index.cshtml +++ b/PlotLine/Views/Projects/Index.cshtml @@ -33,7 +33,7 @@
} -@if (Model.OnboardingNudge.ShouldShow) +@if (Model.OnboardingNudge.ShouldShow && !Model.StoryIntelligence.ShouldShow) {
-

Story Intelligence

+

Manuscript import

@Model.StoryIntelligence.Title

@Model.StoryIntelligence.Description

diff --git a/PlotLine/wwwroot/css/onboarding.css b/PlotLine/wwwroot/css/onboarding.css index 3d5c27f..dbbfc7a 100644 --- a/PlotLine/wwwroot/css/onboarding.css +++ b/PlotLine/wwwroot/css/onboarding.css @@ -1071,6 +1071,18 @@ padding: 1.15rem 1.25rem; } +.story-intelligence-dashboard-card--compact { + padding: .9rem 1rem; +} + +.story-intelligence-dashboard-card--compact h2 { + font-size: 1.15rem; +} + +.story-intelligence-dashboard-card--compact p:not(.eyebrow) { + font-size: .95rem; +} + .story-intelligence-dashboard-card h2 { margin: 0 0 .35rem; font-size: 1.25rem;