Commit 86057ef
Milestone 9: Migration Fidelity and Hardening (#349)
* Initial plan
* Add Calendar component implementation with basic structure
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
* Add unit tests for Calendar component - all 19 tests passing
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
* Add Calendar sample page and documentation
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
* Add Calendar sample page and documentation
* Fix code review issues: safe substring and synchronous event handling
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
* fix: refactor Calendar to use CalendarSelectionMode enum (#333)
- Create CalendarSelectionMode enum (None, Day, DayWeek, DayWeekMonth)
- Refactor Calendar.SelectionMode from string to CalendarSelectionMode enum
- Remove .GetAwaiter().GetResult() blocking call in CreateDayRenderArgs
- Add Caption, CaptionAlign, UseAccessibleHeader properties
- Update tests and samples to use enum values
* samples: add demo pages for Calendar, FileUpload, ImageMap
- Calendar: date selection, selection modes, styling, day/title formats, events
- FileUpload: basic upload, file type filtering, multiple files, disabled, styled
- ImageMap: navigate/postback/mixed hot spot modes, rectangle/circle/polygon shapes
- Updated NavMenu and ComponentList with links to all three new components
* docs: add documentation for Calendar, FileUpload, ImageMap, PageService
* fix: restore .ai-team agent history and decisions lost in PR #338 merge
The FileUpload PR (#338) inadvertently reverted Sprint 1 gate review
entries from agent histories (beast, cyclops, forge, jubilee, rogue)
and downgraded the FileUpload InputFile decision in decisions.md.
Restored from commit f85aa42 (docs(ai-team): Sprint 1 gate review results).
* feat: add Copilot custom agent definitions in .github/agents/
Creates .agent.md files for all 6 team agents (Beast, Cyclops, Forge,
Jubilee, Rogue, Scribe) so they appear in GitHub Copilot's agent picker.
Content sourced from existing .ai-team/agents/*/charter.md files.
* fix: replace individual agent files with Squad coordinator agent
Squad is the single Copilot agent that delegates to the specialized
agents defined in .ai-team/agents/. Individual agent files were
incorrectly created the correct pattern is one coordinator agent
(squad.agent.md) that routes work to Forge, Cyclops, Beast, Jubilee,
Rogue, and Scribe based on task type.
* docs(ai-team): log Sprint 2 completion
Session: 2026-02-10-sprint2-complete
Requested by: Jeffrey T. Fritz
Changes:
- Logged Sprint 2 session (4 components shipped with docs, samples, tests)
- Merged Sprint 2 design review decision from inbox
- Removed duplicate FileUpload InputFile decision from inbox (already consolidated)
- Appended Sprint 2 completion decision to decisions.md
- Propagated cross-agent updates to all 5 agent histories
* Updated the squad
* docs(ai-team): Sprint 3 planning session
Session: 2026-02-11-sprint3-planning
Requested by: Jeffrey T. Fritz
Changes:
- Logged session to .ai-team/log/2026-02-11-sprint3-planning.md
- Merged 3 decisions from inbox into decisions.md
- Updated status.md to reflect 48/53 components complete
- Sprint 3 scope: DetailsView + PasswordRecovery
- Propagated cross-agent updates to all agent history files
* docs(ai-team): Sprint 3 execution complete
Session: 2026-02-12-sprint3-execution
Requested by: Jeffrey T. Fritz
Changes:
- Logged Sprint 3 execution session
- Merged 7 decisions from inbox into decisions.md
- Sprint 3 gate review: DetailsView + PasswordRecovery APPROVED
- Propagated cross-agent updates to Beast, Colossus, Cyclops, Rogue, Jubilee
- status.md updated to 50/53 (94%)
* docs(ai-team): Milestone 4 planning - Chart component
Session: 2026-02-12-milestone4-planning
Requested by: Jeffrey T. Fritz
Changes:
- Logged session to .ai-team/log/2026-02-12-milestone4-planning.md
- Merged decisions from inbox (Chart.js evaluation, milestone plan, milestones directive)
- Propagated milestone 4 updates to 5 agent history files
* docs(ai-team): Summarize Forge history (13.2KB -> 4.3KB)
Session: 2026-02-12-milestone4-planning
Requested by: Scribe (automatic)
Changes:
- Summarized Forge history.md (exceeded ~12KB threshold)
- Preserved all team updates and key patterns
* feat: Milestone 6 — Feature Gap Closure (54 work items, ~345 gaps closed)
Closes the highest-impact feature gaps from the 53-control audit.
P0 — Base class fixes (~180 gaps): AccessKey, ToolTip on all controls;
DataBoundComponent inherits BaseStyledComponent; ValidatorDisplay + SetFocusOnError;
Image/Label base class upgrades.
P1 — Control improvements (~120 gaps): GridView paging/sorting/row editing;
Calendar style sub-components + enums; FormView header/footer/empty data;
HyperLink NavigateUrl rename; ValidationSummary HeaderText/ShowSummary/ValidationGroup.
P2 — Nice-to-have (~45 gaps): DataTextFormatString + AppendDataBoundItems on
BaseListControl; CausesValidation on CheckBox/RadioButton/TextBox; Menu Orientation;
Label AssociatedControlID; Login controls base class upgrade.
168 files changed, +5,712 / -1,775 lines
1,065 tests passing, 0 failures
* fix: Menu JS interop crash, Calendar attribute rendering, Menu auto-ID generation
- Add null safety and try/catch in Menu.js to prevent circuit crash
- Fix Calendar.razor attribute rendering issue
- Auto-generate Menu ID when not explicitly provided
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: update Cyclops history and decision inbox for M8 bug fixes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: formally defer Substitution/Xml, polish documentation
- Mark Substitution and Xml as Deferred in status.md
- Create DeferredControls.md with migration guidance
- Fix mkdocs.yml nav issues
- Update README component stats
- Remove Chart hedging language
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: add shared PagerSettings sub-component for GridView/FormView/DetailsView
- Add PagerButtons and PagerPosition enums
- Add PagerSettings class with Web Forms-compatible properties
- Add IPagerSettingsContainer interface
- Add UiPagerSettings base component
- Wire PagerSettings into GridView, FormView, and DetailsView
- Follow existing style sub-component CascadingParameter pattern
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs(ai-team): M8 session log and decision merge
Session: 2026-02-24-m8-release-readiness
Requested by: Jeffrey T. Fritz
Changes:
- Logged M8 session to .ai-team/log/2026-02-24-m8-release-readiness.md
- Merged 18 decisions from inbox (Menu auto-ID, Substitution/Xml deferral, M8 scope, PagerSettings, M7 plan, integration tests, TreeView, GridView, DataGrid, ListView, FormView, DetailsView, validators, Menu improvements, Playwright patterns, rendermode fix)
- Propagated team updates to all 6 agent histories
- Deduplicated decisions.md (0 exact heading duplicates found)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chore: bump version to 0.14 for Milestone 8 release
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs(ai-team): log v0.14 release completion
Session: 2026-02-25-v014-release
Requested by: Jeffrey T. Fritz
Changes:
- Logged v0.14 release final session (docs fix, CI green, release created)
- Decision inbox checked (empty, no merges needed)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: ToolTip base class, ValidationSummary comma fix, SkinID type fix
- Move ToolTip parameter to BaseStyledComponent (fixes 28+ controls)
- Fix ValidationSummary comma-split data corruption bug
- Change SkinID from bool to string (matches Web Forms)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: update Cyclops history and decisions for M9 code fixes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: update documentation for ToolTip universality
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: add ToolTip rendering to all styled component templates
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: ToolTip base class tests + ValidationSummary comma-split tests
- Add ToolTip rendering tests for 9 controls that gained ToolTip from base class
- Verify Button/Image/HyperLink ToolTip regression
- Add ValidationSummary tests for commas in error messages
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs(ai-team): milestone 9 session log and decisions merge
Session: 2026-02-25-milestone9-wave1
Requested by: Jeffrey T. Fritz
Changes:
- Logged M9 Wave 1+2 session
- Merged 5 decisions from inbox
- Consolidated ToolTip and ValidationSummary decisions
- Removed duplicate rendermode decision
- Updated 6 agent histories with cross-agent propagation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: TreeView caret not rotating on expand/collapse (#361)
The NodeImage property's fallback paths (when ShowLines=false) did not
check ShowExpandCollapse, relying solely on ImageSet.Collapse being
non-empty. This made the logic fragile and returned Default_NoExpand.gif
for any ImageSet where Collapse was empty, even when ShowExpandCollapse
was true.
Restructured NodeImage to:
- Explicitly check ShowExpandCollapse in non-ShowLines code paths
- Always return distinct expand/collapse images when ShowExpandCollapse=true
- Fall back to Default_Collapse.gif / Default_Expand.gif when an ImageSet
does not provide its own collapse/expand images
- Return Default_NoExpand.gif only when ShowExpandCollapse is false
Extracted ExpandCollapseImage() helper to DRY the ImageSet-to-filename
resolution with guaranteed defaults.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs(ai-team): M10 setup session log and decisions merge
Session: 2026-02-25-m10-setup-and-treeview-fix
Requested by: Jeffrey T. Fritz
Changes:
- Logged session to .ai-team/log/2026-02-25-m10-setup-and-treeview-fix.md
- Merged 3 decision(s) from inbox into decisions.md
- Propagated updates to agent history files
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs(ai-team): summarize oversized agent history files
Summarized older entries in 4 agent history files exceeding ~12KB:
- cyclops: 30.6KB -> 12KB (M6/M7 implementation details consolidated)
- beast: 14.5KB -> 11.3KB (doc conventions and audit findings summarized)
- forge: 13.9KB -> 12.4KB (M7 planning details condensed)
- rogue: 12.6KB -> 11.7KB (duplicate team updates removed)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: sample site nav caret rotation and link contrast (#362)
- Add missing AfterBlazorServerSide.styles.css link to App.razor
(NavMenu.razor.css scoped styles were completely ignored)
- Scope a.component-link blue color to .main-content only
- Remove unused data-bs-toggle attributes (Bootstrap JS not loaded)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: Chart.js dataset z-order for mixed charts (#363)
Line/area series now render on top of bar/column series by default,
matching ASP.NET Web Forms Chart control behavior. Added Order parameter
to ChartSeries for explicit control.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent 17e5378 commit 86057ef
119 files changed
Lines changed: 920 additions & 169 deletions
File tree
- .ai-team
- agents
- beast
- colossus
- cyclops
- forge
- jubilee
- rogue
- docs
- DataControls
- EditorControls
- Migration
- planning-docs
- samples/AfterBlazorServerSide
- Components
- Layout
- wwwroot/css
- src
- BlazorWebFormsComponents.Test
- BaseWebFormsComponent
- Validations/ValidationSummary
- BlazorWebFormsComponents
- LoginControls
- Validations
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
21 | 19 | | |
22 | 20 | | |
23 | 21 | | |
| |||
38 | 36 | | |
39 | 37 | | |
40 | 38 | | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
48 | 42 | | |
49 | 43 | | |
50 | 44 | | |
| |||
62 | 56 | | |
63 | 57 | | |
64 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
0 commit comments