Skip to content

v0.15 Release Promote dev to main#371

Merged
csharpfritz merged 41 commits intoFritzAndFriends:mainfrom
csharpfritz:dev
Feb 25, 2026
Merged

v0.15 Release Promote dev to main#371
csharpfritz merged 41 commits intoFritzAndFriends:mainfrom
csharpfritz:dev

Conversation

@csharpfritz
Copy link
Collaborator

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)

  • TreeView, FormView, ListView, DataGrid, Menu, Chart, Login controls improvements
  • 1,165 tests passing

v0.15 Patch (#370)

  • Version bump 0.14 to 0.15
  • Planning docs: Skins/Themes PoC, compatibility report, M9 audit, M12 plan

Bug fixes: TreeView caret (#361), nav contrast (#362), Chart z-order (#363)
Pipeline fixes: #347, #348

Copilot AI and others added 30 commits February 9, 2026 17:08
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>
csharpfritz and others added 11 commits February 24, 2026 22:37
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

Field 'ref1' can be 'readonly'.
// 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

Field 'model1' can be 'readonly'.
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

Field 'ref2' can be 'readonly'.

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

Field 'model2' can be 'readonly'.
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

Field 'ref3' can be 'readonly'.

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

Field 'model3' can be 'readonly'.
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

Field 'ref4' can be 'readonly'.

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

Field 'model4' can be 'readonly'.
@csharpfritz csharpfritz merged commit d9a295b into FritzAndFriends:main Feb 25, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants