You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Aligned with existing migration guide style (SkinsAndThemes.md pattern)
41
+
42
+
**Pattern consistency:** Matches Beast's established separation: SkinsAndThemes.md (strategy) vs SkinsAndThemesGuide.md (practical). MasterPages.md is the practical implementation guide.
43
+
28
44
**Issue #359 doc updates (5 pages):** ChangePassword and PagerSettings verified complete. FormView got CRUD events + NOT Supported section. DetailsView got full style sub-component elements. DataGrid paging section enhanced. Pattern: DataGrid is the only pageable control without PagerSettings.
29
45
30
46
**M10 Skins & Themes Guide:** Created `docs/Migration/SkinsAndThemes.md` — practical guide coexisting with `ThemesAndSkins.md` (strategy). Convention: separate "Guide" vs "Strategy" docs with clear nav labels.
Copy file name to clipboardExpand all lines: .squad/agents/bishop/history.md
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,6 +29,25 @@
29
29
30
30
**Key Layer 2 patterns:**`@inherits WebFormsPageBase` conflicts with `: ComponentBase` — must remove explicit base. Layout files need `: LayoutComponentBase`. `AddHttpContextAccessor()` before `AddBlazorWebFormsComponents()`. Stub model pattern for unavailable types (UserLoginInfo, OrderShipInfo). Stub page cleanup ~60% of L2 effort.
31
31
32
+
### 2026-04-27: CLI & PowerShell Migration Path Updates for MasterPage
33
+
34
+
**Task:** Update bwfc-migrate.ps1 and associated CLI components to preserve MasterPage/Content/ContentPlaceHolder component trees during Layer 1 transformation.
35
+
36
+
**Changes delivered:**
37
+
- Enhanced bwfc-migrate.ps1 with MasterPage/Content/ContentPlaceHolder aware transforms
38
+
- Added Test-MasterPagePreservation validation to verify MasterPage structure integrity post-transform
39
+
- CLI now recognizes MasterPage nesting patterns and preserves them intact
40
+
- PowerShell migration path includes ContentPlaceHolder ID preservation
- Changed generic smoke test to `WaitUntilState.NetworkIdle` (from default DOMContentLoaded)
50
+
- Ensures asynchronous cascading parameter resolution completes before assertions
51
+
- Eliminates race condition where ContentPlaceHolder context wasn't available yet
52
+
- Same pattern used successfully for DetailsView (PR #377)
53
+
- Impact: Test now waits for all network activity (CSS/JS) to complete before assertions
54
+
55
+
**Test results:**
56
+
- ✅ All MasterPage integration tests passing
57
+
- ✅ No console errors specific to component tree
58
+
- ✅ ContentPlaceHolder content visible and interactive
59
+
- ✅ Timing fix eliminates flaky test failures
60
+
31
61
Fixed 5 stale Customer→Product assertions in InteractiveComponentTests.cs after DetailsView sample pages migrated to Product model. All 7 DetailsView integration tests passing.
32
62
33
63
## Summary: M17 AJAX Control Integration Tests (2026-02-27)
Copy file name to clipboardExpand all lines: .squad/agents/cyclops/history.md
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -141,7 +141,26 @@ New EventArgs: `RepeaterCommandEventArgs`, `RepeaterItemEventArgs`, `DataListCom
141
141
- EF Core wildcard version `10.0.0-*` avoids NU1603 warnings for preview packages
142
142
143
143
Team update (2026-03-06): bwfc-migrate.ps1 uses -Path and -Output params (not -SourcePath/-DestinationPath). ProjectName is auto-detected decided by Bishop
**Task:** Implement MasterPageContext cascading pattern for MasterPage/Content/ContentPlaceHolder component bridge.
149
+
150
+
**Changes delivered:**
151
+
-**MasterPage.razor/MasterPage.razor.cs:** Created MasterPageContext class with MasterPage reference + RegisterContentPlaceHolder/GetContentPlaceHolder methods. Wraps component tree in `<CascadingValue Value="this.Context">`. Provides parent discovery mechanism.
152
+
-**Content.razor/Content.razor.cs:** Injects MasterPageContext via [CascadingParameter], validates parent is MasterPage, registers self with parent context.
153
+
-**ContentPlaceHolder.razor/ContentPlaceHolder.razor.cs:** Injects MasterPageContext via [CascadingParameter], locates owning Content via context lookup, renders placeholder at correct hierarchy level.
154
+
155
+
**Key properties:**
156
+
- All three components discoverable via CascadingValue chain (no direct parent references)
**Testing:** Unit tests cover context discovery, registration, parent resolution, nested hierarchies. All passing. Build: 0 errors, 0 warnings.
162
+
163
+
**Pattern:** Mirrors Blazor's AuthenticationState + AuthorizeView design (2026-03-05) for consistency. CascadingValue precedent established in M10 theming work.
145
164
146
165
Team update (2026-03-06): Forge produced 5 library improvement recommendations (L1-L5) assigned to Cyclops L1: Response.Redirect shim on WebFormsPageBase (HIGH), L2: Request.QueryString shim (MEDIUM), L3: DataBind() no-op (LOW-MED), L4: form-submit.js helper (MEDIUM), L5: WebFormsSessionService (MEDIUM). Recommended Cycle 2: L1 decided by Forge
147
166
Team update (2026-03-06): WebFormsPageBase is the canonical base class for all migrated pages (not ComponentBase). All agents must use WebFormsPageBase decided by Jeffrey T. Fritz
- Playwright integration tests passing (timing fixed for NetworkIdle wait)
294
+
- Build: 0 errors, 0 warnings
295
+
296
+
**Batch status:** ✅ APPROVED
297
+
- Cyclops implementation complete + unit tested
298
+
- Bishop CLI/PowerShell updates synced to migration-toolkit
299
+
- Beast documentation updated in docs/Migration/MasterPages.md
300
+
- Jubilee sample page + catalog entry complete
301
+
- Rogue transform coverage + validation passing
302
+
- Colossus Playwright tests passing with timing fix
303
+
304
+
**Decision:** No new team decision inbox items. All work aligned with existing architectural consensus (CascadingValue precedent from M10 AuthenticationState, MasterPageContext pattern aligns with Blazor conventions).
- Shows ContentPlaceHolder usage with MasterPageContext
40
+
- Includes @ref usage for context validation
41
+
- Sample data aligns with SharedSampleObjects conventions
42
+
43
+
**Component catalog updates:**
44
+
- Added MasterPage entry to ComponentList.razor
45
+
- Added MasterPage sidebar entry to NavMenu.razor
46
+
- Alphabetical ordering maintained throughout nav sections
47
+
-@page route: /ControlSamples/MasterPage matches standard conventions
48
+
- Updated docs/ComponentList (if present) with MasterPage entry
49
+
50
+
**Discoverability verified:**
51
+
- Sample page link appears in sidebar navigation
52
+
- ComponentList.razor includes MasterPage with proper categorization
53
+
- Navigation integrates with existing structure (no breaking changes)
54
+
32
55
**Key patterns:** ComponentCatalog.cs entries: (Name, Category, Route, Description, SubPages?, Keywords?). SubPages appended to base Route for nav. Components without Index.razor use specific sub-page route. Entries grouped by category, alphabetical within. SharedSampleObjects is single source for data parity. data-audit-control markers must be preserved on all audited sections.
33
56
34
57
Team update (2026-02-27): Branching workflow directive feature PRs from personal fork to upstream dev, only devmain on upstream decided by Jeffrey T. Fritz
### 2026-04-27: MasterPageContext Unit & Transform Test Coverage
33
+
34
+
**Task:** Add unit test coverage for MasterPageContext discovery and Layer 1 transform validation for MasterPage/Content/ContentPlaceHolder preservation.
35
+
36
+
**Unit tests added:**
37
+
-`src/BlazorWebFormsComponents.Test/MasterPage/Context.razor` — MasterPageContext discovery via cascading parameter
38
+
-`src/BlazorWebFormsComponents.Test/Content/Registration.razor` — Content component registration with parent
39
+
-`src/BlazorWebFormsComponents.Test/ContentPlaceHolder/Lookup.razor` — ContentPlaceHolder parent resolution via context lookup
0 commit comments