feat: M17 Implement 6 AJAX/Migration Controls (Timer, ScriptManager, UpdatePanel, UpdateProgress, ScriptManagerProxy, Substitution)#402
Merged
csharpfritz merged 13 commits intoFritzAndFriends:devfrom Feb 27, 2026
Conversation
Session: 2026-02-27-m17-kickoff Requested by: Jeffrey T. Fritz Changes: - Logged M17 kickoff session (M16 closed, 6 new issues FritzAndFriends#396-401) - Merged 2 directive inbox files into decisions.md - Propagated branching workflow and PR-closure directives to all agent histories - No deduplication needed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-02-27-m17-kickoff Requested by: Jeffrey T. Fritz Changes: - Summarized beast history.md (17KB -> ~4KB) - Summarized cyclops history.md (31KB -> ~4KB) - Summarized forge history.md (17KB -> ~3KB) - Summarized jubilee history.md (23KB -> ~3KB) - Summarized rogue history.md (21KB -> ~4KB) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-02-27-m17-kickoff Requested by: Jeffrey T. Fritz Changes: - Merged 3 new inbox files (beast-m17-docs, cyclops-m17-controls, jubilee-m17-samples) - Propagated AJAX control decisions to all affected agents - Updated decisions.md with 7 new decision entries Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tePanel, UpdateProgress, ScriptManagerProxy, Substitution) Closes FritzAndFriends#396, Closes FritzAndFriends#397, Closes FritzAndFriends#398, Closes FritzAndFriends#399, Closes FritzAndFriends#400, Closes FritzAndFriends#401 - Timer: interval-based tick events via System.Threading.Timer - ScriptManager/ScriptManagerProxy: migration compatibility stubs (render nothing) - UpdatePanel: div/span wrapper with Block/Inline render modes - UpdateProgress: loading indicator with DynamicLayout and DisplayAfter - Substitution: delegate-based content renderer Also includes: - 47 new bUnit tests (1360 total, 0 failures) - 5 sample pages in AfterBlazorServerSide - 6 documentation pages in docs/EditorControls/ - New enums: ScriptMode, UpdatePanelUpdateMode, UpdatePanelRenderMode - ComponentCatalog entries for AJAX and Migration Helpers categories Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- 5 smoke tests in ControlSampleTests.cs (new AjaxControl theory group) - 1 interactive test for Timer counter increment - Routes: Timer, UpdatePanel, UpdateProgress, ScriptManager, Substitution Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-02-27-m17-pr-created Requested by: Jeffrey T. Fritz Changes: - Logged M17 PR creation session - Merged Forge review decision from inbox - Merged Rogue test decision from inbox - Propagated cross-agent updates to Cyclops and Colossus Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comment on lines
+49
to
+57
| var cut = Render<Timer>(p => p | ||
| .Add(t => t.Interval, 50) | ||
| .Add(t => t.OnTick, () => | ||
| { | ||
| tickCount++; | ||
| if (tickCount >= 1) | ||
| tcs.TrySetResult(true); | ||
| }) | ||
| ); |
Check warning
Code scanning / CodeQL
Useless assignment to local variable Warning test
Comment on lines
+70
to
+74
| var cut = Render<Timer>(p => p | ||
| .Add(t => t.Interval, 50) | ||
| .Add(t => t.Enabled, false) | ||
| .Add(t => t.OnTick, () => { tickCount++; }) | ||
| ); |
Check warning
Code scanning / CodeQL
Useless assignment to local variable Warning test
Forge audited all 6 new controls against .NET Framework 4.8.1 API: - Timer: 100% property/event coverage - ScriptManager: 41% (acceptable for no-op stub) - ScriptManagerProxy: 50% (acceptable for no-op stub) - UpdatePanel: 80% property coverage - UpdateProgress: 100% with 2 minor HTML gaps - Substitution: 100% with Blazor adaptation 5 follow-up items documented (none blocking). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- ScriptManager: EnablePartialRendering now defaults to true (matches WF) - ScriptManager: Added Scripts collection (List<ScriptReference>) - UpdateProgress: CssClass now renders on output div element - UpdateProgress: Non-dynamic mode renders display:block;visibility:hidden - ScriptReference: Added ScriptMode, NotifyScriptLoaded, ResourceUICultures Tests: 9 new bUnit tests covering all 5 fixes (1367 total, 0 failures) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
All issues now show in coverage summary. Updated property counts and HTML match status to reflect fixes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The Build and Test workflow was failing because dotnet test writes TRX files to TestResults/ in the CWD (repo root) by default, but the upload-artifact and dorny/test-reporter steps expected them at src/BlazorWebFormsComponents.Test/TestResults/. Adding --results-directory ensures the TRX file lands where both steps can find it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-02-27-m17-audit-fixes Requested by: Jeffrey T. Fritz Changes: - Logged session to .ai-team/log/2026-02-27-m17-audit-fixes.md - Merged 3 decisions from inbox into decisions.md (Forge audit, Cyclops fixes, Rogue tests) - Consolidated overlapping M17 audit decisions into single block - Removed duplicate deployment pipeline decision - Propagated updates to forge, cyclops, rogue, beast, colossus history files - Summarized colossus history (>12KB), archived old entries to history-archive.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… build The AfterBlazorClientSide project shares pages from AfterBlazorServerSide. The Substitution sample uses HttpContext which requires an explicit using directive for Microsoft.AspNetCore.Http to compile in the WebAssembly project. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
M17: Implement 6 AJAX/Migration Controls
Closes #396, Closes #397, Closes #398, Closes #399, Closes #400, Closes #401
New Controls
Also Included
Review Status
Forge (Lead/Web Forms Reviewer) approved with minor follow-up notes:
These are non-blocking and will be addressed in a follow-up PR.