384 Commits

Author SHA1 Message Date
Nick Beckley
b998760e96 Implemented the Floor Plans help pass.
What changed:
Added 45 new Floor Plans help articles under [FloorPlans](C:/Source/PlotLine/PlotLine/Help/Articles/FloorPlans), including the seven full guides requested plus field-level help for the contextual icons.
Wired contextual help-icon entries into:Floor Plans list page
Floor Plan editor header
Structure / Occupancy mode controls
floor, block, background, transitions and occupancy UI
transition-specific areas for stairs, ladders, hidden doors and secret passages

Verification:
Confirmed every Floor Plans help-icon key used in the views has a matching article.
Confirmed all 45 new articles have required help metadata.
dotnet build PlotLine.slnx passes with 0 warnings and 0 errors.
No database changes, no Floor Plan behaviour changes, no transition changes, and no editor redesign.
2026-06-22 16:24:42 +01:00
Nick Beckley
92ab8f3202 Done. The Selected Block editor now uses grid-style coordinate dropdowns in [Edit.cshtml (line 423)](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml:423).
What changed:
X is now a dropdown showing A, B, C, AA, etc., while still saving 0, 1, 2, etc.
Y is now a dropdown showing 1, 2, 3, etc., while still saving 0, 1, 2, etc.
Options are limited to valid positions for the active floor and current block size.
Dragging, manual dropdown changes, block resizing, and grid resizing all keep the controls synced through the existing block write/clamp path.
Verification: dotnet build PlotLine.slnx passes with 0 warnings and 0 errors. No database, rendering model, transition logic, or AJAX architecture changes.
2026-06-22 14:43:09 +01:00
Nick Beckley
238b8223fd Merged 2026-06-22 13:45:12 +01:00
Nick Beckley
7874740f42 Done. I updated [Edit.cshtml (line 200)](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml:200) so the Occupancy Warnings panel is hidden by default and only appears when the selected scene/floor has actual warning rows.
Also removed the “All scene occupants are placed.” message entirely, and filtered “Some occupants are on other floors.” out of the large panel so it can remain only as the compact contextual note near the plan.
Verification: dotnet build PlotLine.slnx passes with 0 warnings and 0 errors. No occupancy model, floor rendering, transition, AJAX, or database changes.
2026-06-22 13:42:48 +01:00
Nick Beckley
f4a455f70b Implemented the Floor Plans Occupancy scene dropdown fix.
Changed:
[CoreModels.cs (line 308)](C:/Source/PlotLine/PlotLine/Models/CoreModels.cs:308) now maps book/chapter metadata onto Scene for ordering/labels.
[CoreServices.cs (line 7818)](C:/Source/PlotLine/PlotLine/Services/CoreServices.cs:7818) now orders occupancy scenes by book, chapter, scene, title and labels them like:
Book 1, Chapter 1.00, Scene 1.00: Arrival at the House
Added and applied [082_FloorPlanOccupancySceneOrdering.sql](C:/Source/PlotLine/PlotLine/Sql/082_FloorPlanOccupancySceneOrdering.sql) to update Scene_ListByFloorPlan.
Verified:
Database query for The Calendar House now returns Chapter 1 scenes in order, then Chapter 2 scenes, etc.
dotnet build PlotLine.slnx passes with 0 warnings and 0 errors.
No schema changes, no occupancy model changes, no floor plan rendering changes, and no transition changes. Previous/Next should follow the corrected order because it uses the same ordered scene list in the dropdown.
2026-06-22 13:24:46 +01:00
Nick Beckley
13c97db5a0 Implemented the urgent stability/performance pass.
What I fixed:
Removed the warning-calculation N+1 queries. Occupancy warnings now use one floor-plan participant query instead of per-scene character/asset lookups.
Added SceneFloorPlanParticipant_ListByFloorPlan to the existing migration script with SET ANSI_NULLS ON and SET QUOTED_IDENTIFIER ON.
Reapplied the migration locally.
Confirmed FloorPlanBlock_Save, FloorPlan_GetEditor, and the new participant proc have quoted identifiers enabled.
Reduced drag/resize freeze risk by throttling expensive geometry recalculation to animation frames instead of every pointer event.
Added a final geometry refresh on pointer-up/cancel before autosave.
Improved autosave failure visibility by showing the real error in the editor, not just leaving status stuck.
Made Occupancy mode view/staging only:Blocks no longer start drag/resize in Occupancy mode.
Resize handles are hidden.
Structural toolbox is hidden.
Plan canvas expands to use the freed width.
Structure mode restores normal editing.

Verification:
dotnet build PlotLine.slnx passes with 0 warnings and 0 errors.
Non-destructive SQL smoke test of FloorPlanBlock_Save against the Lounge block passed inside a transaction and rolled back.
Confirmed the Lounge block stayed unchanged after the rollback.
Reapplied 081_FloorPlanFloorDescriptionAndOccupancyWarnings.sql successfully.
Files changed:
[Repositories.cs](C:/Source/PlotLine/PlotLine/Data/Repositories.cs)
[CoreModels.cs](C:/Source/PlotLine/PlotLine/Models/CoreModels.cs)
[CoreServices.cs](C:/Source/PlotLine/PlotLine/Services/CoreServices.cs)
[081 SQL migration](C:/Source/PlotLine/PlotLine/Sql/081_FloorPlanFloorDescriptionAndOccupancyWarnings.sql)
[Edit.cshtml](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml)
[site.css](C:/Source/PlotLine/PlotLine/wwwroot/css/site.css)
[site.min.css](C:/Source/PlotLine/PlotLine/wwwroot/css/site.min.css)
Manual browser QA still needed for the exact drag/add/reload flow, but the code path and SQL save path are now stabilized.
2026-06-22 12:06:53 +01:00
Nick Beckley
7ad993aae3 Implemented the cleanup/refinement pass.
What changed:
Removed the standalone floor-plan details panel under the page title.
Added current-floor Description and editable Root Location into the Floors toolbox tab.
Added live computed Occupancy Warnings in Occupancy mode.
Preserved the existing AJAX workspace flow, including active floor/toolbox tab/mode/selected occupancy scene through refreshes.
Added floor description support via a new migration:
[081_FloorPlanFloorDescriptionAndOccupancyWarnings.sql](C:/Source/PlotLine/PlotLine/Sql/081_FloorPlanFloorDescriptionAndOccupancyWarnings.sql)
Database changes:
Added nullable FloorPlanFloors.Description.
Updated active stored procedures:FloorPlan_GetEditor
FloorPlanFloor_Get
FloorPlanFloor_ListByPlan
FloorPlanFloor_Save

Warnings are not persisted. No warning tables were added.
Files changed include:
[Edit.cshtml](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml)
[CoreServices.cs](C:/Source/PlotLine/PlotLine/Services/CoreServices.cs)
[Repositories.cs](C:/Source/PlotLine/PlotLine/Data/Repositories.cs)
[CoreModels.cs](C:/Source/PlotLine/PlotLine/Models/CoreModels.cs)
[CoreViewModels.cs](C:/Source/PlotLine/PlotLine/ViewModels/CoreViewModels.cs)
[site.css](C:/Source/PlotLine/PlotLine/wwwroot/css/site.css)
[site.min.css](C:/Source/PlotLine/PlotLine/wwwroot/css/site.min.css)
Verification:
Applied the new migration locally.
Confirmed FloorPlanFloors.Description exists.
Confirmed scene/occupancy source data exists for The Calendar House.
dotnet build PlotLine.slnx passes with 0 warnings and 0 errors.
Manual QA still needed in the browser: edit floor description/root location, switch Structure/Occupancy mode, step scenes, and confirm warnings/tokens update visually without jumps.
2026-06-22 11:56:01 +01:00
Nick Beckley
a943ac3da4 Implemented the targeted Scene Occupancy refinement pass. 2026-06-22 11:34:38 +01:00
Nick Beckley
cea82a922f Implemented Phase 1 Scene Occupancy.
What Changed
Added scene-owned occupancy data:Scenes.FloorPlanID
Scenes.InitialFloorPlanFloorID
new SceneFloorPlanOccupancy table

Added Occupancy section to the Scene Inspector with AJAX save/refresh.
Added Floor Plan editor Structure / Occupancy mode.
Occupancy mode shows linked scenes, previous/next scene controls, and character/asset tokens inside assigned locations.
Character tokens use image thumbnail, then initials fallback. Asset tokens do the same, smaller.
No Features, no new floor-plan architecture, no transition changes.
Files Changed
[CoreModels.cs](C:/Source/PlotLine/PlotLine/Models/CoreModels.cs)
[CoreViewModels.cs](C:/Source/PlotLine/PlotLine/ViewModels/CoreViewModels.cs)
[Repositories.cs](C:/Source/PlotLine/PlotLine/Data/Repositories.cs)
[CoreServices.cs](C:/Source/PlotLine/PlotLine/Services/CoreServices.cs)
[ScenesController.cs](C:/Source/PlotLine/PlotLine/Controllers/ScenesController.cs)
[Program.cs](C:/Source/PlotLine/PlotLine/Program.cs)
[Edit.cshtml](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml)
[_SceneInspector.cshtml](C:/Source/PlotLine/PlotLine/Views/Scenes/_SceneInspector.cshtml)
[_SceneOccupancy.cshtml](C:/Source/PlotLine/PlotLine/Views/Scenes/_SceneOccupancy.cshtml)
[site.js](C:/Source/PlotLine/PlotLine/wwwroot/js/site.js)
[site.css](C:/Source/PlotLine/PlotLine/wwwroot/css/site.css)
minified CSS/JS updated.
Database
Added new migration only: [080_SceneFloorPlanOccupancy.sql](C:/Source/PlotLine/PlotLine/Sql/080_SceneFloorPlanOccupancy.sql)
Applied locally.
Added constraints/FKs and filtered unique indexes for one character/asset occupancy row per scene.
Stored Procedures Added/Updated
Scene_Save
Scene_Get
Scene_FloorPlanLink_Save
Scene_ListByFloorPlan
FloorPlanFloor_ListByPlan
FloorPlanBlock_ListByPlan
SceneFloorPlanOccupancy_ListByScene
SceneFloorPlanOccupancy_ListByFloorPlan
SceneFloorPlanOccupancy_Save
Test Data
Permanent Calendar House seed data added:
Book: The Calendar House
Chapters 1-3
14 scenes
Characters: Ellie, Grant, Stephen, Housekeeper, Gardener
Assets: Brass Key, Journal, Candle, Map, Letter
45 occupancy assignments
Verification
dotnet build PlotLine.slnx passes with 0 warnings/errors.
Migration applied locally.
Local app boots and returns HTTP 200.
DB checks confirm 14 linked scenes and 45 occupancy rows.
Manual browser click-through of the authenticated UI still needs a human pass for the AJAX controls and visual token placement.
2026-06-22 10:45:30 +01:00
Nick Beckley
34a8d94cb4 Implemented the Visual Identity infrastructure pass.
Changed
Added image fields for Characters and Story Assets in models, view models, repositories, services, and save flows.
Added reusable avatar/initials rendering via [AvatarHelper.cs](C:/Source/PlotLine/PlotLine/Services/AvatarHelper.cs) and [_Avatar.cshtml](C:/Source/PlotLine/PlotLine/Views/Shared/_Avatar.cshtml).
Added upload/remove processing through existing upload storage in [VisualIdentityImageService.cs](C:/Source/PlotLine/PlotLine/Services/VisualIdentityImageService.cs).
Updated Character and Story Asset list/detail/edit views with thumbnails, initials fallback, upload, replace, and remove controls.
Added styling in [site.css](C:/Source/PlotLine/PlotLine/wwwroot/css/site.css) and refreshed site.min.css.
Database
Added new migration [079_VisualIdentityCharacterAssetImages.sql](C:/Source/PlotLine/PlotLine/Sql/079_VisualIdentityCharacterAssetImages.sql).
Adds nullable ImagePath and ThumbnailPath to Characters and StoryAssets.
Applied locally and confirmed the columns exist.
Stored Procedures
Updated active procedure definitions only:
Character_ListByProject
Character_Get
Character_Save
Character_UpdateImage
StoryAsset_ListByProject
StoryAsset_Get
StoryAsset_Save
StoryAsset_UpdateImage
2026-06-22 10:10:39 +01:00
Nick Beckley
b91bdeb138 Implemented the transition refinement pass.
Changed:
[Edit.cshtml (line 29)](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml:29): added Sliding Door, French Door, and Ladder marker mappings/SVGs.
[Edit.cshtml (line 1729)](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml:1729): Ladder To Location filtering now lists placed locations on floors above, sorted by level/floor/name with clean labels like First Floor > East Hallway 1st.
[Edit.cshtml (line 2072)](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml:2072): Ladder renders inside the From Location using the existing position system.
[CoreServices.cs (line 7966)](C:/Source/PlotLine/PlotLine/Services/CoreServices.cs:7966): server validation now treats Ladder as a vertical upward transition, without stairs reciprocity.
[CoreModels.cs (line 1243)](C:/Source/PlotLine/PlotLine/Models/CoreModels.cs:1243): normalisation accepts Ladders.
[site.css (line 4902)](C:/Source/PlotLine/PlotLine/wwwroot/css/site.css:4902) and minified CSS: added light/dark styling for the new marker types.
No database changes. No new tables. No Features, architecture, AJAX, or secret/hidden room logic changes.
2026-06-22 09:26:19 +01:00
Nick Beckley
2cf3c7da3a Implemented the Secret Passages + Hidden Room detection pass.
Changed:
[Edit.cshtml (line 36)](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml:36)Secret Passage and Hidden Passage now render as dashed route overlays instead of wall markers.
Hidden Door remains a wall/shared-edge marker and follows existing adjacency rules.
Hidden locations are detected from existing transition data: visible entrances count, windows/hidden doors/secret passages/hidden passages/blocked doors do not.
Hidden room tooltip now includes Hidden location: no visible entrance.

[site.css (line 4793)](C:/Source/PlotLine/PlotLine/wwwroot/css/site.css:4793)Added subtle hidden-location hatch styling.
Added dashed secret-route styling with dark-theme support.

[site.min.css](C:/Source/PlotLine/PlotLine/wwwroot/css/site.min.css)Synced minified CSS.

No database changes. No stored procedure changes. No Features concept added.
2026-06-21 22:14:25 +01:00
Nick Beckley
1786d8c7b1 Implemented the focused Floor Plans refinement pass.
Changed:
[Edit.cshtml (line 172)](C:/Source/PlotLine/PlotLine/Views/FloorPlans/Edit.cshtml:172)Added optional grid coordinate toggle with localStorage persistence.
Added adjacent-floor ghost/reference overlay selector.
Added overlap-aware Stairs Up/Down target filtering.
Added explicit fallback button: “Show all locations on floor above/below”.
Kept door/window same-floor adjacency filtering and Hidden/Open/Secret Passage unrestricted behaviour.

[site.css (line 4534)](C:/Source/PlotLine/PlotLine/wwwroot/css/site.css:4534)Added subtle coordinate labels, ghost floor blocks, warning styling, and dark-theme support.

[site.min.css](C:/Source/PlotLine/PlotLine/wwwroot/css/site.min.css)Synced minified CSS.

Database changes: none.
Stored procedures modified: none.
No Features, no transition redesign, no schema changes.
2026-06-21 21:51:47 +01:00
Nick Beckley
89c381e6bc Optimise floor plan editor and add reciprocal stairs 2026-06-21 21:32:05 +01:00
Nick Beckley
f57913014c Implemented the next Floor Plans enhancement pass. 2026-06-21 21:18:14 +01:00
Nick Beckley
9fc4374df3 Implemented the floor-level ordering pass using the existing integer SortOrder as the user-facing Level. 2026-06-21 20:49:17 +01:00
Nick Beckley
11b29b2504 Implemented the tiny marker refinement. 2026-06-21 20:39:06 +01:00
Nick Beckley
f4fe8e7b79 Implemented the transition marker visual refinement. 2026-06-21 19:41:46 +01:00
Nick Beckley
7bcc6d0598 Implemented the narrower same-location wall merge. 2026-06-21 19:17:30 +01:00
Nick Beckley
0ea8b2a57e Implemented the Floor Plans visual/UI refinement pass. 2026-06-21 19:06:25 +01:00
Nick Beckley
077714d80e Implemented the Floor Plans AJAX consolidation pass. 2026-06-21 18:41:09 +01:00
Nick Beckley
0944874510 Fixed multiple floor plan transitions between same source and target. 2026-06-21 18:22:03 +01:00
Nick Beckley
ee504d878f Save 2026-06-21 12:01:48 +01:00
Nick Beckley
91c5407ff9 Implemented the focused refinement gaps I found. 2026-06-21 10:10:29 +01:00
Nick Beckley
3a71e9c135 Implemented the Floor Plans refinement pass. 2026-06-20 22:04:48 +01:00
Nick Beckley
18858f3fba Implemented the Floor Plans multi-block room and transition phase. 2026-06-20 21:41:40 +01:00
Nick Beckley
e455018d73 Implemented the Floor Plans background-image phase. 2026-06-20 21:06:53 +01:00
Nick Beckley
b2ac7b5eeb Implemented the Floor Plans UX/data-model refinement pass. 2026-06-20 20:32:59 +01:00
Nick Beckley
030a4a10da Implemented the Floor Plans UX/data-model refinement pass. 2026-06-20 20:13:23 +01:00
Nick Beckley
bd8067b472 Implemented both Floor Plans fixes. 2026-06-20 19:36:00 +01:00
Nick Beckley
601afa8806 Implemented the first-pass Location Floor Plans foundation. 2026-06-20 18:44:58 +01:00
Nick Beckley
e5ed45897a Implemented the Timeline C3 refinement. 2026-06-20 16:36:18 +01:00
Nick Beckley
36c214fab8 Phase C3: Character & Asset Lane Storytelling Improvements 2026-06-20 16:18:29 +01:00
Nick Beckley
d0939b914a Phase C2 marker clarity 2026-06-20 16:00:37 +01:00
Nick Beckley
4f0c893914 Implemented the warning icon visibility fix. 2026-06-19 22:41:20 +01:00
Nick Beckley
ae064d04b6 Revert "Implemented the Phase C1C polish pass."
This reverts commit ca63a994dcbd941eff84d2a2860d53810f036123.
2026-06-19 22:07:34 +01:00
Nick Beckley
ca63a994dc Implemented the Phase C1C polish pass. 2026-06-19 21:43:34 +01:00
Nick Beckley
377d0540ca Phase C1B: Fix Incomplete Timeline Plot Thread Improvements 2026-06-19 21:29:36 +01:00
Nick Beckley
5ece8d9451 Phase C1: Plot Thread Readability & Warning Clarity 2026-06-19 21:22:55 +01:00
Nick Beckley
783fb916f8 Implemented the PD-009 refinement. 2026-06-19 20:56:46 +01:00
Nick Beckley
c577235949 Implemented PD-009 Timeline Navigation Discoverability. 2026-06-19 20:53:07 +01:00
Nick Beckley
0410afb124 Implemented Phase B guidance/discoverability work. 2026-06-19 20:06:00 +01:00
Nick Beckley
3b60634667 Implemented Phase B guidance/discoverability work. 2026-06-19 14:22:02 +01:00
Nick Beckley
7363d0c128 Scene inspector character attribute fix 2026-06-19 14:08:46 +01:00
Nick Beckley
daeba6ee8a Fixed home page image references in CSS 2026-06-19 10:25:16 +01:00
Nick Beckley
fd9dc683ff Fixed the Pricing page Trial/Draft Desk card overflow. 2026-06-18 21:28:46 +01:00
Nick Beckley
59c5630950 Review all Save, Add, Update and Delete actions used by the Scene Inspector. 2026-06-18 21:16:49 +01:00
Nick Beckley
d4c886ce2f Review the PlotDirector subscription, pricing, signup and account-management areas and implement a complete trial-visibility pass. 2026-06-18 20:54:18 +01:00
Nick Beckley
61d16be6d7 PD-013D: Page-Specific Dark Theme Fixes. 2026-06-18 20:27:11 +01:00
Nick Beckley
4acd72229f PD-013C: Dark Theme Contrast Fixes. 2026-06-18 20:21:11 +01:00