v0.15 Release Promote dev to main#371
Conversation
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
Co-authored-by: csharpfritz <78577+csharpfritz@users.noreply.github.com>
…ends#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
- 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
…ents into dev # Conflicts: # docs/EditorControls/FileUpload.md
…Friends#338 merge The FileUpload PR (FritzAndFriends#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).
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.
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.
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
…ents into dev # Conflicts: # docs/UtilityFeatures/PageService.md # samples/AfterBlazorServerSide/Components/Pages/ControlSamples/Calendar/Index.razor
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
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%)
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
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
…sed) 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
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…D 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>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- 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>
…tailsView - 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>
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>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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>
…ds#347) * 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 (FritzAndFriends#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 FritzAndFriends#338 merge The FileUpload PR (FritzAndFriends#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> * fix: update stale version comment in Program.cs 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>
* 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 (FritzAndFriends#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 FritzAndFriends#338 merge The FileUpload PR (FritzAndFriends#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> * fix: resolve v0.14 deployment pipeline issues - deploy-server-side.yml: compute version via nbgv before Docker build, pass as build-arg, tag image with version, add Azure App Service webhook trigger step (gated on AZURE_WEBAPP_WEBHOOK_URL secret) - nuget.yml: add nuget.org push step gated on NUGET_API_KEY secret, preserving existing GitHub Packages push - Dockerfile: accept VERSION build-arg, use it in dotnet build/publish so assembly version reflects git-derived version even though .git is excluded by .dockerignore Required secrets (to be configured by repo admin): AZURE_WEBAPP_WEBHOOK_URL - Azure App Service Deployment Center webhook NUGET_API_KEY - nuget.org API key Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: update Forge history and decision inbox for deployment pipeline fixes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs(ai-team): log deployment pipeline fix session Session: 2026-02-25-deployment-pipeline-fix Requested by: Jeffrey T. Fritz Changes: - Logged session to .ai-team/log/2026-02-25-deployment-pipeline-fix.md - Merged decision(s) from inbox into decisions.md - Consolidated duplicate Substitution/Xml deferral decisions - Propagated deployment pipeline decision to Forge, Cyclops, Colossus histories 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>
* 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 (FritzAndFriends#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 FritzAndFriends#338 merge The FileUpload PR (FritzAndFriends#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 (FritzAndFriends#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 (FritzAndFriends#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 (FritzAndFriends#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>
…ds#370) * 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 (FritzAndFriends#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 FritzAndFriends#338 merge The FileUpload PR (FritzAndFriends#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> * docs: add Skins/Themes PoC plan, compatibility report, audit report, and M12 plan Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: bump version to 0.15 for patch release Includes M9 migration fidelity + post-M9 bug fixes: - TreeView caret rotation (FritzAndFriends#361) - Sample site nav contrast (FritzAndFriends#362) - Chart.js dataset z-order (FritzAndFriends#363) - Skins/Themes PoC planning docs 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>
|
|
||
| // Separate model/handler instances per test to avoid shared state | ||
| private bool _invalid1 = false; | ||
| ForwardRef<InputBase<string>> ref1 = new ForwardRef<InputBase<string>>(); |
Check notice
Code scanning / CodeQL
Missed 'readonly' opportunity Note test
| // Separate model/handler instances per test to avoid shared state | ||
| private bool _invalid1 = false; | ||
| ForwardRef<InputBase<string>> ref1 = new ForwardRef<InputBase<string>>(); | ||
| private ExModel model1 = new ExModel(); |
Check notice
Code scanning / CodeQL
Missed 'readonly' opportunity Note test
| private ExModel model1 = new ExModel(); | ||
|
|
||
| private bool _invalid2 = false; | ||
| ForwardRef<InputBase<string>> ref2 = new ForwardRef<InputBase<string>>(); |
Check notice
Code scanning / CodeQL
Missed 'readonly' opportunity Note test
|
|
||
| private bool _invalid2 = false; | ||
| ForwardRef<InputBase<string>> ref2 = new ForwardRef<InputBase<string>>(); | ||
| private ExModel model2 = new ExModel(); |
Check notice
Code scanning / CodeQL
Missed 'readonly' opportunity Note test
| private ExModel model2 = new ExModel(); | ||
|
|
||
| private bool _invalid3 = false; | ||
| ForwardRef<InputBase<string>> ref3 = new ForwardRef<InputBase<string>>(); |
Check notice
Code scanning / CodeQL
Missed 'readonly' opportunity Note test
|
|
||
| private bool _invalid3 = false; | ||
| ForwardRef<InputBase<string>> ref3 = new ForwardRef<InputBase<string>>(); | ||
| private ExModel model3 = new ExModel(); |
Check notice
Code scanning / CodeQL
Missed 'readonly' opportunity Note test
| private ExModel model3 = new ExModel(); | ||
|
|
||
| private bool _invalid4 = false; | ||
| ForwardRef<InputBase<string>> ref4 = new ForwardRef<InputBase<string>>(); |
Check notice
Code scanning / CodeQL
Missed 'readonly' opportunity Note test
|
|
||
| private bool _invalid4 = false; | ||
| ForwardRef<InputBase<string>> ref4 = new ForwardRef<InputBase<string>>(); | ||
| private ExModel model4 = new ExModel(); |
Check notice
Code scanning / CodeQL
Missed 'readonly' opportunity Note test
v0.15 Release
Promotes dev to main for the v0.15 release (tag:
v0.15).Changes since v0.14
Milestone 9 Migration Fidelity and Hardening (#349)
v0.15 Patch (#370)
Bug fixes: TreeView caret (#361), nav contrast (#362), Chart z-order (#363)
Pipeline fixes: #347, #348